From bab6283f5c0b5da44b7a342f9daef35473a13ab7 Mon Sep 17 00:00:00 2001
From: dubin <bindu_bean@163.com>
Date: 星期四, 16 四月 2026 14:54:57 +0800
Subject: [PATCH] 初始化

---
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |  255 +++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 218 insertions(+), 37 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 c2d19b7..3c0f0a7 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -6,9 +6,11 @@
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.enums.WKType;
 import com.zy.asrs.entity.param.*;
 import com.zy.asrs.entity.result.OpenOrderCompeteResult;
 import com.zy.asrs.entity.result.StockVo;
+import com.zy.asrs.entity.vo.OpenInventoryVo;
 import com.zy.asrs.mapper.TagMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.MatUtils;
@@ -19,10 +21,8 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * Created by vincent on 2022/4/9
@@ -60,7 +60,7 @@
     @Transactional
     public void pakinOrderCreate(OpenOrderPakinParam param) {
         Order order = orderService.selectByNo(param.getOrderNo());
-        if (!Cools.isEmpty(order) && order.getSettle() !=1) {
+        if (!Cools.isEmpty(order) && order.getSettle() != 1) {
             throw new CoolException(param.getOrderNo() + "鍗曟嵁宸叉湁宸ヤ綔浠诲姟");
         }
         if (!Cools.isEmpty(order)) {
@@ -114,8 +114,8 @@
         List<DetlDto> list = new ArrayList<>();
         List<DetlDto> orderDetails = param.getOrderDetails();
         for (DetlDto detail : orderDetails) {
-            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(),detail.getFromOrderNo()
-                    , detail.getMark(),detail.getCustomer(),detail.getSuppName(),detail.getTemp1(),detail.getTemp2(),detail.getTemp3(),detail.getTemp4());
+            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(), detail.getFromOrderNo()
+                    , detail.getMark(), detail.getCustomer(), detail.getSuppName(), detail.getTemp1(), detail.getTemp2(), detail.getTemp3(), detail.getTemp4());
             if (DetlDto.has(list, dto)) {
                 DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
                 assert detlDto != null;
@@ -260,8 +260,8 @@
         List<DetlDto> list = new ArrayList<>();
         List<DetlDto> orderDetails = param.getOrderDetails();
         for (DetlDto detail : orderDetails) {
-            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(),detail.getFromOrderNo()
-                    , detail.getMark(),detail.getCustomer(),detail.getSuppName(),detail.getTemp1(),detail.getTemp2(),detail.getTemp3(),detail.getTemp4());
+            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(), detail.getFromOrderNo()
+                    , detail.getMark(), detail.getCustomer(), detail.getSuppName(), detail.getTemp1(), detail.getTemp2(), detail.getTemp3(), detail.getTemp4());
             if (DetlDto.has(list, dto)) {
                 DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
                 assert detlDto != null;
@@ -472,33 +472,94 @@
     @Override
     @Transactional
     public void syncMat(MatSyncParam param) {
-        if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <=0 ) {
+        if (Cools.isEmpty(param.getMatDetails()) || param.getMatDetails().size() <= 0) {
             throw new CoolException("鍟嗗搧鏁版嵁涓虹┖");
         }
 
-        for(MatSyncParam.MatParam matParam : param.getMatDetails()){
-            if(Cools.isEmpty(matParam.getMatnr())){
+        for (MatSyncParam.MatParam matParam : param.getMatDetails()) {
+            if (Cools.isEmpty(matParam.getMatnr())) {
                 throw new CoolException("鍟嗗搧缂栫爜涓嶈兘涓虹┖");
             }
 
             Date now = new Date();
             Mat mat = matService.selectByMatnr(matParam.getMatnr());
-            // 鍒嗙被
-            Long tagId;
-            // 涓�绾у垎绫�
-            Tag tag = tagService.selectOne(new EntityWrapper<Tag>().eq("memo", matParam.getGroupCode()));
-            if (tag == null) {
-                throw new CoolException("鍑洪敊锛屾湭鎵惧埌鍒嗙被");
-            }
             if (mat == null) {
                 mat = new Mat();
+                // 鍒嗙被
+                Long tagId;
+                // 涓�绾у垎绫�
+                if (!Cools.isEmpty(matParam.getGroupCode()) && !Cools.isEmpty(matParam.getGroupName())) {
+                    Tag priTag = tagService.selectByName(matParam.getGroupCode(), 2);
+                    if (priTag == null) {
+                        Tag top = tagService.getTop();
+                        NodeUtils nodeUtils = new NodeUtils();
+                        nodeUtils.executePath(top.getId());
+                        priTag = new Tag(
+                                null,    // 缂栧彿
+                                matParam.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(matParam.getGroupName(), 3);
+                    if (secTag == null) {
+                        NodeUtils nodeUtils = new NodeUtils();
+                        nodeUtils.executePath(priTag.getId());
+                        secTag = new Tag(
+                                null,    // 缂栧彿
+                                matParam.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.sync(matParam);
 //            mat.setMatnr(param.getMatnr());
 //            mat.setMaktx(param.getMaktx());
 //            mat.setSpecs(param.getSpecs());
 //            mat.setModel(param.getModel());
 
-                mat.setTagId(tag.getId());
+                mat.setTagId(tagId);
                 mat.setStatus(1);
                 mat.setCreateTime(now);
                 mat.setUpdateTime(now);
@@ -509,8 +570,7 @@
                 }
             } else {
                 mat.sync(matParam);
-                mat.setTagId(tag.getId());
-                if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr",matParam.getMatnr()))) {
+                if (!matService.update(mat, new EntityWrapper<Mat>().eq("matnr", matParam.getMatnr()))) {
                     throw new CoolException("鏇存柊宸插瓨鍦ㄥ晢鍝佷俊鎭け璐ワ紝璇疯仈绯荤鐞嗗憳");
                 }
             }
@@ -523,21 +583,21 @@
     public List<LocDetlByTimeDTO> selectTimeLocDetl(TimeSelectParam param) {
         ArrayList<LocDetlByTimeDTO> locDetlByTimeDTOS = new ArrayList<>();
         EntityWrapper<WrkMastLog> wrkMastLogEntityWrapper = new EntityWrapper<>();
-        wrkMastLogEntityWrapper.ge("modi_time",param.getStartTime());
-        wrkMastLogEntityWrapper.le("modi_time",param.getEndTime());
+        wrkMastLogEntityWrapper.ge("modi_time", param.getStartTime());
+        wrkMastLogEntityWrapper.le("modi_time", param.getEndTime());
 //        wrkMastLogEntityWrapper.isNotNull("sheet_no");
         wrkMastLogService.selectList(wrkMastLogEntityWrapper).forEach(wrkMastLog -> {
             if (wrkMastLog.getWrkSts() == 5 || wrkMastLog.getWrkSts() == 15) {
                 EntityWrapper<WrkDetlLog> wrkDetlLogEntityWrapper = new EntityWrapper<>();
                 wrkDetlLogEntityWrapper.eq("wrk_no", wrkMastLog.getWrkNo());
-                if (wrkMastLog.getIoType() != 300 && wrkMastLog.getIoType() != 301){
+                if (wrkMastLog.getIoType() != 300 && wrkMastLog.getIoType() != 301) {
                     wrkDetlLogEntityWrapper.eq("zpallet", wrkMastLog.getBarcode());
                 }
                 List<WrkDetlLog> wrkDetlLogs = wrkDetlLogService.selectList(wrkDetlLogEntityWrapper);
                 wrkDetlLogs.forEach(wrkDetlLog -> {
                     if (wrkDetlLog.getOrderNo() != null && !wrkDetlLog.getOrderNo().isEmpty()) {
                         LocDetlByTimeDTO locDetlByTimeDTO = new LocDetlByTimeDTO();
-                        if (!Cools.isEmpty(wrkDetlLog.getOrderNo())){
+                        if (!Cools.isEmpty(wrkDetlLog.getOrderNo())) {
                             Order order = orderService.selectByNo(wrkDetlLog.getOrderNo());
                             if (!Cools.isEmpty(order)) {
                                 locDetlByTimeDTO.setDate(order.getOrderTime());
@@ -545,7 +605,7 @@
                                 locDetlByTimeDTO.setOrderType(order.getDocType$());
                             }
                             locDetlByTimeDTO.setMatnr(wrkDetlLog.getMatnr());
-                            locDetlByTimeDTO.setLocNo(wrkMastLog.getIoType() <100? wrkMastLog.getLocNo(): wrkMastLog.getSourceLocNo());
+                            locDetlByTimeDTO.setLocNo(wrkMastLog.getIoType() < 100 ? wrkMastLog.getLocNo() : wrkMastLog.getSourceLocNo());
                             locDetlByTimeDTO.setBatch(wrkDetlLog.getBatch());
                             locDetlByTimeDTO.setAnfme(wrkDetlLog.getAnfme());
                             locDetlByTimeDTO.setOrderNo(wrkDetlLog.getOrderNo());
@@ -595,11 +655,11 @@
     @Transactional
     public void syncTag(List<TagParam> param) {
 
-        param.forEach(tag-> {
+        param.forEach(tag -> {
             // 鍒嗙被
             Long tagId;
             Date now = new Date();
-            if (Cools.isEmpty(tag.getParentItemClassId())){
+            if (Cools.isEmpty(tag.getParentItemClassId())) {
                 Tag priTag = tagService.selectByName("鍏ㄩ儴", 1);
 
                 // 浜岀骇鍒嗙被
@@ -632,8 +692,8 @@
                         throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
                     }
                 }
-            }else {
-                Tag priTag =tagService.selectOne(new EntityWrapper<Tag>().eq("memo", tag.getParentItemClassId()));
+            } else {
+                Tag priTag = tagService.selectOne(new EntityWrapper<Tag>().eq("memo", tag.getParentItemClassId()));
                 if (priTag == null) {
                     Tag top = tagService.getTop();
                     NodeUtils nodeUtils = new NodeUtils();
@@ -693,7 +753,7 @@
                     if (tagMapper.insert(secTag) == 0) {
                         throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
                     }
-                }else {
+                } else {
                     secTag.setName(tag.getName());
                     secTag.setParentId(priTag.getId());
                     secTag.setParentName(priTag.getName());
@@ -706,15 +766,13 @@
                     List<Tag> tags = tagService.selectList(new EntityWrapper<Tag>().eq("parent_id", secTag.getId()));
                     if (!Cools.isEmpty(tags)) {
                         for (Tag tag1 : tags) {
-                            tag1.setPath(nodeUtils.path.toString()+","+secTag.getId());
-                            tag1.setPathName(nodeUtils.pathName.toString()+","+secTag.getName());
+                            tag1.setPath(nodeUtils.path.toString() + "," + secTag.getId());
+                            tag1.setPathName(nodeUtils.pathName.toString() + "," + secTag.getName());
                             if (tagMapper.updateById(tag1) == 0) {
                                 throw new CoolException("鏈嶅姟鍣ㄥ唴閮ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
                             }
                         }
                     }
-
-
 
 
                 }
@@ -723,6 +781,7 @@
             }
         });
     }
+
     @Transactional
     @Override
     public void orderDelete(String orderNo) {
@@ -730,7 +789,7 @@
         if (order == null) {
             throw new CoolException("鏈煡璇㈠埌瀵瑰簲璁㈠崟淇℃伅");
         }
-        if (order.getSettle() != 1){
+        if (order.getSettle() != 1) {
             throw new CoolException("璇ヨ鍗曞凡鏈夊搴斾换鍔★紝绂佹鍒犻櫎");
         }
         List<OrderDetl> OrderDetl = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo));
@@ -739,4 +798,126 @@
         }
         orderService.delete(new EntityWrapper<Order>().eq("order_no", orderNo));
     }
+
+    /**
+     * 鍏�/鍑哄簱閫氱煡鍗曚笅鍙�
+     *
+     * @param param
+     */
+    @Override
+    @Transactional
+    public void orderCreate(OpenOrderParam param) {
+        Order order = orderService.selectByNo(param.getOrderNo());
+        if (!Cools.isEmpty(order)) {
+            throw new CoolException(param.getOrderNo() + "璁㈠崟宸插瓨鍦紝璇峰嬁閲嶅鍒涘缓");
+        }
+        Date now = new Date();
+        order = new Order(
+                String.valueOf(snowflakeIdWorker.nextId()), // 缂栧彿[闈炵┖]
+                param.getOrderNo(), // 璁㈠崟缂栫爜[闈炵┖]
+                DateUtils.convert(now), //鍗曟嵁鏃ユ湡
+                WKType.query(param.getWkType()).wkType, //鍗曟嵁绫诲瀷
+                null, //椤圭洰缂栧彿
+                null, //椤圭洰鍚嶇О 瀹㈡埛PO鍙�
+                null, //璋冩嫧椤圭洰缂栧彿
+                null, //鍒濆绁ㄦ嵁鍙�
+                null, //绁ㄦ嵁鍙�
+                null, //瀹㈡埛缂栧彿
+                null, //瀹㈡埛
+                param.getOrderInternalCode(), //鍗曟嵁鍐呯爜
+                null, //鎿嶄綔浜哄憳
+                null, //鍚堣閲戦
+                null, //浼樻儬鐜�
+                null, //浼樻儬閲戦
+                null, //閿�鍞垨閲囪喘璐圭敤鍚堣
+                null, //瀹炰粯閲戦
+                null, //浠樻绫诲瀷 1: 鐜伴噾  2: 璁拌处
+                null, //涓氬姟鍛�
+                null, //缁撶畻澶╂暟
+                null, //閭垂鏀粯绫诲瀷 1: 鍦ㄧ嚎鏀粯  2: 璐у埌浠樻
+                null, //閭垂
+                param.getBusinessTime(), //涓氬姟鏃ユ湡
+                param.getCreateTime(), //鍒涘缓鏃ユ湡
+                null, //鐗╂祦鍚嶇О
+                null, //鐗╂祦鍗曞彿
+                1L, //璁㈠崟鐘舵��
+                1, //鐘舵�� 1: 姝e父  0: 绂佺敤
+                9527L, //娣诲姞浜哄憳
+                now, //娣诲姞鏃堕棿
+                9527L, //淇敼浜哄憳
+                now, //淇敼鏃堕棿
+                param.getStationId(), //鍏�/鍑哄簱鎺ラ┏绔欑偣
+                param.getOperateType(), // 鎿嶄綔绫诲瀷 1.鏂板 2.淇敼 3.鍙栨秷
+                param.getOrderType() // 璁㈠崟绫诲瀷 1 鍑哄簱鍗� 2 鍏ュ簱鍗� 3 璋冩嫧鍗�
+        );
+        if (!orderService.insert(order)) {
+            throw new CoolException("淇濆瓨璁㈠崟涓绘。澶辫触,璇疯仈绯荤鐞嗗憳锛�" + order);
+        }
+        List<OpenOrderParam.OrderItem> list = new ArrayList<>();
+        List<OpenOrderParam.OrderItem> orderItems = param.getOrderItems();
+        for (OpenOrderParam.OrderItem item : orderItems) {
+            OpenOrderParam.OrderItem orderItem = new OpenOrderParam.OrderItem(
+                    item.getLineId(),
+                    item.getMatNr(),
+                    item.getMakTx(),
+                    item.getAnfme(),
+                    item.getSpec(),
+                    item.getModel(),
+                    item.getUnit(),
+                    item.getBatch(),
+                    item.getPalletId(),
+                    item.getPlanNo(),
+                    item.getTargetWareHouseId(),
+                    item.getSourceWareHouseId()
+            );
+            if (OpenOrderParam.OrderItem.hasLineNumber(list, orderItem)) {
+                OpenOrderParam.OrderItem oi = OpenOrderParam.OrderItem.findLineNumber(
+                        list,
+                        item.getLineId(),
+                        item.getMatNr(),
+                        item.getMakTx(),
+                        item.getAnfme(),
+                        item.getSpec(),
+                        item.getModel(),
+                        item.getUnit(),
+                        item.getBatch(),
+                        item.getPalletId(),
+                        item.getPlanNo(),
+                        item.getTargetWareHouseId(),
+                        item.getSourceWareHouseId()
+                );
+                assert oi != null;
+                oi.setAnfme(oi.getAnfme() + orderItem.getAnfme());
+            } else {
+                list.add(orderItem);
+            }
+        }
+        for (OpenOrderParam.OrderItem orderItem : list) {
+            Mat mat = matService.selectByMatnr(orderItem.getMatNr());
+            if (Cools.isEmpty(mat)) {
+                throw new CoolException("璁㈠崟鏄庣粏涓殑鍟嗗搧缂栧彿涓嶅瓨鍦細" + orderItem.getMatNr());
+            }
+            OrderDetl orderDetl = new OrderDetl();
+            orderDetl.sync(mat);
+            orderDetl.setOrderNo(order.getOrderNo()); // 璁㈠崟缂栧彿
+            orderDetl.setOrderId(order.getId()); // 璁㈠崟鍐呯爜
+            orderDetl.setStandby1(order.getTel()); // 琛屽唴鐮� 鍞竴鏍囪瘑
+            orderDetl.setAnfme(orderItem.getAnfme()); // 璁㈠崟鏁伴噺
+            orderDetl.setBarcode(orderItem.getBatch()); // 鎵规
+            orderDetl.setStandby2(orderItem.getPalletId()); // 鎵樼洏鐮�
+            orderDetl.setStandby3(orderItem.getPlanNo()); // 璁″垝璺熻釜鍙�
+            orderDetl.setBoxType1(orderItem.getSourceWareHouseId()); // 寤鸿鍏ュ簱浠撳簱
+            orderDetl.setBoxType2(orderItem.getTargetWareHouseId()); // 寤鸿鍑哄簱浠撳簱
+            orderDetl.setCreateBy(9527L);
+            orderDetl.setCreateTime(now);
+            orderDetl.setUpdateBy(9527L);
+            orderDetl.setUpdateTime(now);
+            orderDetl.setStatus(1);
+            orderDetl.setQty(0.0D);
+//            orderDetl.setPakinPakoutStatus(1);
+            if (!orderDetlService.insert(orderDetl)) {
+                throw new CoolException("淇濆瓨璁㈠崟鏄庣粏澶辫触,璇疯仈绯荤鐞嗗憳锛�" + orderDetl);
+            }
+        }
+    }
 }

--
Gitblit v1.9.1