Browse Source

任务列表增加取卸货完成

k 1 year ago
parent
commit
f958607a73

+ 13 - 5
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/ams/WcsTaskController.java

@@ -14,6 +14,7 @@ import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.utils.IdSequenceUtils;
 import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.utils.StringUtils;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -114,24 +115,31 @@ public class WcsTaskController extends BaseController {
     @Log(title = "取货任务完成", businessType = BusinessType.INSERT)
     @PutMapping(value = "/taskPickupComplete/{taskNo}")
     public AjaxResult taskPickupComplete(@PathVariable("taskNo") String taskNo) {
+        int agvNo = 9999;
         WcsTask wcsTask = wcsTaskService.selectWcsTaskByTaskNo(taskNo);
         if (wcsTask == null) {
             return AjaxResult.error("任务回调失败");
         }
-        wcsTaskService.callBack(wcsTask.getTaskNo(), 4, Integer.parseInt(wcsTask.getAgvNo()));
-        return AjaxResult.success("执行成功");
-
+        if (StringUtils.isNotEmpty(wcsTask.getAgvNo())) {
+            agvNo = Integer.parseInt(wcsTask.getAgvNo());
+        }
+        AjaxResult ajaxResult = wcsTaskService.callBack(wcsTask.getTaskNo(), 4, agvNo);
+        return AjaxResult.error(ajaxResult.getMsg());
     }
 
     @Log(title = "卸货任务完成", businessType = BusinessType.INSERT)
     @PutMapping(value = "/taskComplete/{taskNo}")
     public AjaxResult taskComplete(@PathVariable("taskNo") String taskNo) {
+        int agvNo = 9999;
         WcsTask wcsTask = wcsTaskService.selectWcsTaskByTaskNo(taskNo);
         if (wcsTask == null) {
            return AjaxResult.error("任务回调失败");
         }
-        wcsTaskService.callBack(wcsTask.getTaskNo(),2,Integer.parseInt(wcsTask.getAgvNo()));
-        return AjaxResult.success("执行成功");
+        if (StringUtils.isNotEmpty(wcsTask.getAgvNo())) {
+            agvNo = Integer.parseInt(wcsTask.getAgvNo());
+        }
+        AjaxResult ajaxResult = wcsTaskService.callBack(wcsTask.getTaskNo(),2,agvNo);
+        return AjaxResult.error(ajaxResult.getMsg());
     }
 
     @Log(title = "任务取消", businessType = BusinessType.INSERT)

+ 1 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/test/WcsTaskResponseController.java

@@ -31,7 +31,6 @@ public class WcsTaskResponseController {
     @ApiOperation("WcsTask任务反馈")
     @PostMapping("/responseState")
     public AjaxResult responseState(String taskNo, Integer state, Integer carNo) {
-        iWcsTaskService.callBack(taskNo, state, carNo);
-        return AjaxResult.success();
+        return iWcsTaskService.callBack(taskNo, state, carNo);
     }
 }

+ 21 - 14
ruoyi-ui/src/views/ams/task/index.vue

@@ -496,6 +496,7 @@ import {
   updateWcsTask,
   addTestTask,
   completeWcsTask,
+  pickupCompleteWcsTask,
   taskCancel,
   invDisposition,
   addChargeTask
@@ -770,27 +771,33 @@ export default {
       }, `wcsTask_${new Date().getTime()}.xlsx`)
     },
     handlePickupCompleted (row) {
+      let that = this
       const taskNos = row.taskNo
       this.$modal.confirm('是否确认取货完成"' + taskNos + '"的任务?').then(function() {
-        pickupCompleteWcsTask(taskNos).then(response => {
-          if (response.code === 200) {
-            this.$modal.msgSuccess(response.msg);
-          } else {
-            this.$modal.msgError(response.msg);
-          }
-        });
+       pickupCompleteWcsTask(taskNos).then(response => {
+         if (response.code === 200) {
+           this.getList();
+           that.$modal.msgSuccess(response.msg);
+         } else {
+           that.getList();
+           that.$modal.msgError(response.msg);
+         }
+       });
       });
     },
     handleComplete (row) {
+      let that = this
       const taskNos = row.taskNo
       this.$modal.confirm('是否确认卸货完成"' + taskNos + '"的任务?').then(function() {
-        completeWcsTask(taskNos).then(response => {
-          if (response.code === 200) {
-            this.$modal.msgSuccess(response.msg);
-          } else {
-            this.$modal.msgError(response.msg);
-          }
-        });
+       completeWcsTask(taskNos).then(response => {
+         if (response.code === 200) {
+           this.getList();
+           that.$modal.msgSuccess(response.msg);
+         } else {
+           this.getList();
+           that.$modal.msgError(response.msg);
+         }
+       });
       });
     },
     handleCancel (row) {

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/task/service/IWcsTaskService.java

@@ -142,5 +142,5 @@ public interface IWcsTaskService {
      * @param state
      * @param carNo
      */
-    void callBack(String taskNo, Integer state, Integer carNo);
+    AjaxResult callBack(String taskNo, Integer state, Integer carNo);
 }

+ 31 - 22
warewms-ams/src/main/java/com/ruoyi/ams/task/service/impl/WcsTaskServiceImpl.java

@@ -190,7 +190,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
         if (!StringUtils.isEmpty(wcsTask.getLocationFrom())
                 && !StringUtils.isEmpty(wcsTask.getExt5())) {
             //更新托盘绑定关系
-            wmsBoxInfoService.updateLocationBind(wcsTask.getExt5(),Constant.LOC_MIDDLE_CACHE, null);
+            wmsBoxInfoService.updateLocationBind(wcsTask.getExt5(), Constant.LOC_MIDDLE_CACHE, null);
         }
     }
 
@@ -218,20 +218,20 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
             case "6":
                 // 修改分配明细为任务完成21
                 actAllocationDetailsService.modifyAssignmentTaskStatus(wcsTask.getExt6()
-                        ,Long.valueOf(wcsTask.getLocationFrom()), wcsTask.getExt5());
+                        , Long.valueOf(wcsTask.getLocationFrom()), wcsTask.getExt5());
                 // 修改备货单:分配明细为拣货完成40
                 actAllocationDetailsService.modifyAssignmentStockTaskStatusPickingComplete(wcsTask.getExt6()
-                        ,Long.valueOf(wcsTask.getLocationFrom()), wcsTask.getExt5());
+                        , Long.valueOf(wcsTask.getLocationFrom()), wcsTask.getExt5());
                 // 修改库内理货(1)库内理货不生成分配明细所以不修改分配状态(2)出库单状态为完成98,99
                 wmsDocOrderHeaderService.modifyTheTallyStatusInTheWarehouse(wcsTask.getExt6()
-                        ,Long.valueOf(wcsTask.getLocationFrom()), wcsTask.getExt5());
+                        , Long.valueOf(wcsTask.getLocationFrom()), wcsTask.getExt5());
                 break;
             // 回库 (托盘)
             case "9":
                 // 修改批次lotatt15(出库单号)为空
                 invLotLocIdService.clearInvActOrderNoByPalletNo(wcsTask.getExt5());
                 break;
-                // 移库
+            // 移库
             case "10":
                 break;
             default:
@@ -254,7 +254,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
         // 任务状态: 队列等待 直接删除即可 其他状态 需要请求AMS删除
         if (wcsTask.getState() == Constant.TASK_STS.TASK9.getValue().longValue()
                 || wcsTask.getState() == Constant.TASK_STS.TASK10.getValue().longValue()) {
-            callBack(wcsTask.getTaskNo(), 7, null);
+            return callBack(wcsTask.getTaskNo(), 7, null);
         } else {
             //请求ams 取消任务
             AmsTask amsTaskQuery = new AmsTask();
@@ -333,13 +333,13 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
 
     @Transactional
     @Override
-    public synchronized void callBack(String taskNo, Integer state, Integer carNo) {
+    public synchronized AjaxResult callBack(String taskNo, Integer state, Integer carNo) {
         String updateBy = "NDC";
         log.info("agv回传------------->" + taskNo + "," + state);
         WcsTask wcsTask = wcsTaskService.selectWcsTaskByTaskNo(taskNo);
         if (wcsTask == null) {
             log.info("agv回传没有任务记录------------->");
-            return;
+            return AjaxResult.error("agv回传没有任务记录------------->");
         }
 
         if (state > 1 && state != 7) {
@@ -348,7 +348,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
 
         if (wcsTask.getState() == 2) {
             log.info("已完成的任务无需反馈");
-            return;
+            return AjaxResult.error("已完成的任务无需反馈");
         }
         //转发类型任务才回调
         if (wcsTask.getTaskType().equals(Constant.TASK_TYPE.FORWARD.getValue())) {
@@ -358,16 +358,17 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                         wcsTask.setStartTime(new Date());
                         break;
                     case 2://完成
-                        if (wcsTask.getState() != 4 && wcsTask.getState() != 7) {
+                        if (wcsTask.getState() != 4
+                                && (StringUtils.isEmpty(wcsTask.getBeforeTask()) || !wcsTask.getBeforeTask().equals("1"))) {
                             log.info("任务未取货,不能直接完成!" + taskNo);
-                            return;
+                            return AjaxResult.error("任务未取货,不能直接完成!" + taskNo);
                         }
                         if (wcsTask.getState() == 2) {
                             log.info("不能重复放货," + taskNo);
-                            return;
+                            return AjaxResult.error("不能重复放货," + taskNo);
                         }
                         if (wcsTask.getState() == 6) {
-                            return;
+                            return AjaxResult.error("不能重复放货," + taskNo);
                         }
                         wcsTask.setEndTime(new Date());
                         // 解锁终点库位
@@ -389,8 +390,14 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                     case 4:
                         if (wcsTask.getState() == 4) {
                             log.info("不能重复取货," + taskNo);
-                            return;
+                            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())
                                 , Constant.WAREHOUSE_ID, updateBy);
@@ -407,16 +414,17 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                     case 5:
                         break;
                     case 6://卸货
-                        if (wcsTask.getState() != 4 && wcsTask.getState() != 7) {
-                            log.info("任务未取货,不能直接完成!");
-                            return;
+                        if (wcsTask.getState() != 4
+                                && (StringUtils.isEmpty(wcsTask.getBeforeTask())|| !wcsTask.getBeforeTask().equals("1"))) {
+                            log.info("任务未取货,不能直接完成!" + taskNo);
+                            return AjaxResult.error("任务未取货,不能直接完成!" + taskNo);
                         }
-                        if (wcsTask.getState() == 6) {
+                        if (wcsTask.getState() == 2) {
                             log.info("不能重复放货," + taskNo);
-                            return;
+                            return AjaxResult.error("不能重复放货," + taskNo);
                         }
-                        if (wcsTask.getState() == 2) {
-                            return;
+                        if (wcsTask.getState() == 6) {
+                            return AjaxResult.error("不能重复放货," + taskNo);
                         }
                         wcsTask.setEndTime(new Date());
                         // 解锁终点库位
@@ -475,6 +483,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
         wcsTask.setState(state.longValue());
         wcsTask.setUpdateDate(new Date());
         wcsTaskService.updateWcsTask(wcsTask);
+        return AjaxResult.success("操作成功!");
     }
 
     /**
@@ -505,7 +514,7 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
                 if (num == 0) {
                     return;
                 }
-                redisCache.setCacheObject(RedisKey.AGV02_TASK_NUM, num -1);
+                redisCache.setCacheObject(RedisKey.AGV02_TASK_NUM, num - 1);
             }
         }