From b43d307ac60607bcc556ca52c54cee0176b66273 Mon Sep 17 00:00:00 2001
From: DELL <56479841@qq.com>
Date: 星期五, 06 五月 2022 14:54:20 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java |  310 +++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 270 insertions(+), 40 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 a0cef33..405a18c 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -12,15 +12,19 @@
 import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.Utils;
 import com.zy.asrs.utils.VersionUtils;
 import com.zy.common.model.LocDetlDto;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.OutLocDto;
 import com.zy.common.model.StartupDto;
+import com.zy.common.properties.SlaveProperties;
 import com.zy.common.service.CommonService;
 import com.zy.ints.entity.WaitMatchk;
 import com.zy.ints.service.IoCompleteService;
+import com.zy.ints.service.WaitMatchkLogService;
 import com.zy.ints.service.WaitMatchkService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -33,6 +37,7 @@
 /**
  * Created by vincent on 2020/6/11
  */
+@Slf4j
 @Service
 public class WorkServiceImpl implements WorkService {
     static int i =1;
@@ -67,10 +72,15 @@
     @Autowired
     private WaitMatchkService waitMatchkService;
     @Autowired
+    private WaitMatchkLogService waitMatchkLogService;
+    @Autowired
     private IoCompleteService ioCompleteService;
+    @Autowired
+    private SlaveProperties slaveProperties;
 
     @Override
     @Transactional
+    //鍏ュ簱
     public String startupFullPutStore(FullStoreParam param, Long userId) {
         // 鍙傛暟闈炵┖鍒ゆ柇
         if (Cools.isEmpty(param.getDevpNo(), param.getList())) {
@@ -115,7 +125,7 @@
         // 鐢熸垚宸ヤ綔妗f槑缁�
         List<MatCodeCountDto> matDtos = new ArrayList<>();
         param.getList().forEach(elem -> {
-            matDtos.add(new MatCodeCountDto(elem.getMatNo(), elem.getCount()));
+            matDtos.add(new MatCodeCountDto(elem.getMatNo(), elem.getSupplier(), elem.getCount(),elem.getMemo(),elem.getSource(),elem.getVendor()));
         });
         wrkDetlService.createWorkDetail(workNo, matDtos, param.getBarcode(), userId);
         // 鏇存柊婧愮珯鐐逛俊鎭�
@@ -166,6 +176,7 @@
 
     @Override
     @Transactional
+    //鍑哄簱浣滀笟
     public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId) {
 
         // 鍚堝苟鍚岀被椤�
@@ -183,39 +194,6 @@
                 }
             }
             dtos.add(new OutLocDto(locNo, list));
-        }
-
-        if(ioType == 107) {
-            //鑾峰彇褰撳墠鏃堕棿鎴�
-            SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
-            String temp = sf.format(new Date());
-            //鑾峰彇3浣嶉殢鏈烘暟
-            Random rand = new Random();
-            Integer r = rand.nextInt(900) + 100;
-            String billNo = temp + r;
-            //鐢熸垚鐩樼偣閫氱煡妗�
-            for (LocDetlDto locDetlDto : locDetlDtos) {
-//            String replace = UUID.randomUUID().toString().replace("-", "");
-                LocDetl locDetl = locDetlDto.getLocDetl();
-                //鐢熸垚鐩樼偣妗�
-                WaitMatchk waitMatchk = new WaitMatchk();
-                waitMatchk.setBillNo(billNo);//璁㈠崟缂栧彿
-                waitMatchk.setLocNo(locDetl.getLocNo());//搴撲綅鍙�
-                waitMatchk.setStockQty(locDetl.getQty());
-                waitMatchk.setMatNo(locDetl.getMatNo());//浜у搧缂栧彿
-                waitMatchk.setMatName(locDetl.getMatName());//閾插钩鍚嶇О
-                waitMatchk.setSeqNo(i);
-//                waitMatchk.setIoTime(new Date());
-                waitMatchk.setZpallet(locDetl.getZpallet());
-                waitMatchk.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
-                waitMatchk.setAppeTime(new Date());
-                waitMatchk.setModiUser(userId);
-                waitMatchk.setModiTime(new Date());
-                if (!waitMatchkService.insert(waitMatchk)) {
-                    throw new CoolException("淇濆瓨鐩樼偣妗eけ璐�");
-                }
-                i++;
-            }
         }
 
         // 鐢熸垚宸ヤ綔妗�
@@ -237,7 +215,29 @@
                 throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�");
             }
             // 鐢熸垚宸ヤ綔鍙�
-            int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
+            int rok;
+            if(ioType==103||ioType==107){
+                rok=2;
+            }else{
+                rok=1;
+            }
+            int workNo = commonService.getWorkNo(rok);
+
+            boolean reduce = false;
+            if(locMast.getCrnNo().equals(1) && dto.getLocNo().substring(0,2).equals("01")) {//1鍙疯揣鏋舵墠鍒ゆ柇
+                // 褰撴繁搴撲綅鍑哄簱鏃讹紝鏌ユ壘瀵瑰簲鐨勬祬搴撲綅鏄惁涔熸湁鍑哄簱浠诲姟,濡傛灉鏈夛紝灏卞鍔犲叾浼樺厛绾�
+                if (Utils.isDeepLoc(slaveProperties, dto.getLocNo())) {
+                    String shallowLoc = Utils.getShallowLoc(slaveProperties, dto.getLocNo());
+                    if (locNos.contains(shallowLoc)) {
+                        reduce = true;
+                    }
+                }
+
+                // 娣卞簱浣嶇Щ搴�
+                if (!reduce) {
+                    moveLocForDeepLoc(locMast.getCrnNo(), dto.getLocNo());
+                }
+            }
 
             // 鐢熸垚宸ヤ綔妗�
             WrkMast wrkMast = new WrkMast();
@@ -245,7 +245,7 @@
             wrkMast.setIoTime(new Date());
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
             wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
-            wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+            wrkMast.setIoPri(reduce?13D:15D); // 浼樺厛绾э細13
             wrkMast.setCrnNo(locMast.getCrnNo());
             wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
             wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
@@ -264,6 +264,10 @@
             }
             // 鐢熸垚宸ヤ綔妗f槑缁�
             for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
+                MatCode matCode = matCodeService.selectById(detlDto.getLocDetl().getMatNo());
+                if(Cools.isEmpty(matCode)){
+                    throw new CoolException("浜у搧缂栫爜鍦ㄥ熀纭�鏁版嵁涓笉瀛樺湪锛岃纭");
+                }
                 // 鍑哄簱鏃讹紝鏁伴噺涓�0鐨勭洿鎺ュ拷鐣�
                 if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
                 WrkDetl wrkDetl = new WrkDetl();
@@ -276,6 +280,17 @@
                 wrkDetl.setAppeUser(userId);
                 wrkDetl.setModiTime(new Date());
                 wrkDetl.setModiUser(userId);
+                wrkDetl.setMemo(detlDto.getLocDetl().getMemo());
+                wrkDetl.setQtyBox(matCode.getStr6()!=null ? matCode.getStr6() : 0);
+                wrkDetl.setWeight(matCode.getWeight()!=null ? matCode.getWeight() : 0);
+                wrkDetl.setAllWeight(matCode.getWeight()!=null ? qty*matCode.getWeight()+30 : 0);
+                wrkDetl.setAllQty(matCode.getStr6()!=null ? qty*matCode.getStr6() : 0);
+                wrkDetl.setVendor(detlDto.getLocDetl().getVendor());
+                wrkDetl.setSource(detlDto.getLocDetl().getSource());
+                wrkDetl.setSupplier(detlDto.getLocDetl().getSupplier());
+                wrkDetl.setStr5(matCode.getStr5());
+                wrkDetl.setStr4(matCode.getStr4());
+                wrkDetl.setStr3(matCode.getStr3());
                 if (!wrkDetlService.insert(wrkDetl)) {
                     throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
                 }
@@ -292,11 +307,54 @@
             } else {
                 throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
             }
+
+            if(ioType == 107) {
+                //鑾峰彇褰撳墠鏃堕棿鎴�
+                SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
+                String temp = sf.format(new Date());
+                //鑾峰彇3浣嶉殢鏈烘暟
+                Random rand = new Random();
+                Integer r = rand.nextInt(900) + 100;
+                String billNo = temp + r;
+                //鐢熸垚鐩樼偣閫氱煡妗�
+                for (LocDetlDto locDetlDto : locDetlDtos) {
+//            String replace = UUID.randomUUID().toString().replace("-", "");
+                    LocDetl locDetl = locDetlDto.getLocDetl();
+
+                    //////鎻掑叆鐩樼偣妗e墠锛屽皢閫氱煡妗d箣鍓嶇浉鍚屽簱浣嶆暟鎹浆鍘嗗彶妗�
+                    List<WaitMatchk> waitMatchks = waitMatchkService.selectList(new EntityWrapper<WaitMatchk>().eq("loc_no",locDetl.getLocNo()));
+                    for(WaitMatchk one : waitMatchks){
+                        waitMatchkLogService.save(one.getBillNo(),one.getLocNo(),one.getMatNo());
+                        waitMatchkService.delete(new EntityWrapper<WaitMatchk>().eq("bill_no",one.getBillNo()).eq("loc_no",one.getLocNo()).eq("mat_no",one.getMatNo()));
+                    }
+
+                    //鐢熸垚鐩樼偣妗�
+                    WaitMatchk waitMatchk = new WaitMatchk();
+                    waitMatchk.setBillNo(billNo);//璁㈠崟缂栧彿
+                    waitMatchk.setLocNo(locDetl.getLocNo());//搴撲綅鍙�
+                    waitMatchk.setStockQty(locDetl.getQty());
+                    waitMatchk.setMatNo(locDetl.getMatNo());//浜у搧缂栧彿
+                    waitMatchk.setMatName(locDetl.getMatName());//閾插钩鍚嶇О
+                    waitMatchk.setSeqNo(i);
+//                waitMatchk.setIoTime(new Date());
+                    waitMatchk.setZpallet(locDetl.getZpallet());
+                    waitMatchk.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+                    waitMatchk.setAppeTime(new Date());
+                    waitMatchk.setModiUser(userId);
+                    waitMatchk.setModiTime(new Date());
+                    if (!waitMatchkService.insert(waitMatchk)) {
+                        throw new CoolException("淇濆瓨鐩樼偣妗eけ璐�");
+                    }
+                    i++;
+                }
+            }
+
         }
     }
 
     @Override
     @Transactional
+    //绌烘澘鍏ュ簱
     public String emptyPlateIn(Integer devpNo, Long userId) {
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
@@ -356,18 +414,37 @@
 
     @Override
     @Transactional
+    //绌烘澘鍑哄簱
     public void emptyPlateOut(EmptyPlateOutParam param, Long userId) {
         if (Cools.isEmpty(param.getOutSite())) {
             throw new CoolException("绔欑偣涓嶅瓨鍦�");
         }
         for (String locNo : param.getLocNos()) {
             // 鑾峰彇宸ヤ綔鍙�
-            int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
+            int workNo = commonService.getWorkNo(1);
+
             // 鑾峰彇搴撲綅
             LocMast locMast = locMastService.selectById(locNo);
             if (Cools.isEmpty(locMast)) {
                 throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�");
             }
+
+            boolean reduce = false;
+            if(locMast.getCrnNo().equals(1) && locNo.substring(0,2).equals("01")) {//1鍙疯揣鏋舵墠鍒ゆ柇
+                // 褰撴繁搴撲綅鍑哄簱鏃讹紝鏌ユ壘瀵瑰簲鐨勬祬搴撲綅鏄惁涔熸湁鍑哄簱浠诲姟,濡傛灉鏈夛紝灏卞鍔犲叾浼樺厛绾�
+                if (Utils.isDeepLoc(slaveProperties, locNo)) {
+                    String shallowLoc = Utils.getShallowLoc(slaveProperties, locNo);
+                    if (param.getLocNos().contains(shallowLoc)) {
+                        reduce = true;
+                    }
+                }
+
+                // 娣卞簱浣嶇Щ搴�
+                if (!reduce) {
+                    moveLocForDeepLoc(locMast.getCrnNo(), locNo);
+                }
+            }
+
             // 鑾峰彇婧愮珯
             Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
                     .eq("type_no", 110)
@@ -384,7 +461,7 @@
             wrkMast.setIoTime(new Date());
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
             wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
-            wrkMast.setIoPri(10D);
+            wrkMast.setIoPri(reduce?13D:15D);
             wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
             wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
             wrkMast.setCrnNo(locMast.getCrnNo());
@@ -417,6 +494,7 @@
 
     @Override
     @Transactional
+    //鐩樼偣鍑哄簱
     public void locCheckOut(StockOutParam param, Long userId) {
         // 鐩爣绔欑偣鐘舵�佹娴�
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
@@ -427,6 +505,7 @@
                 LocDetl sqlParam = new LocDetl();
                 sqlParam.setLocNo(paramLocDetl.getLocNo());
                 sqlParam.setMatNo(paramLocDetl.getMatNo());
+                sqlParam.setSupplier(paramLocDetl.getSupplier());
                 LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam));
                 if (null != one) locDetlDtos.add(new LocDetlDto(one, one.getQty()));
             }
@@ -441,6 +520,7 @@
 
     @Override
     @Transactional
+    //绉诲簱
     public void locMove(String sourceLocNo, String locNo, Long userId) {
         LocMast sourceLoc = locMastService.selectById(sourceLocNo);
         if (Cools.isEmpty(sourceLoc)){
@@ -455,6 +535,18 @@
         }
         // 鑾峰彇宸ヤ綔鍙�
         int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
+
+        if(loc.getCrnNo().equals(1) && sourceLocNo.substring(0,2).equals("01")) {//1鍙疯揣鏋舵墠鍒ゆ柇
+            // 褰撴繁搴撲綅鍑哄簱鏃讹紝鏌ユ壘瀵瑰簲鐨勬祬搴撲綅鏄惁涔熸湁鍑哄簱浠诲姟,濡傛灉鏈夛紝灏卞鍔犲叾浼樺厛绾�
+            if (Utils.isDeepLoc(slaveProperties, sourceLocNo)) {
+                String shallowLoc = Utils.getShallowLoc(slaveProperties, sourceLocNo);
+                LocMast locShallow = locMastService.selectById(shallowLoc);
+                if(!Cools.isEmpty(locShallow) && (locShallow.getLocSts().equals("F") || locShallow.getLocSts().equals("D"))){
+                    moveLocForDeepLoc(loc.getCrnNo(), sourceLocNo);
+                }
+            }
+        }
+
         // 淇濆瓨宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
@@ -559,7 +651,7 @@
             throw new CoolException("搴撲綅涓嶅瓨鍦�");
         }
         //鏌ヨ搴撲綅鐘舵��
-        if (locMast.getLocSts().equals("O")){
+        if (locMast.getLocSts().equals("O") || locMast.getLocSts().equals("D")){
             //鏇存柊搴撲綅鐘舵��
             locMast.setLocSts("F");
 //            boolean b = locMastService.updateById(locMast);
@@ -575,6 +667,7 @@
             LocDetl sqlParam = new LocDetl();
             sqlParam.setLocNo(locMast.getLocNo());
             sqlParam.setMatNo(adjust.getMatNo());
+            sqlParam.setSupplier(adjust.getSupplier());
             LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam));
             // 淇濆瓨鏂板簱瀛樻槑缁�
             if (Cools.isEmpty(one)) {
@@ -586,11 +679,29 @@
                 locDetl.setLocNo(locMast.getLocNo());
                 locDetl.setQty(adjust.getCount()); // 鏁伴噺
                 VersionUtils.setLocDetl(locDetl, matCode); // 鐗堟湰鎺у埗
+
+                if (Cools.isEmpty(adjust.getSupplier())){
+                    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+                    locDetl.setSupplier(sdf.format(new Date()));
+                }else {
+                    locDetl.setSupplier(adjust.getSupplier());
+                }
+
+
                 locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
                 locDetl.setModiTime(new Date());
                 locDetl.setAppeUser(userId);
                 locDetl.setAppeTime(new Date());
                 locDetl.setZpallet(param.getZpallet());//鎵樼洏鍙�
+                locDetl.setVendor(adjust.getVendor());
+                locDetl.setSource(adjust.getSource());
+                locDetl.setSupplier(adjust.getSupplier());
+                locDetl.setQtyBox(matCode.getStr6());
+                locDetl.setAllQty(matCode.getStr6()*adjust.getCount());
+                locDetl.setAllWeight(matCode.getWeight()*adjust.getCount()+30);
+                locDetl.setStr3(matCode.getStr3());
+                locDetl.setStr4(matCode.getStr4());
+                locDetl.setStr5(matCode.getStr5());
                 if (!locDetlService.insert(locDetl)) {
                     throw new CoolException("淇濆瓨搴撳瓨鏄庣粏澶辫触");
                 }
@@ -611,13 +722,25 @@
                             throw new CoolException("娓呴櫎搴撳瓨鏄庣粏澶辫触");
                         }
                     } else {
+                        MatCode matCode = matCodeService.selectById(adjust.getMatNo());
                         LocDetl sqlParam1 = new LocDetl();
                         sqlParam1.setQty(adjust.getCount());
+                        sqlParam1.setSupplier(adjust.getSupplier());
                         sqlParam1.setModiTime(new Date());
                         sqlParam1.setModiUser(userId);
+                        sqlParam1.setVendor(adjust.getVendor());
+                        sqlParam1.setSource(adjust.getSource());
+                        sqlParam1.setSupplier(adjust.getSupplier());
+                        sqlParam1.setQtyBox(matCode.getStr6());
+                        sqlParam1.setAllQty(matCode.getStr6()*adjust.getCount());
+                        sqlParam1.setAllWeight(matCode.getWeight()*adjust.getCount()+30);
+                        sqlParam1.setStr5(matCode.getStr5());
+                        sqlParam1.setStr4(matCode.getStr4());
+                        sqlParam1.setStr3(matCode.getStr3());
                         if (!locDetlService.update(sqlParam1, new EntityWrapper<LocDetl>()
                                 .eq("loc_no", locMast.getLocNo())
-                                .eq("mat_no", adjust.getMatNo()))) {
+                                .eq("mat_no", adjust.getMatNo())
+                                .eq("supplier",adjust.getSupplier()))) {
                             throw new CoolException("淇敼搴撳瓨鏄庣粏澶辫触");
                         }
                     }
@@ -788,4 +911,111 @@
         }
     }
 
+    /**
+     * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆
+     */
+    public void moveLocForDeepLoc(Integer crnNo, String locNo){
+        // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
+        if (Utils.isDeepLoc(slaveProperties, locNo)) {
+            String shallowLocNo = Utils.getShallowLoc(slaveProperties, locNo);
+            LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+            // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
+            if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
+                WrkMast waitWrkMast = wrkMastService.selectByLocNo(shallowLocNo);
+                if (null == waitWrkMast) {
+                    log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+                    throw new CoolException(shallowLocNo + "搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒");
+                } else {
+                    waitWrkMast.setIoPri(15D);
+                    waitWrkMast.setModiTime(new Date());
+                    if (!wrkMastService.updateById(waitWrkMast)) {
+                        log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+                        throw new CoolException("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿=" + waitWrkMast.getWrkNo());
+                    }
+                }
+            } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+                // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
+                List<Integer> rows = locMastService.queryDistinctRow(crnNo);
+                LocMast loc = null;
+                for (Integer row : rows) {
+                    if (Utils.isDeepLoc(slaveProperties, row)) {
+                        loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1(),shallowLoc.getLocType2(),shallowLoc.getLocType3());
+                        if (null != loc) { break; }
+                    }
+                }
+                if (null == loc) {
+                    for (Integer row : rows) {
+                        if (Utils.isShallowLoc(slaveProperties, row)) {
+                            loc = locMastService.queryFreeLocMast(row, shallowLoc.getLocType1(),shallowLoc.getLocType2(),shallowLoc.getLocType3());
+                            if (null != loc) { break; }
+                        }
+                    }
+                }
+                if (null == loc) {
+                    throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo());
+                }
+
+                // 鑾峰彇宸ヤ綔鍙�
+                int workNo = commonService.getWorkNo(0);
+                // 淇濆瓨宸ヤ綔妗�
+                WrkMast wrkMast = new WrkMast();
+                wrkMast.setWrkNo(workNo);
+                wrkMast.setIoTime(new Date());
+                wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+                wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+                wrkMast.setIoPri(13D);
+                wrkMast.setCrnNo(crnNo);
+                wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�
+                wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅
+                wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘
+                wrkMast.setPicking("N"); // 鎷f枡
+                wrkMast.setExitMk("N"); // 閫�鍑�
+                wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘
+                wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮�
+                wrkMast.setLinkMis("N");
+                wrkMast.setAppeTime(new Date());
+                wrkMast.setModiTime(new Date());
+                if (!wrkMastService.insert(wrkMast)) {
+                    throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+                }
+                // 宸ヤ綔妗f槑缁嗕繚瀛�
+                if (shallowLoc.getLocSts().equals("F")) {
+                    List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo()));
+                    for (LocDetl locDetl : locDetls) {
+                        WrkDetl wrkDetl = new WrkDetl();
+                        wrkDetl.setWrkNo(workNo);
+                        wrkDetl.setIoTime(new Date());
+                        wrkDetl.setQty(locDetl.getQty());
+                        VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗
+                        wrkDetl.setAppeTime(new Date());
+                        wrkDetl.setModiTime(new Date());
+                        if (!wrkDetlService.insert(wrkDetl)) {
+                            throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+                        }
+                    }
+                }
+                // 淇敼婧愬簱浣嶇姸鎬�
+                if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) {
+                    shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害
+                    shallowLoc.setModiTime(new Date());
+                    if (!locMastService.updateById(shallowLoc)){
+                        throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�");
+                    }
+                } else {
+                    throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�");
+                }
+                // 淇敼鐩爣搴撲綅鐘舵��
+                if (loc.getLocSts().equals("O")) {
+                    loc.setLocSts("S"); // S.鍏ュ簱棰勭害
+                    loc.setModiTime(new Date());
+                    if (!locMastService.updateById(loc)) {
+                        throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�");
+                    }
+                } else {
+                    throw new CoolException("绉昏浆澶辫触");
+                }
+            }
+        }
+    }
+
 }

--
Gitblit v1.9.1