From 57936e11434f6614f818a0a0a495918dc1af6dd6 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 02 十二月 2024 08:07:01 +0800
Subject: [PATCH] 单据出库完成

---
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java |  259 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 244 insertions(+), 15 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 2e8c7f3..e4c1241 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -12,9 +12,10 @@
 import com.zy.asrs.entity.param.OffSaleParam;
 import com.zy.asrs.entity.param.OpenOrderPakinParam;
 import com.zy.asrs.mapper.ManLocDetlMapper;
+import com.zy.asrs.mapper.OrderDetlMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.MatUtils;
-import com.zy.common.CodeRes;
+import com.zy.asrs.utils.SaasUtils;
 import com.zy.common.constant.MesConstant;
 import com.zy.common.entity.Parameter;
 import com.zy.common.model.DetlDto;
@@ -26,6 +27,8 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.Iterator;
@@ -43,6 +46,10 @@
     private MatService matService;
     @Autowired
     private WaitPakinService waitPakinService;
+
+    @Resource
+    private WaitPakinLogService waitPakinLogService;
+
     @Autowired
     private OrderService orderService;
     @Autowired
@@ -78,6 +85,182 @@
     @Autowired
     private ManLocDetlMapper manLocDetlMapper;
 
+    @Resource
+    private OrderDetlMapper orderDetlMapper;
+
+    @Override
+    @Transactional
+    public R WarehouseOut(CombParam combParam, Long userId) {
+
+        //鏌ヨ搴撳瓨鏁版嵁
+        for (CombParam.CombMat combMat : combParam.getCombMats()) {
+            ManLocDetl locDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>()
+                            .eq("loc_no", combParam.getLocno())
+                            .eq("zpallet", combMat.getZpallet())
+                            .eq("matnr", combMat.getMatnr())
+//                    .eq(LocDetl::getBatch, combMat.getBatch())
+            );
+            if (Cools.isEmpty(locDetl)) {
+                return R.error("鏈煡璇㈠埌搴撳瓨鏁版嵁");
+            }
+            if (combMat.getAnfme() > locDetl.getAnfme()) {
+                return R.error("涓嬫灦鏁伴噺閿欒锛岃秴鍑哄簱瀛樻暟閲�");
+            }
+            if (!Cools.isEmpty(combParam.getOrderNo())) {
+                Order order = orderService.selectByNo(combParam.getOrderNo());
+                if (Cools.isEmpty(order)) {
+                    continue;
+                }
+                if (order.getSettle() == 1) {
+                    orderService.updateSettle(order.getId(), 2L, userId);
+                }
+                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), combMat.getMatnr(), combMat.getBatch());
+                if (Cools.isEmpty(orderDetl)) {
+                    continue;
+                }
+                if (orderDetl.getAnfme() < orderDetl.getWorkQty() + combMat.getAnfme()) {
+                    combMat.setAnfme(orderDetl.getAnfme() - orderDetl.getWorkQty());
+                }
+                // 淇敼璁㈠崟鏄庣粏浣滀笟鏁伴噺
+                if (orderDetlMapper.increaseWorkQtyByOrderNo(combParam.getOrderNo(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme()) <= 0) {
+                    throw new CoolException("淇敼鍗曟嵁鏄庣粏宸ヤ綔鏁伴噺澶辫触");
+                }
+                // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
+                if (!orderDetlService.increase(order.getId(), combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme())) {
+                    throw new CoolException("淇敼鍗曟嵁鏄庣粏瀹屾垚鏁伴噺澶辫触");
+                }
+                // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
+                orderService.checkComplete(combParam.getOrderNo());
+            }
+            try {
+                double i = 0.0;
+                double j = locDetl.getAnfme();
+                //澶勭悊搴撳瓨淇℃伅
+                if (combMat.getAnfme().equals(locDetl.getAnfme())) {
+                    //搴撳瓨鐩哥瓑鍒犻櫎鏁版嵁
+                    manLocDetlMapper.deleteLocNo0(combParam.getLocno(), combMat.getMatnr());
+                    int count = manLocDetlMapper.selectCount(new EntityWrapper<ManLocDetl>().eq("loc_no", combParam.getLocno()));
+                    if (count == 0) {
+                        Node node = nodeService.selectByUuid(combParam.getLocno());
+                        node.setUpdateTime(new Date());
+                        node.setUpdateBy(userId);
+                        node.setBarcode("");
+                        nodeService.updateById(node);
+                    }
+                } else {
+                    BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme()));
+                    i = subtract.byteValue();
+                    locDetl.setAnfme(subtract.doubleValue());
+                    // 鏇存柊搴撳瓨
+                    manLocDetlMapper.updateAnfme(subtract.doubleValue(), combParam.getLocno(), combMat.getMatnr(), combMat.getBatch());
+                }
+                // 璁板綍鏃ュ織
+                SaasUtils.insertLog(1, combParam.getLocno(), combMat.getMatnr(), combMat.getAnfme(), userId,combMat.getBatch());
+            } catch (Exception e) {
+                throw new CoolException("鏇存柊搴撳瓨鏁版嵁鍑洪敊" + e.getMessage());
+            }
+        }
+        return R.ok();
+    }
+
+    @Override
+    @Transactional
+    public R WarehouseIn(String locNo, String barcode, Long userId) {
+
+        //鏌ヨ缁勬墭鏁版嵁
+        List<WaitPakin> list = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode));
+        if (Cools.isEmpty(list)) {
+            return R.error("鏈壘鍒扮粍鎵樹俊鎭�");
+        }
+        Date now = new Date();
+
+        //鎻掑叆搴撳瓨鏁版嵁
+        for (WaitPakin waitPakin : list) {
+
+            Mat mat = matService.selectOne(new EntityWrapper<Mat>()
+                    .eq("matnr", waitPakin.getMatnr()));
+
+            ManLocDetl locDetl1 = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", waitPakin.getMatnr()).
+                    eq("batch", waitPakin.getBatch()));
+
+            Node node = nodeService.selectByUuid(locNo);
+            if (Cools.isEmpty(node)) {
+                throw new CoolException(locNo + ":搴撲綅涓嶅瓨鍦�");
+            }
+            if (!Cools.isEmpty(locDetl1)) {
+                locDetl1.setAnfme(waitPakin.getAnfme() + waitPakin.getAnfme());
+                locDetl1.setUpdateBy(userId);
+                locDetl1.setModiTime(now);
+                manLocDetlService.update(locDetl1, new EntityWrapper<ManLocDetl>().eq("loc_no", locNo).eq("matnr", waitPakin.getMatnr()).
+                        eq("batch", waitPakin.getBatch()));
+            } else {
+                ManLocDetl manLocDetl = new ManLocDetl();
+                manLocDetl.setLocNo(locNo);
+//            manLocDetl.setBarcode(barcode);
+                manLocDetl.setZpallet(barcode);
+                manLocDetl.setNodeId(node.getId());
+                manLocDetl.setMaktx(mat.getMaktx());
+                manLocDetl.setMatnr(mat.getMatnr());
+                manLocDetl.setSpecs(mat.getSpecs());
+                manLocDetl.setBatch(Cools.isEmpty(waitPakin.getBatch()) ? "" : waitPakin.getBatch());
+                manLocDetl.setAnfme(waitPakin.getAnfme());
+                manLocDetl.setCreateBy(userId);
+                manLocDetl.setCreateTime(now);
+                manLocDetl.setUpdateBy(userId);
+                manLocDetl.setModiTime(now);
+                if (!manLocDetlService.insert(manLocDetl)) {
+                    throw new CoolException("鍟嗗搧涓婃灦澶辫触锛�");
+                }
+
+                // 鏇存柊搴撲綅鏉$爜
+                node.setBarcode(barcode);
+                node.setUpdateBy(userId);
+                node.setUpdateTime(now);
+                nodeService.updateById(node);
+            }
+
+            // 璁板綍鏃ュ織
+            SaasUtils.insertLog(0, locNo, waitPakin.getMatnr(), waitPakin.getAnfme(), userId,waitPakin.getBatch());
+
+            //鏄惁灞炰簬璁㈠崟鏁版嵁
+//            if (!Cools.isEmpty(waitPakin.getOrderNo())){
+//                Order order = orderService.selectByNo(waitPakin.getOrderNo(), hostId);
+//                if (Cools.isEmpty(order)){
+//                    continue;
+//                }
+//                OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), waitPakin.getMatnr(), waitPakin.getBatch(),hostId);
+//                if (Cools.isEmpty(orderDetl)){
+//                    continue;
+//                }
+//                // 淇敼璁㈠崟鏄庣粏瀹屾垚鏁伴噺
+//                if (!orderDetlService.increase(order.getId(), hostId, waitPakin.getMatnr(), waitPakin.getBatch(), waitPakin.getAnfme())) {
+//                    throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
+//                }
+//                // 淇敼璁㈠崟鐘舵�� 浣滀笟涓� ===>> 宸插畬鎴�
+//                orderService.checkComplete(waitPakin.getOrderNo(), hostId);
+//
+//            }
+
+            // 鏇存柊鍏ュ簱宸ヤ綔妗�
+            waitPakin.setLocNo(locNo);
+            waitPakin.setIoStatus("Y");
+            waitPakin.setModiUser(userId);
+            waitPakin.setModiTime(now);
+            waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("matnr",waitPakin.getMatnr())
+                    .eq("batch",waitPakin.getBatch()));
+
+            // 淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。
+            if (!waitPakinLogService.save(barcode)) {
+                throw new CoolException("淇濆瓨缁勬墭鏁版嵁澶辫触");
+            }
+            // 鍒犻櫎鍏ュ簱閫氱煡妗�
+            if (!waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", barcode))) {
+                throw new CoolException("鍒犻櫎缁勬墭鏁版嵁澶辫触");
+            }
+        }
+
+        return R.ok("涓婃灦鎴愬姛");
+    }
 
     @Override
     @Transactional
@@ -85,16 +268,27 @@
         if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
             throw new CoolException(BaseRes.PARAM);
         }
+        if(param.getCombMats().size()>1){
+            throw new CoolException("璇锋彁鍙栦竴涓晢鍝侊紝鎴栬�呭埛鏂伴噸鏂扮粍鎵橈紒");
+        }
         // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
         if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>().
                 eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) {
             throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
         }
 
+        if(param.getBarcode().length()!=8){
+            throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + param.getBarcode());
+        }
+        if (param.getCombMats().size()>1){
+            throw new CoolException("涓嶅厑璁告贩鏂�===>>" + param.getBarcode());
+        }
+
         int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
         int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
-        if (countLoc > 0 || countWrk > 0) {
-            throw new CoolException("宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode());
+        int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",param.getBarcode()));
+        if (countLoc > 0 || countWrk > 0 || countwait > 0) {
+            throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + param.getBarcode());
         }
 
         Date now = new Date();
@@ -139,7 +333,7 @@
         // 鍏宠仈缁勬墭
         } else {
             Order order = orderService.selectByNo(param.getOrderNo());
-            if (order.getSettle() > 2) {
+            if (Cools.isEmpty(order) || order.getSettle() > 2) {
                 throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
             }
             // 鐢熸垚鍏ュ簱閫氱煡妗�
@@ -191,14 +385,21 @@
 
     }
 
+    // 鍟嗗搧涓婃灦
     @Override
-    public void onSale(CombParam param) {
+    public void onSale(CombParam param, Long userId) {
+
         Date now = new Date();
         // 鑾峰彇搴撲綅鍙�
         String locno = param.getLocno();
         Node node = nodeService.selectByUuid(locno);
         if (Cools.isEmpty(node)) {
             throw new CoolException(param.getLocno() + ":搴撲綅涓嶅瓨鍦�");
+        }
+
+        String barcode = param.getBarcode();
+        if (Cools.isEmpty(barcode)) {
+            throw new CoolException("鏉$爜涓嶈兘涓虹┖锛�");
         }
 
         // 鑾峰彇鍟嗗搧鍒楄〃
@@ -210,32 +411,60 @@
             if (Cools.isEmpty(combMat.getAnfme()) || combMat.getAnfme()==0){
                 throw new CoolException(combMat.getMatnr() + ":鍟嗗搧鏁伴噺鏈夎锛�");
             }
-            if (Cools.isEmpty(combMat.getBatch())){
-                throw new CoolException(combMat.getMatnr() + ":鍟嗗搧鎵瑰彿鏈夎锛�");
-            }
+
             ManLocDetl manLocDetl = new ManLocDetl();
             manLocDetl.setLocNo(locno);
+//            manLocDetl.setBarcode(barcode);
+            manLocDetl.setZpallet(barcode);
             manLocDetl.setNodeId(node.getId());
             manLocDetl.setMaktx(mat.getMaktx());
             manLocDetl.setMatnr(mat.getMatnr());
-            manLocDetl.setBatch(combMat.getBatch());
+            manLocDetl.setSpecs(mat.getSpecs());
+            manLocDetl.setBatch(Cools.isEmpty(combMat.getBatch()) ? "" : combMat.getBatch());
             manLocDetl.setAnfme(combMat.getAnfme());
+            manLocDetl.setCreateBy(userId);
+            manLocDetl.setCreateTime(now);
+            manLocDetl.setUpdateBy(userId);
             manLocDetl.setModiTime(now);
             if (!manLocDetlService.insert(manLocDetl)) {
                 throw new CoolException("鍟嗗搧涓婃灦澶辫触锛�");
             }
+
+            // 鏇存柊搴撲綅鏉$爜
+            node.setBarcode(barcode);
+            node.setUpdateBy(userId);
+            node.setUpdateTime(now);
+            nodeService.updateById(node);
+            SaasUtils.insertLog(0,manLocDetl.getLocNo(), manLocDetl.getMatnr(),combMat.getAnfme(),userId,manLocDetl.getBatch());
+
         }
     }
 
+    // 鍟嗗搧涓嬫灦
     @Override
-    public void offSale(OffSaleParam offSaleParam) {
-        List<ManLocDetl> manLocDetls = manLocDetlMapper.selectLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
-        if (Cools.isEmpty(manLocDetls)){
-            throw new CoolException("鍟嗗搧涓嬫灦澶辫触锛�");
+    public void offSale(OffSaleParam offSaleParam, Long userId) {
+        ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
+        if (Cools.isEmpty(manLocDetl)){
+            throw new CoolException("鏃犳鍟嗗搧锛�");
         }
-        int i = manLocDetlMapper.deleteLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
-        System.out.println(i);
+        double anfme = manLocDetl.getAnfme() - offSaleParam.getAnfme();
+        if (anfme < 0) {
+            throw new CoolException("鍟嗗搧搴撳瓨涓嶈冻锛�");
+        } else if (anfme == 0){
+            SaasUtils.insertLog(1,manLocDetl.getLocNo(), manLocDetl.getMatnr(),offSaleParam.getAnfme(),userId,manLocDetl.getBatch());
+            manLocDetlMapper.deleteLocNo0(offSaleParam.getLocNo(), offSaleParam.getMatnr());
+            // 娓呯┖搴撲綅鏉$爜
+            Node node = nodeService.selectByUuid(offSaleParam.getLocNo());
+            node.setUpdateTime(new Date());
+            node.setUpdateBy(userId);
+            node.setBarcode("");
+        }
+        manLocDetlMapper.updateAnfme0(anfme,manLocDetl.getNodeId());
     }
+
+    // 鏌ユ壘鍟嗗搧
+
+
     @Override
     @Transactional
     public void adjust(MobileAdjustParam param, Long userId) {

--
Gitblit v1.9.1