k před 2 roky
rodič
revize
3f756667d3

+ 29 - 18
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -4,7 +4,9 @@ import java.lang.reflect.Method;
 import java.util.Date;
 import java.util.List;
 
+import com.ruoyi.ams.agv.ndc.domain.AmsTask;
 import com.ruoyi.ams.agv.ndc.entity.CallbackResult;
+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.service.IFlowConfigEventService;
@@ -57,6 +59,8 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
     private IInvLotLocIdService invLotLocIdService;
     @Autowired
     private IInvLotAttService iInvLotAttService;
+    @Autowired
+    private IAmsTaskService iAmsTaskService;
 
     //任务状态翻译
     private String codeConvert(int code) {
@@ -221,25 +225,32 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
 
     @Transactional
     @Override
-    public void cancelTask(WcsTask wcsTask) {
-        BaseLocationInfo bf = null;
-        BaseLocationInfo bt = null;
-        //释放库位占用状态
-        if (!StringUtils.isEmpty(wcsTask.getLocationFrom())) {
-            bf = baseLocationInfoService.selectBaseLocationInfoById(Long.parseLong(wcsTask.getLocationFrom()));
-            baseLocationInfoService.updateLocationStockStatus(bf.getId(), "00");
-        }
-        if (!StringUtils.isEmpty(wcsTask.getLocationTo())) {
-            bt = baseLocationInfoService.selectBaseLocationInfoById(Long.parseLong(wcsTask.getLocationTo()));
-            baseLocationInfoService.updateLocationStockStatus(bt.getId(), "00");
-        }
-        //释放redis锁
-        if (!StringUtils.isEmpty(wcsTask.getExt8())) {
-            redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
+    public AjaxResult cancelTask(WcsTask wcsTask) {
+
+        String taskNo = wcsTask.getTaskNo();
+        // 任务状态: 队列等待 直接删除即可 其他状态 需要请求AMS删除
+        if (wcsTask.getState().equals(Constant.TASK_STS.TASK9.getValue())
+                || wcsTask.getState().equals(Constant.TASK_STS.TASK10.getValue())) {
+            callBack(wcsTask.getTaskNo(), 7, null);
+        } else {
+            //请求ams 取消任务
+            AmsTask amsTaskQuery = new AmsTask();
+            amsTaskQuery.setTaskNo(taskNo);
+            AmsTask amsTask = iAmsTaskService.selectAmsTaskByModel(amsTaskQuery);
+            if (amsTask == null) {
+                return AjaxResult.error("amsTask没有对应任务!");
+            }
+            if (null != amsTask.getEvent() && amsTask.getEvent() == 85) {
+                return AjaxResult.error("任务已取消!");
+            }
+            AmsTask amsTaskUpdate = new AmsTask();
+            amsTaskUpdate.setId(amsTask.getId());
+            amsTaskUpdate.setIsDelete(1);
+            amsTaskUpdate.setAciAccept(0);
+            //  todo 这里修改竟然有问题,修改不了。
+            iAmsTaskService.updateAmsTask(amsTask);
         }
-        //修改任务状态
-        wcsTask.setState(7L);
-        wcsTaskMapper.updateWcsTask(wcsTask);
+        return AjaxResult.success("取消任务指令已下发!");
     }
 
     @Override