|
|
@@ -433,7 +433,7 @@ public class DeviceMsgHandle {
|
|
|
}
|
|
|
new Thread(() -> {
|
|
|
try {
|
|
|
- Thread.sleep(5000); // 延迟 5 秒
|
|
|
+ Thread.sleep(4000); // 延迟 5 秒
|
|
|
DeviceParam dataParam = new DeviceParam();
|
|
|
dataParam.setDeviceId(imei);
|
|
|
dataParam.setCcid(imei);
|
|
|
@@ -517,11 +517,13 @@ public class DeviceMsgHandle {
|
|
|
OrderStatus statusServiceOne = orderStatusService.getOne(orderStatusQueryWrapper);
|
|
|
if (statusServiceOne == null) {
|
|
|
logger.info("没有待处理订单{}", imei);
|
|
|
+ deviceControlerService.sendImeiDetail(imei);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (statusServiceOne.getTransactionOrderReplyStatus() == StatusConstant.TRANSACTION_ORDER_REPLY_STATUS_SUCC) {
|
|
|
logger.info("订单状态已上报成功{},id:{}", imei, statusServiceOne.getId());
|
|
|
+ deviceControlerService.sendImeiDetail(imei);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -649,7 +651,8 @@ public class DeviceMsgHandle {
|
|
|
|
|
|
/**
|
|
|
* 1.这里接收到消息就是设备在线;2.对状态进行处理,不同类型消息的枪状态不同进行落库;3.并且状态变化的一个变位上送
|
|
|
- *
|
|
|
+ * 枪充满会变成状7 然后必须要拔了再插 才能启动充电
|
|
|
+ * 但是拔了再插 会短暂的从1 变成5 所以在判断空闲的时候 要加上订单60秒的变位限制 6如果有订单60秒后才关闭
|
|
|
* @param imei 设备imei码
|
|
|
* @param port 设备port(枪号)
|
|
|
* @param gunsStatus 枪状态
|
|
|
@@ -662,8 +665,9 @@ public class DeviceMsgHandle {
|
|
|
DeviceStatus statusServiceOneTemp = new DeviceStatus();
|
|
|
|
|
|
|
|
|
- if(statusServiceOne!=null && gunsStatus == StatusConstant.INSERT_GUNS_YES){
|
|
|
- String waitingKey = RedisConstant.WAITING_INSERT_GUN+"_"+statusServiceOneTemp.getPileCode()+statusServiceOneTemp.getGunPort();
|
|
|
+ if(statusServiceOne!=null && insertGunStatus == StatusConstant.INSERT_GUNS_YES){
|
|
|
+ String waitingKey = RedisConstant.WAITING_INSERT_GUN+":"+statusServiceOne.getPileCode()+"_"+statusServiceOne.getGunPort();
|
|
|
+
|
|
|
if (redisCache.hasKey(waitingKey)) {
|
|
|
//未插枪启充的操作会保存订单,但是订单号不是因为断网中停充造成的订单结束原因是0,所以redis有当前设备的订单值,就不是结束充电
|
|
|
int waitingId = redisCache.getCacheObject(waitingKey);
|
|
|
@@ -757,27 +761,32 @@ public class DeviceMsgHandle {
|
|
|
//7状态小于30秒内且订单原因不是远程停充
|
|
|
if (one.getNowOrderStatus() == StatusConstant.NOW_ORDER_STATUS_CHARGING) {
|
|
|
if ((System.currentTimeMillis() - one.getCreateTime()) < 60 * 1000 && one.getReasonStopCharging() != TransConstant.APP_REMOTE_STOP) {
|
|
|
- logger.info("订单60秒内{}不处理7这个状态", one.getPileCode());
|
|
|
- return;
|
|
|
- } else {
|
|
|
- //充电已完成
|
|
|
- //发送结束充电命令 顺利的话113会收到 状态还是7
|
|
|
- logger.info("订单60秒后{}7状态发送止充电指令", one.getPileCode());
|
|
|
- //标记订单为已停充 标记为未上送
|
|
|
- one.setNowOrderStatus(StatusConstant.NOW_ORDER_STATUS_CHARGING_ENDING);
|
|
|
- one.setEndTime(System.currentTimeMillis());
|
|
|
- one.setReasonStopCharging(TransConstant.SOC_FULL_OF_STOP);
|
|
|
- orderStatusService.updateById(one);
|
|
|
- RpcResult rpcResult = deviceControlerService.stopCharge(imei, imei, port);
|
|
|
+ logger.info("下订单60秒内{}不处理7状态", one.getPileCode());
|
|
|
return;
|
|
|
}
|
|
|
+ //充电已完成
|
|
|
+ //发送结束充电命令 顺利的话113会收到 状态还是7
|
|
|
+ logger.info("下订单60秒后{}仍然处于7状态发送止充电指令", one.getPileCode());
|
|
|
+ //标记订单为已停充 标记为未上送
|
|
|
+ one.setNowOrderStatus(StatusConstant.NOW_ORDER_STATUS_CHARGING_ENDING);
|
|
|
+ one.setEndTime(System.currentTimeMillis());
|
|
|
+ one.setReasonStopCharging(TransConstant.SOC_FULL_OF_STOP);
|
|
|
+ orderStatusService.updateById(one);
|
|
|
+ RpcResult rpcResult = deviceControlerService.stopCharge(imei, imei, port);
|
|
|
+ return;
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ //先拔 再插
|
|
|
//订单还在充电中 但是枪不在充电中状态 就结束订单
|
|
|
+ // 但是拔了再插 会短暂的从1 变成5 所以在判断空闲的时候 要加上订单60秒的变位限制 6如果有订单60秒后才关闭
|
|
|
if (one.getNowOrderStatus() == StatusConstant.NOW_ORDER_STATUS_CHARGING) {
|
|
|
logger.info("{}枪非充电中状态,结束订单状态 等待任务重试上报订单", one.getPileCode());
|
|
|
+ if ((System.currentTimeMillis() - one.getCreateTime()) < 60 * 1000 && one.getReasonStopCharging() != TransConstant.APP_REMOTE_STOP) {
|
|
|
+ logger.info("下订单60秒内{}不处理空闲这个状态", one.getPileCode());
|
|
|
+ return;
|
|
|
+ }
|
|
|
one.setNowOrderStatus(StatusConstant.NOW_ORDER_STATUS_CHARGING_ENDING);
|
|
|
one.setEndTime(System.currentTimeMillis());
|
|
|
one.setReasonStopCharging(TransConstant.OTHER_STOP);
|
|
|
@@ -785,6 +794,5 @@ public class DeviceMsgHandle {
|
|
|
}
|
|
|
logger.info("上传空闲状态{}",imei);
|
|
|
realTimeStatusPushFrame.deviceStatusPush(deviceConnectionMsg, FrameDataSplicing.transactionNum(null, 0), statusServiceOne.getPileCode(), (byte) port, gunsStatus, insertGunStatus, 0, 0, zero, zero, 0);
|
|
|
-
|
|
|
}
|
|
|
}
|