From 10dbf9aae07dcd7c569521613b072088abae1c2e Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 22 五月 2025 17:18:32 +0800
Subject: [PATCH] 库存出库任务联调

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java |   16 ++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java         |   71 +++++----
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/AgvServiceImpl.java         |   19 +-
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehType.java                 |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java               |    5 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java                  |   14 ++
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java                  |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java                  |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java             |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/WcsServiceImpl.java         |   12 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java                  |    6 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java    |  168 +++++++++++++++--------
 rsf-admin/src/page/locItem/LocItemList.jsx                                                   |    1 
 /dev/null                                                                                    |   20 --
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java                     |    8 
 rsf-admin/src/page/task/TaskList.jsx                                                         |   16 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java    |    3 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java           |    1 
 rsf-admin/src/i18n/zh.js                                                                     |    1 
 rsf-admin/src/i18n/en.js                                                                     |    1 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java                |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java |    5 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java             |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java       |   12 +
 24 files changed, 237 insertions(+), 162 deletions(-)

diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index 84b91fa..25f3cc2 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -987,6 +987,7 @@
                 wkType: "wkType",
                 aggType: "Agg Type",
                 matnrId: "matnrId",
+                wareArea: 'Warehouse Areas',
                 maktx: "maktx",
                 matnrCode: "matnrCode",
                 trackCode: "trackCode",
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index bde1a48..74875e8 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -979,6 +979,7 @@
                 orderItemId: "鍗曟嵁鏄庣粏ID",
                 wkType: "涓氬姟绫诲瀷",
                 aggType: "姹囨�荤被鍨�",
+                wareArea: '搴撳尯',
                 matnrId: "鐗╂枡ID",
                 maktx: "鐗╂枡鍚嶇О",
                 unit: '鍗曚綅',
diff --git a/rsf-admin/src/page/locItem/LocItemList.jsx b/rsf-admin/src/page/locItem/LocItemList.jsx
index 6469f7e..56089d1 100644
--- a/rsf-admin/src/page/locItem/LocItemList.jsx
+++ b/rsf-admin/src/page/locItem/LocItemList.jsx
@@ -160,6 +160,7 @@
             const arr = [
                 <NumberField source="id" />,
                 <NumberField source="locId" label="table.field.locItem.locId" />,
+                <TextField source="wareArea" label="table.field.locItem.wareArea" />,
                 <TextField source="locCode" label="table.field.locItem.locCode" />,
                 <NumberField source="orderId" label="table.field.locItem.orderId" />,
                 <TextField source="type$" label="table.field.locItem.type" />,
diff --git a/rsf-admin/src/page/task/TaskList.jsx b/rsf-admin/src/page/task/TaskList.jsx
index f4fd8d1..81b19c1 100644
--- a/rsf-admin/src/page/task/TaskList.jsx
+++ b/rsf-admin/src/page/task/TaskList.jsx
@@ -186,13 +186,19 @@
     const record = useRecordContext();
     const notify = useNotify();
     const refresh = useRefresh();
-    
-    const pickClick = () => {
-        
+
+    const pickClick = async () => {
+        const { data: { code, data, msg } } = await request.post(`/task/pick/` + record.id);
+        if (code === 200) {
+            notify(msg);
+            refresh();
+        } else {
+            notify(msg);
+        }
     }
 
     return (
-        record?.taskStatus == 103 ? <ConfirmButton label={"toolbar.pick"} startIcon={<ColorizeOutlinedIcon />} onConfirm={pickClick}/> : <></>
+        record?.taskStatus == 198 ? <ConfirmButton label={"toolbar.pick"} startIcon={<ColorizeOutlinedIcon />} onConfirm={pickClick} /> : <></>
     )
 }
 
@@ -219,7 +225,7 @@
         }
     }
     return (
-        record?.taskStatus < 98 ? (<ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskAltIcon />} onConfirm={clickComplete} />) : (<></>)
+        ((record?.taskStatus < 98) || (record?.taskType > 101 && record?.taskStatus < 198)) ? (<ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskAltIcon />} onConfirm={clickComplete} />) : (<></>)
     )
 }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java
index 0048a4d..d80943f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/WcsService.java
@@ -7,4 +7,6 @@
     InTaskMsgDto createInTask(TaskInParam param);
 
     void agvTaskPickUpComplete(TaskInParam param);
+
+    InTaskMsgDto getLocNo(TaskInParam param);
 }
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 b697fc6..117d58e 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
@@ -1,7 +1,5 @@
 package com.vincent.rsf.server.api.service.impl;
 
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.vincent.rsf.framework.common.Cools;
@@ -9,8 +7,8 @@
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.api.service.AgvService;
 import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.LocStsType;
 import com.vincent.rsf.server.manager.enums.PakinIOStatus;
-import com.vincent.rsf.server.manager.enums.StaUseStatusType;
 import com.vincent.rsf.server.manager.service.*;
 import com.vincent.rsf.server.manager.utils.LocManageUtil;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -18,7 +16,6 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -56,7 +53,7 @@
         }
         BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                 .eq(BasStation::getStationName, sta)
-                .eq(BasStation::getUseStatus,StaUseStatusType.TYPE_O.type)
+                .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
         );
         if (Cools.isEmpty(basStation)){
             throw new CoolException("鏈壘鍒版帴椹崇珯鐐逛俊鎭紝璇锋鏌ョ珯鐐圭姸鎬�");
@@ -97,7 +94,7 @@
         }
         BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                 .eq(BasStation::getStationName, sta)
-                .eq(BasStation::getUseStatus,StaUseStatusType.TYPE_F.type)
+                .eq(BasStation::getUseStatus,LocStsType.LOC_STS_TYPE_F.type)
         );
         if (Cools.isEmpty(basStation)){
             throw new CoolException("鏈壘鍒版帴椹崇珯鐐逛俊鎭紝璇锋鏌ョ珯鐐圭姸鎬�");
@@ -116,7 +113,7 @@
 
         taskService.generateAGVTasks(waitPakin,targetLoc,sta,loginUserId);
 
-        basStation.setUseStatus(StaUseStatusType.TYPE_R.type);
+        basStation.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
         if (!basStationService.updateById(basStation)){
             throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐�");
         }
@@ -136,7 +133,7 @@
         }
         BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                 .eq(BasStation::getStationName, sta)
-                .eq(BasStation::getUseStatus,StaUseStatusType.TYPE_F.type)
+                .eq(BasStation::getUseStatus,LocStsType.LOC_STS_TYPE_F.type)
         );
         if (Cools.isEmpty(basStation)){
             throw new CoolException("鏈壘鍒版帴椹崇珯鐐逛俊鎭紝璇锋鏌ョ珯鐐圭姸鎬�");
@@ -152,7 +149,7 @@
             throw new CoolException("鏈壘鍒扮粍鎵樻暟鎹�,璇锋鏌ョ姸鎬�");
         }
         basStation.setBarcode(null);
-        basStation.setUseStatus(StaUseStatusType.TYPE_O.type);
+        basStation.setUseStatus(LocStsType.LOC_STS_TYPE_O.type);
         if (!basStationService.updateById(basStation)){
             throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐�");
         }
@@ -169,7 +166,7 @@
         }
         BasStation basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                 .eq(BasStation::getStationName, sta)
-                .eq(BasStation::getUseStatus,StaUseStatusType.TYPE_F.type)
+                .eq(BasStation::getUseStatus,LocStsType.LOC_STS_TYPE_F.type)
         );
         if (Cools.isEmpty(basStation)){
             throw new CoolException("鏈壘鍒版帴椹崇珯鐐逛俊鎭紝璇锋鏌ョ珯鐐圭姸鎬�");
@@ -219,7 +216,7 @@
         //楠岃瘉鍩虹淇℃伅
         BasStation basStation = checkStaStatus(barcode, sta);
         //鏇存柊绔欑偣鐘舵��
-        basStation.setUseStatus(StaUseStatusType.TYPE_F.type);
+        basStation.setUseStatus(LocStsType.LOC_STS_TYPE_F.type);
         basStation.setBarcode(barcode);
         if (!basStationService.updateById(basStation)){
             throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐�");
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 325480d..1ccabdd 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
@@ -15,7 +15,7 @@
 import com.vincent.rsf.server.manager.service.*;
 import com.vincent.rsf.server.manager.service.impl.LocServiceImpl;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
-import com.vincent.rsf.server.system.enums.LocStsType;
+import com.vincent.rsf.server.manager.enums.LocStsType;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -74,7 +74,7 @@
         task.setTaskStatus(TaskStsType.WCS_EXECUTE_OUT_TOTE_LOAD.id);
         taskService.updateById(task);
 
-        basStation.setUseStatus(StaUseStatusType.TYPE_O.type);
+        basStation.setUseStatus(LocStsType.LOC_STS_TYPE_O.type);
         basStation.setBarcode(null);
         basStationService.updateById(basStation);
 
@@ -164,8 +164,8 @@
                             String targetSite, String sourceSiteNo, Long loginUserId) {
         Task task = new Task();
         task.setTaskCode(ruleCode)
-                .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue())
-                .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
+                .setTaskStatus(TaskStsType.GENERATE_IN.id)
+                .setTaskType(TaskType.TASK_TYPE_IN.type)
                 .setWarehType(WarehType.WAREHOUSE_TYPE_CRN.id)
                 .setTargLoc(targetLoc)
                 .setBarcode(barcode)
@@ -327,6 +327,7 @@
 //        locNo.setWorkNo(ruleCode);
 //        return locNo;
 //    }
+    @Override
     public InTaskMsgDto getLocNo(TaskInParam param) {
         String matnr = null;
         String batch = null;
@@ -363,6 +364,9 @@
             case "CTU": //ctu
                 dto = getLocNoCtu(deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
                 break;
+            default:
+                dto = getLocNoCtu(deviceBind, warehouseArea.getId(), param.getSourceStaNo(), matnr, batch, locTypeDto, 0, param.getIoType());
+                break;
         }
         return dto;
     }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
index ce8d052..a84cdc8 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/BasStationController.java
@@ -1,6 +1,5 @@
 package com.vincent.rsf.server.manager.controller;
 
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -12,7 +11,7 @@
 import com.vincent.rsf.server.common.domain.KeyValVo;
 import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.manager.entity.BasStation;
-import com.vincent.rsf.server.manager.enums.StaUseStatusType;
+import com.vincent.rsf.server.manager.enums.LocStsType;
 import com.vincent.rsf.server.manager.service.BasStationService;
 import com.vincent.rsf.server.system.controller.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -114,7 +113,7 @@
         if (null != basStation.getContainerTypes() && !basStation.getContainerTypes().isEmpty()){
             basStation.setContainerType(basStation.getContainerTypes().toString());
         }
-        if (null !=basStation.getUseStatus() && basStation.getUseStatus().equals(StaUseStatusType.TYPE_O.type)){
+        if (null !=basStation.getUseStatus() && basStation.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)){
             basStation.setBarcode(null);
         }
         if (!basStationService.updateById(basStation)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
index e06bb8b..fde9e27 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java
@@ -12,10 +12,9 @@
 import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.common.utils.FieldsUtils;
 import com.vincent.rsf.server.manager.entity.LocItem;
-import com.vincent.rsf.server.manager.entity.WarehouseAreasItem;
 import com.vincent.rsf.server.manager.service.LocItemService;
 import com.vincent.rsf.server.system.controller.BaseController;
-import com.vincent.rsf.server.system.enums.LocStsType;
+import com.vincent.rsf.server.manager.enums.LocStsType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
index d82bcf5..7e7ae8a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
@@ -14,9 +14,8 @@
 import com.vincent.rsf.server.common.domain.KeyValVo;
 import com.vincent.rsf.server.common.domain.PageParam;
 import com.vincent.rsf.server.manager.service.*;
-import com.vincent.rsf.server.manager.service.impl.BasStationServiceImpl;
 import com.vincent.rsf.server.system.controller.BaseController;
-import com.vincent.rsf.server.system.enums.LocStsType;
+import com.vincent.rsf.server.system.service.impl.ConfigServiceImpl;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -37,6 +36,8 @@
     private WaitPakinService waitPakinService;
     @Autowired
     private LocService locService;
+    @Autowired
+    private ConfigServiceImpl configService;
 
 
     @PreAuthorize("hasAuthority('manager:task:list')")
@@ -130,8 +131,9 @@
         if (Objects.isNull(id)) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        List<Short> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
+        List<Integer> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getId, id).in(Task::getTaskStatus, longs));
+
         for (Task task : tasks) {
             task.setTaskStatus(task.getTaskType() < (short) 100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.COMPLETE_OUT.id);
         }
@@ -154,7 +156,7 @@
             throw new CoolException("鑳芥暟涓嶈兘涓虹┖锛侊紒");
         }
         try {
-            return taskService.pickTask(id);
+            return R.ok(taskService.pickTask(id));
         } catch (Exception e) {
             throw new CoolException(e.getMessage());
         }
@@ -177,7 +179,7 @@
         if (Objects.isNull(id)) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        List<Short> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
+        List<Integer> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getId, id).in(Task::getTaskStatus, longs));
         if (tasks.isEmpty()) {
             throw new CoolException("浠诲姟宸插鎵ц鐘舵�佷笉鍙竴閿疆椤讹紒锛�");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
index 3247606..dd072f1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItem.java
@@ -7,6 +7,8 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.vincent.rsf.server.manager.service.LocService;
+import com.vincent.rsf.server.manager.service.WarehouseAreasService;
 import com.vincent.rsf.server.system.constant.DictTypeCode;
 import com.vincent.rsf.server.system.entity.DictData;
 import com.vincent.rsf.server.system.service.DictDataService;
@@ -289,6 +291,18 @@
 //            null    // 澶囨敞
 //    );
 
+    public String getWareArea(){
+        if (Cools.isEmpty(this.locId)){
+            return "";
+        }
+        LocService locService = SpringUtils.getBean(LocService.class);
+        Loc loc = locService.getById(this.locId);
+        if (Objects.isNull(loc)) {
+            return null;
+        }
+        return loc.getAreaId$();
+    }
+
     public String getType$(){
         if (Cools.isEmpty(this.type)){
             return "";
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java
index 1dbf238..7c7ddbf 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/LocItemWorking.java
@@ -194,7 +194,6 @@
      * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
      */
     @ApiModelProperty(value= "鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  ")
-    @TableLogic
     private Integer deleted;
 
     /**
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
index b64b727..41762dc 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
@@ -54,19 +54,19 @@
      * 浠诲姟鐘舵��
      */
     @ApiModelProperty(value= "浠诲姟鐘舵��")
-    private Short taskStatus;
+    private Integer taskStatus;
 
     @ApiModelProperty("涓婄骇浠诲姟ID")
     private Long parentId;
 
     @ApiModelProperty("浠撳簱绫诲瀷")
-    private Short warehType;
+    private Integer warehType;
 
     /**
      * 浠诲姟绫诲瀷
      */
     @ApiModelProperty(value= "浠诲姟绫诲瀷")
-    private Short taskType;
+    private Integer taskType;
 
     /**
      * 婧愬簱浣�
@@ -196,7 +196,7 @@
 
     public Task() {}
 
-    public Task(String taskCode,Short taskStatus,Short taskType,String orgLoc,String targLoc,String barcode,String robotCode,Short exceStatus,String expDesc,Short sort,String expCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+    public Task(String taskCode,Integer taskStatus,Integer taskType,String orgLoc,String targLoc,String barcode,String robotCode,Short exceStatus,String expDesc,Short sort,String expCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
         this.taskCode = taskCode;
         this.taskStatus = taskStatus;
         this.taskType = taskType;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java
index 1dec3f3..e58ebac 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/TaskLog.java
@@ -62,13 +62,13 @@
      * 浠诲姟鐘舵��
      */
     @ApiModelProperty(value= "浠诲姟鐘舵��")
-    private Short taskStatus;
+    private Integer taskStatus;
 
     /**
      * 浠诲姟绫诲瀷
      */
     @ApiModelProperty(value= "浠诲姟绫诲瀷")
-    private Short taskType;
+    private Integer taskType;
 
     /**
      * 婧愬簱浣�
@@ -186,7 +186,7 @@
 
     public TaskLog() {}
 
-    public TaskLog(Long taskId,String taskCode,Short taskStatus,Short taskType,String orgLoc,String targLoc,String barcode,String robotCode,Short exceStatus,String expDesc,Short sort,String expCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+    public TaskLog(Long taskId,String taskCode,Integer taskStatus,Integer taskType,String orgLoc,String targLoc,String barcode,String robotCode,Short exceStatus,String expDesc,Short sort,String expCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
         this.taskId = taskId;
         this.taskCode = taskCode;
         this.taskStatus = taskStatus;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocStsType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
similarity index 95%
rename from rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocStsType.java
rename to rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
index 2427b9e..e172e0b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/enums/LocStsType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsType.java
@@ -1,4 +1,4 @@
-package com.vincent.rsf.server.system.enums;
+package com.vincent.rsf.server.manager.enums;
 
 
 public enum LocStsType {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/StaUseStatusType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/StaUseStatusType.java
deleted file mode 100644
index 6aec967..0000000
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/StaUseStatusType.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.vincent.rsf.server.manager.enums;
-
-public enum StaUseStatusType {
-    //璁㈠崟绫诲瀷
-    TYPE_O("O", "绌洪棽"),
-    TYPE_F("F", "鍗犵敤"),
-    TYPE_S("S", "棰勭害鍏ョ珯"),
-    TYPE_R("R", "棰勭害鍑虹珯"),
-    TYPE_X("X", "绂佺敤"),
-
-    ;
-
-    StaUseStatusType(String type, String desc) {
-        this.type = type;
-        this.desc = desc;
-    }
-
-    public String type;
-    public String desc;
-}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java
index fdadc82..1208abd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskStsType.java
@@ -41,14 +41,15 @@
     WAVE_SEED("198", "鎾涓�"),
 
     COMPLETE_OUT("199", "鍑哄簱瀹屾垚"),
+
     UPDATED_OUT("200", "搴撳瓨鏇存柊瀹屾垚"),
     ;
 
-    public Short id;
+    public Integer id;
     public String desc;
 
     TaskStsType(String id, String desc) {
-        this.id = Short.parseShort(id);
+        this.id = Integer.parseInt(id);
         this.desc = desc;
     }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java
index 8e01b64..145dd7d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java
@@ -21,11 +21,11 @@
     TASK_TYPE_CHECK_OUT("107", "鐩樼偣鍑哄簱"),
     TASK_TYPE_EMPITY_OUT("110", "绌烘澘鍑哄簱"),
     ;
-    public Short type;
+    public Integer type;
     public String desc;
 
     TaskType(String type, String desc) {
-        this.type = Short.parseShort(type);
+        this.type = Integer.parseInt(type);
         this.desc = desc;
     }
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehType.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehType.java
index 0d3e77c..6fb0db4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehType.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/WarehType.java
@@ -10,11 +10,11 @@
     WAREHOUSE_TYPE_CRN("5", "鍫嗗灈鏈哄簱"),
     ;
 
-    public Short id;
+    public Integer id;
     public String desc;
 
     WarehType(String id, String desc) {
-        this.id = Short.parseShort(id);
+        this.id = Integer.parseInt(id);
         this.desc = desc;
     }
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
index 2a17919..f35c3ab 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -16,6 +16,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.stream.Collectors;
 
@@ -48,21 +49,22 @@
     private LocService locService;
     @Autowired
     private ConfigService configService;
+
     /**
-    * @author Ryan
-    * @description 瀹屾垚鍏ュ簱锛屾洿鏂板簱瀛�
-    * @param
-    * @return
-    * @time 2025/4/2 12:37
-    */
+     * @param
+     * @return
+     * @author Ryan
+     * @description 瀹屾垚鍏ュ簱锛屾洿鏂板簱瀛�
+     * @time 2025/4/2 12:37
+     */
     @Scheduled(cron = "0/3 * * * * ?")
-    @Transactional(rollbackFor = Exception.class)
+//    @Transactional(rollbackFor = Exception.class)
     public void completeInStock() throws Exception {
         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id));
         if (tasks.isEmpty()) {
             return;
         }
-        taskService.completeTask(tasks);
+        taskService.complateInTask(tasks);
     }
 
     /**
@@ -71,7 +73,7 @@
      * @description: 瀹屾垚鍑哄簱浠诲姟锛屾洿鏂板簱瀛�
      * @version 1.0
      */
-    @Scheduled(cron = "0/5 * * * * ?")
+    @Scheduled(cron = "0/30 * * * * ?  ")
     @Transactional(rollbackFor = Exception.class)
     public void complateOutStock() throws Exception {
         List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id));
@@ -82,12 +84,12 @@
     }
 
     /**
-    * @author Ryan
-    * @description 宸插畬鎴愪换鍔″姞鍏ュ巻鍙叉。
-    * @param
-    * @return
-    * @time 2025/4/3 12:54
-    */
+     * @param
+     * @return
+     * @author Ryan
+     * @description 宸插畬鎴愪换鍔″姞鍏ュ巻鍙叉。
+     * @time 2025/4/3 12:54
+     */
     @Scheduled(cron = "0 0/05 * * * ?  ")
     @Transactional(rollbackFor = Exception.class)
     public void taskLogUpdate() {
@@ -113,32 +115,37 @@
             return;
         }
 
-        List<TaskLog> taskLogs = new ArrayList<>();
+        Map<Long, List<TaskItem>> listMap = taskItems.stream().collect(Collectors.groupingBy(TaskItem::getTaskId));
+
         tasks.forEach(task -> {
             TaskLog taskLog = new TaskLog();
             BeanUtils.copyProperties(task, taskLog);
-            taskLog.setTaskId(task.getId()).setId(null);
-            taskLogs.add(taskLog);
-        });
-        if (!taskLogService.saveBatch(taskLogs)) {
-            throw new CoolException("浠诲姟鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
-        }
-        List<TaskItemLog >itemLogs = new ArrayList<>();
+            taskLog.setTaskId(task.getId())
+                    .setId(null);
+            if (!taskLogService.save(taskLog)) {
+                throw new CoolException("浠诲姟鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
+            }
 
-        taskItems.forEach(item -> {
-            TaskItemLog itemLog = new TaskItemLog();
-            BeanUtils.copyProperties(item, itemLog);
-            itemLog.setId(null).setTaskItemId(item.getId());
-            itemLogs.add(itemLog);
-        });
+            List<TaskItemLog> itemLogs = new ArrayList<>();
+            for (TaskItem item : listMap.get(task.getId())) {
+                TaskItemLog itemLog = new TaskItemLog();
+                BeanUtils.copyProperties(item, itemLog);
+                itemLog.setId(null)
+                        .setTaskId(task.getId())
+                        .setLogId(taskLog.getId())
+                        .setTaskItemId(item.getId());
+                itemLogs.add(itemLog);
+            }
 
-        if (!taskItemLogService.saveBatch(itemLogs)) {
-            throw new CoolException("浠诲姟鏄庣粏鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
-        }
+            if (!taskItemLogService.saveBatch(itemLogs)) {
+                throw new CoolException("浠诲姟鏄庣粏鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
+            }
+        });
 
         if (!taskService.removeByIds(list)) {
             throw new CoolException("鍘熷浠诲姟鍒犻櫎澶辫触锛侊紒");
         }
+
         List<Long> itemIds = taskItems.stream().map(TaskItem::getId).collect(Collectors.toList());
 
         if (!taskItemService.removeByIds(itemIds)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
index 439c441..257f8c5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/TaskService.java
@@ -21,5 +21,7 @@
 
     R removeTask(Long[] ids);
 
-    R pickTask(Long id) throws Exception;
+    Task pickTask(Long id) throws Exception;
+
+    void complateInTask(List<Task> tasks) throws Exception;
 }
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 6bb75cf..8da880e 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
@@ -18,9 +18,11 @@
 import com.vincent.rsf.server.manager.service.TaskService;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
+import lombok.Synchronized;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -48,6 +50,8 @@
      * @return
      */
     @Override
+    @Synchronized
+    @Transactional(rollbackFor = Exception.class)
     public R generateTask(Map<String, Object> map) {
         if (Objects.isNull(map.get("siteNo"))) {
             throw new CoolException("绔欑偣涓嶈兘涓虹┖锛�");
@@ -64,6 +68,12 @@
             if (Objects.isNull(loc)) {
                 throw new CoolException("鏁版嵁閿欒锛氭墍閫夊簱瀛樹俊鎭笉瀛樺湪锛侊紒");
             }
+            loc.setUseStatus(LocStsType.LOC_STS_TYPE_R.type);
+
+            if (!locService.updateById(loc)) {
+                throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐ワ紒锛�");
+            }
+
             String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
             task.setOrgLoc(loc.getCode())
                     .setTaskCode(ruleCode)
@@ -80,6 +90,12 @@
             List<LocItem> locItemList = listMap.get(key);
             Double outQty = locItemList.stream().mapToDouble(LocItem::getOutQty).sum();
 
+
+            Task serviceOne = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, loc.getBarcode()));
+            if (!Objects.isNull(serviceOne)) {
+                throw new CoolException("鎵樼洏浠诲姟鎵ц涓紝涓嶈兘閲嶅鍒涘缓锛�");
+            }
+
             if (orgQty.compareTo(outQty) > 0) {
                 //鎷f枡鍑哄簱
                 task.setTaskType(TaskType.TASK_TYPE_PICK_AGAIN_IN.type);
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 10de96f..ad363be 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
@@ -4,19 +4,21 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.server.api.controller.params.TaskInParam;
+import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto;
+import com.vincent.rsf.server.api.service.WcsService;
 import com.vincent.rsf.server.manager.enums.*;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.api.utils.LocUtils;
 import com.vincent.rsf.server.manager.controller.params.GenerateTaskParams;
 import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.LocType;
 import com.vincent.rsf.server.manager.mapper.TaskMapper;
 import com.vincent.rsf.server.manager.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.vincent.rsf.server.manager.utils.LocManageUtil;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
-import com.vincent.rsf.server.system.enums.LocStsType;
-import com.vincent.rsf.server.manager.enums.LocType;
+import com.vincent.rsf.server.manager.enums.LocStsType;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
 import lombok.Synchronized;
 import org.apache.commons.lang3.StringUtils;
@@ -69,6 +71,8 @@
     private TaskService taskService;
     @Autowired
     private LocItemWorkingService locItemWorkingService;
+    @Autowired
+    private WcsService wcsService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -98,8 +102,8 @@
             }
             Task task = new Task();
             task.setTaskCode(ruleCode)
-                    .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue())
-                    .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
+                    .setTaskStatus(TaskStsType.GENERATE_IN.id)
+                    .setTaskType(TaskType.TASK_TYPE_IN.type)
                     .setWarehType(WarehType.WAREHOUSE_TYPE_AGV.id)
                     .setTargLoc(targetLoc)
                     .setOrgSite(orgSta)
@@ -184,8 +188,8 @@
             }
             Task task = new Task();
             task.setTaskCode(ruleCode)
-                    .setTaskStatus(TaskStsType.COMPLETE_IN.id.shortValue())
-                    .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
+                    .setTaskStatus(TaskStsType.COMPLETE_IN.id)
+                    .setTaskType(TaskType.TASK_TYPE_IN.type)
                     .setWarehType(WarehType.WAREHOUSE_TYPE_PLAT.id)
                     .setTargLoc(targetLoc)
                     .setBarcode(pakin.getBarcode())
@@ -291,8 +295,8 @@
             }
             Task task = new Task();
             task.setTaskCode(ruleCode)
-                    .setTaskStatus(TaskStsType.GENERATE_IN.id.shortValue())
-                    .setTaskType(TaskType.TASK_TYPE_IN.type.shortValue())
+                    .setTaskStatus(TaskStsType.GENERATE_IN.id)
+                    .setTaskType(TaskType.TASK_TYPE_IN.type)
                     .setTargLoc(targetLoc)
                     .setBarcode(pakin.getBarcode())
                     .setOrgSite(deviceSite.getSite())
@@ -373,6 +377,28 @@
     }
 
     /**
+     * 鍏ュ簱浠诲姟
+     *
+     * @param tasks
+     * @throws Exception
+     */
+    @Synchronized
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void complateInTask(List<Task> tasks) throws Exception {
+        for (Task task : tasks) {
+            if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) {
+                //1.鍏ュ簱
+                complateInstock(task);
+            } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)) {
+                //53.鎷f枡鍐嶅叆搴�
+                pickComplateInStock(task);
+            }
+        }
+    }
+
+
+    /**
      * 瀹屾垚浠诲姟 鏇存柊搴撲綅鏄庣粏淇℃伅锛屽皢鍗曟嵁搴撳瓨鏇存柊鍒板崟鎹簱瀛樿〃
      *
      * @param tasks
@@ -384,25 +410,14 @@
     public void completeTask(List<Task> tasks) throws Exception {
         for (Task task : tasks) {
             //鍑哄簱浠诲姟
-            if (task.getTaskType() < TaskType.TASK_TYPE_OUT.type) {
-                if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) {
-                    //1.鍏ュ簱
-                    complateInstock(task);
-                } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_IN.type)) {
-                    //53.鎷f枡鍐嶅叆搴�
-                    pickComplateInStock(task);
-                }
-            } else {
-                //鍑哄簱浠诲姟
-                if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)) {
-                    //鍏ㄦ墭鍑哄簱
-                    complateOutStock(task);
-                } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_IN.type)) {
-                    //鎷f枡鍑哄簱
-                    pickTask(task.getId());
-                    //绉婚櫎鍘熷搴撳瓨
-                    complateOutStock(task);
-                }
+            if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)) {
+                //鍏ㄦ墭鍑哄簱
+                complateOutStock(task);
+            } else if (task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_IN.type)) {
+                //鎷f枡鍑哄簱
+//                Task seviceOne = pickTask(task.getId());
+                //绉婚櫎鍘熷搴撳瓨
+                complateOutStock(task);
             }
         }
     }
@@ -439,11 +454,7 @@
         for (TaskItem taskItem : taskItems) {
             LocItem locItem = new LocItem();
             LocItemWorking locWorking = locItemWorkingService.getOne(new LambdaQueryWrapper<LocItemWorking>()
-                    .eq(LocItemWorking::getTaskId, taskItem.getTaskId())
-                    .eq(LocItemWorking::getLocCode, task.getTargLoc())
-                    .eq(LocItemWorking::getMatnrId, taskItem.getMatnrId())
-                    .eq(StringUtils.isNoneBlank(taskItem.getFieldsIndex()), LocItemWorking::getFieldsIndex, taskItem.getFieldsIndex())
-                    .eq(StringUtils.isNotBlank(taskItem.getBatch()), LocItemWorking::getBatch, taskItem.getBatch()));
+                    .eq(LocItemWorking::getTaskId, taskItem.getTaskId()));
             if (Objects.isNull(locWorking)) {
                 throw new CoolException("鏁版嵁閿欒锛屼綔涓氫腑搴撳瓨鏁版嵁涓㈠け锛侊紒");
             }
@@ -466,6 +477,12 @@
             throw new CoolException("浣滀笟涓簱瀛樺垹闄ゅけ璐ワ紒锛�");
         }
 
+        task.setTaskStatus(TaskStsType.UPDATED_IN.id);
+
+        if (!taskService.updateById(task)) {
+            throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+        }
+
     }
 
     /**
@@ -476,7 +493,7 @@
      */
     @Override
     public R removeTask(Long[] ids) {
-        List<Short> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
+        List<Integer> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
         List<Task> tasks = this.list(new LambdaQueryWrapper<Task>().in(Task::getId, ids).in(Task::getTaskStatus, longs));
         if (tasks.isEmpty()) {
             throw new CoolException("浠诲姟宸插鎵ц鐘舵�佷笉鍙彇娑堬紒锛�");
@@ -507,7 +524,7 @@
                 if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type) || task.getTaskType().equals(TaskType.TASK_TYPE_EMPITY_IN.type)) {
                     basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                             .eq(BasStation::getStationName, task.getOrgSite())
-                            .eq(BasStation::getUseStatus, StaUseStatusType.TYPE_R.type)
+                            .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type)
                     );
                 } else if (task.getTaskType().equals(TaskType.TASK_TYPE_OUT.type)
                         || task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_IN.type)
@@ -517,13 +534,13 @@
                 ) {
                     basStation = basStationService.getOne(new LambdaQueryWrapper<BasStation>()
                             .eq(BasStation::getStationName, task.getTargLoc())
-                            .eq(BasStation::getUseStatus, StaUseStatusType.TYPE_R.type)
+                            .eq(BasStation::getUseStatus, LocStsType.LOC_STS_TYPE_R.type)
                     );
                 }
                 if (null == basStation) {
                     throw new CoolException("绔欑偣鐘舵�侀敊璇紒锛�");
                 }
-                basStation.setUseStatus(StaUseStatusType.TYPE_F.type);
+                basStation.setUseStatus(LocStsType.LOC_STS_TYPE_F.type);
                 if (!basStationService.updateById(basStation)) {
                     throw new CoolException("鏇存柊绔欑偣鐘舵�佸け璐ワ紒锛�");
                 }
@@ -544,7 +561,7 @@
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public R pickTask(Long id) throws Exception {
+    public Task pickTask(Long id) throws Exception {
         Task task = this.getById(id);
         if (Objects.isNull(task)) {
             throw new CoolException("褰撳墠浠诲姟涓嶅瓨鍦紒锛�");
@@ -559,41 +576,38 @@
             throw new CoolException("娌℃湁绌哄簱浣嶏紒锛�");
         }
 
-        List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
-        if (locItems.isEmpty()) {
-            throw new CoolException("搴撲綅鏄庣粏涓嶅瓨鍦紒锛�");
-        }
-
         String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, task);
         //鏇存柊浠诲姟涓诲崟
         task.setTaskCode(ruleCode)
                 .setTaskType(TaskType.TASK_TYPE_PICK_IN.type)
                 .setBarcode(task.getBarcode())
                 .setTaskStatus(TaskStsType.GENERATE_IN.id);
-        //TODO 鍚庣画闇�鏍规嵁浠撳簱绫诲瀷鏌ユ壘鏂板簱浣嶏紝鍘熷搴撲綅缃┖闂茬姸鎬� {
-        // TaskInParam param = new TaskInParam();
-        //        param.setSourceStaNo(Integer.parseInt(task.getOrgSite()))
-        //                .setIoType(Integer.parseInt(TaskType.TASK_TYPE_IN.type + ""));
-        ////                .setLocType1(LocType.LOC_TYPE_LOW.type);}
+
+        TaskInParam param = new TaskInParam();
+        param.setSourceStaNo(Integer.parseInt(task.getTargSite()))
+                .setIoType(Integer.parseInt(TaskType.TASK_TYPE_PICK_IN.type + ""))
+                .setLocType1(Integer.parseInt(loc.getType()));
+        InTaskMsgDto locInfo = wcsService.getLocNo(param);
+
+        if (Objects.isNull(locInfo)) {
+            throw new CoolException("鑾峰彇搴撲綅澶辫触锛侊紒");
+        }
+        task.setTargLoc(locInfo.getLocNo());
 
         if (!this.updateById(task)) {
             throw new CoolException("浠诲姟鐘舵�佹洿鏂板け璐ワ紒锛�");
         }
 
-
-        List<LocItemWorking> workings = new ArrayList<>();
-        for (LocItem item : locItems) {
-            LocItemWorking working = new LocItemWorking();
-            BeanUtils.copyProperties(item, working);
-            working.setId(null).setTaskId(task.getId());
-            workings.add(working);
+        Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getTargLoc()));
+        if (Objects.isNull(one)) {
+            throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦紒锛�");
         }
+        one.setUseStatus(LocStsType.LOC_STS_TYPE_S.type);
 
-        if (!locItemWorkingService.saveBatch(workings)) {
-            throw new CoolException("涓存椂搴撳瓨淇濆瓨澶辫触锛侊紒");
+        if (!locService.updateById(one)) {
+            throw new CoolException("搴撲綅棰勭害鍏ュ簱澶辫触锛侊紒");
         }
-
-        return R.ok("鎷h揣鎴愬姛锛侊紒");
+        return task;
     }
 
     /**
@@ -620,6 +634,24 @@
         if (taskItems.isEmpty()) {
             throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦紒锛�");
         }
+
+        List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, loc.getId()));
+        if (locItems.isEmpty()) {
+            throw new CoolException("搴撲綅鏄庣粏涓嶅瓨鍦紒锛�");
+        }
+
+        List<LocItemWorking> workings = new ArrayList<>();
+        for (LocItem item : locItems) {
+            LocItemWorking working = new LocItemWorking();
+            BeanUtils.copyProperties(item, working);
+            working.setId(null).setTaskId(task.getId());
+            workings.add(working);
+        }
+
+        if (!locItemWorkingService.saveBatch(workings)) {
+            throw new CoolException("涓存椂搴撳瓨淇濆瓨澶辫触锛侊紒");
+        }
+
         try {
             //鏇存柊搴撲綅鏄庣粏
             subtractLocItem(loc);
@@ -656,12 +688,26 @@
         }
 
         /**淇敼涓哄簱浣嶇姸鎬佷负O.绌哄簱*/
-        if (!locService.update(new LambdaUpdateWrapper<Loc>().set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type).eq(Loc::getCode, loc.getId()))) {
+        if (!locService.update(new LambdaUpdateWrapper<Loc>()
+                .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_O.type)
+                .eq(Loc::getId, loc.getId()))) {
             throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
         }
-        if (!this.update(new LambdaUpdateWrapper<Task>().eq(Task::getId, task.getId()).set(Task::getTaskStatus, TaskStsType.UPDATED_OUT.id))) {
-            throw new CoolException("浠诲姟鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+
+        if (!task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_IN.type)) {
+            if (!this.update(new LambdaUpdateWrapper<Task>()
+                    .eq(Task::getId, task.getId())
+                    .set(Task::getTaskStatus, TaskStsType.UPDATED_OUT.id))) {
+                throw new CoolException("搴撳瓨鐘舵�佹洿鏂板け璐ワ紒锛�");
+            }
+        } else {
+            if (!this.update(new LambdaUpdateWrapper<Task>()
+                    .eq(Task::getId, task.getId())
+                    .set(Task::getTaskStatus, TaskStsType.WAVE_SEED.id))) {
+                throw new CoolException("搴撳瓨鐘舵�佹洿鏂板け璐ワ紒锛�");
+            }
         }
+
     }
 
     /**
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
index 30256bf..c4dcabd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/LocManageUtil.java
@@ -2,13 +2,11 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.vincent.rsf.framework.common.SpringUtils;
-import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.server.manager.entity.DeviceSite;
 import com.vincent.rsf.server.manager.entity.Loc;
 import com.vincent.rsf.server.manager.service.DeviceSiteService;
 import com.vincent.rsf.server.manager.service.LocService;
-import com.vincent.rsf.server.system.enums.LocStsType;
-import org.apache.commons.lang3.StringUtils;
+import com.vincent.rsf.server.manager.enums.LocStsType;
 
 import java.util.Objects;
 

--
Gitblit v1.9.1