From 63817fb8bd1933714c4a51d552f15b6e4342c976 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期五, 29 十二月 2023 09:14:51 +0800
Subject: [PATCH] #

---
 src/main/resources/mapper/OrderDetlMapper.xml               |    2 
 src/main/java/com/zy/asrs/entity/OrderDetl.java             |   14 +++
 src/main/webapp/static/js/order/order.js                    |    3 
 src/main/java/com/zy/asrs/entity/OrderDetlLog.java          |   14 +++
 src/main/java/com/zy/common/model/DetlDto.java              |   70 +++++++++++++++++
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java |   86 +++++++++++++++++----
 6 files changed, 170 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java
index bb630fc..92345a0 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -306,6 +306,20 @@
     private String memo;
 
     /**
+     * 婧愪粨搴�
+     */
+    @ApiModelProperty(value= "婧愪粨搴�")
+    @TableField("source_loc_name")
+    private String sourceLocName;
+
+    /**
+     * 鐩爣浠撳簱
+     */
+    @ApiModelProperty(value= "鐩爣浠撳簱")
+    @TableField("target_loc_name")
+    private String targetLocName;
+
+    /**
      * 鎷ユ湁鑰�
      */
     @ApiModelProperty(value= "鎷ユ湁鑰� 1: 鏉板厠   ")
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetlLog.java b/src/main/java/com/zy/asrs/entity/OrderDetlLog.java
index 582b527..be3e8f3 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetlLog.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetlLog.java
@@ -300,6 +300,20 @@
     private Integer owner;
 
     /**
+     * 婧愪粨搴�
+     */
+    @ApiModelProperty(value= "婧愪粨搴�")
+    @TableField("source_loc_name")
+    private String sourceLocName;
+
+    /**
+     * 鐩爣浠撳簱
+     */
+    @ApiModelProperty(value= "鐩爣浠撳簱")
+    @TableField("target_loc_name")
+    private String targetLocName;
+
+    /**
      * 璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌�
      */
     @ApiModelProperty(value= "璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌�")
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 f06bbaa..ed50a08 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -18,6 +18,7 @@
 import com.zy.asrs.utils.MatUtils;
 import com.zy.common.model.DetlDto;
 import com.zy.common.utils.NodeUtils;
+import com.zy.erp.kingdee.enums.KingDeeUtilType;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -133,14 +134,26 @@
         for (DetlDto detail : orderDetails) {
             DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(),detail.getOwnerName(),detail.getPayment());
             dto.setBeBatch(detail.getBeBatch());
-            if (DetlDto.has(list, dto)) {
-                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
-                assert detlDto != null;
-                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
-            } else {
-                list.add(dto);
+            KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
+            if (kingDeeUtilType.entryId==1){
+                if (DetlDto.has2(list, dto)) {
+                    DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),detail.getOwnerName(),detail.getBeBatch());
+                    assert detlDto != null;
+                    detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
+                } else {
+                    list.add(dto);
+                }
+                dto.setWeight(detail.getWeight());
+            }else {
+                if (DetlDto.has1(list, dto)) {
+                    DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),detail.getOwnerName());
+                    assert detlDto != null;
+                    detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
+                } else {
+                    list.add(dto);
+                }
+                dto.setWeight(detail.getWeight());
             }
-            dto.setWeight(detail.getWeight());
         }
         for (DetlDto detlDto : list) {
             Mat mat = matService.selectByMatnr(detlDto.getMatnr());
@@ -168,7 +181,7 @@
             if (Cools.isEmpty(locOwner)){
                 throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
             }else {
-                orderDetl.setOwner(locOwner.getId().intValue());
+                orderDetl.setOwner(locOwner.getId());
             }
             orderDetl.setPayment(detlDto.getPayment());
             orderDetl.setStatus(1);
@@ -185,6 +198,20 @@
     @Transactional
     public void pakoutOrderCreate(OpenOrderPakoutParam param) {
         Order order = orderService.selectByNo(param.getOrderNo());
+
+        for (DetlDto detlDto : param.getOrderDetails()){
+            if (Cools.isEmpty(detlDto) || Cools.isEmpty(detlDto.getOwnerName(),detlDto.getPayment())){
+                throw new CoolException(param.getOrderNo() + "缂哄皯璐т富鎴栬揣鐗╁舰鎬�");
+            }else {
+                LocOwner locOwner = locOwnerService.selectOne(new EntityWrapper<LocOwner>().eq("owner", detlDto.getOwnerName()));
+                if (Cools.isEmpty(locOwner)){
+                    LocOwner locOwner1 = new LocOwner();
+                    locOwner1.setOwner(detlDto.getOwnerName());
+                    locOwnerService.insert(locOwner1);
+                }
+            }
+        }
+
         // 濡傛灉鍗曟嵁涓嶅瓨鍦ㄥ垯娣诲姞锛涘鏋滃崟鎹瓨鍦紝浣滀笟涓棤娉曚慨鏀癸紝鍙嶄箣鍒欎慨鏀瑰崟鎹�
         if (!Cools.isEmpty(order)) {
             if (order.getSettle() > 1L) {
@@ -238,16 +265,28 @@
         List<DetlDto> list = new ArrayList<>();
         List<DetlDto> orderDetails = param.getOrderDetails();
         for (DetlDto detail : orderDetails) {
-            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme());
+            DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(),detail.getOwnerName(),detail.getPayment());
             dto.setBeBatch(detail.getBeBatch());
-            if (DetlDto.has(list, dto)) {
-                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
-                assert detlDto != null;
-                detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
-            } else {
-                list.add(dto);
+            KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName());
+            if (kingDeeUtilType.entryId==1){
+                if (DetlDto.has2(list, dto)) {
+                    DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),detail.getOwnerName(),detail.getBeBatch());
+                    assert detlDto != null;
+                    detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
+                } else {
+                    list.add(dto);
+                }
+                dto.setWeight(detail.getWeight());
+            }else {
+                if (DetlDto.has1(list, dto)) {
+                    DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),detail.getOwnerName());
+                    assert detlDto != null;
+                    detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
+                } else {
+                    list.add(dto);
+                }
+                dto.setWeight(detail.getWeight());
             }
-            dto.setWeight(detail.getWeight());
         }
         for (DetlDto detlDto : list) {
             Mat mat = matService.selectByMatnr(detlDto.getMatnr());
@@ -266,8 +305,15 @@
             orderDetl.setUpdateTime(now);
             orderDetl.setStatus(1);
             orderDetl.setQty(0.0D);
+            orderDetl.setOwner(detlDto.getOwner());
             orderDetl.setBeBatch(detlDto.getBeBatch());
             orderDetl.setWeight(detlDto.getWeight());
+            LocOwner locOwner = locOwnerService.selectOne(new EntityWrapper<LocOwner>().eq("owner", detlDto.getOwnerName()));
+            if (Cools.isEmpty(locOwner)){
+                throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+            }else {
+                orderDetl.setOwner(locOwner.getId());
+            }
             if (!orderDetlService.insert(orderDetl)) {
                 throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
             }
@@ -342,8 +388,10 @@
         for (DetlDto detail : orderDetails) {
             DetlDto dto = new DetlDto(detail.getMatnr(), detail.getBatch(), detail.getAnfme(),detail.getOwnerName(),detail.getPayment());
             dto.setBeBatch(detail.getBeBatch());
-            if (DetlDto.has(list, dto)) {
-                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch());
+            dto.setSourceLocName(detail.getSourceLocName());
+            dto.setTargetLocName(detail.getTargetLocName());
+            if (DetlDto.has3(list, dto)) {
+                DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch(),dto.getOwnerName(),dto.getSourceLocName(),dto.getTargetLocName());
                 assert detlDto != null;
                 detlDto.setAnfme(detlDto.getAnfme() + detail.getAnfme());
             } else {
@@ -384,6 +432,8 @@
             orderDetl.setQty(0.0D);
             orderDetl.setBeBatch(detlDto.getBeBatch());
             orderDetl.setWeight(detlDto.getWeight());
+            orderDetl.setSourceLocName(detlDto.getSourceLocName());
+            orderDetl.setTargetLocName(detlDto.getTargetLocName());
             if (!orderDetlService.insert(orderDetl)) {
                 throw new CoolException("鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
             }
diff --git a/src/main/java/com/zy/common/model/DetlDto.java b/src/main/java/com/zy/common/model/DetlDto.java
index 4915203..3250b8f 100644
--- a/src/main/java/com/zy/common/model/DetlDto.java
+++ b/src/main/java/com/zy/common/model/DetlDto.java
@@ -119,12 +119,80 @@
         return false;
     }
 
+    public static boolean has1(List<DetlDto> detlDtos, DetlDto detlDto) {
+        for (DetlDto dto : detlDtos) {
+            if (dto.getMatnr().equals(detlDto.getMatnr()) && Cools.eq(dto.getBatch(), detlDto.getBatch()) && Cools.eq(dto.getOwnerName(), detlDto.getOwnerName())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public static boolean has2(List<DetlDto> detlDtos, DetlDto detlDto) {
+        for (DetlDto dto : detlDtos) {
+            if (dto.getMatnr().equals(detlDto.getMatnr()) && Cools.eq(dto.getBatch(), detlDto.getBatch())
+                    && Cools.eq(dto.getOwnerName(), detlDto.getOwnerName()) && dto.getBeBatch()==detlDto.getBeBatch()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public static boolean has3(List<DetlDto> detlDtos, DetlDto detlDto) {
+        for (DetlDto dto : detlDtos) {
+            if (dto.getMatnr().equals(detlDto.getMatnr()) && Cools.eq(dto.getBatch(), detlDto.getBatch()) && Cools.eq(dto.getOwnerName(), detlDto.getOwnerName())
+                    && Cools.eq(dto.getSourceLocName(), detlDto.getSourceLocName()) && Cools.eq(dto.getTargetLocName(), detlDto.getTargetLocName())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     public static DetlDto find(List<DetlDto> detlDtos, String matnr, String batch) {
         if (Cools.isEmpty(matnr)) {
             return null;
         }
         for (DetlDto detlDto : detlDtos) {
-            if (matnr.equals(detlDto.getMatnr()) && Cools.eq(batch, detlDto.getBatch())) {
+            if (matnr.equals(detlDto.getMatnr()) && Cools.eq(batch, detlDto.getBatch()) ) {
+                return detlDto;
+            }
+        }
+        return null;
+    }
+
+    public static DetlDto find(List<DetlDto> detlDtos, String matnr, String batch,String ownerName) {
+        if (Cools.isEmpty(matnr)) {
+            return null;
+        }
+        for (DetlDto detlDto : detlDtos) {
+            if (matnr.equals(detlDto.getMatnr()) && Cools.eq(batch, detlDto.getBatch()) && Cools.eq(ownerName, detlDto.getOwnerName())) {
+                return detlDto;
+            }
+        }
+        return null;
+    }
+
+    public static DetlDto find(List<DetlDto> detlDtos, String matnr, String batch,String ownerName,int beBatch) {
+        if (Cools.isEmpty(matnr)) {
+            return null;
+        }
+        for (DetlDto detlDto : detlDtos) {
+            if (matnr.equals(detlDto.getMatnr()) && Cools.eq(batch, detlDto.getBatch())
+                    && Cools.eq(ownerName, detlDto.getOwnerName()) && beBatch== detlDto.getBeBatch()) {
+                return detlDto;
+            }
+        }
+        return null;
+    }
+
+    public static DetlDto find(List<DetlDto> detlDtos, String matnr, String batch,String ownerName,String sourceLocName,String targetLocName) {
+        if (Cools.isEmpty(matnr)) {
+            return null;
+        }
+        for (DetlDto detlDto : detlDtos) {
+            if (matnr.equals(detlDto.getMatnr()) && Cools.eq(batch, detlDto.getBatch())
+                    && Cools.eq(ownerName, detlDto.getOwnerName()) && Cools.eq(sourceLocName, detlDto.getSourceLocName())
+                    && Cools.eq(targetLocName, detlDto.getTargetLocName())) {
                 return detlDto;
             }
         }
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index c2043b0..e2c662b 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -48,6 +48,8 @@
         <result column="owner" property="owner" />
         <result column="payment" property="payment" />
         <result column="uuid" property="uuid" />
+        <result column="source_loc_name" property="sourceLocName" />
+        <result column="target_loc_name" property="targetLocName" />
 
     </resultMap>
 
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index 90c1539..9900430 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -198,6 +198,9 @@
                             // {field: 'batch', title: '鎵瑰彿'},
                             {field: 'anfme', title: '鏁伴噺'},
                             {field: 'batch', title: '鎵规'},
+                            {field: 'beBatch', title: '琛屽彿'},
+                            {field: 'sourceLocName', title: '婧愪粨搴�'},
+                            {field: 'targetLocName', title: '鐩爣浠撳簱'},
                             {field: 'workQty', title: '浣滀笟鏁伴噺'},
                             {field: 'qty', title: '瀹屾垚鏁伴噺', style: 'font-weight: bold'},
                             // {field: 'unit', title: '鍗曚綅'},

--
Gitblit v1.9.1