From 45c2bf51fae3030c8e22fa2f2016b64a28928547 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期三, 04 十月 2023 10:22:50 +0800
Subject: [PATCH] AGV调试整改

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  334 +++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 248 insertions(+), 86 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 a13e2c9..f999701 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.service.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.BaseRes;
@@ -19,6 +20,7 @@
 import com.zy.common.model.enums.WorkNoType;
 import com.zy.common.properties.SlaveProperties;
 import com.zy.common.service.CommonService;
+import com.zy.common.web.BaseController;
 import com.zy.common.web.WcsController;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -98,7 +100,8 @@
         wrkMast.setIoTime(new Date());
         wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
         wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
-        wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+        Double ioPri = wrkMastService.getIoPri(1, dto.getLocNo());
+        wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13
         wrkMast.setOutMost(locMastService.isOutMost(dto.getLocNo(), true)?1:0);;
         wrkMast.setCrnNo(dto.getCrnNo());
         wrkMast.setSourceStaNo(dto.getSourceStaNo());
@@ -121,9 +124,10 @@
         // 鐢熸垚宸ヤ綔妗f槑缁�
         List<DetlDto> detlDtos = new ArrayList<>();
         param.getList().forEach(elem -> {
-            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq());
+            detlDto.setContainerCode(elem.getContainerCode());
             if (DetlDto.has(detlDtos, detlDto)) {
-                DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+                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 {
@@ -156,6 +160,57 @@
     @Override
     @Transactional
     public void startupFullTakeStore(StockOutParam param, Long userId) {
+        ArrayList<String> locNos = new ArrayList<>();
+        for (StockOutParam.LocDetl locDetl:param.getLocDetls()){
+            if (!locNos.contains(locDetl.getLocNo())){
+                locNos.add(locDetl.getLocNo());
+            }
+        }
+        //妫�娴嬫槸鍚︿负娴呭簱浣�
+        boolean sign=false;
+        String th = "";
+        for (String locNo:locNos){
+            if (sign){
+                break;
+            }
+
+            //妫�娴嬪嚭搴撶殑璐х墿涓槸鍚︽湁鐘舵�佷负绂佹鐨勮揣鐗┿��
+            for (LocDetl locDetl : locDetlService.selectByLocNo(locNo)) {
+                if (locDetl.getStockFreeze() == 0) {
+                    th="搴撲綅鍙凤細"+locNo+" 鏈夌姝㈠嚭搴撶殑璐х墿锛�";
+                    throw new CoolException("鍑哄簱澶辫触锛�"+th);
+                }
+
+                Mat mat = matService.selectByMatnr(locDetl.getMatnr());
+                if (mat == null) {
+                    continue;
+                }
+                if (mat.getStatus() == 0) {
+                    th="搴撲綅鍙凤細"+locNo+" 鏈夌姝㈠嚭搴撶殑璐х墿锛�";
+                    throw new CoolException("鍑哄簱澶辫触锛�"+th);
+                }
+            }
+
+            List<String> groupInnerLoc = Utils.getGroupInnerLoc(locNo);
+            if (!Cools.isEmpty(groupInnerLoc)) {
+                for (String insideLoc : groupInnerLoc) {
+                    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+" 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        if (sign){
+            throw new CoolException("鍑哄簱澶辫触锛�"+th);
+        }
         // 鐩爣绔欑偣鐘舵�佹娴�
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
         // 鑾峰彇搴撲綅鏄庣粏
@@ -172,6 +227,33 @@
         } else {
             throw new CoolException("搴撳瓨涓嶅瓨鍦�");
         }
+    }
+    /**
+     * 閫氳繃搴撲綅鍙疯幏鍙� 鎺�
+     */
+    public static int getRow(String locNo) {
+        if (!Cools.isEmpty(locNo)) {
+            return Integer.parseInt(locNo.substring(0, 2));
+        }
+        throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+    }
+    /**
+     * 閫氳繃搴撲綅鍙疯幏鍙� 鍒�
+     */
+    public static int getBay(String locNo) {
+        if (!Cools.isEmpty(locNo)) {
+            return Integer.parseInt(locNo.substring(2, 5));
+        }
+        throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+    }
+    /**
+     * 閫氳繃搴撲綅鍙疯幏鍙� 灞�
+     */
+    public static int getLev(String locNo) {
+        if (!Cools.isEmpty(locNo)) {
+            return Integer.parseInt(locNo.substring(5, 7));
+        }
+        throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
     }
 
     @Override
@@ -196,6 +278,7 @@
             }
         }
         Integer ioType = null;
+        List<String> excludeLocNos = dtos.stream().map(OutLocDto::getLocNo).distinct().collect(Collectors.toList());
         // 鐢熸垚宸ヤ綔妗�
         for (OutLocDto dto : dtos) {
             // 濡傛灉涓烘繁搴撲綅锛屼笖瀵瑰簲娴呭簱浣嶄负X.绂佺敤锛屽垯鐣ヨ繃姝ゅ簱浣�
@@ -216,18 +299,21 @@
             // 鑾峰彇搴撲綅
             LocMast locMast = locMastService.selectById(dto.getLocNo());
             // 鑾峰彇璺緞
-            StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), staNo.getDevNo());
+            Boolean outMost = locMastService.isOutMost(dto.getLocNo(), false);
+            Integer outCrnNo = locMastService.getOutCrnNo(locMast);
+            StaDesc staDesc = staDescService.queryCrnStn(ioType, outCrnNo, staNo.getDevNo());
             // 鐢熸垚宸ヤ綔鍙�
             int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
             // 鐢熸垚宸ヤ綔妗�
             WrkMast wrkMast = new WrkMast();
             wrkMast.setWrkNo(workNo);
             wrkMast.setIoTime(now);
-            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+            wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
             wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
-            wrkMast.setIoPri(13D); // 浼樺厛绾э細13
-            wrkMast.setOutMost(locMastService.isOutMost(dto.getLocNo(), false)?1:0);;
-            wrkMast.setCrnNo(locMast.getCrnNo());
+            Double ioPri = wrkMastService.getIoPri(ioType, dto.getLocNo());
+            wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13
+            wrkMast.setOutMost(outMost?1:0);;
+            wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo());
             wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
             wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
             wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
@@ -291,18 +377,21 @@
         LocMast locMast = locMastService.selectById(taskDto.getLocNo());
         // 鑾峰彇璺緞
         int ioType = taskDto.isAll() ? 101 : 103;
-        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo());
+        Boolean outMost = locMastService.isOutMost(taskDto.getLocNo(), false);
+        Integer outCrnNo = locMastService.getOutCrnNo(locMast);
+        StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, outCrnNo, staNo.getDevNo());
         // 鐢熸垚宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
         wrkMast.setIoTime(now);
-        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+        wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
         wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
-        wrkMast.setIoPri(13D); // 浼樺厛绾э細13
-        wrkMast.setOutMost(locMastService.isOutMost(taskDto.getLocNo(), false)?1:0);;
-        wrkMast.setCrnNo(locMast.getCrnNo());
+        Double ioPri = wrkMastService.getIoPri(ioType, taskDto.getLocNo());
+        wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13
+        wrkMast.setOutMost(outMost?1:0);;
+        wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo());
         wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
         wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
         wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣�
@@ -322,16 +411,14 @@
         // 鐢熸垚宸ヤ綔妗f槑缁�
         for (LocDto locDto : taskDto.getLocDtos()) {
             if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; }
-            OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
-            if (orderDetl == null) {
-                orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
-            }
             LocDetl locDetl = locDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch());
             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(orderDetl);
+            wrkDetl.sync(mat);
             wrkDetl.setZpallet(wrkMast.getBarcode());
             wrkDetl.setIoTime(now);
             wrkDetl.setWrkNo(workNo);
@@ -346,10 +433,43 @@
                 throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
             }
             // 淇敼璁㈠崟鏄庣粏
-            if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
-                throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+            if (!BaseController.isJSON(locDto.getOrderNo())) {
+                OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+                if (orderDetl == null) {
+                    orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null);
+                }
+                if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) {
+                    throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+                }
+                orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+            } else {
+                // 璁㈠崟鍚堝苟鍑哄簱
+                List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
+
+                //瀹為檯鍑哄簱鏁伴噺
+                Double locAnfme = locDto.getAnfme();
+                //璁㈠崟瀹為檯鍑哄簱鏁伴噺
+                Double orderAnfme;
+
+                for (OrderDto orderDto : orderDtoList) {
+                    OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch());
+                    if (orderDetl == null) {
+                        orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null);
+                    }
+
+                    if(locAnfme > orderDetl.getAnfme()){
+                        orderAnfme = orderDetl.getAnfme();
+                        locAnfme -= orderAnfme;
+                    }else {
+                        orderAnfme = locAnfme;
+                    }
+
+                    if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderAnfme)) {
+                        throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+                    }
+                    orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+                }
             }
-            orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
         }
         // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
         locMast = locMastService.selectById(taskDto.getLocNo());
@@ -380,7 +500,8 @@
         wrkMast.setIoTime(new Date());
         wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
         wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱
-        wrkMast.setIoPri(10D); // 浼樺厛绾э細10
+        Double ioPri = wrkMastService.getIoPri(10, dto.getLocNo());
+        wrkMast.setIoPri(ioPri); // 浼樺厛绾э細10
         wrkMast.setOutMost(locMastService.isOutMost(dto.getLocNo(), true)?1:0);;
         wrkMast.setCrnNo(dto.getCrnNo());
         wrkMast.setSourceStaNo(dto.getSourceStaNo());
@@ -426,6 +547,34 @@
     @Override
     @Transactional
     public void emptyPlateOut(EmptyPlateOutParam param, Long userId) {
+        List<String> locNos = param.getLocNos();
+        //妫�娴嬫槸鍚︿负娴呭簱浣�
+        boolean sign=false;
+        String th = "";
+        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)){
+                        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+" 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        if (sign){
+            throw new CoolException("鍑哄簱澶辫触锛�"+th);
+        }
         if (Cools.isEmpty(param.getOutSite())) {
             throw new CoolException("绔欑偣涓嶅瓨鍦�");
         }
@@ -444,12 +593,16 @@
             if (Cools.isEmpty(locMast)) {
                 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())
-                    .eq("crn_no", locMast.getCrnNo());
+                    .eq("stn_no", param.getOutSite());
             StaDesc staDesc = staDescService.selectOne(wrapper);
+            if (Cools.isEmpty(staDesc)) {
+                throw new CoolException("闈炴硶璺緞锛�");
+            }
             Integer sourceStaNo = staDesc.getCrnStn();
             if (Cools.isEmpty(sourceStaNo)) {
                 throw new CoolException("妫�绱㈡簮绔欏け璐�");
@@ -458,13 +611,14 @@
             WrkMast wrkMast = new WrkMast();
             wrkMast.setWrkNo(workNo);
             wrkMast.setIoTime(new Date());
-            wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+            wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
             wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
-            wrkMast.setIoPri(10D);
+            Double ioPri = wrkMastService.getIoPri(110, locNo);
+            wrkMast.setIoPri(ioPri);
             wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
             wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
-            wrkMast.setOutMost(locMastService.isOutMost(locNo, false)?1:0);;
-            wrkMast.setCrnNo(locMast.getCrnNo());
+            wrkMast.setOutMost(outMost?1:0);;
+            wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo());
             wrkMast.setSourceLocNo(locNo); // 婧愬簱浣�
             wrkMast.setFullPlt("N"); // 婊℃澘锛歒
             wrkMast.setPicking("N"); // 鎷f枡
@@ -525,15 +679,16 @@
             throw new CoolException("鏈壘鍒板簱浣�");
         }
         if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) {
-            throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�");
+//            throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�");   todo:luxiaotao
         }
+        Date now = new Date();
         // 鑾峰彇宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(WorkNoType.PICK.type);
         // 淇濆瓨宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
-        wrkMast.setIoTime(new Date());
-        wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+        wrkMast.setIoTime(now);
+        wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟
         wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
         wrkMast.setIoPri(10D);
         wrkMast.setOutMost(locMastService.isOutMost(locNo, false)?1:0);;
@@ -547,9 +702,9 @@
         wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮�
         wrkMast.setLinkMis("N");
         wrkMast.setAppeUser(userId);
-        wrkMast.setAppeTime(new Date());
+        wrkMast.setAppeTime(now);
         wrkMast.setModiUser(userId);
-        wrkMast.setModiTime(new Date());
+        wrkMast.setModiTime(now);
         boolean res = wrkMastService.insert(wrkMast);
         if (!res) {
             throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
@@ -559,11 +714,11 @@
             WrkDetl wrkDetl = new WrkDetl();
             wrkDetl.sync(locDetl);
             wrkDetl.setWrkNo(workNo);
-            wrkDetl.setIoTime(new Date());
+            wrkDetl.setIoTime(now);
             wrkDetl.setAnfme(locDetl.getAnfme());
-            wrkDetl.setAppeTime(new Date());
+            wrkDetl.setAppeTime(now);
             wrkDetl.setAppeUser(userId);
-            wrkDetl.setModiTime(new Date());
+            wrkDetl.setModiTime(now);
             wrkDetl.setModiUser(userId);
             if (!wrkDetlService.insert(wrkDetl)) {
                 throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
@@ -573,17 +728,17 @@
         if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) {
             sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害
             sourceLoc.setModiUser(userId);
-            sourceLoc.setModiTime(new Date());
+            sourceLoc.setModiTime(now);
             if (!locMastService.updateById(sourceLoc)){
                 throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
             }
         } else {
-            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
+            throw new CoolException(sourceLoc.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
         }
         // 淇敼鐩爣搴撲綅鐘舵��
         if (loc.getLocSts().equals("O")) {
             loc.setLocSts("S"); // S.鍏ュ簱棰勭害
-            loc.setModiTime(new Date());
+            loc.setModiTime(now);
             loc.setModiUser(userId);
             if (!locMastService.updateById(loc)) {
                 throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
@@ -600,15 +755,15 @@
         if (Cools.isEmpty(wrkMast)){
             throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
         }
-        if (wrkMast.getWrkSts() == 9 || wrkMast.getWrkSts() == 17) {
+        if (wrkMast.getWrkSts() == 9 || wrkMast.getWrkSts() == 29) {
             throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
         }
         // 鍏ュ簱 + 搴撲綅杞Щ
         if (wrkMast.getWrkSts() < 9 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
             wrkMast.setWrkSts(9L);
             // 鍑哄簱
-        } else if (wrkMast.getWrkSts() > 10) {
-            wrkMast.setWrkSts(17L);
+        } else if (wrkMast.getWrkSts() > 20) {
+            wrkMast.setWrkSts(29L);
         }
         Date now = new Date();
         wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
@@ -666,6 +821,12 @@
                         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());
+
                         adjDetlService.save(adjDetl, userId);
                     }
                     iterator.remove();
@@ -691,6 +852,7 @@
             adjDetl.setModiUser(userId);
             adjDetl.setAppeTime(now);
             adjDetl.setAppeUser(userId);
+
             adjDetlService.save(adjDetl, userId);
         }
 
@@ -707,6 +869,8 @@
             locDetl.setModiTime(now);
             locDetl.setAppeUser(userId);
             locDetl.setAppeTime(now);
+            locDetl.setThreeCode(adjust.getThreeCode());
+            locDetl.setDeadTime(adjust.getDeadTime());
             if (!locDetlService.insert(locDetl)) {
                 throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
             }
@@ -721,6 +885,12 @@
             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());
+
             adjDetlService.save(adjDetl, userId);
         }
         // 淇敼搴撲綅鐘舵��
@@ -750,10 +920,17 @@
         if (Cools.isEmpty(wrkMast)){
             throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
         }
+
+        if (wrkMast.getWrkSts() == 200) {
+            //灏忚溅绉诲簱浠诲姟锛岀洿鎺ュ垹闄ゅ伐浣滄。
+            wrkMastService.deleteById(wrkMast);
+            return;
+        }
+
         String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
         String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
         // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
-        if (wrkMast.getWrkSts() < 4) {
+        if (wrkMast.getWrkSts() < 9) {
             locNo = wrkMast.getLocNo();
             locSts = "O";
 
@@ -770,7 +947,7 @@
                 locMastService.updateById(locMast);
             }
         // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
-        } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) {
+        } else if (wrkMast.getWrkSts() > 20) {
             locNo = wrkMast.getSourceLocNo();
             // 鍑哄簱 ===>> F.鍦ㄥ簱
             if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
@@ -798,11 +975,33 @@
         List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
         for (WrkDetl wrkDetl : wrkDetls) {
             if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-                if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
-                    throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+                if (!BaseController.isJSON(wrkDetl.getOrderNo())) {
+                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
+                        throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+                    }
+                } else {
+                    // 璁㈠崟鍚堝苟鍑哄簱
+
+                    //瀹為檯鍙栨秷鐨勫嚭搴撴暟閲�
+                    Double wrkDetlAnfme = wrkDetl.getAnfme();
+                    //璁㈠崟瀹為檯鍑哄簱鏁伴噺
+                    Double orderAnfme;
+
+                    List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class);
+                    for (OrderDto orderDto : orderDtoList) {
+
+                        if(wrkDetlAnfme > orderDto.getAnfme()){
+                            orderAnfme = orderDto.getAnfme();
+                            wrkDetlAnfme -= orderAnfme;
+                        }else {
+                            orderAnfme = wrkDetlAnfme;
+                        }
+
+                        if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme)) {
+                            throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+                        }
+                    }
                 }
-                // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
-//                        stockOutRe(wrkMast, wrkDetls);
             }
         }
         // 鍙栨秷鎿嶄綔浜哄憳璁板綍
@@ -900,12 +1099,7 @@
 
     @Override
     public StartupDto createWaitPainWrkMastStart(List<WaitPakin> list, Long userId) {
-        if (Cools.isEmpty(list)) {
-            throw new CoolException("鍏ュ簱閫氱煡妗d笉鑳戒负绌�");
-        }
-        LocTypeDto locTypeDto = new LocTypeDto();
-        locTypeDto.setLocType1((short) 1);
-        return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list);
+        return null;
     }
 
     @Override
@@ -915,38 +1109,6 @@
             throw new CoolException("鍔熻兘鍋滅敤");
         }
         return "";
-    }
-
-    @Override
-    public void shuttleTransfer(List<String> locNos) {
-        if (Cools.isEmpty(locNos)) {
-            return;
-        }
-        LocMast one = locMastService.selectById(locNos.get(0));
-        List<Integer> rows = Utils.getGroupLoc(Integer.parseInt(locNos.get(0).substring(0, 2)));
-        List<LocMast> locMasts = locMastService.queryFreeLocMast(rows, rows.size(), one.getLocType1());
-        if (Cools.isEmpty(locMasts)) {
-            throw new CoolException("搴撲綅绉昏浆澶辫触锛屽凡鏃犵┖搴撲綅");
-        }
-        // 鍏ュ簱鎺掑簭 娣卞簱浣� ==> 娴呭簱浣�
-        switch (locMasts.get(0).getRow1()) {
-            case 4:
-            case 5:
-            case 6:
-            case 7:
-            case 12:
-            case 13:
-            case 14:
-            case 19:
-            case 20:
-            case 21:
-                Collections.reverse(locMasts);
-                break;
-            default:
-                throw new IllegalStateException("Unexpected value: " + locMasts.get(0).getRow1());
-        }
-        // 鐢熸垚绉诲簱宸ヤ綔妗�
-
     }
 
 }

--
Gitblit v1.9.1