From ffc4d0526bf02e7e00a7872d05a1e67e520e59d6 Mon Sep 17 00:00:00 2001
From: yangyang
Date: 星期一, 02 六月 2025 12:06:40 +0800
Subject: [PATCH] 新增自动盘点功能

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java |  102 +++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 95 insertions(+), 7 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java
index b86c0bd..e962018 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/schedule/ScheduleJobs.java
@@ -15,10 +15,13 @@
 import com.zy.asrs.wms.apis.wcs.entity.request.TaskDescribe;
 import com.zy.asrs.wms.apis.wcs.entity.request.TaskParam;
 import com.zy.asrs.wms.apis.wcs.entity.response.CommonReponse;
-import com.zy.asrs.wms.asrs.entity.Task;
+import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.entity.dto.OrderOutMergeDto;
+import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
 import com.zy.asrs.wms.asrs.entity.enums.TaskStsType;
-import com.zy.asrs.wms.asrs.service.TaskService;
-import com.zy.asrs.wms.asrs.service.WorkService;
+import com.zy.asrs.wms.asrs.service.*;
+import com.zy.asrs.wms.asrs.service.impl.LocServiceImpl;
+import com.zy.asrs.wms.utils.Utils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpEntity;
@@ -49,9 +52,22 @@
     private RestTemplate restTemplate;
     @Autowired
     private WorkService workService;
-
     @Resource
     private SystemProperties properties;
+    @Autowired
+    private LocServiceImpl locService;
+    @Autowired
+    private LocDetlService locDetlService;
+    @Autowired
+    private TaskDetlService taskDetlService;
+    @Autowired
+    private LocDetlFieldService locDetlFieldService;
+    @Autowired
+    private TaskDetlFieldService taskDetlFieldService;
+    @Autowired
+    private CacheSiteService cacheSiteService;
+    @Autowired
+    private OperationPortService operationPortService;
 
     /***
      * 鍏ュ簱浠诲姟---閫氱煡ESS杈撻�佺嚎娴佸姩
@@ -98,6 +114,78 @@
             }
         });
 
+    }
+
+    /**
+     * 鐢熸垚鑷姩鐩樼偣浠诲姟
+     */
+    @Scheduled(cron = "0/50 * * * * ?")
+    @Transactional(rollbackFor = Exception.class)
+    public void genCheckTask() {
+        Loc locs = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocStsId, LocStsType.F.val()).orderByAsc(Loc::getLocNo).last("limit 1"));
+        if (Objects.isNull(locs)) {
+            return;
+        }
+        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().select(Task::getId).eq(Task::getTaskType, 107L));
+        if (!tasks.isEmpty() && tasks.size() >= 4) {
+            //榛樿鐢熸垚鍥涗釜鐩樼偣浠诲姟锛岃秴杩�4涓紝鍋滄鐢熸垚鐩樼偣浠诲姟;
+            return;
+        }
+        OperationPort operationPort = operationPortService.getOne(new LambdaQueryWrapper<OperationPort>().last("ORDER BY RAND() LIMIT 1;"));
+        if (operationPort == null || Objects.isNull(operationPort)) {
+            throw new CoolException("浣滀笟鍙d笉瀛樺湪");
+        }
+        Task task = new Task();
+        task.setTaskNo(workService.generateTaskNo(TaskStsType.GENERATE_OUT.id));
+        task.setTaskSts(TaskStsType.GENERATE_OUT.id);
+        task.setTaskType(107L); //榛樿107鐩樼偣浠诲姟锛岀洏鐐逛换鍔℃病鏈夛紝鎸�103澶勭悊
+        task.setIoPri(workService.generateIoPri(TaskStsType.GENERATE_OUT.id));
+        task.setOriginLoc(locs.getLocNo());
+        task.setTargetSite(operationPort.getFlag());
+        task.setBarcode(locs.getBarcode());
+
+        if (!taskService.save(task)) {
+            throw new CoolException("浠诲姟鐢熸垚澶辫触锛侊紒");
+        }
+
+        List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocId, locs.getId()));
+        if (locDetls.isEmpty()) {
+            throw new CoolException("鏄庣粏涓嶅瓨鍦紒锛�");
+        }
+
+        for (LocDetl locDetl : locDetls) {
+            TaskDetl taskDetl = new TaskDetl();
+            taskDetl.sync(locDetl);
+            taskDetl.setId(null);
+            taskDetl.setTaskId(task.getId());
+            taskDetl.setTaskNo(task.getTaskNo());
+            taskDetl.setAnfme(locDetl.getAnfme());
+            taskDetl.setStock(locDetl.getAnfme());
+            taskDetl.setWaveId(null);
+            taskDetl.setWaveNo(null);
+            taskDetl.setOrderId(null);
+            taskDetl.setOrderNo(null);
+            if (!taskDetlService.save(taskDetl)) {
+                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+            }
+
+            List<LocDetlField> locDetlFields = locDetlFieldService.list(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locDetl.getId()));
+            for (LocDetlField locDetlField : locDetlFields) {
+                TaskDetlField taskDetlField = new TaskDetlField();
+                taskDetlField.sync(locDetlField);
+                taskDetlField.setId(null);
+                taskDetlField.setDetlId(taskDetl.getId());
+                if (!taskDetlFieldService.save(taskDetlField)) {
+                    throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触");
+                }
+            }
+        }
+
+        if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getId, locs.getId())
+                .set(Loc::getUpdateTime, new Date())
+                .set(Loc::getLocStsId, LocStsType.R.val()))) {
+            throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+        }
     }
 
 
@@ -211,7 +299,7 @@
 //                } else {
 //                    CommonReponse commonReponse = JSON.toJavaObject(JSON.parseObject(exchange.getBody()), CommonReponse.class);
 //                    if (commonReponse.getCode() == 0) {
-                        //娴佸姩閫氱煡涓嬪彂瀹屾垚鍚庯紝淇敼浠诲姟鐘舵�佷负杈撻�佺嚎娴佸姩涓�傘��
+            //娴佸姩閫氱煡涓嬪彂瀹屾垚鍚庯紝淇敼浠诲姟鐘舵�佷负杈撻�佺嚎娴佸姩涓�傘��
 //                        taskService.update(new LambdaUpdateWrapper<Task>()
 //                                .eq(Task::getId, task.getId())
 //                                .set(Task::getTaskSts, TaskStsType.COMPLETE_OUT.id));
@@ -244,8 +332,8 @@
     public void waveToTask() throws JsonProcessingException {
         //鑾峰彇褰撳墠浠诲姟妗d腑锛屾墍鏈変负寰呭嚭搴撶姸鎬佺殑浠诲姟妗o紝鎸夋椂闂村崌搴忔帓鍒�
         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
-                        .ge(Task::getTaskType, 101) //TODO 濡備綍纭鏄�101锛岃繕鏄�103
-                        .eq(Task::getTaskSts, TaskStsType.GENERATE_OUT.id));
+                .ge(Task::getTaskType, 101) //TODO 濡備綍纭鏄�101锛岃繕鏄�103
+                .eq(Task::getTaskSts, TaskStsType.GENERATE_OUT.id));
         if (tasks.isEmpty()) {
             return;
         }

--
Gitblit v1.9.1