From 6adc542d1feba4e43612071b9b1f217c414c0a08 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@63.com>
Date: 星期二, 06 十二月 2022 11:06:16 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  103 ++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 73 insertions(+), 30 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 dec51c8..f060460 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());
@@ -217,7 +220,9 @@
             // 鑾峰彇搴撲綅
             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));
             // 鐢熸垚宸ヤ綔妗�
@@ -226,9 +231,10 @@
             wrkMast.setIoTime(now);
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
             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()); // 婧愬簱浣�
@@ -293,7 +299,9 @@
         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));
         // 鐢熸垚宸ヤ綔妗�
@@ -302,9 +310,10 @@
         wrkMast.setIoTime(now);
         wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
         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()); // 婧愬簱浣�
@@ -324,16 +333,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);
@@ -348,10 +355,29 @@
                 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);
+                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 (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDto.getAnfme())) {
+                        throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触");
+                    }
+                    orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
+                }
             }
-            orderService.updateSettle(orderDetl.getOrderId(), 2L, userId);
         }
         // 淇敼搴撲綅鐘舵��:   F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
         locMast = locMastService.selectById(taskDto.getLocNo());
@@ -382,7 +408,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());
@@ -446,12 +473,17 @@
             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("crn_no", outCrnNo);
             StaDesc staDesc = staDescService.selectOne(wrapper);
+            if (Cools.isEmpty(staDesc)) {
+                throw new CoolException("闈炴硶璺緞锛�");
+            }
             Integer sourceStaNo = staDesc.getCrnStn();
             if (Cools.isEmpty(sourceStaNo)) {
                 throw new CoolException("妫�绱㈡簮绔欏け璐�");
@@ -462,11 +494,12 @@
             wrkMast.setIoTime(new Date());
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
             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枡
@@ -581,7 +614,7 @@
                 throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
             }
         } else {
-            throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
+            throw new CoolException(sourceLoc.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
         }
         // 淇敼鐩爣搴撲綅鐘舵��
         if (loc.getLocSts().equals("O")) {
@@ -801,11 +834,19 @@
         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 {
+                    // 璁㈠崟鍚堝苟鍑哄簱
+                    List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class);
+                    for (OrderDto orderDto : orderDtoList) {
+                        if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme())) {
+                            throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
+                        }
+                    }
                 }
-                // 鐢熸垚鏂扮殑鍑哄簱浣滀笟
-//                        stockOutRe(wrkMast, wrkDetls);
             }
         }
         // 鍙栨秷鎿嶄綔浜哄憳璁板綍
@@ -907,8 +948,7 @@
             throw new CoolException("鍏ュ簱閫氱煡妗d笉鑳戒负绌�");
         }
         LocTypeDto locTypeDto = new LocTypeDto();
-        locTypeDto.setLocType1((short) 1);
-        return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list);
+        return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, null);
     }
 
     @Override
@@ -925,6 +965,9 @@
     public void shuttleTransfer(List<String> locNos) {
         if (Cools.isEmpty(locNos)) {
             return;
+        }
+        if (true && !Cools.isEmpty(locNos)) {
+            throw new CoolException("鏆備笉鏀寔绉诲簱浠诲姟");    // todo:luxiaotao 绉诲簱寮�鍏�
         }
         LocMast one = locMastService.selectById(locNos.get(0));
         List<Integer> rows = Utils.getGroupLoc(Integer.parseInt(locNos.get(0).substring(0, 2)));
@@ -1021,7 +1064,7 @@
                         throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
                     }
                 } else {
-                    throw new CoolException("婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
+                    throw new CoolException(sourceLoc.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$());
                 }
                 // 淇敼鐩爣搴撲綅鐘舵��
                 if (loc.getLocSts().equals("O")) {

--
Gitblit v1.9.1