From c1d32343b513d0862e3915c4a67999f2b591d358 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期三, 30 三月 2022 13:02:47 +0800
Subject: [PATCH] #

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

diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 58f8a31..c644d71 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -11,11 +11,14 @@
 import com.zy.asrs.entity.param.CombParam;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.VersionUtils;
+import com.zy.common.model.DetlDto;
 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.Date;
+import java.util.List;
 
 /**
  * 绉诲姩绔湇鍔℃牳蹇冪被
@@ -36,7 +39,7 @@
     @Override
     @Transactional
     public void comb(CombParam param, Long userId) {
-        if (Cools.isEmpty(param.getBarcode()) || param.getCombMats().isEmpty()) {
+        if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
             throw new CoolException(BaseRes.PARAM);
         }
         // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
@@ -45,24 +48,38 @@
             throw new CoolException("鏉$爜鏁版嵁宸插瓨鍦�");
         }
         Date now = new Date();
+
         // 鏃犲崟缁勬墭
         if (Cools.isEmpty(param.getOrderNo())) {
-            for (CombParam.CombMat combMat : param.getCombMats()) {
-                MatCode matCode = matCodeService.selectById(combMat.getMatNo());
+
+            // 鐢熸垚鍏ュ簱閫氱煡妗�
+            List<DetlDto> detlDtos = new ArrayList<>();
+            param.getCombMats().forEach(elem -> {
+                DetlDto detlDto = new DetlDto(elem.getMatNo(), elem.getBatch(), elem.getCount());
+                if (DetlDto.has(detlDtos, detlDto)) {
+                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+                    assert one != null;
+                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+                } else {
+                    detlDtos.add(detlDto);
+                }
+            });
+
+            for (DetlDto detlDto : detlDtos) {
+                MatCode matCode = matCodeService.selectById(detlDto.getMatnr());
                 if (Cools.isEmpty(matCode)) {
                     throw new CoolException("鐗╂枡鏁版嵁閿欒");
                 }
                 WaitPakin waitPakin = new WaitPakin();
                 waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
-                waitPakin.setStatus("Y");    // 鐘舵��
-                waitPakin.setAnfme(combMat.getCount());  // 鏁伴噺
                 waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+                waitPakin.setAnfme(detlDto.getAnfme());  // 鏁伴噺
+                waitPakin.setStatus("Y");    // 鐘舵��
                 waitPakin.setAppeUser(userId);
                 waitPakin.setAppeTime(now);
                 waitPakin.setModiUser(userId);
                 waitPakin.setModiTime(now);
                 VersionUtils.setWaitPakIn(waitPakin, matCode);
-
                 if (!waitPakinService.insert(waitPakin)) {
                     throw new CoolException("淇濆瓨鏁版嵁澶辫触");
                 }
@@ -73,30 +90,51 @@
             if (order.getSettle() > 2) {
                 throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
             }
-            for (CombParam.CombMat comb : param.getCombMats()) {
-                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), comb.getMatNo(), comb.getBatch());
-                if (comb.getCount() > orderDetl.getEnableQty()) {
+            // 鐢熸垚鍏ュ簱閫氱煡妗�
+            List<DetlDto> detlDtos = new ArrayList<>();
+            param.getCombMats().forEach(elem -> {
+
+                // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
+                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatNo(), elem.getBatch());
+                if (elem.getCount() > orderDetl.getEnableQty()) {
                     throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
                 }
-                // 淇敼鍗曠粏鏁伴噺
-                if (!orderDetlService.increase(order.getId(), comb.getMatNo(), comb.getBatch(), comb.getCount())) {
+                // 淇敼璁㈠崟鏄庣粏鏁伴噺
+                if (!orderDetlService.increase(order.getId(), elem.getMatNo(), elem.getBatch(), elem.getCount())) {
                     throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
                 }
-                // 娣诲姞鍏ュ簱閫氱煡妗�
+
+                DetlDto detlDto = new DetlDto(elem.getMatNo(), elem.getBatch(), elem.getCount());
+                if (DetlDto.has(detlDtos, detlDto)) {
+                    DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+                    assert one != null;
+                    one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+                } else {
+                    detlDtos.add(detlDto);
+                }
+            });
+            for (DetlDto detlDto : detlDtos) {
+                MatCode matCode = matCodeService.selectById(detlDto.getMatnr());
+                if (Cools.isEmpty(matCode)) {
+                    throw new CoolException("鐗╂枡鏁版嵁閿欒");
+                }
                 WaitPakin waitPakin = new WaitPakin();
+                waitPakin.setOrderNo(order.getOrderNo());   // 鍗曟嵁缂栧彿
+                waitPakin.setBatch(detlDto.getBatch());     // 鎵瑰彿
                 waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
-                waitPakin.setStatus("Y");    // 鐘舵��
-                waitPakin.setAnfme(comb.getCount());  // 鏁伴噺
                 waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+                waitPakin.setAnfme(detlDto.getAnfme());  // 鏁伴噺
+                waitPakin.setStatus("Y");    // 鐘舵��
                 waitPakin.setAppeUser(userId);
                 waitPakin.setAppeTime(now);
                 waitPakin.setModiUser(userId);
                 waitPakin.setModiTime(now);
-                VersionUtils.setWaitPakIn(waitPakin, orderDetl);
+                VersionUtils.setWaitPakIn(waitPakin, matCode);
                 if (!waitPakinService.insert(waitPakin)) {
-                    throw new CoolException("娣诲姞鍏ュ簱閫氱煡妗eけ璐�");
+                    throw new CoolException("淇濆瓨鏁版嵁澶辫触");
                 }
             }
+
         }
 
     }

--
Gitblit v1.9.1