停車場一期:
主要功能:采集把停車場地磁采集過來,後端進行判斷是否有車,并把停車資訊存入資料庫。并把消息實時推送給前端
資料庫主要字段:
地磁管理: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);
}