From e046dba174365eb8934ee1e4206f09821145e876 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 21 八月 2025 13:23:22 +0800
Subject: [PATCH] no message

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaveSeedServiceImpl.java |   70 +++++++++++++++++++++++++++--------
 1 files changed, 54 insertions(+), 16 deletions(-)

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..24de776 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
@@ -4,34 +4,37 @@
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.apis.wcs.entity.response.SowSeeds;
+import com.zy.asrs.wms.apis.wcs.services.WcsApiService;
 import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.entity.dto.ShippingOrderDetlDto;
+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;
-import com.zy.asrs.wms.asrs.service.WaveSeedService;
+import com.zy.asrs.wms.asrs.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.math.BigDecimal;
+import java.util.*;
 import java.util.stream.Collectors;
 
 @Service("waveSeedService")
 public class WaveSeedServiceImpl extends ServiceImpl<WaveSeedMapper, WaveSeed> implements WaveSeedService {
 
     @Autowired
-    private OrderMapper orderMapper;
+    private OrderService orderMapper;
     @Autowired
     private OrderDetlMapper orderDetlMapper;
     @Autowired
-    private TaskDetlMapper taskDetlMapper;
-
+    private TaskDetlService taskDetlMapper;
+    @Autowired
+    private TaskService taskService;
     @Autowired
     private CacheSiteMapper cacheSiteMapper;
+    @Autowired
+    private WcsApiService wcsApiService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -57,18 +60,21 @@
             throw new CoolException("鎾鏁版嵁涓嶅瓨鍦�");
         }
 
-        List<CacheSite> sites = cacheSiteMapper.selectList(new LambdaQueryWrapper<CacheSite>().eq(CacheSite::getOrderNo, waveSeed.getOrderNo()));
+        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);
         if (stock - param.getReviewNum() < 0) {
             throw new CoolException("鎾鏁伴噺宸叉弧");
         }
-        waveSeed.setWorkQty(waveSeed.getWorkQty() + param.getReviewNum());
+        //璁剧疆鐘舵�佷负鎵ц涓�
+        waveSeed.setWorkQty(waveSeed.getWorkQty() + param.getReviewNum())
+                .setExceStatus(1);
 
-        TaskDetl taskDetl = taskDetlMapper.selectOne(new LambdaQueryWrapper<TaskDetl>().eq(TaskDetl::getId, waveSeed.getTaskDetlId()));
+        TaskDetl taskDetl = taskDetlMapper.getOne(new LambdaQueryWrapper<TaskDetl>().eq(TaskDetl::getId, waveSeed.getTaskDetlId()));
         if (Objects.isNull(taskDetl)) {
             throw new CoolException("褰撳墠鎾浠诲姟鏄庣粏涓嶅瓨鍦紒锛�");
         }
@@ -80,12 +86,39 @@
         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());
+
+        if (detlList.isEmpty()) {
+             if (!orderMapper.update(new LambdaUpdateWrapper<Order>()
+                     .eq(Order::getOrderNo, orderDetl.getOrderNo())
+                     .set(Order::getPickStatus, OrderPickStatus.ORDER_PICK_STATUS_DONE.val))) {
+                 throw new CoolException("鍘熷璁㈠崟涓诲崟鎷h揣鐘舵�佹洿鏂板け璐ワ紒锛�");
+             }
+        } else {
+            if (!orderMapper.update(new LambdaUpdateWrapper<Order>()
+                    .eq(Order::getOrderNo, orderDetl.getOrderNo())
+                    .set(Order::getPickStatus, OrderPickStatus.ORDER_PICK_STATUS_SECTION.val))) {
+                throw new CoolException("鍘熷璁㈠崟涓诲崟鎷h揣鐘舵�佹洿鏂板け璐�");
+            }
         }
 
         waveSeed.setUpdateTime(new Date());
@@ -104,4 +137,9 @@
     public int removeSowById(Long id) {
         return this.baseMapper.update(new LambdaUpdateWrapper<WaveSeed>().eq(WaveSeed::getId, id).set(WaveSeed::getDeleted, 1).set(WaveSeed::getStatus, 0));
     }
+
+    @Override
+    public List<ShippingOrderDetlDto> selectShippingOrderDtel(String orderNo) {
+        return this.baseMapper.selectShippingOrderDtel(orderNo);
+    }
 }

--
Gitblit v1.9.1