Forráskód Böngészése

任务回调添加AGV车号

zhifei 1 éve
szülő
commit
02e7fb79f8

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/tianao/TianaoApiContoller.java

@@ -34,7 +34,7 @@ public class TianaoApiContoller extends BaseController {
      * @param tianaoTask
      * @param tianaoTask
      * @return
      * @return
      */
      */
-    @PostMapping(value = "/addTask")
+    @PostMapping(value = "/taskManage")
     public AjaxResult addTestTask(@Validated @RequestBody TianaoTask tianaoTask) {
     public AjaxResult addTestTask(@Validated @RequestBody TianaoTask tianaoTask) {
         if ("0".equals(tianaoTask.getTaskType())){
         if ("0".equals(tianaoTask.getTaskType())){
             return  tianaoService.addTask(tianaoTask);
             return  tianaoService.addTask(tianaoTask);

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

@@ -360,124 +360,124 @@ public class WcsTaskServiceImpl implements IWcsTaskService {
             log.info("已取消的任务无需重复取消");
             log.info("已取消的任务无需重复取消");
             return AjaxResult.error("已取消的任务无需重复取消");
             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);
-//                        }
-//                        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 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())
-//                                , Constant.WAREHOUSE_ID, updateBy);
-//                        // 将起始点库存移动到中间缓存位
-//                        moveStartingPointToMiddleCache(wcsTask);
-//
-//                        //释放redis锁
-//                        if (!StringUtils.isEmpty(wcsTask.getExt8())) {
-//                            redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()), wcsTask.getLocationFrom());
-//                        }
-//                        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);
-//                        } else {
-//                            // 解锁终点和起始库位
-//                            baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom()), Long.parseLong(wcsTask.getLocationTo())
-//                                    , Constant.WAREHOUSE_ID, updateBy);
-//                        }
-//                        //释放redis锁
-//                        if (!StringUtils.isEmpty(wcsTask.getExt8())) {
-//                            redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
-//                        }
-//                        // 取消任务删除中间缓存库存
-////                        cancelTaskDelMiddleCache(wcsTask);
-//                        break;
-//                    case 8:
-//                        log.error("任务异常状态------------" + wcsTask.getTaskNo());
-//                        break;
-//                    default:
-//                        break;
-//                }
-//            } catch (Exception e) {
-//                log.info(wcsTask.getTaskNo() + "-----" + "回调状态:" + state + "异常", e);
-//                wcsTask.setRemark("回调状态:" + state + "异常");
-//                //释放redis锁
-//                if (!StringUtils.isEmpty(wcsTask.getExt8())) {
-//                    redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
-//                }
-//                throw new RuntimeException();
-//            }
-//        } else {
-//
-//        }
+        //转发类型任务才回调
+        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);
+                        }
+                        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 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())
+                                , Constant.WAREHOUSE_ID, updateBy);
+                        // 将起始点库存移动到中间缓存位
+                        moveStartingPointToMiddleCache(wcsTask);
+
+                        //释放redis锁
+                        if (!StringUtils.isEmpty(wcsTask.getExt8())) {
+                            redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()), wcsTask.getLocationFrom());
+                        }
+                        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);
+                        } else {
+                            // 解锁终点和起始库位
+                            baseLocationInfoService.unLockLocationStockStatus(Long.parseLong(wcsTask.getLocationFrom()), Long.parseLong(wcsTask.getLocationTo())
+                                    , Constant.WAREHOUSE_ID, updateBy);
+                        }
+                        //释放redis锁
+                        if (!StringUtils.isEmpty(wcsTask.getExt8())) {
+                            redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
+                        }
+                        // 取消任务删除中间缓存库存
+//                        cancelTaskDelMiddleCache(wcsTask);
+                        break;
+                    case 8:
+                        log.error("任务异常状态------------" + wcsTask.getTaskNo());
+                        break;
+                    default:
+                        break;
+                }
+            } catch (Exception e) {
+                log.info(wcsTask.getTaskNo() + "-----" + "回调状态:" + state + "异常", e);
+                wcsTask.setRemark("回调状态:" + state + "异常");
+                //释放redis锁
+                if (!StringUtils.isEmpty(wcsTask.getExt8())) {
+                    redisCache.unlockCacheObject(Long.parseLong(wcsTask.getExt8()));
+                }
+                throw new RuntimeException();
+            }
+        } else {
+
+        }
         wcsTask.setUpdateBy(updateBy);
         wcsTask.setUpdateBy(updateBy);
         wcsTask.setState(state.longValue());
         wcsTask.setState(state.longValue());
         wcsTask.setUpdateDate(new Date());
         wcsTask.setUpdateDate(new Date());

+ 3 - 3
warewms-tianao/src/main/java/com/ruoyi/tianao/service/impl/TianaoServiceImpl.java

@@ -118,7 +118,6 @@ public class TianaoServiceImpl implements TianaoService {
         if (ObjectUtil.isNull(wcsTask)) {
         if (ObjectUtil.isNull(wcsTask)) {
             return  AjaxResult.error("任务查询不存在");
             return  AjaxResult.error("任务查询不存在");
         }
         }
-
         if (statusLsit.contains(wcsTask.getState())){
         if (statusLsit.contains(wcsTask.getState())){
             return AjaxResult.error("当前任务无法修改卸货点");
             return AjaxResult.error("当前任务无法修改卸货点");
         }
         }
@@ -166,10 +165,11 @@ public class TianaoServiceImpl implements TianaoService {
     public void tianaoCallBack(WcsTask wcsTask){
     public void tianaoCallBack(WcsTask wcsTask){
         if (StringUtils.isNotEmpty(wcsTask.getExt7())){
         if (StringUtils.isNotEmpty(wcsTask.getExt7())){
             JSONObject jsonObject = new JSONObject();
             JSONObject jsonObject = new JSONObject();
-            jsonObject.put("lcsTaskId", wcsTask.getExt7());
-            jsonObject.put("containerNo", wcsTask.getExt8());
+            jsonObject.put("lcs_task_id", wcsTask.getExt7());
+            jsonObject.put("container_no", wcsTask.getExt8());
             jsonObject.put("task_type", wcsTask.getBusinessType());
             jsonObject.put("task_type", wcsTask.getBusinessType());
             jsonObject.put("task_status", wcsTask.getState());
             jsonObject.put("task_status", wcsTask.getState());
+            jsonObject.put("agv_no", wcsTask.getAgvNo());
             jsonObject.put("time", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,new Date()));
             jsonObject.put("time", DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,new Date()));
             String body = HttpRequest.post(taskBackUrl)
             String body = HttpRequest.post(taskBackUrl)
                     .form(jsonObject)
                     .form(jsonObject)