|
@@ -1,6 +1,7 @@
|
|
|
package com.ruoyi.ams.task.service.impl;
|
|
|
|
|
|
import java.lang.reflect.Method;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
|
|
@@ -10,6 +11,9 @@ import com.ruoyi.ams.agv.ndc.domain.AmsTask;
|
|
|
import com.ruoyi.ams.agv.ndc.service.IAmsTaskService;
|
|
|
import com.ruoyi.ams.box.service.IWmsBoxInfoService;
|
|
|
import com.ruoyi.ams.config.domain.FlowConfigEvent;
|
|
|
+import com.ruoyi.ams.config.domain.dto.AgvCallDTO;
|
|
|
+import com.ruoyi.ams.config.domain.dto.AgvCallItemDTO;
|
|
|
+import com.ruoyi.ams.config.domain.dto.LotattDTO;
|
|
|
import com.ruoyi.ams.config.service.IFlowConfigEventService;
|
|
|
import com.ruoyi.ams.inv.domain.InvLotLocId;
|
|
|
import com.ruoyi.ams.inv.mapper.InvLotLocIdMapper;
|
|
@@ -380,127 +384,175 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
|
|
|
log.info("已取消的任务无需重复取消");
|
|
|
return AjaxResult.error("已取消的任务无需重复取消");
|
|
|
}
|
|
|
- //转发类型任务才回调
|
|
|
- if (wcsTask.getTaskType().equals(Constant.TASK_TYPE.FORWARD.getValue())) {
|
|
|
- try {
|
|
|
- switch (state) {
|
|
|
- case 1:
|
|
|
- wcsTask.setStartTime(new Date());
|
|
|
- break;
|
|
|
- case 2://完成
|
|
|
- if (wcsTask.getState() != 4
|
|
|
- && (StringUtils.isEmpty(wcsTask.getBeforeTask()) || !wcsTask.getBeforeTask().equals("1"))) {
|
|
|
- log.info("任务未取货,不能直接完成!" + taskNo);
|
|
|
- return AjaxResult.error("任务未取货,不能直接完成!" + taskNo);
|
|
|
- }
|
|
|
- if (wcsTask.getState() == 2) {
|
|
|
- log.info("不能重复放货," + taskNo);
|
|
|
- return AjaxResult.error("不能重复放货," + taskNo);
|
|
|
- }
|
|
|
- wcsTask.setEndTime(new Date());
|
|
|
+ try {
|
|
|
+ switch (state) {
|
|
|
+ case 1:
|
|
|
+ wcsTask.setStartTime(new Date());
|
|
|
+ break;
|
|
|
+ case 2://完成
|
|
|
+ if (wcsTask.getState() != 4
|
|
|
+ && (StringUtils.isEmpty(wcsTask.getBeforeTask()) || !wcsTask.getBeforeTask().equals("1"))) {
|
|
|
+ log.info("任务未取货,不能直接完成!" + taskNo);
|
|
|
+ return AjaxResult.error("任务未取货,不能直接完成!" + taskNo);
|
|
|
+ }
|
|
|
+ if (wcsTask.getState() == 2) {
|
|
|
+ log.info("不能重复放货," + taskNo);
|
|
|
+ return AjaxResult.error("不能重复放货," + taskNo);
|
|
|
+ }
|
|
|
+ wcsTask.setEndTime(new Date());
|
|
|
+ // 解锁终点库位
|
|
|
+ baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationTo())
|
|
|
+ , Constant.WAREHOUSE_ID, updateBy);
|
|
|
+ // 将中间缓存位库存移动到终点
|
|
|
+ moveMiddleCacheToDestination(wcsTask);
|
|
|
+
|
|
|
+ //释放redis锁
|
|
|
+ if (!StringUtils.isEmpty(wcsTask.getExt8())) {
|
|
|
+ redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
|
|
|
+ }
|
|
|
+
|
|
|
+ //叠包机
|
|
|
+ if ("PM_L".equals(wcsTask.getTaskType().substring(0, 4))) {
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).writeBoolean(PLCEnum.STACKING_MACHINE_FEEDING_FINISH.getMetadata(), true);
|
|
|
+ Thread.sleep(3000L);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).writeBoolean(PLCEnum.STACKING_MACHINE_FEEDING_FINISH.getMetadata(), false);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).writeBoolean(PLCEnum.STACKING_MACHINE_FEEDING_RECEPTION.getMetadata(), false);
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(), PLCConnectNameEnum.STACKING_MACHINE.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.STACKING_MACHINE_FEEDING_FINISH.getMetadata() + "值:true", "1"));
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(), PLCConnectNameEnum.STACKING_MACHINE.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.STACKING_MACHINE_FEEDING_RECEPTION.getMetadata() + "值:false", "1"));
|
|
|
+ }
|
|
|
+ if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_1.name())) {
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_1.getMetadata(), true);
|
|
|
+ Thread.sleep(3000L);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_1.getMetadata(), false);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_1.getMetadata(), false);
|
|
|
+
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_1.getMetadata() + "值:true", "1"));
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_1.getMetadata() + "值:false", "1"));
|
|
|
+ }
|
|
|
+ if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_2.name())) {
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_2.getMetadata(), true);
|
|
|
+ Thread.sleep(3000L);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_2.getMetadata(), false);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_2.getMetadata(), false);
|
|
|
+
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_2.getMetadata() + "值:true", "1"));
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_2.getMetadata() + "值:false", "1"));
|
|
|
+ }
|
|
|
+ if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_3.name())) {
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_3.getMetadata(), true);
|
|
|
+ Thread.sleep(3000L);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_3.getMetadata(), false);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_3.getMetadata(), false);
|
|
|
+
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_3.getMetadata() + "值:true", "1"));
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(), "任务完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UP_EMPTY_RECEPTION_3.getMetadata() + "值:false", "1"));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ if (wcsTask.getState() == 4) {
|
|
|
+ log.info("不能重复取货," + taskNo);
|
|
|
+ return AjaxResult.error("不能重复取货," + taskNo);
|
|
|
+ }
|
|
|
+ // 标记已经取货完成
|
|
|
+ wcsTask.setBeforeTask("1");
|
|
|
+ // 解锁起始库位
|
|
|
+ baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom())
|
|
|
+ , Constant.WAREHOUSE_ID, updateBy);
|
|
|
+ // 将起始点库存移动到中间缓存位
|
|
|
+ moveStartingPointToMiddleCache(wcsTask);
|
|
|
+ //释放redis锁
|
|
|
+ if (!StringUtils.isEmpty(wcsTask.getExt8())) {
|
|
|
+ System.out.println(wcsTask.getExt8());
|
|
|
+ redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()), wcsTask.getLocationFrom());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_1.name())) {
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_Leave_1.getMetadata(), true);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata(), true);
|
|
|
+ Thread.sleep(3000L);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_Leave_1.getMetadata(), false);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata(), false);
|
|
|
+
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_Leave_1.getMetadata() + "值:true", "1"));
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata() + "值:true", "1"));
|
|
|
+ }
|
|
|
+ if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_2.name())) {
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_Leave_2.getMetadata(), true);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_2.getMetadata(), true);
|
|
|
+ Thread.sleep(3000L);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_Leave_2.getMetadata(), false);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_2.getMetadata(), false);
|
|
|
+
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_Leave_2.getMetadata() + "值:true", "1"));
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_2.getMetadata() + "值:true", "1"));
|
|
|
+ }
|
|
|
+ if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_3.name())) {
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_Leave_3.getMetadata(), true);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_1.getMetadata(), true);
|
|
|
+ Thread.sleep(3000L);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_Leave_3.getMetadata(), false);
|
|
|
+ plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_3.getMetadata(), false);
|
|
|
+
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_Leave_3.getMetadata() + "值:true", "1"));
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(), PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(), "取货完成修改PLC数值,地址:" + PLCEnum.PACKING_MACHINE_UNLOADING_RECEPTION_3.getMetadata() + "值:true", "1"));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
+ break;
|
|
|
+ case 6://卸货
|
|
|
+ if (wcsTask.getState() != 4
|
|
|
+ && (StringUtils.isEmpty(wcsTask.getBeforeTask()) || !wcsTask.getBeforeTask().equals("1"))) {
|
|
|
+ log.info("任务未取货,不能直接完成!" + taskNo);
|
|
|
+ return AjaxResult.error("任务未取货,不能直接完成!" + taskNo);
|
|
|
+ }
|
|
|
+ if (wcsTask.getState() == 2) {
|
|
|
+ log.info("不能重复放货," + taskNo);
|
|
|
+ return AjaxResult.error("不能重复放货," + taskNo);
|
|
|
+ }
|
|
|
+ if (wcsTask.getState() == 6) {
|
|
|
+ return AjaxResult.error("不能重复放货," + taskNo);
|
|
|
+ }
|
|
|
+ wcsTask.setEndTime(new Date());
|
|
|
+ // 解锁终点库位
|
|
|
+ baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationTo())
|
|
|
+ , Constant.WAREHOUSE_ID, updateBy);
|
|
|
+ // 将中间缓存位库存移动到终点
|
|
|
+ moveMiddleCacheToDestination(wcsTask);
|
|
|
+ //释放redis锁
|
|
|
+ if (!StringUtils.isEmpty(wcsTask.getExt8())) {
|
|
|
+ redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 7://取消
|
|
|
+ wcsTask.setEndTime(new Date());
|
|
|
+ //如果取到货就只解锁终点库位
|
|
|
+ if (wcsTask.getState() == 4 || wcsTask.getState() == 5) {
|
|
|
// 解锁终点库位
|
|
|
baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationTo())
|
|
|
, Constant.WAREHOUSE_ID, updateBy);
|
|
|
- // 将中间缓存位库存移动到终点
|
|
|
- moveMiddleCacheToDestination(wcsTask);
|
|
|
- //叠包机
|
|
|
- if ("PM_L".equals(wcsTask.getTaskType().substring(0, 4))) {
|
|
|
- plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.STACKING_MACHINE.getMetadata()).writeBoolean(PLCEnum.STACKING_MACHINE_FEEDING_FINISH.getMetadata(), true);
|
|
|
- SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.STACKING_MACHINE.getMetadata(),PLCConnectNameEnum.STACKING_MACHINE.getMetaName(),"任务完成修改PLC数值,地址:"+PLCEnum.STACKING_MACHINE_FEEDING_FINISH.getMetadata()+"值:true","1"));
|
|
|
- }
|
|
|
- if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_1.name())) {
|
|
|
- plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_1.getMetadata(), true);
|
|
|
- SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(),PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(),"任务完成修改PLC数值,地址:"+PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_1.getMetadata()+"值:true","1"));
|
|
|
- }
|
|
|
- if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_2.name())) {
|
|
|
- plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_2.getMetadata(), true);
|
|
|
- SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(),PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(),"任务完成修改PLC数值,地址:"+PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_2.getMetadata()+"值:true","1"));
|
|
|
- }
|
|
|
- if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_UP_3.name())) {
|
|
|
- plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_3.getMetadata(), true);
|
|
|
- SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(),PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(),"任务完成修改PLC数值,地址:"+PLCEnum.PACKING_MACHINE_UP_EMPTY_Leave_3.getMetadata()+"值:true","1"));
|
|
|
- }
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- if (wcsTask.getState() == 4) {
|
|
|
- log.info("不能重复取货," + taskNo);
|
|
|
- return AjaxResult.error("不能重复取货," + taskNo);
|
|
|
- }
|
|
|
- if (wcsTask.getBeforeTask() != null && wcsTask.getBeforeTask().equals("1")) {
|
|
|
- log.info("不能重复取货," + taskNo);
|
|
|
- return AjaxResult.error("不能重复取货," + taskNo);
|
|
|
- }
|
|
|
- // 标记已经取货完成
|
|
|
- wcsTask.setBeforeTask("1");
|
|
|
- // 解锁起始库位
|
|
|
- baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom())
|
|
|
+ } else {
|
|
|
+ // 解锁终点和起始库位
|
|
|
+ baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom()), Long.parseLong(wcsTask.getLocationTo())
|
|
|
, Constant.WAREHOUSE_ID, updateBy);
|
|
|
- // 将起始点库存移动到中间缓存位
|
|
|
- moveStartingPointToMiddleCache(wcsTask);
|
|
|
- if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_1.name())) {
|
|
|
- plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_Leave_1.getMetadata(), true);
|
|
|
- SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_1.getMetadata(),PLCConnectNameEnum.PACKING_MACHINE_1.getMetaName(),"取货完成修改PLC数值,地址:"+PLCEnum.PACKING_MACHINE_UNLOADING_Leave_1.getMetadata()+"值:true","1"));
|
|
|
- }
|
|
|
- if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_2.name())) {
|
|
|
- plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_Leave_2.getMetadata(), true);
|
|
|
- SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_2.getMetadata(),PLCConnectNameEnum.PACKING_MACHINE_2.getMetaName(),"取货完成修改PLC数值,地址:"+PLCEnum.PACKING_MACHINE_UNLOADING_Leave_2.getMetadata()+"值:true","1"));
|
|
|
- }
|
|
|
- if (wcsTask.getTaskType().equals(Constant.FLOW_CONFIG_ID.PM_L_3.name())) {
|
|
|
- plcConnectServiceRunner.getPlcServer(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata()).writeBoolean(PLCEnum.PACKING_MACHINE_UNLOADING_Leave_3.getMetadata(), true);
|
|
|
- SpringUtil.getApplicationContext().publishEvent(new DeviceLog(PLCConnectNameEnum.PACKING_MACHINE_3.getMetadata(),PLCConnectNameEnum.PACKING_MACHINE_3.getMetaName(),"取货完成修改PLC数值,地址:"+PLCEnum.PACKING_MACHINE_UNLOADING_Leave_3.getMetadata()+"值:true","1"));
|
|
|
- }
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- break;
|
|
|
- case 6://卸货
|
|
|
- if (wcsTask.getState() != 4
|
|
|
- && (StringUtils.isEmpty(wcsTask.getBeforeTask()) || !wcsTask.getBeforeTask().equals("1"))) {
|
|
|
- log.info("任务未取货,不能直接完成!" + taskNo);
|
|
|
- return AjaxResult.error("任务未取货,不能直接完成!" + taskNo);
|
|
|
- }
|
|
|
- if (wcsTask.getState() == 2) {
|
|
|
- log.info("不能重复放货," + taskNo);
|
|
|
- return AjaxResult.error("不能重复放货," + taskNo);
|
|
|
- }
|
|
|
- if (wcsTask.getState() == 6) {
|
|
|
- return AjaxResult.error("不能重复放货," + taskNo);
|
|
|
- }
|
|
|
- wcsTask.setEndTime(new Date());
|
|
|
- // 解锁终点库位
|
|
|
- baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationTo())
|
|
|
- , Constant.WAREHOUSE_ID, updateBy);
|
|
|
- // 将中间缓存位库存移动到终点
|
|
|
- moveMiddleCacheToDestination(wcsTask);
|
|
|
- break;
|
|
|
- case 7://取消
|
|
|
- wcsTask.setEndTime(new Date());
|
|
|
- //如果取到货就只解锁终点库位
|
|
|
- if (wcsTask.getState() == 4 || wcsTask.getState() == 5) {
|
|
|
- // 解锁终点库位
|
|
|
- baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationTo())
|
|
|
- , Constant.WAREHOUSE_ID, updateBy);
|
|
|
- } else {
|
|
|
- // 解锁终点和起始库位
|
|
|
- baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom()), Long.parseLong(wcsTask.getLocationTo())
|
|
|
- , Constant.WAREHOUSE_ID, updateBy);
|
|
|
- }
|
|
|
- break;
|
|
|
- case 8:
|
|
|
- log.error("任务异常状态------------" + wcsTask.getTaskNo());
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- log.info(wcsTask.getTaskNo() + "-----" + "回调状态:" + state + "异常", e);
|
|
|
- wcsTask.setRemark("回调状态:" + state + "异常");
|
|
|
- SpringUtil.getApplicationContext().publishEvent(new DeviceLog(wcsTask.getTaskNo(),"AGV","任务失败,发生异常:"+e.getMessage(),"2"));
|
|
|
- throw new RuntimeException();
|
|
|
+ }
|
|
|
+ //释放redis锁
|
|
|
+ if (!StringUtils.isEmpty(wcsTask.getExt8())) {
|
|
|
+ redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 8:
|
|
|
+ log.error("任务异常状态------------" + wcsTask.getTaskNo());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
}
|
|
|
- } else {
|
|
|
-
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.info(wcsTask.getTaskNo() + "-----" + "回调状态:" + state + "异常", e);
|
|
|
+ wcsTask.setRemark("回调状态:" + state + "异常");
|
|
|
+ SpringUtil.getApplicationContext().publishEvent(new DeviceLog(wcsTask.getTaskNo(), "AGV", "任务失败,发生异常:" + e.getMessage(), "2"));
|
|
|
+ throw new RuntimeException();
|
|
|
}
|
|
|
wcsTask.setState(state.longValue());
|
|
|
wcsTask.setUpdateDate(new Date());
|
|
@@ -508,6 +560,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
|
|
|
return AjaxResult.success("操作成功!");
|
|
|
}
|
|
|
|
|
|
+
|
|
|
/**
|
|
|
* 将起点库存放到中间缓存位置
|
|
|
*
|
|
@@ -598,15 +651,26 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional
|
|
|
public int moveEmptyPallets(WcsTask wcsTask) {
|
|
|
BaseLocationInfo formAddress = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(wcsTask.getLocationFrom(), Constant.WAREHOUSE_ID);
|
|
|
if (ObjectUtil.isNull(formAddress)) {
|
|
|
throw new BaseException("起始位置不存在");
|
|
|
}
|
|
|
+ //修改库存
|
|
|
+ List<AgvCallItemDTO> agvCallItemDTOList = new ArrayList<>();
|
|
|
+ AgvCallItemDTO agvCallItemDTO = new AgvCallItemDTO();
|
|
|
+ agvCallItemDTO.setSku("EMPTY_TRAY"); // 空托
|
|
|
+ agvCallItemDTO.setQty(1.0);
|
|
|
+ agvCallItemDTOList.add(agvCallItemDTO);
|
|
|
+ AgvCallDTO agvCallDTO = new AgvCallDTO();
|
|
|
+ agvCallDTO.setAgvCallItemDTOList(agvCallItemDTOList);
|
|
|
+ invLotLocIdService.initInv(String.valueOf(formAddress.getId()), agvCallDTO);
|
|
|
+
|
|
|
WcsTask task = new WcsTask();
|
|
|
- task.setLocationFrom(formAddress.getId()+"");
|
|
|
+ task.setLocationFrom(formAddress.getId() + "");
|
|
|
List<WcsTask> tasking = wcsTaskMapper.getTasking(task);
|
|
|
- if (!tasking.isEmpty()){
|
|
|
+ if (!tasking.isEmpty()) {
|
|
|
throw new BaseException("起始位置存在任务!");
|
|
|
}
|
|
|
BaseLocationInfo toAddress = null;
|
|
@@ -617,14 +681,14 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
|
|
|
List<BaseLocationInfo> baseLocationInfos = iBaseLocationInfoService.selectBaseLocationInfoList(baseLocationInfo);
|
|
|
for (BaseLocationInfo locationInfo : baseLocationInfos) {
|
|
|
task = new WcsTask();
|
|
|
- task.setLocationTo(locationInfo.getId()+"");
|
|
|
+ task.setLocationTo(locationInfo.getId() + "");
|
|
|
tasking = wcsTaskMapper.getTasking(task);
|
|
|
- if (!tasking.isEmpty()){
|
|
|
+ if (!tasking.isEmpty()) {
|
|
|
continue;
|
|
|
}
|
|
|
toAddress = locationInfo;
|
|
|
}
|
|
|
- if (ObjectUtil.isNull(toAddress)){
|
|
|
+ if (ObjectUtil.isNull(toAddress)) {
|
|
|
throw new BaseException("没有合适的空库位");
|
|
|
}
|
|
|
WcsTask wcsTask1 = new WcsTask();
|