From 2ba05033837f468ba9d3f8fc60855dacbf527cb2 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 17 九月 2025 15:00:30 +0800
Subject: [PATCH] 跑酷

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java |  123 ++++++++++++++++++++++++++++------------
 1 files changed, 86 insertions(+), 37 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 40fb2c4..8b3ec26 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
@@ -2,7 +2,6 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.common.constant.Constants;
@@ -10,14 +9,15 @@
 import com.vincent.rsf.server.manager.constant.StaGroupConstant;
 import com.vincent.rsf.server.manager.controller.params.LocToTaskParams;
 import com.vincent.rsf.server.manager.entity.*;
-import com.vincent.rsf.server.manager.enums.*;
+import com.vincent.rsf.server.manager.enums.LocStsType;
+import com.vincent.rsf.server.manager.enums.TaskResouceType;
+import com.vincent.rsf.server.manager.enums.TaskStsType;
+import com.vincent.rsf.server.manager.enums.TaskType;
 import com.vincent.rsf.server.manager.service.*;
-import com.vincent.rsf.server.manager.service.impl.BasStationServiceImpl;
-import com.vincent.rsf.server.system.constant.SerialRuleCode;
+import com.vincent.rsf.server.system.constant.GlobalConfigCode;
+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;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
@@ -58,7 +58,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 +101,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,19 +121,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))) {
+                                .set(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type))) {
                             log.error("绔欑偣鐘舵�佷慨鏀瑰畬鎴愬け璐�,褰撳墠浠诲姟鐘舵�侊細", task.getTaskStatus());
-//                            throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+//                                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))) {
-                                log.error("绔欑偣鐘舵�佷慨鏀瑰畬鎴愬け璐�,褰撳墠浠诲姟鐘舵�侊細", task.getTaskStatus());
-//                                throw new CoolException("绔欑偣鐘舵�佷慨鏀瑰け璐ワ紒锛�");
-                            }
                         } catch (Exception e) {
                             log.error("error====>", e);
                         }
@@ -151,17 +144,24 @@
      * @description: 鑷姩鐢熸垚浠诲姟
      * @version 1.0
      */
-    @Scheduled(cron = "0/25 * * * * ?")
-//    @Scheduled(cron = "0 0/05 * * * ?  ")
+    @Scheduled(cron = "0/15 * * * * ?")
     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;
         }
+
+        Integer maxThread = 30;
+        Config confNum = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_RUN_MOVE_THEAD_MAX));
+        if (!Objects.isNull(confNum)) {
+            maxThread = Integer.valueOf(confNum.getVal());
+        }
+
+
         //鑾峰彇浠诲姟鍒楄〃涓紝涓虹洏鐐瑰嚭搴撶殑浠诲姟
         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() >= maxThread) {
             return;
         }
         String autoRunArea = configService.getVal("AUTO_RUN_AREA", String.class);
@@ -216,7 +216,7 @@
                 }
                 DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>()
                         .in(DeviceSite::getSite, stationNames)
-                        .eq(DeviceSite::getType, TaskType.TASK_TYPE_CHECK_OUT.type), false);
+                        .eq(DeviceSite::getType, TaskType.TASK_TYPE_CHECK_OUT.type).last("limit 1"));
                 if (Cools.isEmpty(deviceSite)) {
                     throw new CoolException("鏃犲彲鐢ㄨ矾寰勶紒锛�");
                 }
@@ -232,12 +232,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());
@@ -250,7 +244,7 @@
 
 //        // 鍑哄簱,闇�瑕佹牎楠屽伐浣滄。鏄惁瀛樺湪锛屽瓨鍦ㄥ氨璇存槑绔欑偣澶勪簬蹇欑鐘舵��
 //        this.runLocToSta(locGroupList, staGroupList, staTaskMemo);
-//        // 绉诲簱
+//        // 绉诲簱locGroupList
 //        this.runLocToLoc(locGroupList, staTaskMemo);
     }
 
@@ -277,13 +271,69 @@
 
     }
 
+    /**
+     * 鐢熸垚绉诲簱浠诲姟
+     *
+     * @param
+     * @param
+     */
     // 绉诲簱
-    private void runLocToLoc(List<Integer> locGroupList, String staTaskMemo) {
+    @Scheduled(cron = "0/23 * * * * ?")
+    @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;
+        }
+
+        String autoRunArea = configService.getVal("AUTO_RUN_AREA", String.class);
+        if (Cools.isEmpty(autoRunArea)) {
+            return;
+        }
+        for (char c : autoRunArea.toCharArray()) {
+            switch (c) {
+                case '1':
+                    xx(LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST);
+                    break;
+                case '2':
+                    xx(LocGroupConstant.RIGHT_LOC_ROW_LIST);
+                    break;
+                case '3':
+                    xx(LocGroupConstant.MIDDLE_LOC_ROW_LIST);
+                    break;
+                case '4':
+                    xx(LocGroupConstant.LEFT_LOC_ROW_LIST);
+                    break;
+                case '5':
+                    xx(LocGroupConstant.FAR_LEFT_LOC_ROW_LIST);
+                    break;
+                default:
+                    break;
+            }
+        }
+
+
+    }
+
+
+    private void xx(List<Integer> locGroupList) {
         Integer startRow = Collections.min(locGroupList);
         Integer endRow = Collections.max(locGroupList);
 
         String memo = "DEMO_LOC_" + startRow + "-" + endRow;
 
+
+        Integer maxThread = 40;
+        Config confNum = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.AUTO_RUN_MOVE_THEAD_MAX));
+        if (!Objects.isNull(confNum)) {
+            maxThread = Integer.valueOf(confNum.getVal());
+        }
+
+        List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>()
+                .eq(Task::getMemo,memo));
+        if (!tasks.isEmpty() && tasks.size() >= maxThread) {
+            return;
+        }
 
         // STOCK
         LambdaQueryWrapper<Loc> stockWrapper = new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type);
@@ -327,7 +377,6 @@
         } catch (Exception e) {
             log.info("鐢熸垚鍑哄簱浠诲姟澶辫触", e);
         }
-
     }
 
     public static List<String> getStaPrefixes(List<String> staGroupList) {

--
Gitblit v1.9.1