From 35f92fe6b383057a576fd31c1efe29d735b61215 Mon Sep 17 00:00:00 2001
From: skyouc <958836976@qq.com>
Date: 星期一, 15 九月 2025 17:17:17 +0800
Subject: [PATCH] 跑库程序修改

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java |  195 +++++++++++++++---------------------------------
 1 files changed, 62 insertions(+), 133 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java
index b7c426b..be2532d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java
@@ -13,7 +13,9 @@
 import com.vincent.rsf.server.manager.enums.*;
 import com.vincent.rsf.server.manager.service.*;
 import com.vincent.rsf.server.manager.service.impl.BasStationServiceImpl;
+import com.vincent.rsf.server.system.constant.GlobalConfigCode;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
+import com.vincent.rsf.server.system.entity.Config;
 import com.vincent.rsf.server.system.service.ConfigService;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -58,7 +60,7 @@
      * 鑷姩鐢熸垚搴撲綅鏄庣粏
      */
     @Transactional(rollbackFor = Exception.class)
-//    @Scheduled(cron = "0/25 * * * * ?")
+    @Scheduled(cron = "0/25 * * * * ?")
     public void insertRandomMats() {
         List<Loc> list = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type));
         for (Loc loc : list) {
@@ -101,16 +103,15 @@
      * @description: 鑷姩瀹屾垚鐩樼偣鍔熻兘
      * @version 1.0
      */
-    @Scheduled(cron = "0/35 * * * * ?")
+    @Scheduled(cron = "0/25 * * * * ?")
     @Transactional(rollbackFor = Exception.class)
     public void autoCheckComplete() {
-        Boolean autoRunArea = configService.getVal("AUTO_RUN_CHECK_ORDERS", Boolean.class);
-        if (!autoRunArea) {
-            return;
-        }
         //鑾峰彇浠诲姟鍒楄〃涓紝涓虹洏鐐瑰嚭搴撶殑浠诲姟
         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
-                .in(Task::getTaskType, Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_CHECK_IN.type)));
+                .in(Task::getTaskType, Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type,
+                        TaskType.TASK_TYPE_PICK_IN.type,
+                        TaskType.TASK_TYPE_PICK_AGAIN_OUT.type,
+                        TaskType.TASK_TYPE_CHECK_IN.type)));
 
         if (!tasks.isEmpty()) {
             tasks.forEach(task -> {
@@ -122,17 +123,13 @@
                     if (task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
                         if (!stationService.update(new LambdaUpdateWrapper<BasStation>()
                                 .eq(BasStation::getStationName, task.getTargSite())
-                                .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_F.type))) {
-                            throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+                                .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type))) {
+                            log.error("绔欑偣鐘舵�佷慨鏀瑰畬鎴愬け璐�,褰撳墠浠诲姟鐘舵�侊細", task.getTaskStatus());
+//                                throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
                         }
                         try {
-                            taskService.pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_CHECK);
+                            taskService.pickOrCheckTask(task.getId(),  task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type) ? Constants.TASK_TYPE_OUT_CHECK : "");
 
-                            if (!stationService.update(new LambdaUpdateWrapper<BasStation>()
-                                    .eq(BasStation::getStationName, task.getTargSite())
-                                    .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type))) {
-                                throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
-                            }
                         } catch (Exception e) {
                             log.error("error====>", e);
                         }
@@ -149,16 +146,16 @@
      * @description: 鑷姩鐢熸垚浠诲姟
      * @version 1.0
      */
-    @Scheduled(cron = "0/25 * * * * ?")
+    @Scheduled(cron = "0/5 * * * * ?")
     public void genRun() {
-        Boolean flagAuto = configService.getVal("AUTO_RUN_CHECK_ORDERS", Boolean.class);
-        if (!flagAuto) {
+        Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_RUN_CHECK_ORDERS));
+        if (!Boolean.parseBoolean(config.getVal())) {
             return;
         }
         //鑾峰彇浠诲姟鍒楄〃涓紝涓虹洏鐐瑰嚭搴撶殑浠诲姟
         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
                 .in(Task::getTaskType, Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_CHECK_IN.type)));
-        if (tasks.size() >= 6) {
+        if (tasks.size() >= 30) {
             return;
         }
         String autoRunArea = configService.getVal("AUTO_RUN_AREA", String.class);
@@ -229,12 +226,6 @@
                     continue;
                 }
                 try {
-                    //鐢熸垚鐩樼偣鍑哄簱浠诲姟锛岀珯鐐归绾�
-                    if (!stationService.update(new LambdaUpdateWrapper<BasStation>()
-                            .eq(BasStation::getStationName, deviceSite.getSite())
-                            .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_S.type))) {
-                        throw new CoolException("绔欑偣鐘舵�佹洿鏂板け璐ワ紒锛�");
-                    }
                     locItemService.generateTask(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val, locToTaskParams, getLoginUserId());
                 } catch (Exception e) {
                     throw new CoolException(e.getMessage());
@@ -242,13 +233,12 @@
             }
         }
 
-
         // 鍏ュ簱 搴旇鏍规嵁宸ヤ綔妗e洖鍘�
 //        this.runStaToLoc(locGroupList, staGroupList, staTaskMemo);
 
 //        // 鍑哄簱,闇�瑕佹牎楠屽伐浣滄。鏄惁瀛樺湪锛屽瓨鍦ㄥ氨璇存槑绔欑偣澶勪簬蹇欑鐘舵��
 //        this.runLocToSta(locGroupList, staGroupList, staTaskMemo);
-//        // 绉诲簱
+//        // 绉诲簱locGroupList
 //        this.runLocToLoc(locGroupList, staTaskMemo);
     }
 
@@ -256,14 +246,6 @@
     private List<Loc> getAreaLocs(List<Integer> locGroupList, List<String> staGroupList, String memo) {
         Integer startRow = Collections.min(locGroupList);
         Integer endRow = Collections.max(locGroupList);
-
-        // STA IDLE
-//        LambdaQueryWrapper<BasStation> idleWrapper = new LambdaQueryWrapper<BasStation>().eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type).in(BasStation::getStationName, staGroupList);
-//        List<BasStation> idleList = stationService.list(idleWrapper);
-//        if (Cools.isEmpty(idleList)) {
-//            return new ArrayList<>();
-//        }
-//        Collections.shuffle(idleList);
 
         // LOC STOCK
         LambdaQueryWrapper<Loc> stockWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type);
@@ -280,66 +262,59 @@
         Collections.shuffle(stockList);
 
         return stockList;
-        //鐢熸垚鍏ュ簱宸ヤ綔妗�
-//        generateTask(idleList.get(0).getStationName(), stockList.get(0).getCode(), idleList.get(0).getBarcode());
-    }
-
-
-    // 鍑哄簱
-    private void runLocToSta(List<Integer> locGroupList, List<String> staGroupList, String memo) {
-        Integer startRow = Collections.min(locGroupList);
-        Integer endRow = Collections.max(locGroupList);
-
-
-        // STA IDLE
-        LambdaQueryWrapper<BasStation> idleWrapper = new LambdaQueryWrapper<BasStation>().eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type).in(BasStation::getStationName, staGroupList);
-        List<BasStation> idleList = stationService.list(idleWrapper);
-        if (Cools.isEmpty(idleList)) {
-            return;
-        }
-        Collections.shuffle(idleList);
-
-        // LOC STOCK
-        LambdaQueryWrapper<Loc> stockWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type);
-        if (null != startRow) {
-            stockWrapper.ge(Loc::getRow, startRow);
-        }
-        if (null != endRow) {
-            stockWrapper.le(Loc::getRow, endRow);
-        }
-        List<Loc> stockList = locService.list(stockWrapper);
-        if (Cools.isEmpty(stockList)) {
-            return;
-        }
-        Collections.shuffle(stockList);
-
-
-        Loc loc = stockList.get(0);
-        List<LocItem> list = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
-        LocToTaskParams param = new LocToTaskParams();
-        param.setType(Constants.TASK_TYPE_OUT_STOCK);
-        param.setTarLoc(loc.getCode());
-        param.setItems(list);
-        param.setSiteNo(idleList.get(0).getStationName());
-        param.setMemo(memo);
-        //鐢熸垚鍑哄簱宸ヤ綔妗�
-        try {
-            locItemService.generateTask(TaskResouceType.TASK_RESOUCE_STOCK_TYPE.val, param, getLoginUserId());
-        } catch (Exception e) {
-            log.info("鐢熸垚鍑哄簱浠诲姟澶辫触", e);
-        }
 
     }
 
-
+    /**
+     * 鐢熸垚绉诲簱浠诲姟
+     * @param
+     * @param
+     */
     // 绉诲簱
-    private void runLocToLoc(List<Integer> locGroupList, String staTaskMemo) {
+    @Scheduled(cron = "0/7 * * * * ?")
+    @Transactional(rollbackFor = Exception.class)
+    public void runLocToLoc() {
+        Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_RUN_CHECK_ORDERS));
+        if (!Boolean.parseBoolean(config.getVal())) {
+            return;
+        }
+        List<Integer> locGroupList = new ArrayList<>();
+        //鑾峰彇浠诲姟鍒楄〃涓紝涓虹洏鐐瑰嚭搴撶殑浠诲姟
+        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
+                .eq(Task::getTaskType, TaskType.TASK_TYPE_LOC_MOVE.type));
+        if (!tasks.isEmpty() && tasks.size() >= 10) {
+            return;
+        }
+        String autoRunArea = configService.getVal("AUTO_RUN_AREA", String.class);
+        if (Cools.isEmpty(autoRunArea)) {
+            return;
+        }
+        for (char c : autoRunArea.toCharArray()) {
+            switch (c) {
+                case '1':
+                    locGroupList = LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST;
+                    break;
+                case '2':
+                    locGroupList = LocGroupConstant.RIGHT_LOC_ROW_LIST;
+                    break;
+                case '3':
+                    locGroupList = LocGroupConstant.MIDDLE_LOC_ROW_LIST;
+                    break;
+                case '4':
+                    locGroupList = LocGroupConstant.LEFT_LOC_ROW_LIST;
+                    break;
+                case '5':
+                    locGroupList = LocGroupConstant.FAR_LEFT_LOC_ROW_LIST;
+                    break;
+                default:
+                    break;
+            }
+        }
+
         Integer startRow = Collections.min(locGroupList);
         Integer endRow = Collections.max(locGroupList);
 
         String memo = "DEMO_LOC_" + startRow + "-" + endRow;
-
-
         // STOCK
         LambdaQueryWrapper<Loc> stockWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type);
         if (null != startRow) {
@@ -384,52 +359,6 @@
         }
 
     }
-
-    private void generateTask(String sourceStaNo, String locNo, String barcode) {
-        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
-        if (StringUtils.isBlank(ruleCode)) {
-            throw new CoolException("缂栫爜閿欒锛氳纭缂栫爜銆孲YS_TASK_CODE銆嶆槸鍚﹀凡鐢熸垚!!");
-        }
-        Task task = new Task();
-        task.setTaskCode(ruleCode)
-                .setTaskStatus(TaskStsType.GENERATE_IN.id)
-                .setTaskType(TaskType.TASK_TYPE_IN.type)
-                .setResource(TaskResouceType.TASK_RESOUCE_PAKIN_TYPE.val)
-                .setTargLoc(locNo)
-                .setBarcode(barcode)
-                .setOrgSite(sourceStaNo)
-                .setCreateBy(6666L)
-                .setUpdateBy(6666L);
-
-        if (!taskService.save(task)) {
-            throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
-        }
-        LambdaQueryWrapper<Matnr> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(Matnr::getStatus, 1);
-        wrapper.orderByAsc(Matnr::getUpdateTime);
-        List<Matnr> list = matnrService.page(new Page<>(1, 100), wrapper).getRecords();
-        Collections.shuffle(list);
-        List<TaskItem> taskItems = new ArrayList<>();
-        int i = 0;
-        for (Matnr item : list) {
-            if (i > 5) {
-                break;
-            }
-            TaskItem taskItem = new TaskItem();
-            BeanUtils.copyProperties(item, taskItem);
-            taskItem.setTaskId(task.getId())
-                    .setOrderType(OrderType.ORDER_IN.type)
-                    .setCreateBy(6666L)
-                    .setUpdateBy(6666L)
-                    .setExtendFields(item.getExtendFields());
-            taskItems.add(taskItem);
-            item.setUpdateTime(new Date());
-            matnrService.updateById(item);
-            i++;
-        }
-        taskItemService.saveBatch(taskItems);
-    }
-
 
     public static List<String> getStaPrefixes(List<String> staGroupList) {
         Set<String> rowSet = new HashSet<>();

--
Gitblit v1.9.1