天天看點

智能停車場一期核心代碼

停車場一期:

主要功能:采集把停車場地磁采集過來,後端進行判斷是否有車,并把停車資訊存入資料庫。并把消息實時推送給前端

資料庫主要字段:

地磁管理:idsparkspace所屬停車場,connectedparkingspace關聯停車位,state狀态

停車資訊:paymentstate繳費情況,parkinglotbelong所屬停車場,parkingtime停車用時,parkingfee停車費用,platenumber車牌号

主要流程:

ParkAction:getParkMsg()  
    前端擷取mac,status,再根據mac擷取地磁資訊.儲存停車資訊,存入redis
ParkUtils.saveParkmsg2redis(parkingspace所屬停車場, mac, status, patrol,connectedparkingspace關聯停車位)
    根據狀态對比存入車輛離開或車輛進入資訊,再推送消息給前端
redis存入值:redisval = status + "," + 掃描時間 + "," + 車輛進出時間 + "," +停車資訊id+ "," + "pk";
           
public static void saveParkmsg2redis(String parkingspace, String mac, String status, String patrol,
            String connectedparkingspace) {
        ParkDao parkdao = new ParkDaoImpl();
        String parkplace = parkdao.getsparkplace(mac);
        Jedis jedis = RedisConnection.getJedis();
        jedis.select();
        Long starttime = System.currentTimeMillis();
        String key = "parkingmsessage:" + mac;
        String oldredisval = jedis.get("parkingmsessage:" + mac);
        String redisval = "";
        if (null != oldredisval && !"".equals(oldredisval)) {
            String[] split = oldredisval.split(",");
            String oldstatus = split[];
            String scantime = StringUtil.isnull(split[]);

            if ("1".equals(oldstatus) && "0".equals(status)) {
                // 說明是車輛離開,資訊存入sqlserver資料庫
                ParkMsg parkmsg = new ParkMsg();
                parkmsg.setParkinglotbelong(parkplace);
                String stringDate = getStringDate(starttime);
                Long cartime = Long.parseLong(StringUtil.isnull(split[]));
                String msgid = StringUtil.isnull(split[]);
                ParkMsg oldparkmsg = parkdao.getParkMessageById(msgid);
                // 計算停車用時
                Long parktime = (starttime - cartime) / ( * );
                // 計算停車費用
                Double settlementParkPay = SettlementParkPay(parktime);
                oldparkmsg.setParkingtime(parktime);
                oldparkmsg.setParkingfee(settlementParkPay);
                oldparkmsg.setEndtime(stringDate);
                oldparkmsg.setParkingspace(connectedparkingspace);
                oldparkmsg.setParkinglotbelong(parkplace);
                oldparkmsg.setIdowner(patrol);
                oldparkmsg.setId(msgid);
                // 繳費狀态枚舉值
                // TODO Auto-generated catch block
                String paystatus = "0";// 先設定為未繳費
                String paymentstate = getStateEnum(paystatus, "paymentstate", "parkingmessage");
                // 所屬停車場枚舉值
                String parspacestate = getStateEnum(status, "sparkspacestate", "parkspacemanage");
                oldparkmsg.setPaymentstate(paymentstate);
                // 存儲新的停車資訊
                parkdao.UpdateParkmsg(oldparkmsg);
                // 更新車位
                Boolean reflashPKS = parkdao.updataParkingspace(connectedparkingspace, parspacestate);
                redisval = status + "," + scantime + "," + "," + "," + "pk";
                // 推送消息

            } else if ("0".equals(oldstatus) && "1".equals(status)) {
                // 說明是車輛停入車位,資訊存入sqlserver資料庫
                ParkMsg parkmsg = new ParkMsg();
                parkmsg.setParkinglotbelong(parkplace);
                // Date changeTime2Date = changeTime2Date(starttime);
                String stringDate = getStringDate(starttime);
                System.out.println(stringDate);
                SystemDao sd = new SystemDaoImpl();
                String newId = sd.getNewId();
                parkmsg.setId(newId);
                parkmsg.setIdowner(patrol);
                parkmsg.setStarttime(stringDate);
                parkmsg.setParkingspace(connectedparkingspace);
                // 繳費狀态枚舉值
                String paystatus = "0";// 先設定為未繳費
                String paymentstate = getStateEnum(paystatus, "paymentstate", "parkingmessage");
                // 所屬停車場枚舉值
                String parspacestate = getStateEnum(status, "sparkspacestate", "parkspacemanage");
                parkmsg.setPaymentstate(paymentstate);
                parkdao.InsertParkmsg(parkmsg);
                Boolean reflashPKS = parkdao.updataParkingspace(connectedparkingspace, parspacestate);
                redisval = status + "," + scantime + "," + starttime.toString() + "," + newId + "," + "pk";
                // 推送消息
                Operation2umDao umDao = new Operation2umDaoImpl();
                Operation2um o2 = umDao.getOperation2umById("b5856391a3164ff2a8e3d56ce9bc5811", "geomagneticmonitor");
                String iddata = "";
                String ummsg = ""+"有車子停入了";
                pushMessage("geomagneticmanage", iddata, "1B7AED0CEB5F4C669E5ED5F88C069B21", o2);
            } else {
                String cartime = StringUtil.isnull(split[]);
                String messageid = StringUtil.isnull(split[]);
                redisval = status + "," + scantime + "," + cartime.toString() + "," + messageid + "," + "pk";
            }
        } else {
            redisval = status + "," + starttime.toString() + "," + starttime.toString() + "," + "," + "pk";
        }
        // 更新redis的 mac狀态
        jedis.set(key, redisval);
    }