From f3603d9f0eb85d2a42edbcadd0950889af2c24d2 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期一, 19 二月 2024 18:14:05 +0800
Subject: [PATCH] #库存迁移逻辑修改,从工作明细档进行处理

---
 src/main/java/com/zy/asrs/entity/WrkDetlLog.java            |   10 ++
 src/main/resources/mapper/WrkDetlMapper.xml                 |    1 
 src/main/java/com/zy/common/model/OutLocDto.java            |   65 +++++++++++++++++++++
 src/main/resources/mapper/WrkDetlLogMapper.xml              |    1 
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java |   44 ++++++++++----
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |   10 ++
 src/main/java/com/zy/asrs/entity/WrkDetl.java               |   10 ++
 src/main/java/com/zy/common/web/WcsController.java          |   28 ++++----
 src/main/webapp/static/js/common.js                         |    3 
 9 files changed, 138 insertions(+), 34 deletions(-)

diff --git a/src/main/java/com/zy/asrs/entity/WrkDetl.java b/src/main/java/com/zy/asrs/entity/WrkDetl.java
index ae755c0..826af34 100644
--- a/src/main/java/com/zy/asrs/entity/WrkDetl.java
+++ b/src/main/java/com/zy/asrs/entity/WrkDetl.java
@@ -35,12 +35,18 @@
     private Date ioTime;
 
     /**
-     * 鏁伴噺
+     * 浣滀笟鏁伴噺
      */
-    @ApiModelProperty(value= "鏁伴噺")
+    @ApiModelProperty(value= "浣滀笟鏁伴噺")
     private Double anfme;
 
     /**
+     * 鎬诲簱瀛�
+     */
+    @ApiModelProperty(value= "鎬诲簱瀛�")
+    private Double stock;
+
+    /**
      * 鎵樼洏鏉$爜
      */
     @ApiModelProperty(value= "鎵樼洏鏉$爜")
diff --git a/src/main/java/com/zy/asrs/entity/WrkDetlLog.java b/src/main/java/com/zy/asrs/entity/WrkDetlLog.java
index c283e3d..0df08e6 100644
--- a/src/main/java/com/zy/asrs/entity/WrkDetlLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkDetlLog.java
@@ -34,12 +34,18 @@
     private Date ioTime;
 
     /**
-     * 鏁伴噺
+     * 浣滀笟鏁伴噺
      */
-    @ApiModelProperty(value= "鏁伴噺")
+    @ApiModelProperty(value= "浣滀笟鏁伴噺")
     private Double anfme;
 
     /**
+     * 鎬诲簱瀛�
+     */
+    @ApiModelProperty(value= "鎬诲簱瀛�")
+    private Double stock;
+
+    /**
      * 鎵樼洏鏉$爜
      */
     @ApiModelProperty(value= "鎵樼洏鏉$爜")
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 3680f51..0a5347a 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -284,6 +284,11 @@
             }
         }
 
+        for (OutLocDto dto : dtos) {
+            dto.sortLocDetlDtos();
+        }
+
+
         ArrayList<String> outerLocs = new ArrayList<>();
         //妫�娴嬫槸鍚︿负娴呭簱浣�
         boolean sign=false;
@@ -423,14 +428,15 @@
             }
             // 鐢熸垚宸ヤ綔妗f槑缁�
             for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
-                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+                if (detlDto.getCount()==null) {continue;}
                 WrkDetl wrkDetl = new WrkDetl();
                 wrkDetl.sync(detlDto.getLocDetl());
                 wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
                 wrkDetl.setWrkNo(workNo);
                 wrkDetl.setIoTime(now);
                 Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
-                wrkDetl.setAnfme(anfme); // 鏁伴噺
+                wrkDetl.setAnfme(anfme); // 浣滀笟鏁伴噺
+                wrkDetl.setStock(detlDto.getLocDetl().getAnfme());
                 wrkDetl.setAppeTime(now);
                 wrkDetl.setAppeUser(userId);
                 wrkDetl.setModiTime(now);
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 6665933..84350bd 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -138,20 +138,37 @@
                     }
                     log.info("宸ヤ綔鍙凤細" + wrkMast.getWrkNo() + "锛屾墭鐩樼爜锛�" + wrkMast.getBarcode() + "锛屽伐浣滄。鏄庣粏鍒楄〃锛�" + JSON.toJSONString(wrkDetls53));
                     for (WrkDetl wrkDetl : wrkDetls53) {
-
-                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getSuppCode());
-                        if (null != locDetl) {
-                            log.info("宸ヤ綔鍙凤細" + wrkMast.getWrkNo() + "锛屾墭鐩樼爜锛�" + wrkMast.getBarcode() + "锛屽伐浣滄。鏄庣粏锛�" + JSON.toJSONString(wrkDetl) + "锛屽簱瀛樻槑缁嗭細" + JSON.toJSONString(locDetl));
-                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(),
-                                    locMast.getLocNo(),
-                                    wrkDetl.getMatnr(),
-                                    wrkDetl.getBatch(),
-                                    wrkDetl.getSuppCode(),
-                                    wrkDetl.getThreeCode(),
-                                    wrkDetl.getDeadTime())) {
-                                exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                            }
+                        double anfme = wrkDetl.getStock() - wrkDetl.getAnfme();
+                        if (anfme <= 0) {//搴撳瓨 - 浣滀笟鏁伴噺 <= 0 娓呮帀璇ユ暟鎹�
+                            continue;
                         }
+
+                        LocDetl locDetl = new LocDetl();
+                        locDetl.sync(wrkDetl);
+                        locDetl.setLocNo(wrkMast.getLocNo());
+                        locDetl.setAnfme(anfme);
+                        locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
+                        locDetl.setAppeTime(now);
+                        locDetl.setAppeUser(9527L);
+                        locDetl.setModiTime(now);
+                        locDetl.setModiUser(9527L);
+                        if (!locDetlService.insert(locDetl)) {
+                            exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+                        }
+
+//                        LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(),wrkDetl.getSuppCode());
+//                        if (null != locDetl) {
+//                            log.info("宸ヤ綔鍙凤細" + wrkMast.getWrkNo() + "锛屾墭鐩樼爜锛�" + wrkMast.getBarcode() + "锛屽伐浣滄。鏄庣粏锛�" + JSON.toJSONString(wrkDetl) + "锛屽簱瀛樻槑缁嗭細" + JSON.toJSONString(locDetl));
+//                            if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(),
+//                                    locMast.getLocNo(),
+//                                    wrkDetl.getMatnr(),
+//                                    wrkDetl.getBatch(),
+//                                    wrkDetl.getSuppCode(),
+//                                    wrkDetl.getThreeCode(),
+//                                    wrkDetl.getDeadTime())) {
+//                                exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+//                            }
+//                        }
                     }
                     // 淇敼搴撲綅鐘舵�� Q ====>> F
                     if (locMast.getLocSts().equals("Q")) {
@@ -273,6 +290,7 @@
                         if (!locMastService.updateById(sourceLoc)) {
                             exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
                         }
+                        locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no",locMast.getLocNo()));
                     }
                     // 淇敼鐩爣搴撲綅鐘舵�� ==> .locSts
                     locMast.setLocSts(locSts);
diff --git a/src/main/java/com/zy/common/model/OutLocDto.java b/src/main/java/com/zy/common/model/OutLocDto.java
index e75f276..3388eb6 100644
--- a/src/main/java/com/zy/common/model/OutLocDto.java
+++ b/src/main/java/com/zy/common/model/OutLocDto.java
@@ -69,4 +69,69 @@
         return sameNumber == locDetls.size();
     }
 
+    public void sortLocDetlDtos() {
+        ArrayList<LocDetlDto> list = new ArrayList<>();
+        EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+        wrapper.eq("loc_no", locNo);
+        LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class);
+        List<LocDetl> locDetls = locDetlService.selectList(wrapper);
+        for (LocDetl locDetl : locDetls) {
+            boolean flag = true;
+            for (LocDetlDto locDetlDto : locDetlDtos) {
+                LocDetl detl = locDetlDto.getLocDetl();
+                if (!Cools.isEmpty(locDetl.getMatnr())) {
+                    if (!locDetl.getMatnr().equals(detl.getMatnr())) {
+                        continue;
+                    }
+                }
+                if (!Cools.isEmpty(locDetl.getBatch())) {
+                    if (!locDetl.getBatch().equals(detl.getBatch())) {
+                        continue;
+                    }
+                }
+                if (!Cools.isEmpty(locDetl.getSuppCode())) {
+                    if (!locDetl.getSuppCode().equals(detl.getSuppCode())) {
+                        continue;
+                    }
+                }
+                flag = false;
+                break;
+            }
+
+            if (flag) {
+                LocDetlDto dto = new LocDetlDto(locDetl, 0D);
+                list.add(dto);
+            }
+        }
+
+        locDetlDtos.addAll(list);
+//        ArrayList<String> matnr = new ArrayList<>();
+//        ArrayList<String> batch = new ArrayList<>();
+//        ArrayList<String> suppCode = new ArrayList<>();
+//        for (LocDetlDto locDetlDto : locDetlDtos) {
+//            LocDetl locDetl = locDetlDto.getLocDetl();
+//            if (!Cools.isEmpty(locDetl.getMatnr())) {
+//                matnr.add(locDetl.getMatnr());
+//            }
+//            if (!Cools.isEmpty(locDetl.getBatch())) {
+//                batch.add(locDetl.getBatch());
+//            }
+//            if (!Cools.isEmpty(locDetl.getSuppCode())) {
+//                suppCode.add(locDetl.getSuppCode());
+//            }
+//        }
+//
+//        EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+//        wrapper.eq("loc_no", locNo);
+//        wrapper.notIn("matnr", matnr);
+//        wrapper.notIn("batch", batch);
+//        wrapper.notIn("supp_code", suppCode);
+//        LocDetlService locDetlService = SpringUtils.getBean(LocDetlService.class);
+//        List<LocDetl> locDetls = locDetlService.selectList(wrapper);
+//        for (LocDetl locDetl : locDetls) {
+//            LocDetlDto dto = new LocDetlDto(locDetl, 0D);
+//            locDetlDtos.add(dto);
+//        }
+    }
+
 }
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 3855940..53add18 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -497,21 +497,21 @@
             throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
 
-        Date now = new Date();
-        for (LocDetl locDetl : locDetls) {
-            locDetl.setLocNo(dto.getLocNo());//淇敼鐩爣搴撲綅
-            locDetl.setAppeTime(now);
-            locDetl.setModiTime(now);
-            if (!locDetlService.insert(locDetl)) {
-                throw new CoolException("搴撳瓨鏄庣粏鏇存柊澶辫触");
-            }
-        }
+//        Date now = new Date();
+//        for (LocDetl locDetl : locDetls) {
+//            locDetl.setLocNo(dto.getLocNo());//淇敼鐩爣搴撲綅
+//            locDetl.setAppeTime(now);
+//            locDetl.setModiTime(now);
+//            if (!locDetlService.insert(locDetl)) {
+//                throw new CoolException("搴撳瓨鏄庣粏鏇存柊澶辫触");
+//            }
+//        }
 
-        //妫�鏌ョ洰鏍囧簱浣嶏紝搴撳瓨鏄庣粏鏄惁娣诲姞鎴愬姛
-        List<LocDetl> checkLocDetls = locDetlService.selectByLocNo(dto.getLocNo());
-        if (checkLocDetls.isEmpty()) {
-            throw new CoolException("搴撳瓨鏄庣粏杩佺Щ澶辫触");
-        }
+//        //妫�鏌ョ洰鏍囧簱浣嶏紝搴撳瓨鏄庣粏鏄惁娣诲姞鎴愬姛
+//        List<LocDetl> checkLocDetls = locDetlService.selectByLocNo(dto.getLocNo());
+//        if (checkLocDetls.isEmpty()) {
+//            throw new CoolException("搴撳瓨鏄庣粏杩佺Щ澶辫触");
+//        }
 
 //        //娓呯┖婧愬簱浣嶆暟鎹�
         LocMast locMast1 = locMastService.selectByLoc(wrkMast.getSourceLocNo());
diff --git a/src/main/resources/mapper/WrkDetlLogMapper.xml b/src/main/resources/mapper/WrkDetlLogMapper.xml
index a4a997e..57934bc 100644
--- a/src/main/resources/mapper/WrkDetlLogMapper.xml
+++ b/src/main/resources/mapper/WrkDetlLogMapper.xml
@@ -7,6 +7,7 @@
         <result column="wrk_no" property="wrkNo" />
         <result column="io_time" property="ioTime" />
         <result column="anfme" property="anfme" />
+        <result column="stock" property="stock" />
         <result column="zpallet" property="zpallet" />
         <result column="matnr" property="matnr" />
         <result column="maktx" property="maktx" />
diff --git a/src/main/resources/mapper/WrkDetlMapper.xml b/src/main/resources/mapper/WrkDetlMapper.xml
index a9a84f2..6012632 100644
--- a/src/main/resources/mapper/WrkDetlMapper.xml
+++ b/src/main/resources/mapper/WrkDetlMapper.xml
@@ -7,6 +7,7 @@
         <result column="wrk_no" property="wrkNo" />
         <result column="io_time" property="ioTime" />
         <result column="anfme" property="anfme" />
+        <result column="stock" property="stock" />
         <result column="zpallet" property="zpallet" />
         <result column="matnr" property="matnr" />
         <result column="maktx" property="maktx" />
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index cc817a0..a6ba1da 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -229,7 +229,8 @@
     ,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜',hide: true}
     ,{field: 'suppCode', align: 'center',title: '鏂欑鐮�', hide: false}
     ,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜'}
-    ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+    ,{field: 'anfme', align: 'center',title: '浣滀笟鏁伴噺'}
+    ,{field: 'stock', align: 'center',title: '鎬诲簱瀛�'}
     ,{field: 'batch', align: 'center',title: '搴忓垪鐮�', width: 300, sort:true, hide: true}
     ,{field: 'maktx', align: 'center',title: '瀛樿揣鍚嶇О'}
     ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', hide: false}

--
Gitblit v1.9.1