|
|
|
|
@ -10,6 +10,7 @@ import com.shkj.common.enums.BusinessType; |
|
|
|
|
import com.shkj.common.utils.DateUtils; |
|
|
|
|
import com.shkj.plc.sdk.device.PlcOperate; |
|
|
|
|
import com.shkj.system.service.ISysParameterService; |
|
|
|
|
import com.shkj.wcs.bo.AGVFeedbackDepBo; |
|
|
|
|
import com.shkj.wcs.bo.WcsPlcConnectQueryBo; |
|
|
|
|
import com.shkj.wcs.domain.BusinDataTask; |
|
|
|
|
import com.shkj.wcs.domain.WcsPlcConnect; |
|
|
|
|
@ -104,7 +105,7 @@ public class PlcEventTask { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//输送线心跳
|
|
|
|
|
@Scheduled(fixedDelay = 2000) |
|
|
|
|
@Scheduled(fixedDelay = 5000) |
|
|
|
|
public void writePlcheartbeatDps() { |
|
|
|
|
PlcOperate plcOperate = plcInit.getPlcOperate_dps(); |
|
|
|
|
if (plcOperate != null) { |
|
|
|
|
@ -135,7 +136,7 @@ public class PlcEventTask { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//叠盘机心跳
|
|
|
|
|
@Scheduled(fixedDelay = 2000) |
|
|
|
|
@Scheduled(fixedDelay = 5000) |
|
|
|
|
public void writePlcheartbeatStk() { |
|
|
|
|
//根据连接的plcId获取属性
|
|
|
|
|
PlcOperate plcOperate = plcInit.getPlcOperate_dpj(); |
|
|
|
|
@ -402,10 +403,6 @@ public class PlcEventTask { |
|
|
|
|
Map<String, Integer> seriaMap = new HashMap<>(1); |
|
|
|
|
seriaMap.put(reqInCfmSeriaVt, bCR01SeriaV); |
|
|
|
|
allMap.put(reqInCfmSeria, seriaMap); |
|
|
|
|
|
|
|
|
|
// Map<String, String> barcodMap = new HashMap<>(1);
|
|
|
|
|
// barcodMap.put(reqInCfmBarcod00000Vt, s1);
|
|
|
|
|
// allMap.put(reqInCfmBarcod, barcodMap);
|
|
|
|
|
//成功直行 失败回退
|
|
|
|
|
if (Result.isOk(vo.getHeader().getMsgCode())) { |
|
|
|
|
Map<String, Integer> destMap = new HashMap<>(1); |
|
|
|
|
@ -429,25 +426,26 @@ public class PlcEventTask { |
|
|
|
|
body.setBussinessType(BusinTaskTypeEnum.stockOut.getValue()); |
|
|
|
|
body.setCreateDt(getNowDate()); |
|
|
|
|
//调用agv接口查询库区状态
|
|
|
|
|
Map<String, Object> map1 = new HashMap<>(); |
|
|
|
|
map1.put("areaInLocation", "SC-A2"); |
|
|
|
|
map1.put("status", 0); |
|
|
|
|
|
|
|
|
|
Map<String, Object> map2 = new HashMap<>(); |
|
|
|
|
map2.put("areaInLocation", "SC-B2"); |
|
|
|
|
map2.put("status", 1); |
|
|
|
|
|
|
|
|
|
Map<String, Object> map3 = new HashMap<>(); |
|
|
|
|
map3.put("areaInLocation", "SC-C2"); |
|
|
|
|
map3.put("status", 1); |
|
|
|
|
|
|
|
|
|
Map<String, Object> map4 = new HashMap<>(); |
|
|
|
|
map4.put("areaInLocation", "SC-D2"); |
|
|
|
|
map4.put("status", 1); |
|
|
|
|
|
|
|
|
|
Object[] areaStatus = new Object[]{map1, map2, map3, map4}; |
|
|
|
|
log.info("每个库区的状态:" + Arrays.toString(areaStatus)); |
|
|
|
|
body.setAreaStatus(areaStatus); |
|
|
|
|
// Map<String, Object> map1 = new HashMap<>();
|
|
|
|
|
// map1.put("areaInLocation", "SC-A2");
|
|
|
|
|
// map1.put("status", 0);
|
|
|
|
|
//
|
|
|
|
|
// Map<String, Object> map2 = new HashMap<>();
|
|
|
|
|
// map2.put("areaInLocation", "SC-B2");
|
|
|
|
|
// map2.put("status", 1);
|
|
|
|
|
//
|
|
|
|
|
// Map<String, Object> map3 = new HashMap<>();
|
|
|
|
|
// map3.put("areaInLocation", "SC-C2");
|
|
|
|
|
// map3.put("status", 1);
|
|
|
|
|
//
|
|
|
|
|
// Map<String, Object> map4 = new HashMap<>();
|
|
|
|
|
// map4.put("areaInLocation", "SC-D2");
|
|
|
|
|
// map4.put("status", 1);
|
|
|
|
|
//
|
|
|
|
|
// Object[] areaStatus = new Object[]{map1, map2, map3, map4};
|
|
|
|
|
// log.info("每个库区的状态:" + Arrays.toString(areaStatus));
|
|
|
|
|
// body.setAreaStatus(areaStatus);
|
|
|
|
|
log.info("空托申请wz-wcs参数:"+JSONObject.toJSONString(body)); |
|
|
|
|
WcsResponseVo vo = wcsUtil.wcsIncomingTaskRequest(body); |
|
|
|
|
log.info("空托申请wz-wcs返回:" + vo.getHeader()); |
|
|
|
|
Map<String, Object> allMap = new HashMap<>(1); |
|
|
|
|
@ -485,27 +483,12 @@ public class PlcEventTask { |
|
|
|
|
body.setTrayCode(s); |
|
|
|
|
body.setCreateDt(getNowDate()); |
|
|
|
|
//调用agv接口查询库区状态
|
|
|
|
|
Map<String, Object> map1 = new HashMap<>(); |
|
|
|
|
map1.put("areaInLocation", "SC-A2"); |
|
|
|
|
map1.put("status", 0); |
|
|
|
|
|
|
|
|
|
Map<String, Object> map2 = new HashMap<>(); |
|
|
|
|
map2.put("areaInLocation", "SC-B2"); |
|
|
|
|
map2.put("status", 1); |
|
|
|
|
|
|
|
|
|
Map<String, Object> map3 = new HashMap<>(); |
|
|
|
|
map3.put("areaInLocation", "SC-C2"); |
|
|
|
|
map3.put("status", 1); |
|
|
|
|
|
|
|
|
|
Map<String, Object> map4 = new HashMap<>(); |
|
|
|
|
map4.put("areaInLocation", "SC-D2"); |
|
|
|
|
map4.put("status", 1); |
|
|
|
|
|
|
|
|
|
Object[] areaStatus = new Object[]{map1, map2, map3, map4}; |
|
|
|
|
log.info("每个库区的状态:" + Arrays.toString(areaStatus)); |
|
|
|
|
body.setAreaStatus(areaStatus); |
|
|
|
|
List<AGVFeedbackDepBo> orInitializeAreaStatus = iBusinDataTaskService.getOrInitializeAreaStatus(); |
|
|
|
|
log.info("每个库区的状态:" + Arrays.toString(orInitializeAreaStatus.toArray())); |
|
|
|
|
body.setAreaStatus(orInitializeAreaStatus.toArray()); |
|
|
|
|
log.info("上层实盘出口入库请求wz-wcs参数:"+JSONObject.toJSONString(body)); |
|
|
|
|
WcsResponseVo vo = wcsUtil.wcsIncomingTaskRequest(body); |
|
|
|
|
log.info("实盘出口上报wz-wcs返回:" + vo.getHeader()); |
|
|
|
|
log.info("上层实盘出口入库请求wz-wcs返回:" + vo.getHeader()); |
|
|
|
|
Map<String, Object> allMap = new HashMap<>(1); |
|
|
|
|
Map<String, Integer> seriaMap = new HashMap<>(1); |
|
|
|
|
seriaMap.put(rptOutCfmSeriaVt, outSeria); |
|
|
|
|
@ -523,9 +506,9 @@ public class PlcEventTask { |
|
|
|
|
} |
|
|
|
|
allMap.put(retOut, reqMap); |
|
|
|
|
String allMapJson = JsonUtil.toJSONString(allMap); |
|
|
|
|
log.info("出口上报时,给输送线写命令数据:{}", allMapJson); |
|
|
|
|
log.info("上层出口上报时,给输送线写命令数据:{}", allMapJson); |
|
|
|
|
Boolean rptOutBoolean = plcReadAndWrite.execWrite(plcOperate, allMapJson); |
|
|
|
|
log.info("出口上报时,写入的命令返回结果:" + rptOutBoolean.toString()); |
|
|
|
|
log.info("上层出口上报时,写入的命令返回结果:" + rptOutBoolean.toString()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//实盘出口上报
|
|
|
|
|
@ -540,7 +523,7 @@ public class PlcEventTask { |
|
|
|
|
String barcodeValueOne = Objects.toString(pointMap.get(rptOutBarcod1), ""); |
|
|
|
|
String s = barcodeValueOne.replaceAll("[^A-Za-z0-9]", ""); |
|
|
|
|
|
|
|
|
|
log.info("实盘出口上报时,读取的条码内容:" + s); |
|
|
|
|
log.info("下层实盘出口上报时,读取的条码内容:" + s); |
|
|
|
|
//调用wz-wcs接口
|
|
|
|
|
WcsIncomingTaskRequestBody body = new WcsIncomingTaskRequestBody(); |
|
|
|
|
body.setStation(MapEnum.twoUpIn.getValue()); |
|
|
|
|
@ -549,27 +532,12 @@ public class PlcEventTask { |
|
|
|
|
body.setTrayCode(s); |
|
|
|
|
body.setCreateDt(getNowDate()); |
|
|
|
|
//调用agv接口查询库区状态
|
|
|
|
|
Map<String, Object> map1 = new HashMap<>(); |
|
|
|
|
map1.put("areaInLocation", "SC-A2"); |
|
|
|
|
map1.put("status", 0); |
|
|
|
|
|
|
|
|
|
Map<String, Object> map2 = new HashMap<>(); |
|
|
|
|
map2.put("areaInLocation", "SC-B2"); |
|
|
|
|
map2.put("status", 1); |
|
|
|
|
|
|
|
|
|
Map<String, Object> map3 = new HashMap<>(); |
|
|
|
|
map3.put("areaInLocation", "SC-C2"); |
|
|
|
|
map3.put("status", 1); |
|
|
|
|
|
|
|
|
|
Map<String, Object> map4 = new HashMap<>(); |
|
|
|
|
map4.put("areaInLocation", "SC-D2"); |
|
|
|
|
map4.put("status", 1); |
|
|
|
|
|
|
|
|
|
Object[] areaStatus = new Object[]{map1, map2, map3, map4}; |
|
|
|
|
log.info("每个库区的状态:" + Arrays.toString(areaStatus)); |
|
|
|
|
body.setAreaStatus(areaStatus); |
|
|
|
|
List<AGVFeedbackDepBo> orInitializeAreaStatus = iBusinDataTaskService.getOrInitializeAreaStatus(); |
|
|
|
|
log.info("每个库区的状态:" + Arrays.toString(orInitializeAreaStatus.toArray())); |
|
|
|
|
body.setAreaStatus(orInitializeAreaStatus.toArray()); |
|
|
|
|
log.info("下层实盘出口入库请求wz-wcs参数:"+JSONObject.toJSONString(body)); |
|
|
|
|
WcsResponseVo vo = wcsUtil.wcsIncomingTaskRequest(body); |
|
|
|
|
log.info("agv扫码处申请wz-wcs返回:" + vo.getHeader()); |
|
|
|
|
log.info("下层实盘出口入库请求wz-wcs返回:" + vo.getHeader()); |
|
|
|
|
Map<String, Object> allMap = new HashMap<>(1); |
|
|
|
|
Map<String, Integer> seriaMap = new HashMap<>(1); |
|
|
|
|
seriaMap.put(rptOutCfmSeriaVt1, outSeria); |
|
|
|
|
@ -583,9 +551,9 @@ public class PlcEventTask { |
|
|
|
|
} |
|
|
|
|
allMap.put(retOut1, reqMap); |
|
|
|
|
String allMapJson = JsonUtil.toJSONString(allMap); |
|
|
|
|
log.info("出口上报时,给输送线写命令数据:{}", allMapJson); |
|
|
|
|
log.info("下层出口上报时,给输送线写命令数据:{}", allMapJson); |
|
|
|
|
Boolean rptOutBoolean = plcReadAndWrite.execWrite(plcOperate, allMapJson); |
|
|
|
|
log.info("出口上报时,写入的命令返回结果:" + rptOutBoolean.toString()); |
|
|
|
|
log.info("下层出口上报时,写入的命令返回结果:" + rptOutBoolean.toString()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -806,25 +774,10 @@ public class PlcEventTask { |
|
|
|
|
body.setBussinessType(BusinTaskTypeEnum.stockIn.getValue()); |
|
|
|
|
body.setCreateDt(getNowDate()); |
|
|
|
|
//调用agv接口查询库区状态
|
|
|
|
|
Map<String, Object> map1 = new HashMap<>(); |
|
|
|
|
map1.put("areaInLocation", "SC-A2"); |
|
|
|
|
map1.put("status", 0); |
|
|
|
|
|
|
|
|
|
Map<String, Object> map2 = new HashMap<>(); |
|
|
|
|
map2.put("areaInLocation", "SC-B2"); |
|
|
|
|
map2.put("status", 1); |
|
|
|
|
|
|
|
|
|
Map<String, Object> map3 = new HashMap<>(); |
|
|
|
|
map3.put("areaInLocation", "SC-C2"); |
|
|
|
|
map3.put("status", 1); |
|
|
|
|
|
|
|
|
|
Map<String, Object> map4 = new HashMap<>(); |
|
|
|
|
map4.put("areaInLocation", "SC-D2"); |
|
|
|
|
map4.put("status", 1); |
|
|
|
|
|
|
|
|
|
Object[] areaStatus = new Object[]{map1, map2, map3, map4}; |
|
|
|
|
log.info("每个库区的状态:" + Arrays.toString(areaStatus)); |
|
|
|
|
body.setAreaStatus(areaStatus); |
|
|
|
|
List<AGVFeedbackDepBo> orInitializeAreaStatus = iBusinDataTaskService.getOrInitializeAreaStatus(); |
|
|
|
|
log.info("每个库区的状态:" + Arrays.toString(orInitializeAreaStatus.toArray())); |
|
|
|
|
body.setAreaStatus(orInitializeAreaStatus.toArray()); |
|
|
|
|
log.info("叠盘机满入库任务申请WZ-WCS参数:" + body); |
|
|
|
|
WcsResponseVo vo = wcsUtil.wcsIncomingTaskRequest(body); |
|
|
|
|
log.info("叠盘机满入库任务申请WZ-WCS返回:" + vo.getHeader()); |
|
|
|
|
Map<String, Object> allMap = new HashMap<>(1); |
|
|
|
|
@ -850,155 +803,105 @@ public class PlcEventTask { |
|
|
|
|
|
|
|
|
|
//叠盘机搬运1
|
|
|
|
|
if (pointMap.containsKey(dpjGw1) && !pointMap.get(dpjGw1).equals("0")) { |
|
|
|
|
BusinDataTask businDataTask; |
|
|
|
|
boolean save = true; |
|
|
|
|
Map<String, Object> allMap = new HashMap<>(1); |
|
|
|
|
Map<String, Integer> reqMap = new HashMap<>(1); |
|
|
|
|
LambdaQueryWrapper<BusinDataTask> lqwTask = new LambdaQueryWrapper<BusinDataTask>() |
|
|
|
|
.eq(BusinDataTask::getFromSide,MapEnum.dpjGw1.getValue()) |
|
|
|
|
.eq(BusinDataTask::getTaskStatus,TaskStatusEnum.wait_put); |
|
|
|
|
businDataTask = iBusinDataTaskService.getOne(lqwTask); |
|
|
|
|
if(businDataTask != null){ |
|
|
|
|
log.info("还未下发的任务:"+businDataTask.getTaskCode()); |
|
|
|
|
}else{ |
|
|
|
|
String taskCode = IntIdUtil.generateIntId().toString(); |
|
|
|
|
businDataTask.setTaskCode(taskCode); |
|
|
|
|
businDataTask.setTaskStatus(TaskStatusEnum.wait_put.getValue()); |
|
|
|
|
businDataTask.setTaskType(TaskTypeEnum.Carry.getValue()); |
|
|
|
|
businDataTask.setTaskPath(MapEnum.dpj.getValue()); |
|
|
|
|
businDataTask.setPriority("1"); |
|
|
|
|
businDataTask.setFromSide(MapEnum.dpjGw1.getValue()); |
|
|
|
|
businDataTask.setToSide(MapEnum.dpj.getValue()); |
|
|
|
|
businDataTask.setCreateTime(DateUtils.getNowDate()); |
|
|
|
|
businDataTask.setAgvType("B113"); |
|
|
|
|
save = iBusinDataTaskService.save(businDataTask); |
|
|
|
|
} |
|
|
|
|
if (!save) { |
|
|
|
|
log.info("叠盘工位1,任务存储失败!"); |
|
|
|
|
reqMap.put(retDpjGw1Vt, 2); |
|
|
|
|
allMap.put(retDpjGw1, reqMap); |
|
|
|
|
}else{ |
|
|
|
|
log.info("叠盘机工位1搬运流程开始"); |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
// 检查是否有未完成的任务
|
|
|
|
|
BusinDataTask businDataTask = checkExistingTask(MapEnum.dpjGw1.getValue()); |
|
|
|
|
|
|
|
|
|
// 如果没有现有任务,创建新任务
|
|
|
|
|
if (businDataTask == null) { |
|
|
|
|
businDataTask = createNewTask(MapEnum.dpjGw1.getValue()); |
|
|
|
|
boolean saveSuccess = iBusinDataTaskService.save(businDataTask); |
|
|
|
|
if (!saveSuccess) { |
|
|
|
|
handleFailure(retDpjGw1Vt, retDpjGw1, "叠盘工位1,任务存储失败!",plcReadAndWrite, plcOperate); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 下发任务到RCS
|
|
|
|
|
Result result = iBusinDataTaskService.rcsTaskIssued(businDataTask); |
|
|
|
|
if (!Result.isOk(result)) { |
|
|
|
|
log.info("叠盘工位1,给rcs下发任务失败!"); |
|
|
|
|
reqMap.put(retDpjGw1Vt, 2); |
|
|
|
|
allMap.put(retDpjGw1, reqMap); |
|
|
|
|
}else{ |
|
|
|
|
log.info("叠盘工位1,给rcs下发任务成功!"); |
|
|
|
|
reqMap.put(retDpjGw1Vt, 1); |
|
|
|
|
allMap.put(retDpjGw1, reqMap); |
|
|
|
|
businDataTask.setTaskStatus(TaskStatusEnum.wait_callback.getValue()); |
|
|
|
|
businDataTask.setTaskStarttime(DateUtils.getNowDate()); |
|
|
|
|
businDataTask.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
|
iBusinDataTaskService.updateById(businDataTask); |
|
|
|
|
handleFailure(retDpjGw1Vt, retDpjGw1, "叠盘工位1,给rcs下发任务失败!",plcReadAndWrite, plcOperate); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 任务下发成功后的处理
|
|
|
|
|
handleSuccess(businDataTask, retDpjGw1Vt, retDpjGw1,plcReadAndWrite, plcOperate); |
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("叠盘工位1处理过程中发生异常", e); |
|
|
|
|
handleFailure(retDpjGw1Vt, retDpjGw1, "叠盘工位1,处理过程中发生异常!",plcReadAndWrite, plcOperate); |
|
|
|
|
} |
|
|
|
|
String allMapJson = JsonUtil.toJSONString(allMap); |
|
|
|
|
log.info("叠盘工位1叠盘请求时,给输送线写命令数据:{}", allMapJson); |
|
|
|
|
Boolean bCR01Boolean = plcReadAndWrite.execWrite(plcOperate, allMapJson); |
|
|
|
|
log.info("叠盘工位1叠盘请求时,写入的命令返回结果:" + bCR01Boolean.toString()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//叠盘机搬运2
|
|
|
|
|
if (pointMap.containsKey(dpjGw2) && !pointMap.get(dpjGw2).equals("0")) { |
|
|
|
|
BusinDataTask businDataTask; |
|
|
|
|
boolean save = true; |
|
|
|
|
Map<String, Object> allMap = new HashMap<>(1); |
|
|
|
|
Map<String, Integer> reqMap = new HashMap<>(1); |
|
|
|
|
LambdaQueryWrapper<BusinDataTask> lqwTask = new LambdaQueryWrapper<BusinDataTask>() |
|
|
|
|
.eq(BusinDataTask::getFromSide,MapEnum.dpjGw2.getValue()) |
|
|
|
|
.eq(BusinDataTask::getTaskStatus,TaskStatusEnum.wait_put); |
|
|
|
|
businDataTask = iBusinDataTaskService.getOne(lqwTask); |
|
|
|
|
if(businDataTask != null){ |
|
|
|
|
log.info("还未下发的任务:"+businDataTask.getTaskCode()); |
|
|
|
|
}else{ |
|
|
|
|
String taskCode = IntIdUtil.generateIntId().toString(); |
|
|
|
|
businDataTask.setTaskCode(taskCode); |
|
|
|
|
businDataTask.setTaskStatus(TaskStatusEnum.wait_put.getValue()); |
|
|
|
|
businDataTask.setTaskType(TaskTypeEnum.Carry.getValue()); |
|
|
|
|
businDataTask.setTaskPath(MapEnum.dpj.getValue()); |
|
|
|
|
businDataTask.setPriority("1"); |
|
|
|
|
businDataTask.setFromSide(MapEnum.dpjGw2.getValue()); |
|
|
|
|
businDataTask.setToSide(MapEnum.dpj.getValue()); |
|
|
|
|
businDataTask.setCreateTime(DateUtils.getNowDate()); |
|
|
|
|
businDataTask.setAgvType("B113"); |
|
|
|
|
save = iBusinDataTaskService.save(businDataTask); |
|
|
|
|
} |
|
|
|
|
if (!save) { |
|
|
|
|
log.info("叠盘工位2,任务存储失败!"); |
|
|
|
|
reqMap.put(retDpjGw2Vt, 2); |
|
|
|
|
allMap.put(retDpjGw2, reqMap); |
|
|
|
|
}else{ |
|
|
|
|
log.info("叠盘机工位2搬运流程开始"); |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
// 检查是否有未完成的任务
|
|
|
|
|
BusinDataTask businDataTask = checkExistingTask(MapEnum.dpjGw2.getValue()); |
|
|
|
|
|
|
|
|
|
// 如果没有现有任务,创建新任务
|
|
|
|
|
if (businDataTask == null) { |
|
|
|
|
businDataTask = createNewTask(MapEnum.dpjGw2.getValue()); |
|
|
|
|
boolean saveSuccess = iBusinDataTaskService.save(businDataTask); |
|
|
|
|
if (!saveSuccess) { |
|
|
|
|
handleFailure(retDpjGw2Vt, retDpjGw2, "叠盘工位2,任务存储失败!",plcReadAndWrite, plcOperate); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 下发任务到RCS
|
|
|
|
|
Result result = iBusinDataTaskService.rcsTaskIssued(businDataTask); |
|
|
|
|
if (!Result.isOk(result)) { |
|
|
|
|
log.info("叠盘工位2,给rcs下发任务失败!"); |
|
|
|
|
reqMap.put(retDpjGw2Vt, 2); |
|
|
|
|
allMap.put(retDpjGw2, reqMap); |
|
|
|
|
}else{ |
|
|
|
|
log.info("叠盘工位2,给rcs下发任务成功!"); |
|
|
|
|
reqMap.put(retDpjGw2Vt, 1); |
|
|
|
|
allMap.put(retDpjGw2, reqMap); |
|
|
|
|
businDataTask.setTaskStatus(TaskStatusEnum.wait_callback.getValue()); |
|
|
|
|
businDataTask.setTaskStarttime(DateUtils.getNowDate()); |
|
|
|
|
businDataTask.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
|
iBusinDataTaskService.updateById(businDataTask); |
|
|
|
|
handleFailure(retDpjGw2Vt, retDpjGw2, "叠盘工位2,给rcs下发任务失败!",plcReadAndWrite, plcOperate); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 任务下发成功后的处理
|
|
|
|
|
handleSuccess(businDataTask, retDpjGw2Vt, retDpjGw2,plcReadAndWrite, plcOperate); |
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("叠盘工位2处理过程中发生异常", e); |
|
|
|
|
handleFailure(retDpjGw2Vt, retDpjGw2, "叠盘工位2,处理过程中发生异常!",plcReadAndWrite, plcOperate); |
|
|
|
|
} |
|
|
|
|
String allMapJson = JsonUtil.toJSONString(allMap); |
|
|
|
|
log.info("叠盘工位2叠盘请求时,给输送线写命令数据:{}", allMapJson); |
|
|
|
|
Boolean bCR01Boolean = plcReadAndWrite.execWrite(plcOperate, allMapJson); |
|
|
|
|
log.info("叠盘工位2叠盘请求时,写入的命令返回结果:" + bCR01Boolean.toString()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//叠盘机搬运3
|
|
|
|
|
if (pointMap.containsKey(dpjGw3) && !pointMap.get(dpjGw3).equals("0")) { |
|
|
|
|
BusinDataTask businDataTask; |
|
|
|
|
boolean save = true; |
|
|
|
|
Map<String, Object> allMap = new HashMap<>(1); |
|
|
|
|
Map<String, Integer> reqMap = new HashMap<>(1); |
|
|
|
|
LambdaQueryWrapper<BusinDataTask> lqwTask = new LambdaQueryWrapper<BusinDataTask>() |
|
|
|
|
.eq(BusinDataTask::getFromSide,MapEnum.dpjGw3.getValue()) |
|
|
|
|
.eq(BusinDataTask::getTaskStatus,TaskStatusEnum.wait_put); |
|
|
|
|
businDataTask = iBusinDataTaskService.getOne(lqwTask); |
|
|
|
|
if(businDataTask != null){ |
|
|
|
|
log.info("还未下发的任务:"+businDataTask.getTaskCode()); |
|
|
|
|
}else{ |
|
|
|
|
String taskCode = IntIdUtil.generateIntId().toString(); |
|
|
|
|
businDataTask.setTaskCode(taskCode); |
|
|
|
|
businDataTask.setTaskStatus(TaskStatusEnum.wait_put.getValue()); |
|
|
|
|
businDataTask.setTaskType(TaskTypeEnum.Carry.getValue()); |
|
|
|
|
businDataTask.setTaskPath(MapEnum.dpj.getValue()); |
|
|
|
|
businDataTask.setPriority("1"); |
|
|
|
|
businDataTask.setFromSide(MapEnum.dpjGw3.getValue()); |
|
|
|
|
businDataTask.setToSide(MapEnum.dpj.getValue()); |
|
|
|
|
businDataTask.setCreateTime(DateUtils.getNowDate()); |
|
|
|
|
businDataTask.setAgvType("B113"); |
|
|
|
|
save = iBusinDataTaskService.save(businDataTask); |
|
|
|
|
} |
|
|
|
|
if (!save) { |
|
|
|
|
log.info("叠盘工位3,任务存储失败!"); |
|
|
|
|
reqMap.put(retDpjGw3Vt, 2); |
|
|
|
|
allMap.put(retDpjGw3, reqMap); |
|
|
|
|
}else{ |
|
|
|
|
log.info("叠盘机工位3搬运流程开始"); |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
// 检查是否有未完成的任务
|
|
|
|
|
BusinDataTask businDataTask = checkExistingTask(MapEnum.dpjGw3.getValue()); |
|
|
|
|
|
|
|
|
|
// 如果没有现有任务,创建新任务
|
|
|
|
|
if (businDataTask == null) { |
|
|
|
|
businDataTask = createNewTask(MapEnum.dpjGw3.getValue()); |
|
|
|
|
boolean saveSuccess = iBusinDataTaskService.save(businDataTask); |
|
|
|
|
if (!saveSuccess) { |
|
|
|
|
handleFailure(retDpjGw3Vt, retDpjGw3, "叠盘工位2,任务存储失败!",plcReadAndWrite, plcOperate); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 下发任务到RCS
|
|
|
|
|
Result result = iBusinDataTaskService.rcsTaskIssued(businDataTask); |
|
|
|
|
if (!Result.isOk(result)) { |
|
|
|
|
log.info("叠盘工位3,给rcs下发任务失败!"); |
|
|
|
|
reqMap.put(retDpjGw3Vt, 2); |
|
|
|
|
allMap.put(retDpjGw3, reqMap); |
|
|
|
|
}else{ |
|
|
|
|
log.info("叠盘工位3,给rcs下发任务成功!"); |
|
|
|
|
reqMap.put(retDpjGw3Vt, 1); |
|
|
|
|
allMap.put(retDpjGw3, reqMap); |
|
|
|
|
businDataTask.setTaskStatus(TaskStatusEnum.wait_callback.getValue()); |
|
|
|
|
businDataTask.setTaskStarttime(DateUtils.getNowDate()); |
|
|
|
|
businDataTask.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
|
iBusinDataTaskService.updateById(businDataTask); |
|
|
|
|
handleFailure(retDpjGw3Vt, retDpjGw3, "叠盘工位3,给rcs下发任务失败!",plcReadAndWrite, plcOperate); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 任务下发成功后的处理
|
|
|
|
|
handleSuccess(businDataTask, retDpjGw3Vt, retDpjGw3,plcReadAndWrite, plcOperate); |
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("叠盘工位3处理过程中发生异常", e); |
|
|
|
|
handleFailure(retDpjGw3Vt, retDpjGw3, "叠盘工位3,处理过程中发生异常!",plcReadAndWrite, plcOperate); |
|
|
|
|
} |
|
|
|
|
String allMapJson = JsonUtil.toJSONString(allMap); |
|
|
|
|
log.info("叠盘工位3叠盘请求时,给输送线写命令数据:{}", allMapJson); |
|
|
|
|
Boolean bCR01Boolean = plcReadAndWrite.execWrite(plcOperate, allMapJson); |
|
|
|
|
log.info("叠盘工位3叠盘请求时,写入的命令返回结果:" + bCR01Boolean.toString()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -1009,6 +912,67 @@ public class PlcEventTask { |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private BusinDataTask checkExistingTask(String fromSide) { |
|
|
|
|
LambdaQueryWrapper<BusinDataTask> lqwTask = new LambdaQueryWrapper<BusinDataTask>() |
|
|
|
|
.eq(BusinDataTask::getFromSide, fromSide) |
|
|
|
|
.eq(BusinDataTask::getTaskStatus, TaskStatusEnum.wait_put.getValue()); |
|
|
|
|
BusinDataTask task = iBusinDataTaskService.getOne(lqwTask); |
|
|
|
|
if (task != null) { |
|
|
|
|
log.info("发现未下发的任务,任务编码:{}", task.getTaskCode()); |
|
|
|
|
} |
|
|
|
|
return task; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void handleSuccess(BusinDataTask task, String retVt, String ret,PLCReadAndWrite plcReadAndWrite, PlcOperate plcOperate) { |
|
|
|
|
// 更新任务状态
|
|
|
|
|
task.setTaskStatus(TaskStatusEnum.wait_callback.getValue()); |
|
|
|
|
task.setTaskStarttime(DateUtils.getNowDate()); |
|
|
|
|
task.setUpdateTime(DateUtils.getNowDate()); |
|
|
|
|
iBusinDataTaskService.updateById(task); |
|
|
|
|
|
|
|
|
|
// 准备成功响应
|
|
|
|
|
Map<String, Object> allMap = new HashMap<>(); |
|
|
|
|
Map<String, Integer> reqMap = new HashMap<>(); |
|
|
|
|
reqMap.put(retVt, 1); |
|
|
|
|
allMap.put(ret, reqMap); |
|
|
|
|
|
|
|
|
|
sendToPLC(allMap, "叠盘工位1,给rcs下发任务成功!",plcReadAndWrite,plcOperate); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void sendToPLC(Map<String, Object> allMap, String logMsg,PLCReadAndWrite plcReadAndWrite, PlcOperate plcOperate) { |
|
|
|
|
String allMapJson = JsonUtil.toJSONString(allMap); |
|
|
|
|
log.info("{} 给输送线写命令数据:{}", logMsg, allMapJson); |
|
|
|
|
Boolean writeResult = plcReadAndWrite.execWrite(plcOperate, allMapJson); |
|
|
|
|
log.info("写入命令返回结果:{}", writeResult); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private BusinDataTask createNewTask(String fromSide) { |
|
|
|
|
BusinDataTask task = new BusinDataTask(); |
|
|
|
|
String taskCode = IntIdUtil.generateIntId().toString(); |
|
|
|
|
task.setTaskCode(taskCode); |
|
|
|
|
task.setTaskStatus(TaskStatusEnum.wait_put.getValue()); |
|
|
|
|
task.setTaskType(TaskTypeEnum.Carry.getValue()); |
|
|
|
|
task.setTaskPath(MapEnum.dpj.getValue()); |
|
|
|
|
task.setPriority("1"); |
|
|
|
|
task.setFromSide(fromSide); |
|
|
|
|
task.setToSide(MapEnum.dpj.getValue()); |
|
|
|
|
task.setCreateTime(DateUtils.getNowDate()); |
|
|
|
|
task.setAgvType("B113"); |
|
|
|
|
log.info("创建新任务,任务编码:{}", taskCode); |
|
|
|
|
return task; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void handleFailure(String retVt, String ret, String errorMsg,PLCReadAndWrite plcReadAndWrite, PlcOperate plcOperate) { |
|
|
|
|
log.warn(errorMsg); |
|
|
|
|
|
|
|
|
|
Map<String, Object> allMap = new HashMap<>(); |
|
|
|
|
Map<String, Integer> reqMap = new HashMap<>(); |
|
|
|
|
reqMap.put(retVt, 2); |
|
|
|
|
allMap.put(ret, reqMap); |
|
|
|
|
|
|
|
|
|
sendToPLC(allMap, errorMsg,plcReadAndWrite,plcOperate); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|