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/service/impl/TaskServiceImpl.java    |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java         |   90 ++++++++++------------
 rsf-admin/src/page/work/components/StaSelect.jsx                                             |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/TaskInParam.java   |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java             |    2 
 rsf-server/src/main/resources/application.yml                                                |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java                      |    6 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AutoRunSchedules.java      |   90 +++++++++++++++++++---
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java         |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java               |    2 
 11 files changed, 131 insertions(+), 77 deletions(-)

diff --git a/rsf-admin/src/page/work/components/StaSelect.jsx b/rsf-admin/src/page/work/components/StaSelect.jsx
index 64fffb8..d033b5f 100644
--- a/rsf-admin/src/page/work/components/StaSelect.jsx
+++ b/rsf-admin/src/page/work/components/StaSelect.jsx
@@ -47,7 +47,7 @@
                     .map((item) => {
                         return {
                             id: item.site,
-                            name: item.site$
+                            name: item.site
                         }
                     }));
             } else {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/TaskInParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/TaskInParam.java
index 32d3435..2291035 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/TaskInParam.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/TaskInParam.java
@@ -14,7 +14,7 @@
     private Integer ioType;  //浣滀笟绫诲瀷
 
     @ApiModelProperty("浣滀笟绔欑偣 or 鏉ユ簮绔欑偣")
-    private Integer sourceStaNo; //浣滀笟绔欑偣 or 鏉ユ簮绔欑偣
+    private String sourceStaNo; //浣滀笟绔欑偣 or 鏉ユ簮绔欑偣
 
     @ApiModelProperty("瀹瑰櫒鏉$爜")
     private String barcode; //瀹瑰櫒鏉$爜
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java
index c4ba4e6..f4e01c9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/InTaskMsgDto.java
@@ -4,7 +4,7 @@
 
 @Data
 public class InTaskMsgDto {
-    private Integer sourceStaNo;
+    private String sourceStaNo;
 
     private Integer staNo;
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
index 117d58e..901ad04 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java
@@ -48,19 +48,19 @@
     @Override
     public R getStaMsgSelect(Map<String, Object> params) {
         String sta = params.get("sta").toString();
-        if (Cools.isEmpty(sta)){
+        if (Cools.isEmpty(sta)) {
             throw new CoolException("鎺ラ┏浣嶆潯鐮佷笉鑳戒负绌�");
         }
         BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                 .eq(BasStation::getStationName, sta)
                 .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
         );
-        if (Cools.isEmpty(basStation)){
+        if (Cools.isEmpty(basStation)) {
             throw new CoolException("鏈壘鍒版帴椹崇珯鐐逛俊鎭紝璇锋鏌ョ珯鐐圭姸鎬�");
         }
-        List<Long> ids =  new ArrayList<>();
+        List<Long> ids = new ArrayList<>();
         ids.add(basStation.getArea());
-        if (basStation.getIsCrossZone() == 1){
+        if (basStation.getIsCrossZone() == 1) {
             String content = basStation.getCrossZoneArea().substring(1, basStation.getCrossZoneArea().length() - 1);
             String[] parts = content.split(",");
             for (int i = 0; i < parts.length; i++) {
@@ -79,115 +79,109 @@
     }
 
 
-
-
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R AGVInTaskStart(Map<String, Object> params,Long loginUserId ) {
+    public R AGVInTaskStart(Map<String, Object> params, Long loginUserId) {
         String sta = params.get("sta").toString();
         String area = params.get("area").toString();
-        if (Cools.isEmpty(sta)){
+        if (Cools.isEmpty(sta)) {
             throw new CoolException("鎺ラ┏浣嶆潯鐮佷笉鑳戒负绌�");
         }
-        if (Cools.isEmpty(area)){
+        if (Cools.isEmpty(area)) {
             throw new CoolException("鐩爣搴撳尯涓嶈兘涓虹┖");
         }
         BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                 .eq(BasStation::getStationName, sta)
-                .eq(BasStation::getUseStatus,LocStsType.LOC_STS_TYPE_F.type)
+                .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_F.type)
         );
-        if (Cools.isEmpty(basStation)){
+        if (Cools.isEmpty(basStation)) {
             throw new CoolException("鏈壘鍒版帴椹崇珯鐐逛俊鎭紝璇锋鏌ョ珯鐐圭姸鎬�");
         }
-        if (Cools.isEmpty(basStation.getBarcode())){
+        if (Cools.isEmpty(basStation.getBarcode())) {
             throw new CoolException("鏁版嵁閿欒锛屾帴椹崇珯鏃犳潯鐮佷俊鎭�");
         }
         WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
                 .eq(WaitPakin::getBarcode, basStation.getBarcode())
-                .eq(WaitPakin::getIoStatus,PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
+                .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
         );
-        if (Cools.isEmpty(waitPakin)){
+        if (Cools.isEmpty(waitPakin)) {
             throw new CoolException("鏈壘鍒扮粍鎵樻暟鎹�,璇锋鏌ョ姸鎬�");
         }
         String targetLoc = LocManageUtil.getTargetLoc(Long.parseLong(area));
 
-        taskService.generateAGVTasks(waitPakin,targetLoc,sta,loginUserId);
+        taskService.generateAGVTasks(waitPakin, targetLoc, sta, loginUserId);
 
         basStation.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
-        if (!basStationService.updateById(basStation)){
+        if (!basStationService.updateById(basStation)) {
             throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐�");
         }
-
-
 
         return R.ok();
     }
 
 
-
     @Override
     public R AGVStaUnBind(Map<String, Object> params) {
         String sta = params.get("sta").toString();
-        if (Cools.isEmpty(sta)){
+        if (Cools.isEmpty(sta)) {
             throw new CoolException("鎺ラ┏浣嶆潯鐮佷笉鑳戒负绌�");
         }
         BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                 .eq(BasStation::getStationName, sta)
-                .eq(BasStation::getUseStatus,LocStsType.LOC_STS_TYPE_F.type)
+                .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_F.type)
         );
-        if (Cools.isEmpty(basStation)){
+        if (Cools.isEmpty(basStation)) {
             throw new CoolException("鏈壘鍒版帴椹崇珯鐐逛俊鎭紝璇锋鏌ョ珯鐐圭姸鎬�");
         }
-        if (Cools.isEmpty(basStation.getBarcode())){
+        if (Cools.isEmpty(basStation.getBarcode())) {
             throw new CoolException("鏁版嵁閿欒锛屾帴椹崇珯鏃犳潯鐮佷俊鎭�");
         }
         WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
                 .eq(WaitPakin::getBarcode, basStation.getBarcode())
-                .eq(WaitPakin::getIoStatus,PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
+                .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
         );
-        if (Cools.isEmpty(waitPakin)){
+        if (Cools.isEmpty(waitPakin)) {
             throw new CoolException("鏈壘鍒扮粍鎵樻暟鎹�,璇锋鏌ョ姸鎬�");
         }
         basStation.setBarcode(null);
         basStation.setUseStatus(LocStsType.LOC_STS_TYPE_O.type);
-        if (!basStationService.updateById(basStation)){
+        if (!basStationService.updateById(basStation)) {
             throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐�");
         }
         return R.ok("瑙g粦鎴愬姛");
     }
 
 
-
     @Override
     public R getStaBindList(Map<String, Object> params) {
         String sta = params.get("sta").toString();
-        if (Cools.isEmpty(sta)){
+        if (Cools.isEmpty(sta)) {
             throw new CoolException("鎺ラ┏浣嶆潯鐮佷笉鑳戒负绌�");
         }
         BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                 .eq(BasStation::getStationName, sta)
-                .eq(BasStation::getUseStatus,LocStsType.LOC_STS_TYPE_F.type)
+                .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_F.type)
         );
-        if (Cools.isEmpty(basStation)){
+        if (Cools.isEmpty(basStation)) {
             throw new CoolException("鏈壘鍒版帴椹崇珯鐐逛俊鎭紝璇锋鏌ョ珯鐐圭姸鎬�");
         }
-        if (Cools.isEmpty(basStation.getBarcode())){
+        if (Cools.isEmpty(basStation.getBarcode())) {
             throw new CoolException("鏁版嵁閿欒锛屾帴椹崇珯鏃犳潯鐮佷俊鎭�");
         }
         WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
                 .eq(WaitPakin::getBarcode, basStation.getBarcode())
-                .eq(WaitPakin::getIoStatus,PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
+                .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
         );
-        if (Cools.isEmpty(waitPakin)){
+        if (Cools.isEmpty(waitPakin)) {
             throw new CoolException("鏈壘鍒扮粍鎵樻暟鎹�,璇锋鏌ョ姸鎬�");
         }
         List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, waitPakin.getId()));
-        if (Cools.isEmpty(waitPakinItems)){
+        if (Cools.isEmpty(waitPakinItems)) {
             throw new CoolException("鏁版嵁閿欒锛屾湭鎵惧埌缁勬墭鏄庣粏");
         }
-        List<Long> ids =  new ArrayList<>();
+        List<Long> ids = new ArrayList<>();
         ids.add(basStation.getArea());
-        if (basStation.getIsCrossZone() == 1){
+        if (basStation.getIsCrossZone() == 1) {
             String content = basStation.getCrossZoneArea().substring(1, basStation.getCrossZoneArea().length() - 1);
             String[] parts = content.split(",");
             for (int i = 0; i < parts.length; i++) {
@@ -207,7 +201,6 @@
     }
 
 
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public R getAGVStaBind(Map<String, Object> params) {
@@ -218,45 +211,44 @@
         //鏇存柊绔欑偣鐘舵��
         basStation.setUseStatus(LocStsType.LOC_STS_TYPE_F.type);
         basStation.setBarcode(barcode);
-        if (!basStationService.updateById(basStation)){
+        if (!basStationService.updateById(basStation)) {
             throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐�");
         }
         return R.ok("缁戝畾鎴愬姛");
     }
 
 
-
-    private BasStation checkStaStatus(String barcode, String sta){
-        if (Cools.isEmpty(barcode)){
+    private BasStation checkStaStatus(String barcode, String sta) {
+        if (Cools.isEmpty(barcode)) {
             throw new CoolException("瀹瑰櫒鐮佷笉鑳戒负绌�");
         }
-        if (Cools.isEmpty(sta)){
+        if (Cools.isEmpty(sta)) {
             throw new CoolException("鎺ラ┏浣嶆潯鐮佷笉鑳戒负绌�");
         }
         WaitPakin waitPakin = waitPakinService.getOne(new LambdaQueryWrapper<WaitPakin>()
                 .eq(WaitPakin::getBarcode, barcode)
                 .eq(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_DONE.val)
         );
-        if (Cools.isEmpty(waitPakin)){
+        if (Cools.isEmpty(waitPakin)) {
             throw new CoolException("瀹瑰櫒鐮佹湭鎵惧埌缁勬墭淇℃伅,璇锋鏌ョ粍鎵樼姸鎬�");
         }
         BasStation isBarcodeSta = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                         .eq(BasStation::getBarcode, barcode)
-                ,false
+                , false
         );
-        if (!Cools.isEmpty(isBarcodeSta)){
-            throw new CoolException("璇ユ潯鐮佸凡琚�"+isBarcodeSta.getStationName()+"绔欑粦瀹�");
+        if (!Cools.isEmpty(isBarcodeSta)) {
+            throw new CoolException("璇ユ潯鐮佸凡琚�" + isBarcodeSta.getStationName() + "绔欑粦瀹�");
         }
         BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                 .eq(BasStation::getStationName, sta)
         );
-        if (Cools.isEmpty(basStation)){
+        if (Cools.isEmpty(basStation)) {
             throw new CoolException("鏈壘鍒扮珯鐐逛俊鎭�");
         }
-        if (!basStation.getUseStatus().equals("O")){
+        if (!basStation.getUseStatus().equals("O")) {
             throw new CoolException("绔欑偣鐘舵�佷笉涓虹┖闂�");
         }
-        if (!Cools.isEmpty(basStation.getContainerType())){
+        if (!Cools.isEmpty(basStation.getContainerType())) {
             List<Long> longs1 = JSONObject.parseArray(basStation.getContainerType(), Long.class);
             List<BasContainer> containers = basContainerService.list(
                     new LambdaQueryWrapper<BasContainer>()
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
index 613f2bb..f765964 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java
@@ -552,7 +552,7 @@
         }
     }
 
-    private InTaskMsgDto getLocNoCrn(String orgLoc, DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
+    private InTaskMsgDto getLocNoCrn(String orgLoc, DeviceBind deviceBind, Long area, String sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
         if (Cools.isEmpty(matnr)) {  //鐗╂枡鍙�
             matnr = "";
         }
@@ -805,7 +805,7 @@
         return inTaskMsgDto;
     }
 
-    private InTaskMsgDto getLocNoCtu(DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
+    private InTaskMsgDto getLocNoCtu(DeviceBind deviceBind, Long area, String sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
         if (Cools.isEmpty(matnr)) {  //鐗╂枡鍙�
             matnr = "";
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java
index 9d7c34b..2cfc21a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java
@@ -110,13 +110,13 @@
     }
 
     //鑾峰彇绔欑偣瀵瑰簲鐨勫簱绫诲瀷
-    public static Long getAreaType(Integer sourceStaNo) {
+    public static Long getAreaType(String sourceStaNo) {
         DeviceBindService rowLastnoService = SpringUtils.getBean(DeviceBindService.class);
         List<DeviceBind> deviceBinds = rowLastnoService.list(new LambdaQueryWrapper<DeviceBind>());
         for (DeviceBind deviceBind : deviceBinds) {
             String[] staNoList = deviceBind.getStaList().split(";");
             for (String staNo : staNoList) {
-                if (staNo.equals(sourceStaNo.toString())) {
+                if (staNo.equals(sourceStaNo)) {
                     return deviceBind.getId();
                 }
             }
@@ -242,7 +242,7 @@
      * @param ioType 浣滀笟绫诲瀷锛�*蹇呬紶鍙傛暟锛�
      * @return
      */
-    public static InTaskMsgDto getLocNoCrn(DeviceBind deviceBind, Long area, Integer sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
+    public static InTaskMsgDto getLocNoCrn(DeviceBind deviceBind, Long area, String sourceStaNo, String matnr, String batch, LocTypeDto locTypeDto, int times, Integer ioType) {
         DeviceBindService deviceBindService = SpringUtils.getBean(DeviceBindService.class);
         DeviceSiteService deviceSiteService = SpringUtils.getBean(DeviceSiteService.class);
         LocService locService = SpringUtils.getBean(LocService.class);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
index d8faaa2..242362e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/DeviceSite.java
@@ -200,7 +200,7 @@
     public String getSite$() {
         if (this.site == null) {return  null;}
         BasStationService service = SpringUtils.getBean(BasStationService.class);
-        BasStation station = service.getById(this.site);
+        BasStation station = service.getOne(new LambdaQueryWrapper<BasStation>().eq(BasStation::getStationName, this.site));
         if (Objects.isNull(station)) {return  null;}
         return station.getStationName();
     }
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);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
index c2b3cbb..a3bd489 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -72,9 +72,7 @@
         if (Objects.isNull(map.getItems()) || map.getItems().isEmpty()) {
             throw new CoolException("鏄庣粏涓嶈兘涓虹┖锛�");
         }
-
         String siteNo = map.getSiteNo();
-
         List<LocItem> items = map.getItems();
         Map<Long, List<LocItem>> listMap = items.stream().collect(Collectors.groupingBy(LocItem::getLocId));
         WkOrder order;
@@ -303,7 +301,7 @@
             TaskInParam param = new TaskInParam();
             param.setIoType(TaskType.TASK_TYPE_OUT.type)
                     .setOrgLoc(map.getOrgLoc())
-                    .setSourceStaNo(Integer.parseInt(deviceSite.getSite()))
+                    .setSourceStaNo(deviceSite.getSite())
                     .setLocType1(Integer.parseInt(orgLoc.getType())
                     );
             InTaskMsgDto locNo;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index d3fc7c2..0604bc7 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -285,7 +285,7 @@
         if (Objects.isNull(deviceSite)) {
             throw new CoolException("绔欑偣涓嶅瓨鍦紒锛�");
         }
-        DeviceBind deviceBind = deviceBindService.getById(LocUtils.getAreaType(Integer.valueOf(deviceSite.getSite())));
+        DeviceBind deviceBind = deviceBindService.getById(LocUtils.getAreaType(deviceSite.getSite()));
         if (Cools.isEmpty(deviceBind)) {
             throw new CoolException("搴撲綅瑙勫垯鏈煡");
         }
@@ -970,7 +970,7 @@
                 .setTaskStatus(TaskStsType.GENERATE_IN.id);
 
         TaskInParam param = new TaskInParam();
-        param.setSourceStaNo(Integer.parseInt(task.getTargSite()))
+        param.setSourceStaNo(task.getTargSite())
                 .setIoType(type)
                 .setLocType1(Integer.parseInt(loc.getType()));
         //鑾峰彇鏂板簱浣�
diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml
index db51329..ac31a5b 100644
--- a/rsf-server/src/main/resources/application.yml
+++ b/rsf-server/src/main/resources/application.yml
@@ -25,7 +25,7 @@
   #  global-config:
   #    field-strategy: 0
   configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     map-underscore-to-camel-case: true
     cache-enabled: true
     call-setters-on-nulls: true

--
Gitblit v1.9.1