From 2a0f422815c0379e6d4bf795a2eac435da9b3df2 Mon Sep 17 00:00:00 2001
From: zhangc <zc@123>
Date: 星期三, 16 四月 2025 22:12:30 +0800
Subject: [PATCH] 1

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  414 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 276 insertions(+), 138 deletions(-)

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 11f75cf..203accb 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -1,6 +1,8 @@
 package com.zy.asrs.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.BaseRes;
@@ -82,6 +84,10 @@
     private DocTypeService docTypeService;
     @Autowired
     private AgvWaitPakinService agvWaitPakinService;
+    @Autowired
+    private AgvLocDetlService agvLocDetlService;
+    @Autowired
+    private FlowLogService flowLogService;
 
     @Override
     @Transactional
@@ -112,13 +118,13 @@
         wrkMast.setSourceStaNo(dto.getSourceStaNo());
         wrkMast.setStaNo(dto.getStaNo());
         wrkMast.setLocNo(dto.getLocNo());
-        wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setBarcode(param.getBarcode()); // 璐ф灦鐮�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
         wrkMast.setExitMk("N"); // 閫�鍑�
         wrkMast.setEmptyMk("N"); // 绌烘澘
         wrkMast.setLinkMis("N");
-        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 璐ф灦绫诲瀷
         wrkMast.setAppeUser(userId);
         wrkMast.setAppeTime(now);
         wrkMast.setModiUser(userId);
@@ -129,10 +135,9 @@
         // 鐢熸垚宸ヤ綔妗f槑缁�
         List<DetlDto> detlDtos = new ArrayList<>();
         param.getList().forEach(elem -> {
-            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq());
-            detlDto.setContainerCode(elem.getContainerCode());
+            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq(), elem.getContainerCode());
             if (DetlDto.has(detlDtos, detlDto)) {
-                DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode());
+                DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(), detlDto.getContainerCode());
                 assert detlDto1 != null;
                 detlDto1.setAnfme(detlDto1.getAnfme() + detlDto.getAnfme());
             } else {
@@ -144,20 +149,20 @@
         sourceStaNo.setWrkNo(workNo);
         sourceStaNo.setModiUser(userId);
         sourceStaNo.setModiTime(now);
-        if (!basDevpService.updateById(sourceStaNo)){
+        if (!basDevpService.updateById(sourceStaNo)) {
             throw new CoolException("鏇存柊婧愮珯澶辫触");
         }
         // 鏇存柊鐩爣搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(dto.getLocNo());
-        if (locMast.getLocSts().equals("O")){
+        if (locMast.getLocSts().equals("O")) {
             locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
             locMast.setModiUser(userId);
             locMast.setModiTime(now);
-            if (!locMastService.updateById(locMast)){
+            if (!locMastService.updateById(locMast)) {
                 throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
             }
         } else {
-            throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
         return dto.getLocNo();
     }
@@ -166,24 +171,24 @@
     @Transactional
     public void startupFullTakeStore(StockOutParam param, Long userId) {
         ArrayList<String> locNos = new ArrayList<>();
-        for (StockOutParam.LocDetl locDetl:param.getLocDetls()){
-            if (!locNos.contains(locDetl.getLocNo())){
+        for (StockOutParam.LocDetl locDetl : param.getLocDetls()) {
+            if (!locNos.contains(locDetl.getLocNo())) {
                 locNos.add(locDetl.getLocNo());
             }
         }
         //妫�娴嬫槸鍚︿负娴呭簱浣�
-        boolean sign=false;
+        boolean sign = false;
         String th = "";
-        for (String locNo:locNos){
-            if (sign){
+        for (String locNo : locNos) {
+            if (sign) {
                 break;
             }
 
             //妫�娴嬪嚭搴撶殑璐х墿涓槸鍚︽湁鐘舵�佷负绂佹鐨勮揣鐗┿��
             for (LocDetl locDetl : locDetlService.selectByLocNo(locNo)) {
                 if (locDetl.getStockFreeze() == 0) {
-                    th="搴撲綅鍙凤細"+locNo+" 鏈夌姝㈠嚭搴撶殑璐х墿锛�";
-                    throw new CoolException("鍑哄簱澶辫触锛�"+th);
+                    th = "搴撲綅鍙凤細" + locNo + " 鏈夌姝㈠嚭搴撶殑璐х墿锛�";
+                    throw new CoolException("鍑哄簱澶辫触锛�" + th);
                 }
 
                 Mat mat = matService.selectByMatnr(locDetl.getMatnr());
@@ -191,30 +196,30 @@
                     continue;
                 }
                 if (mat.getStatus() == 0) {
-                    th="搴撲綅鍙凤細"+locNo+" 鏈夌姝㈠嚭搴撶殑璐х墿锛�";
-                    throw new CoolException("鍑哄簱澶辫触锛�"+th);
+                    th = "搴撲綅鍙凤細" + locNo + " 鏈夌姝㈠嚭搴撶殑璐х墿锛�";
+                    throw new CoolException("鍑哄簱澶辫触锛�" + th);
                 }
             }
 
             List<String> groupOuterLoc = Utils.getGroupOuterLoc(locNo);
             if (!Cools.isEmpty(groupOuterLoc)) {
                 for (String outerLoc : groupOuterLoc) {
-                    if (locNos.contains(outerLoc)){
+                    if (locNos.contains(outerLoc)) {
                         continue;
                     }
                     LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", outerLoc));
                     if (locMast != null) {
-                        if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")){
-                            sign=true;
-                            th="搴撲綅鍙凤細"+locNo+" 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
+                        if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")) {
+                            sign = true;
+                            th = "搴撲綅鍙凤細" + locNo + " 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
                             break;
                         }
                     }
                 }
             }
         }
-        if (sign){
-            throw new CoolException("鍑哄簱澶辫触锛�"+th);
+        if (sign) {
+            throw new CoolException("鍑哄簱澶辫触锛�" + th);
         }
         // 鐩爣绔欑偣鐘舵�佹娴�
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
@@ -222,7 +227,7 @@
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
             if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
-                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), null);
+                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), paramLocDetl.getSuppCode());
                 if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
             }
         }
@@ -233,6 +238,7 @@
             throw new CoolException("搴撳瓨涓嶅瓨鍦�");
         }
     }
+
     /**
      * 閫氳繃搴撲綅鍙疯幏鍙� 鎺�
      */
@@ -242,6 +248,7 @@
         }
         throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
     }
+
     /**
      * 閫氳繃搴撲綅鍙疯幏鍙� 鍒�
      */
@@ -251,6 +258,7 @@
         }
         throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
     }
+
     /**
      * 閫氳繃搴撲綅鍙疯幏鍙� 灞�
      */
@@ -282,6 +290,69 @@
                 dtos.add(new OutLocDto(locNo, locDetlDto));
             }
         }
+
+        ArrayList<String> outerLocs = new ArrayList<>();
+        //妫�娴嬫槸鍚︿负娴呭簱浣�
+        boolean sign = false;
+        String th = "";
+        for (String locNo : locNos) {
+            if (sign) {
+                break;
+            }
+
+            List<String> groupOuterLoc = Utils.getGroupOuterLoc(locNo);
+            if (!Cools.isEmpty(groupOuterLoc)) {
+                for (String outerLoc : groupOuterLoc) {
+                    if (locNos.contains(outerLoc)) {
+                        continue;
+                    }
+                    LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", outerLoc));
+                    if (locMast != null) {
+                        if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")) {
+//                            sign = true;
+//                            th = "搴撲綅鍙凤細" + locNo + " 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
+//                            break;
+
+                            OutLocDto outLocDto = new OutLocDto();
+                            outLocDto.setLocNo(locMast.getLocNo());
+                            List<LocDetlDto> locDetlDtos1 = new ArrayList<>();
+                            for (LocDetl locDetl : locDetlService.selectByLocNo(locMast.getLocNo())) {
+                                LocDetlDto locDetlDto = new LocDetlDto();
+                                locDetlDto.setLocDetl(locDetl);
+                                locDetlDto.setCount(locDetl.getAnfme());
+                                locDetlDtos1.add(locDetlDto);
+                            }
+                            outLocDto.setLocDetlDtos(locDetlDtos1);
+                            if (!outerLocs.contains(locMast.getLocNo())) {
+                                dtos.add(outLocDto);
+                                outerLocs.add(locMast.getLocNo());
+                            }
+                        }
+                    }
+                }
+            }
+        }
+//        if (sign){
+//            throw new CoolException("鍑哄簱澶辫触锛�"+th);
+//        }
+
+        //**************325銆�331銆�333銆�339绔欑偣棰濆閫昏緫浠g爜**************
+        HashMap<String, Object> tmpMap = new HashMap<>();
+        if (staNo.getDevNo() == 325 || staNo.getDevNo() == 331 || staNo.getDevNo() == 333 || staNo.getDevNo() == 339) {
+            int[] data = {325, 331, 333, 339};
+            for (String locNo : locNos) {
+                List<String> groupOuterLoc = Utils.getGroupDeepLoc(locNo);
+                if (groupOuterLoc.isEmpty()) {
+                    continue;
+                }
+                int index = 0;
+                for (String loc : groupOuterLoc) {
+                    tmpMap.put(loc, data[index++]);
+                }
+            }
+        }
+        //**************325銆�331銆�333銆�339绔欑偣棰濆閫昏緫浠g爜**************
+
         Integer ioType = null;
         List<String> excludeLocNos = dtos.stream().map(OutLocDto::getLocNo).distinct().collect(Collectors.toList());
         // 鐢熸垚宸ヤ綔妗�
@@ -315,6 +386,13 @@
             if (stnNo == 325 || stnNo == 331 || stnNo == 333 || stnNo == 339) {
                 stnNo = staDesc.getCrnStn();
                 sourceStaNo = staDesc.getStnNo();
+
+                //**************325銆�331銆�333銆�339绔欑偣棰濆閫昏緫浠g爜**************
+                Object autoStnNo = tmpMap.get(dto.getLocNo());//鑾峰彇绯荤粺鑷姩鍒嗛厤绔欑偣
+                if (autoStnNo != null) {
+                    sourceStaNo = Integer.parseInt(autoStnNo.toString());
+                }
+                //**************325銆�331銆�333銆�339绔欑偣棰濆閫昏緫浠g爜**************
             }
 
             int lev = Utils.getLev(dto.getLocNo());
@@ -332,8 +410,9 @@
             wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
             Double ioPri = wrkMastService.getIoPri(ioType, dto.getLocNo());
             wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13
-            wrkMast.setOutMost(outMost?1:0);;
-            wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo());
+            wrkMast.setOutMost(outMost ? 1 : 0);
+            ;
+            wrkMast.setCrnNo(outMost ? outCrnNo : locMast.getCrnNo());
             wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
             wrkMast.setStaNo(stnNo); // 鐩爣绔�
             wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
@@ -348,17 +427,19 @@
             wrkMast.setModiUser(userId);
             wrkMast.setModiTime(now);
             if (!wrkMastService.insert(wrkMast)) {
-                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo());
+                throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + dto.getLocNo());
             }
             // 鐢熸垚宸ヤ綔妗f槑缁�
             for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
-                if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+                if (detlDto.getCount() == null || detlDto.getCount() <= 0.0D) {
+                    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();
+                Double anfme = ioType == 101 ? detlDto.getLocDetl().getAnfme() : detlDto.getCount();
                 wrkDetl.setAnfme(anfme); // 鏁伴噺
                 wrkDetl.setAppeTime(now);
                 wrkDetl.setAppeUser(userId);
@@ -371,11 +452,11 @@
             // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
             locMast = locMastService.selectById(dto.getLocNo());
             if (locMast.getLocSts().equals("F")) {
-                locMast.setLocSts(ioType==101?"R":"P");
+                locMast.setLocSts(ioType == 101 ? "R" : "P");
                 locMast.setModiUser(userId);
                 locMast.setModiTime(now);
                 if (!locMastService.updateById(locMast)) {
-                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo());
+                    throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + dto.getLocNo());
                 }
             } else {
                 throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
@@ -425,10 +506,15 @@
         wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
         Double ioPri = wrkMastService.getIoPri(ioType, taskDto.getLocNo());
         wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13
-        wrkMast.setOutMost(outMost?1:0);;
-        wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo());
+        wrkMast.setOutMost(outMost ? 1 : 0);
+        wrkMast.setCrnNo(outMost ? outCrnNo : locMast.getCrnNo());
         wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
         wrkMast.setStaNo(stnNo); // 鐩爣绔�
+        wrkMast.setPltType(locMast.getPltType());
+        if (ioType == 101 && taskDto.getStaNo() >= 300) {
+            wrkMast.setSourceStaNo(346); // 婧愮珯
+            wrkMast.setStaNo(346); // 鐩爣绔�
+        }
         wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
@@ -441,45 +527,76 @@
         wrkMast.setModiUser(userId);
         wrkMast.setModiTime(now);
         if (!wrkMastService.insert(wrkMast)) {
-            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+taskDto.getLocNo());
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + taskDto.getLocNo());
         }
         // 鐢熸垚宸ヤ綔妗f槑缁�
         for (LocDto locDto : taskDto.getLocDtos()) {
-            if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
+            if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) {
+                continue;
+            }
             LocDetl locDetl = locDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getContainerCode());
             if (locDetl == null || locDetl.getAnfme() < locDto.getAnfme()) {
                 throw new CoolException(locDto.getLocNo() + "搴撲綅涓�" + locDto.getMatnr() + "鍟嗗搧搴撳瓨涓嶈冻锛�");
             }
             Mat mat = matService.selectByMatnr(locDto.getMatnr());
             assert mat != null;
-            WrkDetl wrkDetl = new WrkDetl();
-            wrkDetl.sync(mat);
-            wrkDetl.setZpallet(wrkMast.getBarcode());
-            wrkDetl.setIoTime(now);
-            wrkDetl.setWrkNo(workNo);
-            wrkDetl.setBatch(locDto.getBatch());
-            wrkDetl.setOrderNo(locDto.getOrderNo());
-            wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
-            wrkDetl.setAppeTime(now);
-            wrkDetl.setAppeUser(userId);
-            wrkDetl.setModiTime(now);
-            wrkDetl.setModiUser(userId);
-            wrkDetl.setSuppCode(locDto.getContainerCode());
-            wrkDetl.setThreeCode(locDto.getCsocode());
-            wrkDetl.setDeadTime(locDto.getIsoseq());
-            if (!wrkDetlService.insert(wrkDetl)) {
-                throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+
+            if (!BaseController.isJSON(locDto.getOrderNo())) {
+                WrkDetl wrkDetl = new WrkDetl();
+                wrkDetl.sync(mat);
+                wrkDetl.setZpallet(wrkMast.getBarcode());
+                wrkDetl.setIoTime(now);
+                wrkDetl.setWrkNo(workNo);
+                wrkDetl.setBatch(locDto.getBatch());
+                wrkDetl.setWeight(locDto.getWeight());
+                wrkDetl.setOrderNo(locDto.getOrderNo());
+                wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺
+                wrkDetl.setAppeTime(now);
+                wrkDetl.setAppeUser(userId);
+                wrkDetl.setModiTime(now);
+                wrkDetl.setModiUser(userId);
+                wrkDetl.setSuppCode(locDto.getContainerCode());
+                wrkDetl.setThreeCode(locDto.getCsocode());
+                wrkDetl.setDeadTime(locDto.getIsoseq());
+                if (!wrkDetlService.insert(wrkDetl)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                }
+                //琛ヨ揣鍗曞垯鐢熸垚AGV鍏ュ簱閫氱煡妗�
+                generateAgvWaitpakin(wrkDetl);
+            } else {
+                List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
+                orderDtoList.forEach(orderDto -> {
+                    WrkDetl wrkDetl = new WrkDetl();
+                    wrkDetl.sync(mat);
+                    wrkDetl.setZpallet(wrkMast.getBarcode());
+                    wrkDetl.setIoTime(now);
+                    wrkDetl.setWrkNo(workNo);
+                    wrkDetl.setBatch(locDto.getBatch());
+                    wrkDetl.setWeight(locDto.getWeight());
+                    wrkDetl.setOrderNo(orderDto.getOrderNo());
+                    wrkDetl.setAnfme(orderDto.getAnfme()); // 鏁伴噺
+                    wrkDetl.setAppeTime(now);
+                    wrkDetl.setAppeUser(userId);
+                    wrkDetl.setModiTime(now);
+                    wrkDetl.setModiUser(userId);
+                    wrkDetl.setSuppCode(locDto.getContainerCode());
+                    wrkDetl.setThreeCode(locDto.getCsocode());
+                    wrkDetl.setDeadTime(locDto.getIsoseq());
+                    if (!wrkDetlService.insert(wrkDetl)) {
+                        throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                    }
+                    //琛ヨ揣鍗曞垯鐢熸垚AGV鍏ュ簱閫氱煡妗�
+                    generateAgvWaitpakin(wrkDetl);
+                });
             }
-            //琛ヨ揣鍗曞垯鐢熸垚AGV鍏ュ簱閫氱煡妗�
-            generateAgvWaitpakin(wrkDetl);
 
             // 淇敼璁㈠崟鏄庣粏
             if (!BaseController.isJSON(locDto.getOrderNo())) {
-                OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+                OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
                 if (orderDetl == null) {
-                    orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+                    orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null, locDto.getCsocode(), locDto.getIsoseq());
                 }
-                if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+                if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(), locDto.getCsocode(), locDto.getIsoseq())) {
                     throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
                 }
                 orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
@@ -493,19 +610,20 @@
                 Double orderAnfme;
 
                 for (OrderDto orderDto : orderDtoList) {
-                    OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+                    OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getCsocode(), locDto.getIsoseq());
                     if (orderDetl == null) {
-                        orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null);
+                        orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null, locDto.getCsocode(), locDto.getIsoseq());
                     }
 
-                    if(locAnfme > orderDetl.getAnfme()){
-                        orderAnfme = orderDetl.getAnfme();
+                    orderAnfme = orderDetl.getAnfme() - orderDetl.getQty();
+
+                    if (locAnfme > orderAnfme) {
                         locAnfme -= orderAnfme;
-                    }else {
+                    } else {
                         orderAnfme = locAnfme;
                     }
 
-                    if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) {
+                    if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme, orderDetl.getThreeCode(), orderDetl.getDeadTime())) {
                         throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
                     }
                     orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
@@ -515,11 +633,11 @@
         // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
         locMast = locMastService.selectById(taskDto.getLocNo());
         if (locMast.getLocSts().equals("F")) {
-            locMast.setLocSts(ioType==101?"R":"P");
+            locMast.setLocSts(ioType == 101 ? "R" : "P");
             locMast.setModiUser(userId);
             locMast.setModiTime(now);
             if (!locMastService.updateById(locMast)) {
-                throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+taskDto.getLocNo());
+                throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + taskDto.getLocNo());
             }
         } else {
             throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
@@ -543,7 +661,8 @@
         wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
         Double ioPri = wrkMastService.getIoPri(10, dto.getLocNo());
         wrkMast.setIoPri(ioPri); // 浼樺厛绾э細10
-        wrkMast.setOutMost(locMastService.isOutMost(dto.getLocNo(), true)?1:0);;
+        wrkMast.setOutMost(locMastService.isOutMost(dto.getLocNo(), true) ? 1 : 0);
+        ;
         wrkMast.setCrnNo(dto.getCrnNo());
         wrkMast.setSourceStaNo(dto.getSourceStaNo());
         wrkMast.setStaNo(dto.getStaNo());
@@ -553,7 +672,7 @@
         wrkMast.setExitMk("N"); // 閫�鍑�
         wrkMast.setEmptyMk("Y"); // 绌烘澘
         wrkMast.setLinkMis("N");
-        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 璐ф灦绫诲瀷
         // 鎿嶄綔浜哄憳鏁版嵁
         wrkMast.setAppeUser(userId);
         wrkMast.setAppeTime(new Date());
@@ -567,20 +686,20 @@
         sourceStaNo.setWrkNo(workNo);
         sourceStaNo.setModiUser(userId);
         sourceStaNo.setModiTime(new Date());
-        if (!basDevpService.updateById(sourceStaNo)){
+        if (!basDevpService.updateById(sourceStaNo)) {
             throw new CoolException("鏇存柊婧愮珯澶辫触");
         }
         // 鏇存柊鐩爣搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(dto.getLocNo());
-        if (locMast.getLocSts().equals("O")){
+        if (locMast.getLocSts().equals("O")) {
             locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
             locMast.setModiUser(userId);
             locMast.setModiTime(new Date());
-            if (!locMastService.updateById(locMast)){
+            if (!locMastService.updateById(locMast)) {
                 throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
             }
         } else {
-            throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+            throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
         return dto.getLocNo();
     }
@@ -590,31 +709,31 @@
     public void emptyPlateOut(EmptyPlateOutParam param, Long userId) {
         List<String> locNos = param.getLocNos();
         //妫�娴嬫槸鍚︿负娴呭簱浣�
-        boolean sign=false;
+        boolean sign = false;
         String th = "";
-        for (String locNo:locNos){
-            if (sign){
+        for (String locNo : locNos) {
+            if (sign) {
                 break;
             }
             List<String> groupInnerLoc = Utils.getGroupInnerLoc(locNo);
             if (!Cools.isEmpty(groupInnerLoc)) {
                 for (String insideLoc : groupInnerLoc) {
-                    if (locNos.contains(insideLoc)){
+                    if (locNos.contains(insideLoc)) {
                         continue;
                     }
                     LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", insideLoc));
                     if (locMast != null) {
-                        if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")){
-                            sign=true;
-                            th="搴撲綅鍙凤細"+locNo+" 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
+                        if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")) {
+                            sign = true;
+                            th = "搴撲綅鍙凤細" + locNo + " 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
                             break;
                         }
                     }
                 }
             }
         }
-        if (sign){
-            throw new CoolException("鍑哄簱澶辫触锛�"+th);
+        if (sign) {
+            throw new CoolException("鍑哄簱澶辫触锛�" + th);
         }
         if (Cools.isEmpty(param.getOutSite())) {
             throw new CoolException("绔欑偣涓嶅瓨鍦�");
@@ -632,14 +751,12 @@
             // 鑾峰彇搴撲綅
             LocMast locMast = locMastService.selectById(locNo);
             if (Cools.isEmpty(locMast)) {
-                throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
+                throw new CoolException(locNo + "搴撲綅涓嶅瓨鍦�");
             }
             Boolean outMost = locMastService.isOutMost(locNo, false);
             Integer outCrnNo = locMastService.getOutCrnNo(locMast);
             // 鑾峰彇婧愮珯
-            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-                    .eq("type_no", 110)
-                    .eq("stn_no", param.getOutSite());
+            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>().eq("type_no", 110).eq("stn_no", param.getOutSite());
             StaDesc staDesc = staDescService.selectOne(wrapper);
             if (Cools.isEmpty(staDesc)) {
                 throw new CoolException("闈炴硶璺緞锛�");
@@ -658,8 +775,9 @@
             wrkMast.setIoPri(ioPri);
             wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
             wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
-            wrkMast.setOutMost(outMost?1:0);;
-            wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo());
+            wrkMast.setOutMost(outMost ? 1 : 0);
+            ;
+            wrkMast.setCrnNo(outMost ? outCrnNo : locMast.getCrnNo());
             wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
             wrkMast.setFullPlt("N"); // 婊℃澘锛歒
             wrkMast.setPicking("N"); // 鎷f枡
@@ -675,7 +793,7 @@
                 throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
             }
             // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害
-            if (locMast.getLocSts().equals("D")){
+            if (locMast.getLocSts().equals("D")) {
                 locMast.setLocSts("R");
                 locMast.setModiUser(userId);
                 locMast.setModiTime(new Date());
@@ -695,7 +813,7 @@
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
             if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
-                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(),paramLocDetl.getContainerCode());
+                LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch(), paramLocDetl.getSuppCode());
                 if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
             }
         }
@@ -712,11 +830,11 @@
     public void locMove(String sourceLocNo, String locNo, Long userId) {
         LocMast sourceLoc = locMastService.selectById(sourceLocNo);
         List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
-        if (Cools.isEmpty(sourceLoc)){
+        if (Cools.isEmpty(sourceLoc)) {
             throw new CoolException("鏈壘鍒板簱浣�");
         }
         LocMast loc = locMastService.selectById(locNo);
-        if (Cools.isEmpty(loc)){
+        if (Cools.isEmpty(loc)) {
             throw new CoolException("鏈壘鍒板簱浣�");
         }
         if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
@@ -732,15 +850,16 @@
         wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
         wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
         wrkMast.setIoPri(10D);
-        wrkMast.setOutMost(locMastService.isOutMost(locNo, false)?1:0);;
+        wrkMast.setOutMost(locMastService.isOutMost(locNo, false) ? 1 : 0);
+        ;
         wrkMast.setCrnNo(sourceLoc.getCrnNo());
         wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣�
         wrkMast.setLocNo(locNo); // 鐩爣搴撲綅
-        wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒
+        wrkMast.setFullPlt(Cools.isEmpty(locDetls) ? "N" : "Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
         wrkMast.setExitMk("N"); // 閫�鍑�
-        wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
-        wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘
+        wrkMast.setBarcode(sourceLoc.getBarcode()); // 璐ф灦鐮�
         wrkMast.setLinkMis("N");
         wrkMast.setAppeUser(userId);
         wrkMast.setAppeTime(now);
@@ -770,11 +889,11 @@
             sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
             sourceLoc.setModiUser(userId);
             sourceLoc.setModiTime(now);
-            if (!locMastService.updateById(sourceLoc)){
+            if (!locMastService.updateById(sourceLoc)) {
                 throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
             }
         } else {
-            throw new CoolException(sourceLoc.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
+            throw new CoolException(sourceLoc.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細" + sourceLoc.getLocSts$());
         }
         // 淇敼鐩爣搴撲綅鐘舵��
         if (loc.getLocSts().equals("O")) {
@@ -785,7 +904,7 @@
                 throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
             }
         } else {
-            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$());
+            throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細" + loc.getLocSts$());
         }
     }
 
@@ -793,8 +912,8 @@
     @Transactional
     public void completeWrkMast(String workNo, Long userId) {
         WrkMast wrkMast = wrkMastService.selectById(workNo);
-        if (Cools.isEmpty(wrkMast)){
-            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
 
         if (wrkMast.getIoType() == 200) {
@@ -807,7 +926,7 @@
             throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
         }
         // 鍏ュ簱 + 搴撲綅杞Щ
-        if (wrkMast.getWrkSts() < 9 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
+        if (wrkMast.getWrkSts() < 9 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType() == 11)) {
             wrkMast.setWrkSts(9L);
             // 鍑哄簱
         } else if (wrkMast.getWrkSts() > 20) {
@@ -850,12 +969,14 @@
             Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
             while (iterator1.hasNext()) {
                 LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
-                if (adjust.getCount() == 0) { continue; }
-                if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
+                if (adjust.getCount() == 0) {
+                    continue;
+                }
+                if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch()) && Cools.eq(locDetl.getSuppCode(), adjust.getSuppCode()) && Cools.eq(locDetl.getThreeCode(), adjust.getThreeCode()) && Cools.eq(locDetl.getDeadTime(), adjust.getDeadTime())) {
                     if (!locDetl.getAnfme().equals(adjust.getCount())) {
                         // todo 鐩樼偣璁板綍
                         // 淇敼搴撳瓨
-                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getSuppCode(), locDetl.getThreeCode(), locDetl.getDeadTime())) {
                             throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
                         }
                         // 淇濆瓨璋冩暣璁板綍
@@ -863,15 +984,14 @@
                         adjDetl.setLocNo(locDetl.getLocNo());
                         adjDetl.setMatnr(locDetl.getMatnr());
                         adjDetl.setBatch(locDetl.getBatch());
+                        adjDetl.setMaktx(locDetl.getMaktx());
                         adjDetl.setOriQty(locDetl.getAnfme());
                         adjDetl.setAdjQty(adjust.getCount());
                         adjDetl.setModiTime(now);
                         adjDetl.setModiUser(userId);
                         adjDetl.setAppeTime(now);
                         adjDetl.setAppeUser(userId);
-
-                        UUID uuid = UUID.randomUUID();
-                        adjDetl.setOrderNo(uuid.toString());
+                        adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
                         adjDetl.setCsocode(locDetl.getThreeCode());
                         adjDetl.setIsoseq(locDetl.getDeadTime());
 
@@ -886,7 +1006,7 @@
         // 鍒犻櫎搴撳瓨
         for (LocDetl locDetl : locDetls) {
             // todo 鐩樼偣璁板綍
-            if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+            if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), locDetl.getSuppCode(), locDetl.getThreeCode(), locDetl.getDeadTime())) {
                 throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
             }
             // 淇濆瓨璋冩暣璁板綍
@@ -894,19 +1014,22 @@
             adjDetl.setLocNo(locDetl.getLocNo());
             adjDetl.setMatnr(locDetl.getMatnr());
             adjDetl.setBatch(locDetl.getBatch());
+            adjDetl.setMaktx(locDetl.getMaktx());
             adjDetl.setOriQty(locDetl.getAnfme());
             adjDetl.setAdjQty(0.0D);
             adjDetl.setModiTime(now);
             adjDetl.setModiUser(userId);
             adjDetl.setAppeTime(now);
             adjDetl.setAppeUser(userId);
-
+            adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
             adjDetlService.save(adjDetl, userId);
         }
 
         // 娣诲姞搴撳瓨
         for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
-            if (adjust.getCount() == 0.0D) { continue; }
+            if (adjust.getCount() == 0.0D) {
+                continue;
+            }
             Mat mat = matService.selectByMatnr(adjust.getMatnr());
             LocDetl locDetl = new LocDetl();
             locDetl.sync(mat);
@@ -927,17 +1050,16 @@
             adjDetl.setLocNo(locMast.getLocNo());
             adjDetl.setMatnr(adjust.getMatnr());
             adjDetl.setBatch(adjust.getBatch());
+            adjDetl.setMaktx(locDetl.getMaktx());
             adjDetl.setOriQty(0.0D);
             adjDetl.setAdjQty(adjust.getCount());
             adjDetl.setModiTime(now);
             adjDetl.setModiUser(userId);
             adjDetl.setAppeTime(now);
             adjDetl.setAppeUser(userId);
-
-            UUID uuid = UUID.randomUUID();
-            adjDetl.setOrderNo(uuid.toString());
             adjDetl.setCsocode(locDetl.getThreeCode());
             adjDetl.setIsoseq(locDetl.getDeadTime());
+            adjDetl.setOrderNo(Utils.generateAdjustOrderNo());
 
             adjDetlService.save(adjDetl, userId);
         }
@@ -965,8 +1087,8 @@
     @Transactional
     public void cancelWrkMast(String workNo, Long userId) {
         WrkMast wrkMast = wrkMastService.selectById(workNo);
-        if (Cools.isEmpty(wrkMast)){
-            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
 
         if (wrkMast.getIoType() == 200) {
@@ -987,29 +1109,29 @@
                 // 搴撲綅杞Щ锛氭簮搴撲綅
                 LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
                 if (Cools.isEmpty(locMast)) {
-                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo());
+                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:" + wrkMast.getSourceLocNo());
                 }
                 locMast.setLocSts("F");
                 locMast.setModiTime(new Date());
                 locMast.setModiUser(userId);
                 locMastService.updateById(locMast);
             }
-        // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
+            // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
         } else if (wrkMast.getWrkSts() > 20) {
             locNo = wrkMast.getSourceLocNo();
             // 鍑哄簱 ===>> F.鍦ㄥ簱
             if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
                 locSts = "F";
-            // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
+                // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
             } else if (wrkMast.getIoType() == 110) {
                 locSts = "D";
-            // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
+                // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
             } else if (wrkMast.getIoType() == 11) {
-                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F";
+                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N") ? "D" : "F";
                 // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
                 LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
                 if (Cools.isEmpty(locMast)) {
-                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo());
+                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:" + wrkMast.getSourceLocNo());
                 }
                 locMast.setLocSts("O");
                 locMast.setModiTime(new Date());
@@ -1020,11 +1142,13 @@
             throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
         }
         // 璁㈠崟鍏宠仈
+        long flowId = snowflakeIdWorker.nextId();
         List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
         for (WrkDetl wrkDetl : wrkDetls) {
             if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
                 if (!BaseController.isJSON(wrkDetl.getOrderNo())) {
-                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+
+                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme(), wrkDetl.getThreeCode(), wrkDetl.getDeadTime())) {
                         throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
                     }
                 } else {
@@ -1038,19 +1162,20 @@
                     List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class);
                     for (OrderDto orderDto : orderDtoList) {
 
-                        if(wrkDetlAnfme > orderDto.getAnfme()){
+                        if (wrkDetlAnfme > orderDto.getAnfme()) {
                             orderAnfme = orderDto.getAnfme();
                             wrkDetlAnfme -= orderAnfme;
-                        }else {
+                        } else {
                             orderAnfme = wrkDetlAnfme;
                         }
 
-                        if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme)) {
+                        if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme, wrkDetl.getThreeCode(), wrkDetl.getDeadTime())) {
                             throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
                         }
                     }
                 }
             }
+
         }
         // 鍙栨秷鎿嶄綔浜哄憳璁板綍
         wrkMast.setManuType("鎵嬪姩鍙栨秷");
@@ -1078,7 +1203,7 @@
         // 淇敼搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(locNo);
         if (Cools.isEmpty(locMast)) {
-            throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
+            throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo);
         }
         locMast.setLocSts(locSts);
         locMast.setModiTime(new Date());
@@ -1093,8 +1218,8 @@
     @Transactional
     public void pickWrkMast(String workNo, Long userId) {
         WrkMast wrkMast = wrkMastService.selectById(workNo);
-        if (Cools.isEmpty(wrkMast)){
-            throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
+        if (Cools.isEmpty(wrkMast)) {
+            throw new CoolException(workNo + "宸ヤ綔妗d笉瀛樺湪");
         }
         // 鍏ュ嚭搴撶被鍨嬪垽鏂�
         if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) {
@@ -1113,9 +1238,7 @@
             throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
         }
         // 鑾峰彇鐩爣绔�
-        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-                .eq("type_no", wrkMast.getIoType() - 50)
-                .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>().eq("type_no", wrkMast.getIoType() - 50).eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
                 .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
         StaDesc staDesc = staDescService.selectOne(wrapper);
         if (Cools.isEmpty(staDesc)) {
@@ -1159,14 +1282,29 @@
         return "";
     }
 
-    private void generateAgvWaitpakin(WrkDetl wrkDetl){
-        Order order = orderService.selectByNo(wrkDetl.getOrderNo());
-        DocType docType = docTypeService.selectById(order.getDocType());
-        if("浜哄伐琛ヨ揣鍗�".equals(docType.getDocName())){
-            AgvWaitPakin agvWaitPakin = new AgvWaitPakin();
-            BeanUtils.copyProperties(wrkDetl,agvWaitPakin);
-            agvWaitPakinService.insert(agvWaitPakin);
+    private void generateAgvWaitpakin(WrkDetl wrkDetl) {
+        String orderNo = wrkDetl.getOrderNo();
+        if (orderNo.contains("{")) {
+            JSONArray orderArray = JSON.parseArray(orderNo);
+            for (Object o : orderArray) {
+                JSONObject jsonobject = (JSONObject) o;
+                Order order = orderService.selectByNo(jsonobject.get("orderNo").toString());
+                DocType docType = docTypeService.selectById(order.getDocType());
+                if ("浜哄伐琛ヨ揣鍗�".equals(docType.getDocName())) {
+                    throw new CoolException("鍚堝苟鍗曟嵁涓寘鍚汉宸ヨˉ璐у崟锛屽崟鎹负: " + jsonobject.get("orderNo"));
+                }
+            }
+
+        } else {
+            Order order = orderService.selectByNo(orderNo);
+            DocType docType = docTypeService.selectById(order.getDocType());
+            if ("浜哄伐琛ヨ揣鍗�".equals(docType.getDocName())) {
+                AgvWaitPakin agvWaitPakin = new AgvWaitPakin();
+                BeanUtils.copyProperties(wrkDetl, agvWaitPakin);
+                agvWaitPakinService.insert(agvWaitPakin);
+            }
         }
+
     }
 
 }

--
Gitblit v1.9.1