From 57610f520d214c9b5797191f7dbc68c121c7f0c1 Mon Sep 17 00:00:00 2001
From: zwl <1051256694@qq.com>
Date: 星期二, 14 四月 2026 19:34:52 +0800
Subject: [PATCH] mat导入问题 移库数据丢失修复

---
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java |  138 +++++++++++++++++++++++++++++++++-------------
 1 files changed, 99 insertions(+), 39 deletions(-)

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 bb1db08..cf50759 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -97,11 +97,6 @@
                             return FAIL.setMsg("绌烘澘鍏ュ簱 ===>> 淇敼搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
                         }
                     }
-
-
-
-
-
                     break;
                 // 鍏ㄦ澘鍏ュ簱
                 case 1:
@@ -132,11 +127,7 @@
                             locDetl = new LocDetl();
                             locDetl.sync(wrkDetl);
                             locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
-                            if (!Objects.isNull(wrkMast.getWrkCode())) {
-                                locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
-                            } else {
-                                locDetl.setAnfme(wrkDetl.getRealQty());
-                            }
+                            locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
                             locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
                             locDetl.setModiTime(now);
                             locDetl.setAppeTime(now);
@@ -148,8 +139,34 @@
                         }
 
                         //鍒ゆ柇鍖归厤缂栫爜涓嶄负绌猴紝涓斾换鍔$紪鐮佸寘鍚�-2锛岀‘璁や负鏈変笂缁勪换鍔�
-                        if (!Objects.isNull(wrkMast.getWrkCode()) && wrkMast.getWrkCode().contains("-2")) {
-                            //涓嶉渶瑕佹洿鏂板崟鎹俊鎭紙瀛愪换鍔℃棤鍗曟嵁
+                        if (!Objects.isNull(wrkMast.getWrkCode())) {
+                            //TODO 鑾峰彇101鍑哄簱 涓讳换鍔℃。鎬绘暟閲� - 瀛愪换鍔℃。鐨勫疄闄呮暟閲� = 褰撳墠浣滀笟瀹屾垚鏁伴噺
+                            WrkDetl selectOne = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+
+                            Double v = Math.round((selectOne.getStockQty() - selectOne.getAnfme()) * 10000) / 10000.0;
+
+                            OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), "", "", "", "",
+                                    null, null, null);
+
+                            if (!Objects.isNull(orderDetlPakout)) {
+                                orderDetlPakout.setQty(v);
+                                if (!orderDetlPakoutService.updateById(orderDetlPakout)) {
+                                    throw new CoolException("鍗曟嵁瀹屾垚鏁伴噺淇敼澶辫触锛侊紒");
+                                }
+                            }
+                            int indexOf = wrkMast.getWrkCode().indexOf("-1");
+                            if (indexOf != -1) {
+                                String wrkNo = wrkMast.getWrkCode().substring(0, indexOf);
+                                WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", wrkNo));
+                                if (Objects.isNull(mast)) {
+
+                                    throw new CoolException("鏁版嵁閿欒锛屼富浠诲姟妗d笉瀛樺湪鎴栧凡鍒犻櫎锛侊紒");
+                                }
+                                mast.setWrkCode(null);
+                                if (!wrkMastService.updateById(mast)) {
+                                    throw new CoolException("鍘熶换鍔℃。鍒犻櫎澶辫触锛侊紒");
+                                }
+                            }
                         } else {
                             //姝e父鍗曟嵁鎵嶅瓨瀛樺叆搴撳崟锛屼綔鍏ュ簱鍗曟嵁淇℃伅鏇存柊
                             // 鏇存柊璁㈠崟瀹屾垚鏁伴噺
@@ -452,16 +469,27 @@
         }
 
         /***/
-        if (Objects.isNull(wrkMast.getWrkCode())) {
-            LocMast lcmst = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
-            lcmst.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
-            if (!locMastService.updateById(lcmst)) {
-                throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+        if (wrkMast.getIoType() !=2){
+            if (!Objects.isNull(wrkMast.getWrkCode())) {
+                LocMast lcmst = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo()));
+                lcmst.setLocSts(LocStsType.LOC_STS_TYPE_O.type);
+                if (!locMastService.updateById(lcmst)) {
+                    throw new CoolException("搴撲綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+                }
+
+                LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", wrkMast.getSourceLocNo()));
+                if (Objects.isNull(bLocNo)) {
+                    throw new CoolException("宸ヤ綅涓嶅瓨鍦� 锛侊紒");
+                }
+                bLocNo.setLocType(LocStsType.LOC_STS_TYPE_O.type);
+                if (!locAroundBindService.updateById(bLocNo)) {
+                    throw new CoolException("宸ヤ綅鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+                }
+
+                locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
             }
-            
-
-
         }
+
 
         return SUCCESS;
     }
@@ -469,31 +497,65 @@
 
     public void movLoc(WrkMast wrkMast) {
         LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+        if (Objects.isNull(locMast)) {
+            throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦紒锛�");
+        }
         Date now = new Date();
+        Long operatorUser = wrkMast.getModiUser();
+        if (Objects.isNull(operatorUser)) {
+            operatorUser = wrkMast.getAppeUser();
+        }
         // 榛樿鐩爣搴撲綅鏄┖鏉�
         String locSts = "D";
         // 搴撲綅绉昏浆鍒ゆ柇鏄惁涓虹┖鏉跨Щ杞�
-        if (wrkMast.getEmptyMk().equals("N")) {
+        if ("N".equals(wrkMast.getEmptyMk())) {
             locSts = "F";
-            // 杞Щ搴撳瓨鏄庣粏鏁版嵁: 搴撳瓨鍙� 鐢卞伐浣滄。婧愬簱浣嶅彉涓虹洰鏍囧簱浣�
-            if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) {
-//                            exceptionHandle("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触锛沎婧愬簱浣�={0}],[鐩爣搴撲綅={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo());
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                log.info("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏鏁版嵁澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+            List<LocDetl> sourceDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
+            for (LocDetl sourceDetl : sourceDetls) {
+                LocDetl targetDetl = locDetlService.selectItem(wrkMast.getLocNo(), sourceDetl.getMatnr(), sourceDetl.getBatch(), sourceDetl.getBrand(),
+                        sourceDetl.getStandby1(), sourceDetl.getStandby2(), sourceDetl.getStandby3(), sourceDetl.getBoxType1(),
+                        sourceDetl.getBoxType2(), sourceDetl.getBoxType3());
+                if (null != targetDetl && !Objects.equals(targetDetl.getId(), sourceDetl.getId())) {
+                    Double targetQty = targetDetl.getAnfme() == null ? 0D : targetDetl.getAnfme();
+                    Double sourceQty = sourceDetl.getAnfme() == null ? 0D : sourceDetl.getAnfme();
+                    targetDetl.setAnfme(Math.round((targetQty + sourceQty) * 10000) / 10000.0);
+                    targetDetl.setAreaId(locMast.getAreaId());
+                    targetDetl.setAreaName(locMast.getAreaName());
+                    targetDetl.setModiTime(now);
+                    if (!Objects.isNull(operatorUser)) {
+                        targetDetl.setModiUser(operatorUser);
+                    }
+                    if (!locDetlService.updateById(targetDetl)) {
+                        throw new CoolException("搴撲綅绉昏浆 ===>> 鍚堝苟搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[sourceLoc=" + wrkMast.getSourceLocNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                    }
+                    if (!locDetlService.deleteById(sourceDetl.getId())) {
+                        throw new CoolException("搴撲綅绉昏浆 ===>> 鍒犻櫎婧愬簱瀛樻槑缁嗗け璐�; [workNo=" + wrkMast.getWrkNo() + "],[sourceLoc=" + wrkMast.getSourceLocNo() + "]");
+                    }
+                } else {
+                    sourceDetl.setLocNo(wrkMast.getLocNo());
+                    sourceDetl.setAreaId(locMast.getAreaId());
+                    sourceDetl.setAreaName(locMast.getAreaName());
+                    sourceDetl.setModiTime(now);
+                    if (!Objects.isNull(operatorUser)) {
+                        sourceDetl.setModiUser(operatorUser);
+                    }
+                    if (!locDetlService.updateById(sourceDetl)) {
+                        throw new CoolException("搴撲綅绉昏浆 ===>> 杞Щ搴撳瓨鏄庣粏澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[sourceLoc=" + wrkMast.getSourceLocNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+                    }
+                }
             }
         }
         // 淇敼婧愬簱浣嶇姸鎬� ==> O
         LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
-        if (null != sourceLoc) {
-            sourceLoc.setBarcode("");
-            sourceLoc.setLocSts("O");
-            sourceLoc.setModiTime(now);
-            sourceLoc.setIoTime(now);
-            if (!locMastService.updateById(sourceLoc)) {
-//                            exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                log.info("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
-            }
+        if (null == sourceLoc) {
+            throw new CoolException("婧愬簱浣嶄笉瀛樺湪锛侊紒");
+        }
+        sourceLoc.setBarcode("");
+        sourceLoc.setLocSts("O");
+        sourceLoc.setModiTime(now);
+        sourceLoc.setIoTime(now);
+        if (!locMastService.updateById(sourceLoc)) {
+            throw new CoolException("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
         }
         // 淇敼鐩爣搴撲綅鐘舵�� ==> .locSts
         locMast.setLocSts(locSts);
@@ -501,9 +563,7 @@
         locMast.setIoTime(now);
         locMast.setModiTime(now);
         if (!locMastService.updateById(locMast)) {
-//                        exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-           log.info("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
+            throw new CoolException("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]");
         }
     }
 

--
Gitblit v1.9.1