From d0226747665355acecd5b4f2b5c0beb020586729 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 17 一月 2025 15:37:32 +0800
Subject: [PATCH] # 23. PDA拣货单据,勾选或点击确认按钮后,完成当前单据 (已完成) 24. PDA出库成功后,界面数据重置,避免重复操作  (已修复) 25. PDA接口请求,添加一个Loading遮档  (已修复) 27. 非平库单据,在平库可做入库操作  (已修复) 28. 平库已组拖数据,组拖完成后依然可组拖  (已修复) 29. 平库入库后,订单明细没有添加(已修复) 30. 平库入库后,单据类型没有修改(已修复) 31. 没有绑定播种位,不能进行播种,前后端都需加判定(已修复) 33. 平库入库未修改入库已完成数量(已修复) 34. cacheSite缓存站点逻辑需重新梳理,入库生成波次时(已完成) 35. PDA添加发货确认,默认全选 (已修复) 36. 大屏获取任务时,是由容器到达的拖盘码确认通知 (已修复) 37. 拣货单序号不显示 问题修复 (已修复) 42. pda发货确认,添加不同颜色区分是否全部完成拣货,绿色全部拣货完成,红色完成部分拣货(已修复) 43. CTU入库完成后,订单明细没有删除,执行中数量清空(已修复) 44. 平库入库完成后,历史档明细完成数量没有更新 (已修复) 45. PDA料号不显示  (已修复) 46. 发货完成后,波次管理数据未加入历史档 (已修复)

---
 zy-asrs-admin/src/views/out/flat/index.vue                                                    |   13 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PlatformService.java                   |    3 
 zy-asrs-wms/src/main/resources/application.yml                                                |    2 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/PlatformController.java             |   11 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java               |    9 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/CacheSite.java                          |    6 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetl.java                          |    3 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java            |  152 ++++++++++++++----
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/OrderPickStatus.java              |   22 ++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java       |  106 +++++++++---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaitPakinServiceImpl.java         |    7 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java                        |    9 -
 zy-asrs-admin/src/views/out/order/index.vue                                                   |    6 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java                       |    2 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WcsApiService.java                |    2 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java                              |    9 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java          |    7 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/ShippingOrderDetlDto.java           |    4 
 zy-asrs-wms/src/main/resources/mapper/asrs/WaveSeedMapper.xml                                 |    1 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java |   14 -
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java         |   18 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/BindPlatformParam.java            |    2 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java                           |    3 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java          |   34 +++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/OrderTimer.java                          |    2 
 25 files changed, 348 insertions(+), 99 deletions(-)

diff --git a/zy-asrs-admin/src/views/out/flat/index.vue b/zy-asrs-admin/src/views/out/flat/index.vue
index 9018f2e..4ccc2a1 100644
--- a/zy-asrs-admin/src/views/out/flat/index.vue
+++ b/zy-asrs-admin/src/views/out/flat/index.vue
@@ -1,8 +1,11 @@
 <template>
     <a-table :columns="columns" :data-source="datasource" bordered>
-        <template #bodyCell="{column, record}">
+        <template #bodyCell="{column, record, index}">
+            <template v-if="column.key === 'number'">
+                {{index + 1}}
+            </template>
             <template v-if="column.key === 'operate'">
-                <a-button @click="viewDetail(record)" type="link">
+                <a-button @click="viewDetail(column)" type="link">
                     {{ "鏌ョ湅鏄庣粏" }}
                 </a-button>
                 <a-button @click="showDeleteConfirm(record)" danger type="link">{{"鍒犻櫎"}}</a-button>
@@ -16,7 +19,10 @@
     </a-table>
     <a-modal ref="sheetDetl" v-model:open="show" :width="'80%'" title="鎷h揣鍗曟槑缁�" @ok="handleOk">
         <a-table :columns="childNodes" :data-source="childList">
-            <template #bodyCell="{column, record}">
+            <template #bodyCell="{column, record, index}">
+                <template v-if="column.key === 'number'">
+                    {{index + 1}}
+                </template>
                 <template v-if="column.key === 'status'">
                     <a-tag :color="record.status === 1 ? 'green' : 'volcano'">
                         {{record.status === 1 ? "姝e父" : "绂佺敤"}}
@@ -106,6 +112,7 @@
             },
             //鏌ョ湅鏄庣粏
             viewDetail(record) {
+                console.log(record)
                 this.show = !this.show
                 this.getSheetDetl(record)
             },
diff --git a/zy-asrs-admin/src/views/out/order/index.vue b/zy-asrs-admin/src/views/out/order/index.vue
index f8c1bc4..1512140 100644
--- a/zy-asrs-admin/src/views/out/order/index.vue
+++ b/zy-asrs-admin/src/views/out/order/index.vue
@@ -24,4 +24,8 @@
     }
 </script>
 
-<style></style>
+<style>
+    .col {
+        color: ;
+    }
+</style>
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java
index 022198e..0da930a 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/controller/OutStockController.java
@@ -7,6 +7,7 @@
 import com.zy.asrs.wms.apis.wcs.entity.request.RfidSingalRequest;
 import com.zy.asrs.wms.apis.wcs.entity.request.TasksStatusCallbackParam;
 import com.zy.asrs.wms.apis.wcs.services.WcsApiService;
+import com.zy.asrs.wms.asrs.service.PlatformService;
 import com.zy.asrs.wms.system.controller.BaseController;
 import io.netty.util.internal.StringUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -23,6 +24,7 @@
 
     @Autowired
     private WcsApiService wcsApiService;
+
 
     /**
      * 鍑哄簱浠诲姟-鎺ユ敹鍥炶皟鐘舵�佹帴鍙�
@@ -99,7 +101,7 @@
         if (Objects.isNull(request.get("taskNo"))) {
             throw new CoolException("浠诲姟鍙蜂笉鑳戒负绌猴紒锛�");
         }
-        if (Objects.isNull(request.get("orderNO"))){
+        if (Objects.isNull(request.get("orderNo"))){
             throw new CoolException("褰撳墠浠诲姟璁㈠崟鍙蜂笉鑳戒负绌猴紒锛�");
         }
 
@@ -113,12 +115,11 @@
     /**
      * 淇″彿鍥炰紶鎺ュ彛锛屽洖浼犵數瀛愭爣绛剧姸鎬佸彉鍖栧唴瀹圭粰涓婃父绯荤粺銆�
      * 褰撲汉涓烘搷浣滐紙姣斿鎷嶇伅锛屾洿鏀规暟瀛楋紝鏀剧绛夛級瀵艰嚧鐢靛瓙鏍囩鐨勭姸鎬佸拰淇″彿绛夊彂鐢熷彉鍖栥�佹垨璁惧鏈韩鍙戠敓寮傚父鏃讹紝ESS鎺ユ敹鍒颁俊鍙峰悗锛岄�氳繃璇ユ帴鍙e皢淇″彿鍥炰紶缁欎笂娓哥郴缁熴��
-     *
      * RFID鍥炶皟鎺ュ彛
-     *
      * @param request
      * @return
      */
+    @PostMapping("/")
     public R rfidCallback(@RequestBody RfidSingalRequest request) {
         if (Objects.isNull(request)) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
@@ -127,5 +128,16 @@
     }
 
 
+    /**
+     * 鑾峰彇鎵�鏈夐泦璐у尯
+     * @return
+     */
+    @GetMapping("/all/platforms")
+    public R getPlatforms() {
+        return  wcsApiService.getPlatforms();
+    }
+
+
+
 
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java
index 1a502b0..8940c76 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WaveManagentServiceImpl.java
@@ -12,6 +12,7 @@
 import com.zy.asrs.wms.asrs.entity.OrderDetl;
 import com.zy.asrs.wms.asrs.entity.Task;
 import com.zy.asrs.wms.asrs.entity.dto.LargeScreenTaskDto;
+import com.zy.asrs.wms.asrs.entity.enums.OrderPickStatus;
 import com.zy.asrs.wms.asrs.entity.enums.TaskStsType;
 import com.zy.asrs.wms.asrs.entity.param.WaveSeedReviewParam;
 import com.zy.asrs.wms.asrs.mapper.CacheSiteMapper;
@@ -24,6 +25,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -104,17 +106,9 @@
         }
 
         orders.forEach(order -> {
-            List<OrderDetl> detls = orderDetlMapper.selectList(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId()));
-            if (detls.isEmpty()) {
-                throw new CoolException("璁㈠崟锛�" + order.getOrderNo() + " 娌℃湁鏄庣粏,璇疯仈绯荤鐞嗗憳锛侊紒");
-            }
-            List<OrderDetl> orderDetls = detls.stream().filter(orderDetl -> {
-                return orderDetl.getAnfme() == (orderDetl.getWorkQty() + orderDetl.getQty());
-            }).collect(Collectors.toList());
-
-            if (!orderDetls.isEmpty() && orderDetls.size() == detls.size()) {
+            if (order.getPickStatus() == OrderPickStatus.ORDER_PICK_STATUS_DONE.val) {
                 order.setOrderStatus("宸插畬鎴�");//宸插畬鎴�
-            } else if (orderDetls.size() < detls.size() && orderDetls.size() != 0) {//閮ㄥ垎瀹屾垚
+            } else if (order.getPickStatus() == OrderPickStatus.ORDER_PICK_STATUS_SECTION.val) {//閮ㄥ垎瀹屾垚
                 order.setOrderStatus("閮ㄥ垎瀹屾垚");
             } else {//鏈畬鎴�
                 order.setOrderStatus("鏈畬鎴�");
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
index b3f6d2a..9d767e8 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/Impl/WcsApiServiceImpl.java
@@ -10,9 +10,9 @@
 import com.zy.asrs.wms.apis.wcs.entity.request.*;
 import com.zy.asrs.wms.apis.wcs.entity.response.CommonReponse;
 import com.zy.asrs.wms.apis.wcs.services.WcsApiService;
-import com.zy.asrs.wms.asrs.entity.Task;
-import com.zy.asrs.wms.asrs.entity.TaskDetl;
-import com.zy.asrs.wms.asrs.entity.WaveSeed;
+import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.entity.enums.CacheSiteStatusType;
+import com.zy.asrs.wms.asrs.entity.enums.OrderPickStatus;
 import com.zy.asrs.wms.asrs.entity.enums.TaskStsType;
 import com.zy.asrs.wms.asrs.service.*;
 import io.jsonwebtoken.lang.Collections;
@@ -28,6 +28,8 @@
 import org.springframework.util.MultiValueMap;
 import org.springframework.web.client.RestTemplate;
 
+import java.math.BigDecimal;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -45,12 +47,20 @@
     private TaskService taskService;
     @Autowired
     private TaskDetlService taskDetlService;
-
+    @Autowired
+    private CacheSiteService cacheSiteService;
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private OrderDetlService orderDetlService;
     @Autowired
     private WaveSeedService waveSeedService;
 
     @Autowired
     private RestTemplate restTemplate;
+
+    @Autowired
+    private PlatformService platformService;
 
 
     /**
@@ -77,7 +87,8 @@
             //DONE 鏍规嵁ESS杩斿洖鐨勫鍣ㄧ紪鐮佷慨鏀逛换鍔℃。涓殑杈撻�佺嚎璧峰浣嶇疆鑺傜偣锛屽強浠诲姟妗e鍣ㄥ埌杈剧姸鎬�
             taskService.update(new LambdaUpdateWrapper<Task>()
                     .set(Task::getTaskSts, TaskStsType.WCS_CONTAINER_RECEIVE.id)
-                    .set(Task::getOriginLoc, arrivedParam.getSlotCode())
+                    //杈撻�佺嚎鑺傜偣缂栫爜锛屼笉鏄簮搴撲綅
+//                    .set(Task::getOriginLoc, arrivedParam.getSlotCode())
                     .eq(Task::getBarcode, arrivedParam.getContainerCode()));
         } else {
             //瀹瑰櫒鍒拌揪鏃舵洿鏂颁换鍔$姸鎬佷负锛氬叆搴撳畬鎴愶紝瀹氭椂浠诲姟鏍规嵁鐘舵�佺爜鏇存柊搴撳瓨
@@ -91,6 +102,9 @@
                     .set(Task::getTaskSts, TaskStsType.WAVE_SEED.id)
                     .set(Task::getOriginLoc, arrivedParam.getSlotCode())
                     .eq(Task::getBarcode, arrivedParam.getContainerCode()));
+            if (!update) {
+                throw new CoolException("瀹瑰櫒鍒拌揪浠诲姟鏇存柊澶辫触锛侊紒");
+            }
 
         }
 
@@ -272,9 +286,12 @@
 
     @Override
     public R rfidCallback(RfidSingalRequest request) {
-
-
         return null;
+    }
+
+    @Override
+    public R getPlatforms() {
+        return R.ok(platformService.list(new LambdaQueryWrapper<>()));
     }
 
     /**
@@ -292,39 +309,74 @@
         MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
         //榛樿娴佸姩
         boolean converyor = false;
-        //鍒ゆ柇鏄惁杩樻湁鐗╂枡鏈嫞
-
+        //鍒ゆ柇褰撳墠浠诲姟鏄惁杩樻湁鐗╂枡鏈嫞
         if (!checked(orderNo, taskNo)) {
             //璋冪敤涓夋柟鎺ュ彛,闂伅涓嶅仛鎿嶄綔
-
             // 璁剧疆璇锋眰鍙傛暟
             params.add("params", JSONObject.toJSONString(slapParam));
             log.info("璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", SystemProperties.SLAP_LIGHT, JSONObject.toJSONString(slapParam));
-
         } else {
-            //璋冪敤涓夋柟鎺ュ彛,鏉ョ伅閫氱煡瀹瑰櫒娴佸姩锛� 浼犵伃鐏弬鏁�
+            //璋冪敤涓夋柟鎺ュ彛,鐏伅閫氱煡瀹瑰櫒娴佸姩锛� 浼犵伃鐏弬鏁�
+            //todo 鍒ゆ柇褰撳墠璁㈠崟鏄惁瀹屾垚锛屽畬鎴愮伃鐏紝鏈畬鎴愪繚鎸佹嫞璐х姸鎬佷寒鐏�
+            Order one = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderNo));
 
+            if (Objects.isNull(one)) {
+                throw new CoolException("褰撳墠璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�");
+            }
+//            //鑾峰彇鎾宸插畬鎴愮殑璁㈠崟鏄庣粏
+//            List<OrderDetl> detlList = orderDetls.stream().filter(detl -> {
+//                return detl.getPickStatus() == OrderPickStatus.ORDER_PICK_STATUS_DONE.val;
+//            }).collect(Collectors.toList());
+
+            //鍒ゆ柇鏁伴噺鏄惁涓庤鍗曟槑缁嗙殑闇�姹傞噺鐩稿悓锛岀浉鍚屽垯璁㈠崟瀹屾垚
+            if (one.getPickStatus() == OrderPickStatus.ORDER_PICK_STATUS_DONE.val) {
+                //鎾瀹屾垚锛岄噴鏀剧粦瀹氱珯鐐�
+                List<CacheSite> cacheSites = cacheSiteService.list(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderNo, orderNo));
+                for (CacheSite cacheSite : cacheSites) {
+                    if (!cacheSite.getSiteStatus().equals(CacheSiteStatusType.O.id)) {
+                        cacheSite.setSiteStatus(CacheSiteStatusType.O.id);
+                        cacheSite.setOrderId(null);
+                        cacheSite.setBarcode(null);
+                        cacheSite.setOrderNo(null);
+                        cacheSite.setPlatformId(null);
+                        cacheSite.setPlatformNo(null);
+                        cacheSite.setUpdateTime(new Date());
+                        if (!cacheSiteService.updateById(cacheSite)) {
+                            throw new CoolException("鎾绔欑偣鏇存柊澶辫触");
+                        }
+                    }
+                }
+            }
+            converyor = true;
             params.add("params", JSONObject.toJSONString(slapParam));
             log.info("璇锋眰鍦板潃锛歿}锛岃姹傚弬鏁帮細{}", SystemProperties.SLAP_LIGHT, JSONObject.toJSONString(slapParam));
         }
 
-        HttpHeaders headers = new HttpHeaders();
-        headers.add("Content-Type", "application/json");
-        HttpEntity httpEntity = new HttpEntity<>(params, headers);
-        // 璇锋眰
-        ResponseEntity<CommonReponse> exchange = restTemplate.exchange(SystemProperties.CONVEYOR_START, HttpMethod.POST, httpEntity, CommonReponse.class);
-        log.info("涓嬪彂娴佸姩閫氱煡 杩斿洖缁撴灉锛歿}", exchange);
-        if (exchange.getBody() == null) {
-            throw new CoolException("涓嬪彂娴佸姩閫氱煡澶辫触锛侊紒");
-        } else {
-            CommonReponse response = exchange.getBody();
-            if (response.getCode() == 0) {
-                if (!converyor) {
-                    //* 2. 瀹瑰櫒娴佸姩鍒ゆ柇锛屽鏋滄枡绠辨病鏈夌墿鏂� code浼�200锛� 鏈夌墿鏂欎紶100 鎵ц鍥炲簱浠诲姟,淇敼浠诲姟鐘舵�佷负  璋冪敤containerConveryor锛坱askNo锛夋柟娉�
-                    containerConveryor(request.get("taskNo").toString());
-                }
+        if (converyor) {
+            Task task = taskService.getOne(new LambdaQueryWrapper<Task>().eq(Task::getTaskNo, request.get("taskNo")));
+            if (Objects.isNull(task)) {
+                throw new CoolException("浠诲姟涓嶅瓨鍦紒锛�");
             }
+            containerConveryor(task.getBarcode());
         }
+
+//        HttpHeaders headers = new HttpHeaders();
+//        headers.add("Content-Type", "application/json");
+//        HttpEntity httpEntity = new HttpEntity<>(params, headers);
+//        // 璇锋眰
+//        ResponseEntity<CommonReponse> exchange = restTemplate.exchange(SystemProperties.CONVEYOR_START, HttpMethod.POST, httpEntity, CommonReponse.class);
+//        log.info("涓嬪彂娴佸姩閫氱煡 杩斿洖缁撴灉锛歿}", exchange);
+//        if (exchange.getBody() == null) {
+//            throw new CoolException("涓嬪彂娴佸姩閫氱煡澶辫触锛侊紒");
+//        } else {
+//            CommonReponse response = exchange.getBody();
+//            if (response.getCode() == 0) {
+//                if (!converyor) {
+//                    //* 2. 瀹瑰櫒娴佸姩鍒ゆ柇锛屽鏋滄枡绠辨病鏈夌墿鏂� code浼�200锛� 鏈夌墿鏂欎紶100 鎵ц鍥炲簱浠诲姟,淇敼浠诲姟鐘舵�佷负  璋冪敤containerConveryor锛坱askNo锛夋柟娉�
+//                    containerConveryor(request.get("taskNo").toString());
+//                }
+//            }
+//        }
     }
 
     /**
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WcsApiService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WcsApiService.java
index d1a4215..1f3dc37 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WcsApiService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/apis/wcs/services/WcsApiService.java
@@ -18,4 +18,6 @@
     void slapLightLogic(Map<String, Object> request);
 
     R rfidCallback(RfidSingalRequest request);
+
+    R getPlatforms();
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
index 8401402..9179179 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
@@ -74,10 +74,17 @@
      */
     @PostMapping("/mat/auth")
     public R getProductForBarcode(@RequestBody Map<String, String> barcode) {
+        if (Objects.isNull(barcode)) {
+            return  R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
         if (StringUtil.isNullOrEmpty(barcode.get("barcode"))) {
             return  R.error("鏉$爜涓嶈兘涓虹┖锛侊紒");
         }
         Order order =  orderService.selectByBarcode(barcode.get("barcode"));
+
+        if (Objects.isNull(order)) {
+            return R.error("璁㈠崟涓嶅瓨鍦紒");
+        }
 
         List<OrderInfoDto> orders = orderService.getDetlForOrderId(order.getId());
 
@@ -240,7 +247,7 @@
             throw new CoolException("璇锋眰鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
         if (Objects.isNull(param.get("barcode"))) {
-            throw new CoolException("瀹瑰櫒缂栫爜涓嶈兘涓虹┖");
+            throw new CoolException("鎾澧欏鍣ㄧ紪鐮佷笉鑳戒负绌�");
         }
         if (Objects.isNull(param.get("orderNo"))) {
             throw new CoolException("璁㈠崟缂栧彿涓嶈兘涓虹┖锛侊紒");
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/PlatformController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/PlatformController.java
index 71fecf8..98cd34c 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/PlatformController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/PlatformController.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zy.asrs.framework.common.Cools;
 import com.zy.asrs.framework.common.R;
+import com.zy.asrs.wms.asrs.entity.param.BindPlatformParam;
 import com.zy.asrs.wms.asrs.entity.param.PlatformShippedParam;
 import com.zy.asrs.wms.common.annotation.OperationLog;
 import com.zy.asrs.wms.common.domain.BaseParam;
@@ -108,4 +109,14 @@
         return R.ok();
     }
 
+    /**
+     * 缁戝畾璁㈠崟涓庨泦璐у尯鍏崇郴
+     * @param platform
+     * @return
+     */
+    @PostMapping("/bind/shipping/platform")
+    public R bindShippingAndPlatform(@RequestBody BindPlatformParam platform) {
+        return platformService.bindShippingPlatform(platform);
+    }
+
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/CacheSite.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/CacheSite.java
index 533066b..27daf42 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/CacheSite.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/CacheSite.java
@@ -137,6 +137,12 @@
     @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String platformNo;
 
+    /**
+     * 鎾澧欏簱浣嶅鍣ㄧ爜
+     */
+    @ApiModelProperty(value = "鎾澧欏簱浣嶅鍣ㄧ爜")
+    private String barcode;
+
     public CacheSite() {}
 
     public CacheSite(String siteNo,Integer siteStatus,Long orderId,String orderNo,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java
index 44aada0..4e8c095 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java
@@ -10,6 +10,7 @@
 import com.zy.asrs.wms.asrs.service.OrderTypeService;
 import com.zy.asrs.wms.system.entity.Host;
 import com.zy.asrs.wms.system.entity.User;
+import io.swagger.models.auth.In;
 import org.springframework.format.annotation.DateTimeFormat;
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -150,6 +151,14 @@
     @TableField(exist = false)
     private String orderStatus;
 
+    /**
+     * 璁㈠崟鐘舵��
+     * 1. 宸插畬鎴�
+     * 0. 鏈畬鎴�
+     * 2. 閮ㄥ垎瀹屾垚
+     */
+    private Integer pickStatus;
+
     public Order() {}
 
     public Order(String orderNo,String orderTime,Long orderType,Long orderSettle,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetl.java
index d497908..963ea61 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetl.java
@@ -98,6 +98,9 @@
     @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
     private Integer status;
 
+    @ApiModelProperty(value = "鎷h揣鐘舵�侊細0 鏈嫞璐� 1 瀹屾垚鎷h揣  2 锛岄儴鍒嗘嫞璐�")
+    private Integer pickStatus;
+
     /**
      * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
      */
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/ShippingOrderDetlDto.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/ShippingOrderDetlDto.java
index c6645c5..2f22f4d 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/ShippingOrderDetlDto.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/ShippingOrderDetlDto.java
@@ -38,5 +38,9 @@
      * 澶囨敞
      */
     private String memo;
+    /**
+     * 鐗╂枡缂栫爜
+     */
+    private String matnr;
 
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/OrderPickStatus.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/OrderPickStatus.java
new file mode 100644
index 0000000..5be5eac
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/OrderPickStatus.java
@@ -0,0 +1,22 @@
+package com.zy.asrs.wms.asrs.entity.enums;
+
+/**
+ * 璁㈠崟鍏ュ簱绫诲瀷
+ */
+public enum OrderPickStatus {
+    //鎵嬪姩鍏ュ簱鍗�
+   ORDER_PICK_STATUS_UNDO(0, "鎵嬪姩鍏ュ簱鍗�"),
+    //鎷h揣瀹屾垚
+    ORDER_PICK_STATUS_DONE(1, "鎷h揣瀹屾垚"),
+    //閮ㄥ垎鎷h揣
+    ORDER_PICK_STATUS_SECTION(2, "閮ㄥ垎鎷h揣")
+
+    ;
+    public Integer val;
+    public String desc;
+
+    OrderPickStatus(Integer val, String desc) {
+        this.val = val;
+        this.desc = desc;
+    }
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/BindPlatformParam.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/BindPlatformParam.java
index 4753409..1e42a5e 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/BindPlatformParam.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/BindPlatformParam.java
@@ -9,4 +9,6 @@
 
     private String siteNo;
 
+    private String orderNo;
+
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PlatformService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PlatformService.java
index c471381..3848860 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PlatformService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PlatformService.java
@@ -1,11 +1,14 @@
 package com.zy.asrs.wms.asrs.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.framework.common.R;
 import com.zy.asrs.wms.asrs.entity.Platform;
+import com.zy.asrs.wms.asrs.entity.param.BindPlatformParam;
 import com.zy.asrs.wms.asrs.entity.param.PlatformShippedParam;
 
 public interface PlatformService extends IService<Platform> {
 
     void shipped(PlatformShippedParam param);
 
+    R bindShippingPlatform(BindPlatformParam platform);
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
index 134d238..16e47ac 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
@@ -17,6 +17,7 @@
 import com.zy.asrs.wms.system.entity.Host;
 import com.zy.asrs.wms.system.service.HostService;
 import io.netty.util.internal.StringUtil;
+import org.aspectj.weaver.ast.Or;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -59,6 +60,12 @@
     private MatService matService;
     @Autowired
     private WaveService waveService;
+    @Autowired
+    private WaveLogService waveLogService;
+    @Autowired
+    private CacheSiteService cacheSiteService;
+    @Autowired
+    WaveDetlLogService waveDetlLogService;
     @Autowired
     private WaveDetlService waveDetlService;
     @Autowired
@@ -207,7 +214,6 @@
             }
             //淇敼璁㈠崟鐘舵�佷负宸插畬鎴�
             order.setOrderSettle(OrderSettleType.COMPLETE.val());
-
             OrderLog orderLog = new OrderLog();
             BeanUtils.copyProperties(order, orderLog);
             if (!orderLogService.save(orderLog)) {
@@ -225,6 +231,8 @@
         detls.forEach(delt ->{
             OrderDetlLog detlLog = new OrderDetlLog();
             BeanUtils.copyProperties(delt, detlLog);
+            detlLog.setQty(delt.getWorkQty());
+            detlLog.setWorkQty(0.0);
             detlLogs.add(detlLog);
         });
 
@@ -376,9 +384,17 @@
             if (Objects.isNull(order)) {
                 throw new CoolException("缁戝畾璁㈠崟涓嶅瓨鍦紒锛�");
             }
-            siteNo.setOrderNo(order.getOrderNo()).setOrderId(order.getId()).setSiteStatus(CacheSiteStatusType.R.id);
+            siteNo.setOrderNo(order.getOrderNo()).setOrderId(order.getId()).setSiteStatus(CacheSiteStatusType.R.id).setBarcode(param.get("barcode").toString());
             if (cacheSiteMapper.updateById(siteNo) < 1) {
                 throw new CoolException("璁㈠崟鎾浣嶇粦瀹氬け璐ワ紒锛�" );
+            }
+
+            int update = waveSeedMapper.update(new LambdaUpdateWrapper<WaveSeed>()
+                    .eq(WaveSeed::getOrderNo, order.getOrderNo())
+                    .set(WaveSeed::getSiteId, siteNo.getId())
+                    .set(WaveSeed::getSiteNo, siteNo.getSiteNo()));
+            if (update < 1) {
+                throw new CoolException("鎾绔欑偣鏇存柊澶辫触锛侊紒");
             }
         } else {
             if (StringUtil.isNullOrEmpty(siteNo.getOrderNo())) {
@@ -398,8 +414,16 @@
         if (StringUtil.isNullOrEmpty((String) params.get("orderNo"))) {
             throw new CoolException("璁㈠崟缂栫爜鍙蜂笉鑳戒负绌猴紒锛�");
         }
-        String orderId = params.get("orderNo").toString();
-        List<ShippingOrderDetlDto> waveSeeds = waveSeedMapper.selectShippingOrderDtel(orderId);
+        String orderNo = params.get("orderNo").toString();
+        Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderNo));
+        if (Objects.isNull(order)) {
+            throw new CoolException("璁㈠崟涓嶅瓨鍦紒锛�");
+        }
+        if (!order.getOrderType().equals(OrderType.UTC_OUT_ORDER.id)) {
+            throw new CoolException("璁㈠崟涓哄叆搴撳崟鎹紝涓嶈兘鍙戣揣锛侊紒");
+        }
+
+        List<ShippingOrderDetlDto> waveSeeds = waveSeedMapper.selectShippingOrderDtel(orderNo);
 
         return R.ok(waveSeeds);
     }
@@ -419,43 +443,30 @@
             throw new CoolException("鍙戣揣鍗曟嵁鏄庣粏涓虹┖锛屼笉鍙墽琛屽彂璐ф搷浣滐紒锛�");
         }
         params.forEach(order -> {
-            //鍒犻櫎鍑哄簱璁㈠崟鍙婃槑缁嗭紝鍔犲叆璁㈠崟鍘嗗彶妗�
-            if (order.getAnfme() == order.getWorkQty()) { //瀹屽叏鎷h揣
-                OrderDetl byId = orderDetlService.getById(order.getId());
-                OrderDetlLog orderDetlLog = new OrderDetlLog();
-                BeanUtils.copyProperties(orderDetlLog, byId);
-                orderDetlLog.setQty(order.getWorkQty());
-                orderDetlLog.setWorkQty(0.0);
-                if (!orderDetlLogService.save(orderDetlLog)) {
-                    throw new CoolException("璁㈠崟鏄庣粏杞巻鍙叉。澶辫触锛侊紒");
-                }
+            OrderDetl byId = orderDetlService.getById(order.getId());
+            if (Objects.isNull(byId)) {
+                throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�");
+            }
+            OrderDetlLog orderDetlLog = new OrderDetlLog();
+            BeanUtils.copyProperties(byId, orderDetlLog);
+            orderDetlLog.setQty(order.getWorkQty());
+            orderDetlLog.setWorkQty(0.0);
+            if (!orderDetlLogService.save(orderDetlLog)) {
+                throw new CoolException("璁㈠崟鏄庣粏杞巻鍙叉。澶辫触锛侊紒");
+            }
 
+            //瀹屽叏鎷h揣锛岃鍗曞畬鎴愬垹闄ゅ師濮嬭鍗曟槑缁�
+            //new BigDecimal(order.getAnfme()).compareTo(new BigDecimal(order.getWorkQty())) == 0
+            if (new BigDecimal(order.getAnfme()).compareTo(new BigDecimal(order.getWorkQty())) == 0) {
                 if (!orderDetlService.removeById(byId)) {
                     throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�");
                 }
-
-                //鏌ヨ褰撳墠璁㈠崟涓嬪惁杩樻湁鏄庣粏瀛樺湪
-                List<OrderDetl> orders = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderNo, order.getOrderNo()));
-
-                if (orders.isEmpty()) {
-                    Order one = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, order.getOrderNo()));
-                    if (Objects.isNull(one)) {
-                        throw new CoolException("璁㈠崟涓嶅瓨鍦紒锛�");
-                    }
-                    OrderLog orderLog = new OrderLog();
-
-                    BeanUtils.copyProperties(one, orderLog);
-
-                    if (!orderLogService.save(orderLog)) {
-                        throw new CoolException("鍘熷璁㈠崟杞巻鍙叉。澶辫触锛侊紒");
-                    }
-
-                    if (!orderService.remove(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, order.getOrderNo()))) {
-                        throw new CoolException("鍘熷璁㈠崟鍒犻櫎澶辫触锛侊紒");
-                    }
+            } else { //閮ㄥ垎鎷h揣
+                byId.setQty(order.getWorkQty() + byId.getQty());
+                byId.setWorkQty(0.0);
+                if (!orderDetlService.updateById(byId)) {
+                    throw new CoolException("閮ㄥ垎鎷f枡鏄庣粏鏇存柊澶辫触锛侊紒");
                 }
-            } else {
-                //todo 鍒犻櫎宸插畬鎴愭槑缁嗭紝淇濈暀鍘熷涓诲崟鍙婃湭瀹屾垚鏄庣粏
             }
 
             List<WaveSeed> waveSeeds = waveSeedMapper.selectList(new LambdaQueryWrapper<WaveSeed>().eq(WaveSeed::getOrderDetlId, order.getId()));
@@ -464,11 +475,11 @@
                 ArrayList<WaveSeedLog> waveSeedLogs = new ArrayList<>();
                 waveSeeds.forEach(seed -> {
                    WaveSeedLog waveSeedLog = new WaveSeedLog();
-                   BeanUtils.copyProperties(waveSeedLog, seed);
+                   BeanUtils.copyProperties(seed, waveSeedLog);
                    waveSeedLog.setId(null);
                     waveSeedLogs.add(waveSeedLog);
                });
-                if (waveSeedLogService.saveBatch(waveSeedLogs)) {
+                if (!waveSeedLogService.saveBatch(waveSeedLogs)) {
                     throw new CoolException("娉㈡槑鍘嗗彶妗d繚瀛樺け璐ワ紒锛�");
                 }
             }
@@ -478,8 +489,71 @@
             }
         });
 
+        //鑾峰彇褰撳墠涓婁紶鎵�鏈夎鍗曞彿
+        Set<String> orderNoSet = params.stream().map(ShippingOrderDetlDto::getOrderNo).collect(Collectors.toSet());
+        if (orderNoSet.isEmpty()) {
+            throw new CoolException("涓诲崟淇℃伅涓嶅瓨鍦紝璇锋牳瀵瑰嚭搴撹鍗曪紒锛�");
+        }
 
-        return null;
+        List<Order> orderList = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getOrderNo, orderNoSet));
+        if (orderList.isEmpty()) {
+            throw new CoolException("璁㈠崟涓嶅瓨鍦紒锛�");
+        }
+        orderList.forEach(one -> {
+            OrderLog orderLog = new OrderLog();
+            BeanUtils.copyProperties(one, orderLog);
+            orderLog.setOrderSettle(OrderSettleType.COMPLETE.val());
+
+            if (!orderLogService.save(orderLog)) {
+                throw new CoolException("鍘熷璁㈠崟杞巻鍙叉。澶辫触锛侊紒");
+            }
+            //鏌ヨ褰撳墠璁㈠崟涓嬪惁杩樻湁鏄庣粏瀛樺湪
+            List<OrderDetl> orders = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().in(OrderDetl::getOrderNo, one.getOrderNo()));
+            //璁㈠崟鏄庣粏涓虹┖锛屽垯鍒犻櫎涓诲崟
+            if (orders.isEmpty()) {
+                if (!orderService.remove(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, one.getOrderNo()))) {
+                    throw new CoolException("鍘熷璁㈠崟鍒犻櫎澶辫触锛侊紒");
+                }
+            } else { //涓嶄负绌猴紝淇敼璁㈠崟鐘舵�侊紝鍙噸鏂扮粍鎷�
+                one.setOrderSettle(OrderSettleType.INIT.val());
+                if (orderService.updateById(one));
+            }
+        });
+
+        Set<Long> waveIds = orderList.stream().map(Order::getWaveId).collect(Collectors.toSet());
+        if (waveIds.isEmpty()) {
+            throw new CoolException("娉㈡淇℃伅涓虹┖锛侊紒");
+        }
+        List<Wave> waves = waveService.list(new LambdaQueryWrapper<Wave>().eq(Wave::getId, waveIds));
+        for (Wave wave : waves) {
+            WaveLog waveLog = new WaveLog();
+            waveLog.sync(wave);
+            waveLog.setId(null);
+            if (!waveLogService.save(waveLog)) {
+                throw new CoolException("娉㈡杞巻鍙插け璐�");
+            }
+
+            List<WaveDetl> waveDetls = waveDetlService.list(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getWaveId, wave.getId()));
+            for (WaveDetl waveDetl : waveDetls) {
+                WaveDetlLog waveDetlLog = new WaveDetlLog();
+                waveDetlLog.sync(waveDetl);
+                waveDetlLog.setId(null);
+                waveDetlLog.setWaveId(waveLog.getId());
+                if (!waveDetlLogService.save(waveDetlLog)) {
+                    throw new CoolException("娉㈡鏄庣粏杞巻鍙插け璐�");
+                }
+
+                if (!waveDetlService.removeById(waveDetl.getId())) {
+                    throw new CoolException("娉㈡鏄庣粏鍒犻櫎澶辫触");
+                }
+            }
+
+            if (!waveService.removeById(wave.getId())) {
+                throw new CoolException("娉㈡鍒犻櫎澶辫触");
+            }
+        }
+
+        return R.ok("鍙戣揣瀹屾垚锛侊紒");
     }
 
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java
index 577f45d..98eba09 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PlatformServiceImpl.java
@@ -1,10 +1,12 @@
 package com.zy.asrs.wms.asrs.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.framework.common.R;
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.asrs.entity.*;
 import com.zy.asrs.wms.asrs.entity.enums.CacheSiteStatusType;
 import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
+import com.zy.asrs.wms.asrs.entity.param.BindPlatformParam;
 import com.zy.asrs.wms.asrs.entity.param.PlatformShippedParam;
 import com.zy.asrs.wms.asrs.mapper.PlatformMapper;
 import com.zy.asrs.wms.asrs.service.*;
@@ -165,4 +167,9 @@
         }
 
     }
+
+    @Override
+    public R bindShippingPlatform(BindPlatformParam platform) {
+        return null;
+    }
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaitPakinServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaitPakinServiceImpl.java
index add151e..09011e2 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaitPakinServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaitPakinServiceImpl.java
@@ -4,6 +4,7 @@
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.asrs.entity.*;
 import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
+import com.zy.asrs.wms.asrs.entity.enums.OrderType;
 import com.zy.asrs.wms.asrs.mapper.WaitPakinMapper;
 import com.zy.asrs.wms.asrs.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -88,6 +89,12 @@
             throw new CoolException("璁㈠崟涓嶅瓨鍦�");
         }
 
+        //濡傛灉鏄钩搴撳叆搴撳崟锛屼慨鏀硅鍗曟槑缁嗘墽琛屾暟閲�
+        if (order.getOrderType() == OrderType.PK_IN_ORDER.id) {
+            orderDetl.setWorkQty(waitPakin.getAnfme());
+            orderDetlService.updateById(orderDetl);
+        }
+
         //鏇存柊璁㈠崟鐘舵��
         if (order.getOrderSettle().equals(OrderSettleType.INIT.val())) {
             order.setOrderSettle(OrderSettleType.WAIT.val());
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java
index 1a98667..518fd8f 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java
@@ -5,6 +5,7 @@
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.apis.wcs.entity.response.SowSeeds;
 import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.entity.enums.OrderPickStatus;
 import com.zy.asrs.wms.asrs.entity.param.WaveSeedReviewParam;
 import com.zy.asrs.wms.asrs.mapper.*;
 import com.zy.asrs.wms.asrs.service.OrderDetlService;
@@ -14,6 +15,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -59,7 +61,7 @@
 
         List<CacheSite> sites = cacheSiteMapper.selectList(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderNo, waveSeed.getOrderNo()));
         if (sites.isEmpty()) {
-            throw new CoolException("褰撳墠璁㈠崟鏈粦瀹氭挱绉嶅簱浣嶏紝璇风粦瀹氬悗鍐嶆搷浣滐紒锛�");
+            throw new CoolException("褰撳墠璁㈠崟鏈粦瀹氭挱绉嶅簱浣嶏紝璇蜂娇鐢≒DA->鍦版爣缁戝畾,鍔熻兘缁戝畾鍚庡啀鎿嶄綔锛侊紒");
         }
 
         Double stock = Optional.of(waveSeed.getAnfme() - waveSeed.getWorkQty()).orElse(0.0D);
@@ -80,12 +82,36 @@
         if (Objects.isNull(orderDetl)) {
             throw new CoolException("褰撳墠鎾璁㈠崟鏄庣粏涓嶅瓨鍦紒锛�");
         }
-        orderDetl.setWorkQty(orderDetl.getWorkQty() + param.getReviewNum());
-        if (orderDetl.getWorkQty() + orderDetl.getQty() > orderDetl.getAnfme()) {
+
+        if (param.getReviewNum() + orderDetl.getQty() > orderDetl.getAnfme()) {
             throw new CoolException("璇锋牳瀵规槑缁嗘暟閲忓悗锛屽啀杩涜鎿嶄綔!!");
         }
+
+        //濡傛灉鎷h揣鏁伴噺涓庤鍗曟槑缁嗘暟閲忕浉绛夛紝琛ㄦ槑鎷h揣瀹屾垚
+        if (new BigDecimal(param.getReviewNum() + orderDetl.getQty()).compareTo(new BigDecimal(orderDetl.getAnfme())) == 0) {
+            orderDetl.setPickStatus(OrderPickStatus.ORDER_PICK_STATUS_DONE.val);
+        } else {
+            orderDetl.setPickStatus(OrderPickStatus.ORDER_PICK_STATUS_SECTION.val);
+        }
+
         if (orderDetlMapper.updateById(orderDetl) < 1) {
-            throw new CoolException("璁㈠崟鏄庣粏鏁伴噺鏇存柊澶辫触");
+            throw new CoolException("璁㈠崟鐘舵�佹洿鏂板け璐�!!");
+        }
+
+        List<OrderDetl> detls = orderDetlMapper.selectList(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderNo, orderDetl.getOrderNo()));
+        List<OrderDetl> detlList = detls.stream().filter(ord -> {
+            return ord.getPickStatus() != OrderPickStatus.ORDER_PICK_STATUS_DONE.val;
+        }).collect(Collectors.toList());
+
+        int update;
+        if (detlList.isEmpty()) {
+             update = orderMapper.update(new LambdaUpdateWrapper<Order>().eq(Order::getOrderNo, orderDetl.getOrderNo()).set(Order::getPickStatus, OrderPickStatus.ORDER_PICK_STATUS_DONE.val));
+        } else {
+            update = orderMapper.update(new LambdaUpdateWrapper<Order>().eq(Order::getOrderNo, orderDetl.getOrderNo()).set(Order::getPickStatus, OrderPickStatus.ORDER_PICK_STATUS_SECTION.val));
+        }
+
+        if (update < 1) {
+            throw new CoolException("鍘熷璁㈠崟涓诲崟鎷h揣鐘舵�佹洿鏂板け璐ワ紒锛�");
         }
 
         waveSeed.setUpdateTime(new Date());
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/OrderTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/OrderTimer.java
index 05b2a98..9f52217 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/OrderTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/OrderTimer.java
@@ -74,7 +74,7 @@
                     }
 
                     //鍒犻櫎璁㈠崟鏄庣粏
-                    if (!orderDetlService.removeById(orderDetl.getId())) {
+                    if (!orderDetlService.removeById(orderDetl)) {
                         throw new CoolException("鍒犻櫎璁㈠崟鏄庣粏澶辫触");
                     }
                 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
index 62bdf73..07f0f35 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
@@ -74,13 +74,6 @@
                 if (taskDetls.isEmpty()) {
                     throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
                 } else { //TODO 鍏堟洿鏂拌鍗曪紝鍚庡垹闄や换鍔℃槑缁嗐�備换鍔′负53鏃讹紝闇�鏇存柊鏄庣粏銆�
-//                    if (task.getTaskType() == 53L) {
-//                        List<Long> waveIds = taskDetls.stream().map(TaskDetl::getWaveId).collect(Collectors.toList());
-//                        List<Order> orders = orderService.list(new LambdaQueryWrapper<Order>().in(Order::getWaveId, waveIds));
-//                        orders.forEach(order -> {
-//
-//                        });
-//                    } else {
                         //浠诲姟绫诲瀷涓�53锛屾牴鎹甒aveId淇敼璁㈠崟鏄庣粏
                         for (TaskDetl taskDetl : taskDetls) {
                             if (taskDetl.getDetlId() == null) {
@@ -98,6 +91,7 @@
                             }
                             //妫�娴嬭鍗曟槸鍚﹀畬鎴�
                             boolean checkOrderComplete = orderService.checkOrderComplete(orderDetl.getOrderId());
+
                             if (checkOrderComplete) {
                                 //璁㈠崟宸茬粡瀹屾垚
                                 Order order = orderService.getById(orderDetl.getOrderId());
@@ -112,7 +106,6 @@
 
                             }
                         }
-//                    }
                 }
 
                 //鍒犻櫎浠诲姟鍘嗗彶妗f
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
index ab01799..953f7f6 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
@@ -67,6 +67,9 @@
     private CacheSiteService cacheSiteService;
 
 
+    /**
+     * 鍏ュ簱鎵ц浠诲姟
+     */
     @Scheduled(cron = "0/3 * * * * ? ")
     @Transactional(rollbackFor = Exception.class)
     public void inExecute() {
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java
index 413bf12..7ddd363 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskWaveTimer.java
@@ -117,7 +117,7 @@
                             anfme -= workQty;
 
                             orderUtils.updateWorkQty(orderDetl.getId(), workQty, true);
-
+//
                             //fixme 鐢熸垚娉㈡鎾鏁版嵁鏃讹紝涓嶈嚜鍔ㄦ坊鍔犵珯鐐圭粦瀹氾紝绔欑偣缁戝畾璋冩暣鑷冲嚭搴撶粦瀹氭挱绉嶅簱浣嶆椂鏇存柊
 //                            CacheSite cacheSite = cacheSiteService.getOne(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderId, orderDetl.getOrderId()).eq(CacheSite::getHostId, hostId));
 //                            if (cacheSite == null) {
diff --git a/zy-asrs-wms/src/main/resources/application.yml b/zy-asrs-wms/src/main/resources/application.yml
index f58291b..6f72699 100644
--- a/zy-asrs-wms/src/main/resources/application.yml
+++ b/zy-asrs-wms/src/main/resources/application.yml
@@ -41,7 +41,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
   global-config:
diff --git a/zy-asrs-wms/src/main/resources/mapper/asrs/WaveSeedMapper.xml b/zy-asrs-wms/src/main/resources/mapper/asrs/WaveSeedMapper.xml
index 6647a8e..f699e75 100644
--- a/zy-asrs-wms/src/main/resources/mapper/asrs/WaveSeedMapper.xml
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/WaveSeedMapper.xml
@@ -18,6 +18,7 @@
             wcs.wave_no,
             mo.anfme,
             mo.batch,
+            wcs.matnr,
             wcs.site_no,
             wcs.work_qty,
             wcs.memo

--
Gitblit v1.9.1