From b602aaae04898109df3fa72d1975301d38e2d626 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 20 四月 2022 22:20:27 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |   71 ++++++++++++++++++++++++++++++++++-
 1 files changed, 69 insertions(+), 2 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 07e7cef..e3610f2 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -3,11 +3,15 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.BaseRes;
 import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.CombParam;
 import com.zy.asrs.entity.param.MobileAdjustParam;
+import com.zy.asrs.entity.param.OpenOrderPakinParam;
 import com.zy.asrs.service.*;
+import com.zy.common.entity.Parameter;
 import com.zy.common.model.DetlDto;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -41,6 +45,12 @@
     private WrkMastService wrkMastService;
     @Autowired
     private WrkDetlService wrkDetlService;
+    @Autowired
+    private PackService packService;
+    @Autowired
+    private OpenService openService;
+    @Autowired
+    private SnowflakeIdWorker snowflakeIdWorker;
 
     @Override
     @Transactional
@@ -70,6 +80,7 @@
                     detlDtos.add(detlDto);
                 }
             });
+
 
             for (DetlDto detlDto : detlDtos) {
                 Mat mat = matService.selectByMatnr(detlDto.getMatnr());
@@ -141,7 +152,7 @@
                     throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
                 }
             }
-
+            orderService.updateSettle(order.getId(), 2L, userId);
         }
 
     }
@@ -225,6 +236,7 @@
     }
 
     @Override
+    @Transactional
     public void packComb(CombParam param, Long userId) {
         if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
             throw new CoolException(BaseRes.PARAM);
@@ -236,12 +248,24 @@
         }
         Date now = new Date();
 
+        boolean packDown = Parameter.get().getPackDown().equals("true");
+
         // 鏃犲崟缁勬墭
         if (Cools.isEmpty(param.getOrderNo())) {
 
             // 鐢熸垚鍏ュ簱閫氱煡妗�
             List<DetlDto> detlDtos = new ArrayList<>();
             param.getCombMats().forEach(elem -> {
+                // 鎵撳寘涓婄嚎鏁版嵁鏍¢獙
+                if (packDown) {
+                    Pack pack = packService.selectByBarcode(elem.getMatnr());
+                    if (pack == null) {
+                        throw new CoolException(elem.getMatnr() + "鏉$爜鍐椾綑锛岃妫�鏌ワ紒");
+                    }
+                    if (pack.getSettle() != 1) {
+                        throw new CoolException(elem.getMatnr() + "鏉$爜宸蹭笅绾匡紝璇锋鏌ワ紒");
+                    }
+                }
                 DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
                 if (DetlDto.has(detlDtos, detlDto)) {
                     DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
@@ -252,13 +276,48 @@
                 }
             });
 
+            if (packDown) {
+                // 鏁版嵁涓婃姤 todo
+            }
+
+            // 鐢熸垚鍏ュ簱鍗曟嵁
+            String orderNo = "PACK" + snowflakeIdWorker.nextId();
+            OpenOrderPakinParam openParam = new OpenOrderPakinParam();
+            openParam.setOrderNo(orderNo);
+            openParam.setOrderTime(DateUtils.convert(now));
+            openParam.setOrderType("鎵撳寘鍏ュ簱鍗�");
+            openParam.setOrderDetails(detlDtos);
+            openService.pakinOrderCreate(openParam);
+            Order order = orderService.selectByNo(orderNo);
+            if (null == order) {
+                throw new CoolException("鐢熸垚鍗曟嵁澶辫触");
+            }
+            if (!orderService.updateSettle(order.getId(), 2L, userId)) {
+                throw new CoolException("淇敼鍗曟嵁鐘舵�佸け璐�");
+            }
+
+            // 鐢熸垚鍏ュ簱閫氱煡妗�
             for (DetlDto detlDto : detlDtos) {
+
+                // 淇敼浣滀笟鏁伴噺 ----------------------------------------
+                // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
+                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), detlDto.getMatnr(), detlDto.getBatch());
+                if (detlDto.getAnfme() > orderDetl.getEnableQty()) {
+                    throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
+                }
+                // 淇敼璁㈠崟鏄庣粏鏁伴噺
+                if (!orderDetlService.increase(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme())) {
+                    throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
+                }
+
+                // 淇濆瓨鍏ュ簱閫氱煡妗�
                 Mat mat = matService.selectByMatnr(detlDto.getMatnr());
                 if (Cools.isEmpty(mat)) {
                     throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
                 }
                 WaitPakin waitPakin = new WaitPakin();
                 waitPakin.sync(mat);
+                waitPakin.setOrderNo(orderNo);
                 waitPakin.setBatch(detlDto.getBatch());
                 waitPakin.setZpallet(param.getBarcode());   // 鎵樼洏鐮�
                 waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
@@ -271,8 +330,16 @@
                 if (!waitPakinService.insert(waitPakin)) {
                     throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
                 }
+                // 淇敼鎵撳寘鏁版嵁鐘舵��
+                Pack pack = packService.selectByBarcode(detlDto.getMatnr());
+                pack.setSettle(2L);
+                pack.setUpdateTime(now);
+                pack.setUpdateBy(userId);
+                if (!packService.updateById(pack)) {
+                    throw new CoolException("淇敼鎵撳寘鏁版嵁寮傚父");
+                }
             }
-            // 鍏宠仈缁勬墭
+
         }
     }
 

--
Gitblit v1.9.1