|
@@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.ruoyi.ams.task.domain.WcsTask;
|
|
|
import com.ruoyi.ams.task.service.IWcsTaskService;
|
|
|
+import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
import com.ruoyi.common.core.redis.RedisCache;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
import com.ruoyi.hard.modbus.tcp.ChargingMachineClient;
|
|
@@ -49,7 +50,7 @@ public class ChargerButtService {
|
|
|
private ChargingMachineClient chargingMachineClient;
|
|
|
|
|
|
|
|
|
- private ExecutorService executorService = new ThreadPoolExecutor(2, 10
|
|
|
+ private ExecutorService executorService = new ThreadPoolExecutor(2, 20
|
|
|
, 60L, TimeUnit.SECONDS
|
|
|
, new SynchronousQueue<Runnable>());
|
|
|
|
|
@@ -172,6 +173,9 @@ public class ChargerButtService {
|
|
|
return;
|
|
|
}
|
|
|
String taskNo = "";
|
|
|
+
|
|
|
+ Integer chargerNo = chargingSite;
|
|
|
+ boolean xx = !(chargerNo == 1004);
|
|
|
|
|
|
Map<String, Object> agvInfoMap = redisCache.getCacheMap(KEY_PREFIX + agvNo);
|
|
|
if (agvInfoMap == null) {
|
|
@@ -180,33 +184,31 @@ public class ChargerButtService {
|
|
|
|
|
|
if (agvInfoMap.get(KEY_AGV_STS) != null
|
|
|
&& agvInfoMap.get(KEY_AGV_STS).toString().equals(AGV_CHARGING_STS.START.toString())) {
|
|
|
+
|
|
|
+ this.feedbackTSLog(taskNo, index, NORMAL, agvNo + "AGV开始充电!", xx);
|
|
|
+ log.error("充电机已经开始充电,不可重复请求!车号:{},充电机号:{}", agvNo, chargingSite);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
if (agvInfoMap.get(KEY_TASK_NO) == null || StringUtils.isEmpty(agvInfoMap.get(KEY_TASK_NO).toString())) {
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ AjaxResult ajaxResult = wcsTaskService.addChargingTask(agvNo, chargingSite, index);
|
|
|
+ if (!ajaxResult.isSuccess()) {
|
|
|
+ log.error(ajaxResult.getMsg());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ taskNo = (String) ajaxResult.get("data");
|
|
|
+ agvInfoMap.put(KEY_TASK_NO, taskNo);
|
|
|
+ agvInfoMap.put(KEY_AGV_STS, AGV_CHARGING_STS.READY.toString());
|
|
|
+ redisCache.setCacheMap(KEY_PREFIX + agvNo, agvInfoMap);
|
|
|
} else {
|
|
|
taskNo = agvInfoMap.get(KEY_TASK_NO).toString();
|
|
|
}
|
|
|
|
|
|
|
|
|
WcsTask wcsTask = wcsTaskService.selectWcsTaskByTaskNo(taskNo);
|
|
|
- if (wcsTask == null) {
|
|
|
- return;
|
|
|
- }
|
|
|
|
|
|
-
|
|
|
- Integer chargerNo = chargingSite;
|
|
|
- boolean xx = chargerNo == 1;
|
|
|
-
|
|
|
+
|
|
|
Integer slaveId = CHARGING_SLAVEID_MAPPING.getSlaveIdByChargerNo(chargingSite);
|
|
|
|
|
|
boolean isFault = this.confirmChargerStatus(IS_FAULT, new Date(), true, xx);
|
|
@@ -258,8 +260,8 @@ public class ChargerButtService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- executorService.execute(new CyclicJudgmentOfChargerStatus(wcsTaskService, amsTaskService,
|
|
|
- this, feedbackTS, chargingMachineClient, index, chargingSite, slaveId, agvNo, taskNo, xx));
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
@@ -275,13 +277,14 @@ public class ChargerButtService {
|
|
|
}
|
|
|
|
|
|
if (chargingSite == null) {
|
|
|
+ log.error("没有充电桩号没办法取消对应的充电机!");
|
|
|
return;
|
|
|
}
|
|
|
String taskNo = "";
|
|
|
WcsTask wcsTask = null;
|
|
|
|
|
|
Integer chargerNo = chargingSite;
|
|
|
- boolean xx = chargerNo == 1;
|
|
|
+ boolean xx = !(chargerNo == 1004);
|
|
|
|
|
|
Integer slaveId = CHARGING_SLAVEID_MAPPING.getSlaveIdByChargerNo(chargingSite);
|
|
|
|
|
@@ -307,11 +310,13 @@ public class ChargerButtService {
|
|
|
this.feedbackTSLog(taskNo, index, FAULT, agvNo + ",确认信号:无压紧、无充电、归位,失败!", xx);
|
|
|
}
|
|
|
|
|
|
- boolean con = wcsTask != null ? wcsTask.getExt4().equals("1") : false;
|
|
|
- if (!con) {
|
|
|
-
|
|
|
- this.feedbackTSLog(taskNo, index, AGV_STOP, agvNo + ",AGV结束充电!", xx);
|
|
|
- }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ this.feedbackTSLog(taskNo, index, AGV_STOP, agvNo + ",AGV结束充电!", xx);
|
|
|
+
|
|
|
+
|
|
|
|
|
|
feedbackTS.feedbackTS101(taskNo, index, agvNo);
|
|
|
|
|
@@ -335,7 +340,7 @@ public class ChargerButtService {
|
|
|
String taskNo = "";
|
|
|
WcsTask wcsTask;
|
|
|
|
|
|
- Map<String, Object> agvInfoMap = redisCache.getCacheMap(KEY_PREFIX);
|
|
|
+ Map<String, Object> agvInfoMap = redisCache.getCacheMap(KEY_PREFIX + agvNo);
|
|
|
|
|
|
if (agvInfoMap != null && agvInfoMap.get(KEY_TASK_NO) != null
|
|
|
&& StringUtils.isNotEmpty(agvInfoMap.get(KEY_TASK_NO).toString())) {
|
|
@@ -450,24 +455,38 @@ public class ChargerButtService {
|
|
|
WcsTask wcsTask = wcsTaskService.selectWcsTaskByTaskNo(taskNo);
|
|
|
|
|
|
|
|
|
- boolean isEnd = chargerButtService.confirmChargerStatus(IS_END, new Date(), false,xx);
|
|
|
+ boolean isEnd = chargerButtService.confirmChargerStatus(IS_END, new Date(), false, xx);
|
|
|
if (isEnd) {
|
|
|
|
|
|
- boolean con = wcsTask != null ? wcsTask.getExt4().equals("1") : false;
|
|
|
- if (!con) {
|
|
|
-
|
|
|
- chargerButtService.feedbackTSLog(taskNo, index, AGV_STOP, agvNo + "AGV充电结束!", xx);
|
|
|
+ if (wcsTask != null) {
|
|
|
+ boolean con = wcsTask.getExt4().equals("1") ? true : false;
|
|
|
+ if (!con) {
|
|
|
+
|
|
|
+ chargerButtService.feedbackTSLog(taskNo, index, AGV_STOP, agvNo + "AGV充电结束!", xx);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
feedbackTS.feedbackTS101(taskNo, index, agvNo);
|
|
|
+
|
|
|
+ Map<String, Object> agvInfoMapU = redisCache.getCacheMap(KEY_PREFIX + agvNo);
|
|
|
+ if (agvInfoMapU != null) {
|
|
|
+ agvInfoMapU.put(KEY_AGV_STS, AGV_CHARGING_STS.STOP.toString());
|
|
|
+ redisCache.setCacheMap(KEY_PREFIX + agvNo, agvInfoMapU);
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- boolean isFault = chargerButtService.confirmChargerStatus(IS_FAULT, new Date(), false,xx);
|
|
|
+ boolean isFault = chargerButtService.confirmChargerStatus(IS_FAULT, new Date(), false, xx);
|
|
|
if (isFault) {
|
|
|
chargerButtService.operation(STOP, xx);
|
|
|
|
|
|
chargerButtService.feedbackTSLog(taskNo, index, FAULT, agvNo + ",充电机故障!", xx);
|
|
|
+
|
|
|
+ Map<String, Object> agvInfoMapU = redisCache.getCacheMap(KEY_PREFIX + agvNo);
|
|
|
+ if (agvInfoMapU != null) {
|
|
|
+ agvInfoMapU.put(KEY_AGV_STS, AGV_CHARGING_STS.STOP.toString());
|
|
|
+ redisCache.setCacheMap(KEY_PREFIX + agvNo, agvInfoMapU);
|
|
|
+ }
|
|
|
break;
|
|
|
}
|
|
|
try {
|
|
@@ -548,12 +567,12 @@ public class ChargerButtService {
|
|
|
case IS_COMPACTING:
|
|
|
|
|
|
con = confirmChargerStatusIsCompacting(xx);
|
|
|
- unit = DateUnit.MINUTE;
|
|
|
+ timeout = 20;
|
|
|
break;
|
|
|
case IS_END:
|
|
|
|
|
|
con = confirmChargerStatusIsEnd(xx);
|
|
|
- unit = DateUnit.MINUTE;
|
|
|
+ timeout = 20;
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
@@ -586,11 +605,11 @@ public class ChargerButtService {
|
|
|
|
|
|
boolean bit_04_0 = BIT_04_0.isTrue(status);
|
|
|
|
|
|
- boolean bit_04_5 = BIT_04_5.isTrue(status);
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
|
- boolean result = Stream.of(bit_04_0, bit_04_5).allMatch(t -> t == true);
|
|
|
+ boolean result = Stream.of(bit_04_0).allMatch(t -> t == true);
|
|
|
|
|
|
return result;
|
|
|
}
|
|
@@ -647,20 +666,20 @@ public class ChargerButtService {
|
|
|
|
|
|
boolean bit_05_3 = BIT_05_3.isTrue(status);
|
|
|
|
|
|
- boolean bit_05_4 = BIT_05_4.isTrue(status);
|
|
|
+
|
|
|
|
|
|
boolean bit_05_5 = BIT_05_5.isTrue(status);
|
|
|
|
|
|
boolean bit_05_6 = BIT_05_6.isTrue(status);
|
|
|
|
|
|
- boolean bit_05_7 = BIT_05_7.isTrue(status);
|
|
|
+
|
|
|
|
|
|
|
|
|
boolean bit_06_5 = BIT_06_5.isTrue(status);
|
|
|
|
|
|
|
|
|
boolean result = Stream.of(bit_04_1
|
|
|
- , bit_05_0, bit_05_1, bit_05_2, bit_05_3, bit_05_4, bit_05_5, bit_05_6, bit_05_7
|
|
|
+ , bit_05_0, bit_05_1, bit_05_2, bit_05_3, bit_05_5, bit_05_6
|
|
|
, bit_06_5).anyMatch(t -> t == true);
|
|
|
|
|
|
return result;
|