From ae2fb12ff5a4740417d3ba6d6dfad990a7456307 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期三, 23 四月 2025 11:00:46 +0800
Subject: [PATCH] #库存盘点页面完成

---
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |  350 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 325 insertions(+), 25 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 2992414..5506627 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -6,18 +6,19 @@
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.OpenOrderCompleteParam;
-import com.zy.asrs.entity.param.OpenOrderPakinParam;
-import com.zy.asrs.entity.param.OpenOrderPakoutParam;
+import com.zy.asrs.entity.param.*;
 import com.zy.asrs.entity.result.OpenOrderCompeteResult;
 import com.zy.asrs.entity.result.StockVo;
+import com.zy.asrs.mapper.TagMapper;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.MatUtils;
 import com.zy.common.model.DetlDto;
+import com.zy.common.utils.NodeUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-
+import com.zy.asrs.entity.CheckDetl;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -45,6 +46,10 @@
     private PackService packService;
     @Autowired
     private TagService tagService;
+    @Autowired
+    private TagMapper tagMapper;
+    @Autowired
+    private CheckDetlService checkDetlService;
 
     @Override
     @Transactional
@@ -53,7 +58,7 @@
         if (!Cools.isEmpty(order)) {
             throw new CoolException(param.getOrderNo() + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦");
         }
-        DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.TRUE);
+        DocType docType = docTypeService.selectOrAdd(param.getBillType(), Boolean.TRUE);
         Date now = new Date();
         // 鍗曟嵁涓绘。
         order = new Order(
@@ -97,7 +102,7 @@
         }
         // 鍗曟嵁鏄庣粏妗�
         List<DetlDto> list = new ArrayList<>();
-        List<DetlDto> orderDetails = param.getOrderDetails();
+        List<DetlDto> orderDetails = param.getMatList();
         for (DetlDto detail : orderDetails) {
             DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
             if (DetlDto.has(list, dto)) {
@@ -178,12 +183,17 @@
     }
 
     @Override
+    @Transactional
     public void pakoutOrderCreate(OpenOrderPakoutParam param) {
         Order order = orderService.selectByNo(param.getOrderNo());
+        // 濡傛灉鍗曟嵁涓嶅瓨鍦ㄥ垯娣诲姞锛涘鏋滃崟鎹瓨鍦紝浣滀笟涓棤娉曚慨鏀癸紝鍙嶄箣鍒欎慨鏀瑰崟鎹�
         if (!Cools.isEmpty(order)) {
-            throw new CoolException(param.getOrderNo() + "鍗曟嵁宸插瓨鍦紝璇峰嬁閲嶅鎻愪氦");
+            if (order.getSettle() > 1L) {
+                throw new CoolException(param.getOrderNo() + "姝e湪鍑哄簱锛屾棤娉曚慨鏀瑰崟鎹�");
+            }
+            orderService.remove(order.getId());
         }
-        DocType docType = docTypeService.selectOrAdd(param.getOrderType(), Boolean.FALSE);
+        DocType docType = docTypeService.selectOrAdd(param.getBillType(), Boolean.FALSE);
         Date now = new Date();
         // 鍗曟嵁涓绘。
         order = new Order(
@@ -227,7 +237,7 @@
         }
         // 鍗曟嵁鏄庣粏妗�
         List<DetlDto> list = new ArrayList<>();
-        List<DetlDto> orderDetails = param.getOrderDetails();
+        List<DetlDto> orderDetails = param.getMatList();
         for (DetlDto detail : orderDetails) {
             DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
             if (DetlDto.has(list, dto)) {
@@ -314,17 +324,20 @@
 
     @Override
     @Transactional
-    public void packageUp(String barcode) {
-        Pack pack = packService.selectByBarcode(barcode);
+    public void packageUp(PackParam param) {
+        if (Cools.isEmpty(param.getBarcode())) {
+            throw new CoolException("barcode涓嶈兘涓虹┖");
+        }
+        Mat analyse = MatUtils.analyseMat(param.getBarcode());
+        Pack pack = packService.selectByBarcode(param.getBarcode());
         if (null != pack) {
-            throw new CoolException(barcode + "閲嶅鎻愪氦");
+            throw new CoolException(param.getBarcode() + "閲嶅鎻愪氦");
         }
         Date now = new Date();
-        // todo:luxiaotao 瑙f瀽鏉$爜瑙勫垯锛岃幏鍙栫墿鏂欎唬鐮�
         pack = new Pack(
-                barcode,    // 鏉$爜[闈炵┖]
-                null,    // 鍟嗗搧缂栧彿
-                null,    // 鎵瑰彿
+                param.getBarcode(),    // 鏉$爜[闈炵┖]
+                analyse.getMatnr(),    // 鍟嗗搧缂栧彿
+                analyse.getBarcode(),    // 搴忓垪鐮�
                 1L,    // 璁㈠崟鐘舵��
                 1,    // 鐘舵��
                 now,    // 娣诲姞鏃堕棿
@@ -336,16 +349,303 @@
         if (!packService.insert(pack)) {
             throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
         }
-        Mat mat = new Mat();
-        mat.setTagId(tagService.getTop().getId());
-        mat.setMatnr(barcode);
-        mat.setMaktx(barcode);
-        mat.setStatus(1);
-        mat.setCreateTime(now);
-        mat.setUpdateTime(now);
-        if (!matService.insert(mat)) {
-            throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+
+        Mat mat = matService.selectByMatnr(analyse.getMatnr());
+        if (mat == null) {
+            mat = new Mat();
+            // 鍒嗙被
+            Long tagId;
+            // 涓�绾у垎绫�
+            if (!Cools.isEmpty(param.getGroupCode()) && !Cools.isEmpty(param.getGroupName())) {
+                Tag priTag = tagService.selectByName(param.getGroupCode(), 2);
+                if (priTag == null) {
+                    Tag top = tagService.getTop();
+                    NodeUtils nodeUtils = new NodeUtils();
+                    nodeUtils.executePath(top.getId());
+                    priTag = new Tag(
+                            null,    // 缂栧彿
+                            param.getGroupCode(),    // 鍚嶇О
+                            top.getId(),    // 鐖剁骇
+                            top.getName(),    // 鐖剁骇鍚嶇О
+                            nodeUtils.path.toString(),    // 鍏宠仈璺緞
+                            nodeUtils.pathName.toString(),    // 鍏宠仈璺緞鍚�
+                            0,    // 绫诲瀷
+                            null,    // 璐熻矗浜�
+                            null,    // 鍥剧墖
+                            null,    // 绠�瑕佹弿杩�
+                            null,    // 鏁伴噺
+                            2,    // 绛夌骇
+                            null,    // 鎺掑簭
+                            1,    // 鐘舵��
+                            now,    // 娣诲姞鏃堕棿
+                            null,    // 娣诲姞浜哄憳
+                            now,    // 淇敼鏃堕棿
+                            null,    // 淇敼浜哄憳
+                            null    // 澶囨敞
+                    );
+                    if (tagMapper.insert(priTag) == 0) {
+                        throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                    }
+                }
+                // 浜岀骇鍒嗙被
+                Tag secTag = tagService.selectByName(param.getGroupName(), 3);
+                if (secTag == null) {
+                    NodeUtils nodeUtils = new NodeUtils();
+                    nodeUtils.executePath(priTag.getId());
+                    secTag = new Tag(
+                            null,    // 缂栧彿
+                            param.getGroupName(),    // 鍚嶇О
+                            priTag.getId(),    // 鐖剁骇
+                            priTag.getName(),    // 鐖剁骇鍚嶇О
+                            nodeUtils.path.toString(),    // 鍏宠仈璺緞
+                            nodeUtils.pathName.toString(),    // 鍏宠仈璺緞鍚�
+                            0,    // 绫诲瀷
+                            null,    // 璐熻矗浜�
+                            null,    // 鍥剧墖
+                            null,    // 绠�瑕佹弿杩�
+                            null,    // 鏁伴噺
+                            3,    // 绛夌骇
+                            null,    // 鎺掑簭
+                            1,    // 鐘舵��
+                            now,    // 娣诲姞鏃堕棿
+                            null,    // 娣诲姞浜哄憳
+                            now,    // 淇敼鏃堕棿
+                            null,    // 淇敼浜哄憳
+                            null    // 澶囨敞
+                    );
+                    if (tagMapper.insert(secTag) == 0) {
+                        throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                    }
+                }
+                tagId = secTag.getId();
+            } else {
+                tagId = tagService.getTop().getId();
+            }
+            mat.setTagId(tagId);
+            mat.setMatnr(analyse.getMatnr());
+            mat.setMaktx(param.getMaterialName());
+            mat.setSpecs(param.getConfigureDesc());
+            mat.setModel(analyse.getModel());
+            mat.setStatus(1);
+            mat.setCreateTime(now);
+            mat.setUpdateTime(now);
+            if (!matService.insert(mat)) {
+                throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+            } else {
+                log.info("鎵撳寘涓婄嚎娣诲姞鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
+            }
         }
     }
 
+//    @Override
+//    @Transactional
+//    public void syncMat(List<MatSyncParam> param) {
+//        if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <=0 ) {
+//            throw new CoolException("鍟嗗搧鏁版嵁涓虹┖");
+//        }
+//
+//        for(MatSyncParam.MatParam matParam : param.getMatDetails()){
+//            if(Cools.isEmpty(matParam.getMatnr())){
+//                throw new CoolException("鍟嗗搧缂栫爜涓嶈兘涓虹┖");
+//            }
+//
+//            Date now = new Date();
+//            Mat mat = matService.selectByMatnr(matParam.getMatnr());
+//            if (mat == null) {
+//                mat = new Mat();
+//                // 鍒嗙被
+//                Long tagId;
+//                // 涓�绾у垎绫�
+//                if (!Cools.isEmpty(matParam.getTagId()) && !Cools.isEmpty(matParam.getTagIdName())) {
+//                    Tag priTag = tagService.selectByName(matParam.getTagIdName(), 2);
+//                    if (priTag == null) {
+//                        Tag top = tagService.getTop();
+//                        NodeUtils nodeUtils = new NodeUtils();
+//                        nodeUtils.executePath(top.getId());
+//                        priTag = new Tag(
+//                                null,    // 缂栧彿
+//                                matParam.getTagIdName(),    // 鍚嶇О
+//                                top.getId(),    // 鐖剁骇
+//                                top.getName(),    // 鐖剁骇鍚嶇О
+//                                nodeUtils.path.toString(),    // 鍏宠仈璺緞
+//                                nodeUtils.pathName.toString(),    // 鍏宠仈璺緞鍚�
+//                                0,    // 绫诲瀷
+//                                null,    // 璐熻矗浜�
+//                                null,    // 鍥剧墖
+//                                null,    // 绠�瑕佹弿杩�
+//                                null,    // 鏁伴噺
+//                                2,    // 绛夌骇
+//                                null,    // 鎺掑簭
+//                                1,    // 鐘舵��
+//                                now,    // 娣诲姞鏃堕棿
+//                                null,    // 娣诲姞浜哄憳
+//                                now,    // 淇敼鏃堕棿
+//                                null,    // 淇敼浜哄憳
+//                                null    // 澶囨敞
+//                        );
+//                        if (tagMapper.insert(priTag) == 0) {
+//                            throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+//                        }
+//                    }
+//                } else {
+//                    tagId = tagService.getTop().getId();
+//                }
+//                mat.sync(param);
+////            mat.setMatnr(param.getMatnr());
+////            mat.setMaktx(param.getMaktx());
+////            mat.setSpecs(param.getSpecs());
+////            mat.setModel(param.getModel());
+//
+//                mat.setTagId(1L);
+//                mat.setStatus(1);
+//                mat.setCreateTime(now);
+//                mat.setUpdateTime(now);
+//                if (!matService.insert(mat)) {
+//                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+//                } else {
+//                    log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
+//                }
+//            } else {
+//                mat.sync(param);
+//                if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) {
+//                    throw new CoolException("鏇存柊宸插瓨鍦ㄥ晢鍝佷俊鎭け璐ワ紝璇疯仈绯荤鐞嗗憳");
+//                }
+//            }
+//        }
+//
+//    }
+
+        @Override
+        @Transactional
+        public void syncMat(List<MatSyncParam> paramList) {
+            if (Cools.isEmpty(paramList)) {
+                throw new CoolException("鍚屾鏁版嵁涓虹┖");
+            }
+
+            for (MatSyncParam param : paramList) {
+                if (Cools.isEmpty(param.getData()) || param.getData().isEmpty()) {
+                    throw new CoolException("鍟嗗搧鏁版嵁涓虹┖");
+                }
+
+                for (MatSyncParam.MatParam matParam : param.getData()) {
+                    if (Cools.isEmpty(matParam.getMatnr())) {
+                        throw new CoolException("鍟嗗搧缂栫爜涓嶈兘涓虹┖");
+                    }
+
+                    Date now = new Date();
+                    Mat mat = matService.selectByMatnr(matParam.getMatnr());
+                    if (mat == null) {
+                        mat = new Mat();
+
+                        // 鍒嗙被
+                        Long tagId;
+                        if (!Cools.isEmpty(matParam.getTagId()) && !Cools.isEmpty(matParam.getTagIdName())) {
+                            // 濡傛灉鎻愪緵浜� tagId 鍜� tagIdName锛屾煡璇㈡槸鍚﹀凡鏈夌浉鍚岀殑鍒嗙被
+                            Tag priTag = tagService.selectByName(matParam.getTagIdName(), 2);
+                            if (priTag == null) {
+                                // 濡傛灉鍒嗙被涓嶅瓨鍦紝鍒涘缓鏂扮殑鍒嗙被
+                                Tag top = tagService.getTop();
+                                NodeUtils nodeUtils = new NodeUtils();
+                                nodeUtils.executePath(top.getId());
+                                priTag = new Tag(
+                                        matParam.getTagId(),
+                                        matParam.getTagIdName(),
+                                        top.getId(),
+                                        top.getName(),
+                                        nodeUtils.path.toString(),
+                                        nodeUtils.pathName.toString(),
+                                        0,
+                                        null,
+                                        null,
+                                        null,
+                                        null,
+                                        2,
+                                        null,
+                                        1,
+                                        now,
+                                        null,
+                                        now,
+                                        null,
+                                        null
+                                );
+                                if (tagMapper.insert(priTag) == 0) {
+                                    throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                                }
+                                tagId = priTag.getId();
+                            } else {
+                                // 濡傛灉鍒嗙被宸插瓨鍦紝浣跨敤鐜版湁鐨� tagId
+                                tagId = priTag.getId();
+                            }
+                        } else {
+                            // 濡傛灉娌℃湁鎻愪緵 tagId 鍜� tagIdName锛屽垯浣跨敤榛樿鐨勫垎绫�
+                            tagId = tagService.getTop().getId();
+                        }
+
+                        mat.sync(matParam);  //
+
+                        mat.setTagId(tagId);
+                        mat.setStatus(1);
+                        mat.setCreateTime(now);
+                        mat.setUpdateTime(now);
+                        if (!matService.insert(mat)) {
+                            throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+                        } else {
+                            log.info("鍚屾鏂扮墿鏂橻鍟嗗搧缂栧彿锛歿}]", mat.getMatnr());
+                        }
+                    } else {
+                        Tag priTag = tagService.selectByName(matParam.getTagIdName(), 2);
+                        matParam.setTagId(priTag.getId());
+                        mat.sync(matParam);  // 鈿狅笍 鍚屼笂
+                        if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr", matParam.getMatnr()))) {
+                            throw new CoolException("鏇存柊宸插瓨鍦ㄥ晢鍝佷俊鎭け璐ワ紝璇疯仈绯荤鐞嗗憳");
+                        }
+                    }
+                }
+            }
+        }
+    @Override
+    @Transactional
+    public void check(List<MatSyncParam> paramList){
+        if (Cools.isEmpty(paramList)) {
+            throw new CoolException("涓婃姤鏁版嵁涓虹┖");
+        }
+
+        for (MatSyncParam param : paramList) {
+            if (Cools.isEmpty(param.getData()) || param.getData().isEmpty()) {
+                throw new CoolException("鐗╂枡鏁版嵁涓虹┖");
+            }
+
+            for (MatSyncParam.MatParam matParam : param.getData()) {
+                if (Cools.isEmpty(matParam.getMatnr())) {
+                    throw new CoolException("鍟嗗搧缂栫爜涓虹┖");
+                }
+
+                Double LKAnfme = locDetlService.getAnfmeByMatnr(matParam.getMatnr(),matParam.getBatch(),matParam.getSpecs());
+                if (LKAnfme == null) {
+                    LKAnfme = 0.0;
+                }
+
+                // 璁$畻宸��
+                double diff = matParam.getAnfme() - LKAnfme;
+
+                if (diff != 0) {
+                    CheckDetl checkDetl = new CheckDetl();
+                    checkDetl.setAnfme(diff);  //杩欓噷璁板綍宸��
+                    checkDetl.setMatnr(matParam.getMatnr());
+                    checkDetl.setMaktx(matParam.getMaktx());
+                    checkDetl.setSpecs(matParam.getSpecs());
+                    checkDetl.setCreateTime(new Date());
+
+                    checkDetlService.insert(checkDetl);  // 鎻掑叆宸紓璁板綍
+                }
+            }
+        }
+    }
+
+
+
+
+
+
+
 }

--
Gitblit v1.9.1