From c41f915262427a9469880ae1a7f71c50f1992a63 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期一, 01 九月 2025 15:17:14 +0800
Subject: [PATCH] 添加盘点跑库功能

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java |   90 ++++++++++++++++++++++++++++++++++++++------
 1 files changed, 77 insertions(+), 13 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 2728d00..675d76c 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
@@ -1,6 +1,7 @@
 package com.vincent.rsf.server.manager.schedules;
 
 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;
@@ -11,6 +12,7 @@
 import com.vincent.rsf.server.manager.entity.*;
 import com.vincent.rsf.server.manager.enums.*;
 import com.vincent.rsf.server.manager.service.*;
+import com.vincent.rsf.server.manager.service.impl.DeviceSiteServiceImpl;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
 import com.vincent.rsf.server.system.service.ConfigService;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
@@ -18,7 +20,9 @@
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 
@@ -33,25 +37,87 @@
 
     @Autowired
     private LocService locService;
-
     @Autowired
     private ConfigService configService;
-
     @Autowired
     private BasStationService stationService;
-
     @Autowired
     private TaskService taskService;
-
-
     @Autowired
     private TaskItemService taskItemService;
-
     @Autowired
     private MatnrService matnrService;
-
     @Autowired
     private LocItemService locItemService;
+    @Autowired
+    private DeviceSiteService deviceSiteService;
+
+    /**
+     * @author Ryan
+     * @date 2025/9/1
+     * @description: 鑷姩鐢熸垚鐩樼偣璺戝簱鍗�
+     * @version 1.0
+     */
+    public void autoCheckOrders() {
+        List<Loc> locs = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_F.type).last("limit 1"));
+        locs.forEach(loc -> {
+            List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
+            if (!locItems.isEmpty()) {
+                DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>().eq(DeviceSite::getType, TaskType.TASK_TYPE_CHECK_OUT.type), false);
+                //鐢熸垚鐩樼偣浠诲姟鍙傛暟
+                LocToTaskParams locToTaskParams = new LocToTaskParams();
+                locToTaskParams.setType(Constants.TASK_TYPE_OUT_CHECK)
+                        .setItems(locItems)
+                        .setSiteNo(deviceSite.getSite())
+                        .setOrgLoc(loc.getCode());
+                try {
+                    locItemService.generateTask(TaskResouceType.TASK_RESOUCE_CHECK_TYPE.val, locToTaskParams, getLoginUserId());
+                } catch (Exception e) {
+                    throw new CoolException(e.getMessage());
+                }
+            }
+        });
+    }
+
+    /**
+     * @author Ryan
+     * @date 2025/9/1
+     * @description: 鑷姩瀹屾垚鐩樼偣鍔熻兘
+     * @version 1.0
+     */
+    public void autoCheckComplete() {
+        //鑾峰彇浠诲姟鍒楄〃涓紝涓虹洏鐐瑰嚭搴撶殑浠诲姟
+        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.isEmpty()) {
+            tasks.forEach(task -> {
+                if (task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_IN.type)) {
+                    if (task.getTaskStatus().equals(TaskStsType.GENERATE_IN.id)) {
+                        task.setTaskStatus(TaskStsType.COMPLETE_IN.id);
+                        if (!taskService.updateById(task)) {
+                            throw new CoolException("鐩樼偣鍐嶅叆搴撲换鍔″畬鎴愬け璐ワ紒锛�");
+                        }
+                    }
+                } else {
+                    //鍒涘缓鍑哄簱浠诲姟鐘舵��
+                    if (task.getTaskStatus().equals(TaskStsType.GENERATE_OUT.id)) {
+                        task.setTaskStatus(TaskStsType.COMPLETE_OUT.id);
+                        if (!taskService.updateById(task)) {
+                            throw new CoolException("鐩樼偣鍑哄簱浠诲姟瀹屾垚澶辫触锛侊紒");
+                        }
+                        //鍑哄簱宸插畬鎴愶紝绛夊緟鐩樼偣涓�
+                    } else if (task.getTaskStatus().equals(TaskStsType.WAVE_SEED.id)) {
+                        try {
+                            taskService.pickOrCheckTask(task.getId(), Constants.TASK_TYPE_OUT_CHECK);
+                        } catch (Exception e) {
+                            throw new CoolException(e.getMessage());
+                        }
+                    }
+                }
+            });
+        }
+    }
+
 
     public void genRun() {
         String autoRunArea = configService.getVal("AUTO_RUN_AREA", String.class);
@@ -79,14 +145,14 @@
                     break;
             }
         }
-
     }
 
-
     private void autoRun(List<Integer> locGroupList, List<String> staGroupList) {
-
         List<String> staPreNos = getStaPrefixes(staGroupList);
         String staTaskMemo = "DEMO_STA_" + String.join("-", staPreNos);
+        log.error("=========>");
+        log.info(staTaskMemo);
+        System.out.println(staTaskMemo);
 
         List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getMemo, staTaskMemo));
         if (!Cools.isEmpty(list) && list.size() > 30) {
@@ -94,19 +160,17 @@
         }
         // 鍏ュ簱 搴旇鏍规嵁宸ヤ綔妗e洖鍘�
         this.runStaToLoc(locGroupList, staGroupList, staTaskMemo);
+
         // 鍑哄簱,闇�瑕佹牎楠屽伐浣滄。鏄惁瀛樺湪锛屽瓨鍦ㄥ氨璇存槑绔欑偣澶勪簬蹇欑鐘舵��
         this.runLocToSta(locGroupList, staGroupList, staTaskMemo);
-
         // 绉诲簱
         this.runLocToLoc(locGroupList, staTaskMemo);
     }
-
 
     // 鍏ュ簱
     private void runStaToLoc(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_F.type).in(BasStation::getStationName, staGroupList);

--
Gitblit v1.9.1