|
@@ -5,9 +5,11 @@ 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.demo.ChargingMachineClient;
|
|
|
+import com.ruoyi.hard.ChargingMachineClient;
|
|
|
+import com.ruoyi.hard.ChargingMachineClient;
|
|
|
import lombok.Data;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -23,8 +25,8 @@ import java.util.stream.Stream;
|
|
|
|
|
|
import static com.ruoyi.ams.agv.ndc.service.ChargerButtService.CHARGER_ASSEMBLY_STATUS.*;
|
|
|
import static com.ruoyi.ams.agv.ndc.service.FeedbackTS.FEEDBACK_TS_STATUS.*;
|
|
|
-import static com.ruoyi.hard.demo.ChargingMachineClient.CHARGER_ADDRESS_MEANING.*;
|
|
|
-import static com.ruoyi.hard.demo.ChargingMachineClient.CHARGER_STATUS.*;
|
|
|
+import static com.ruoyi.hard.ChargingMachineClient.CHARGER_ADDRESS_MEANING.*;
|
|
|
+import static com.ruoyi.hard.ChargingMachineClient.CHARGER_STATUS.*;
|
|
|
|
|
|
|
|
|
* 充电机对接
|
|
@@ -49,7 +51,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>());
|
|
|
|
|
@@ -94,19 +96,19 @@ public class ChargerButtService {
|
|
|
|
|
|
* A
|
|
|
*/
|
|
|
- A(1, 1),
|
|
|
+ A(1004, 1),
|
|
|
|
|
|
* B
|
|
|
*/
|
|
|
- B(1, 1),
|
|
|
+ B(2, 1),
|
|
|
|
|
|
* 空
|
|
|
*/
|
|
|
- C(1, 1),
|
|
|
+ C(3, 1),
|
|
|
|
|
|
* 无
|
|
|
*/
|
|
|
- D(1, 1);
|
|
|
+ D(4, 1);
|
|
|
private Integer chargerNo;
|
|
|
private Integer slaveId;
|
|
|
|
|
@@ -180,33 +182,32 @@ public class ChargerButtService {
|
|
|
|
|
|
if (agvInfoMap.get(KEY_AGV_STS) != null
|
|
|
&& agvInfoMap.get(KEY_AGV_STS).toString().equals(AGV_CHARGING_STS.START.toString())) {
|
|
|
+ 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;
|
|
|
-
|
|
|
+ boolean xx = !(chargerNo == 1004);
|
|
|
+
|
|
|
Integer slaveId = CHARGING_SLAVEID_MAPPING.getSlaveIdByChargerNo(chargingSite);
|
|
|
|
|
|
boolean isFault = this.confirmChargerStatus(IS_FAULT, new Date(), true, xx);
|
|
@@ -258,8 +259,8 @@ public class ChargerButtService {
|
|
|
}
|
|
|
|
|
|
|
|
|
- executorService.execute(new CyclicJudgmentOfChargerStatus(wcsTaskService, amsTaskService,
|
|
|
- this, feedbackTS, chargingMachineClient, index, chargingSite, slaveId, agvNo, taskNo, xx));
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
@@ -275,13 +276,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,10 +309,12 @@ 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);
|
|
|
+ if (wcsTask != null) {
|
|
|
+ boolean con = wcsTask.getExt4().equals("1") ? true : false;
|
|
|
+ if (!con) {
|
|
|
+
|
|
|
+ this.feedbackTSLog(taskNo, index, AGV_STOP, agvNo + ",AGV结束充电!", xx);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
feedbackTS.feedbackTS101(taskNo, index, agvNo);
|
|
@@ -335,7 +339,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())) {
|
|
@@ -345,13 +349,19 @@ public class ChargerButtService {
|
|
|
wcsTask.setExt4("1");
|
|
|
wcsTaskService.updateWcsTask(wcsTask);
|
|
|
}
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
* 充电机操作
|
|
|
*
|
|
|
* @return
|
|
|
- * @see ChargingMachineClient.CHARGER_ADDRESS_MEANING
|
|
|
+ * @see com.ruoyi.hard.ChargingMachineClient.CHARGER_ADDRESS_MEANING
|
|
|
*/
|
|
|
private boolean operation(ChargingMachineClient.CHARGER_ADDRESS_MEANING op, boolean xx) {
|
|
|
boolean con = false;
|
|
@@ -450,24 +460,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 {
|
|
@@ -586,11 +610,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 +671,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;
|