From ef106c9a6002872892de9db355ef7cd37512dba5 Mon Sep 17 00:00:00 2001
From: whycq <10027870+whycq@user.noreply.gitee.com>
Date: 星期五, 12 一月 2024 10:10:17 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java   |    3 
 src/main/java/com/zy/asrs/utils/Utils.java                    |   76 +++++++++
 src/main/java/com/zy/asrs/task/LocMoveAllScheduler.java       |   91 +++++++++++
 src/main/java/com/zy/common/service/CommonService.java        |  190 ++++++++++++++++++-----
 src/main/java/com/zy/asrs/task/handler/LocMoveAllHandler.java |   80 ++++++++++
 5 files changed, 397 insertions(+), 43 deletions(-)

diff --git a/src/main/java/com/zy/asrs/task/LocMoveAllScheduler.java b/src/main/java/com/zy/asrs/task/LocMoveAllScheduler.java
new file mode 100644
index 0000000..1d9c77b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/LocMoveAllScheduler.java
@@ -0,0 +1,91 @@
+package com.zy.asrs.task;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.BasCrnp;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.BasCrnpService;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.WrkMastService;
+import com.zy.asrs.task.core.ReturnT;
+import com.zy.asrs.task.handler.LocMoveAllHandler;
+import com.zy.asrs.utils.Utils;
+import com.zy.common.properties.SlaveProperties;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/7/7
+ */
+@Slf4j
+@Component
+public class LocMoveAllScheduler {
+
+    @Value("${loc-move.move-all}")
+    private boolean moveAll;
+
+    @Autowired
+    private LocMoveAllHandler locMoveAllHandler;
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private BasCrnpService basCrnpService;
+    @Autowired
+    private SlaveProperties slaveProperties;
+
+    @Scheduled(cron = "0/3 * * * * ? ")
+    private void execute(){
+        if (!moveAll) return;
+
+        List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>());
+        if (basCrnps.isEmpty()){
+            return;
+        }
+        for (BasCrnp basCrnp:basCrnps){
+            List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("crn_no",basCrnp.getCrnNo()));
+            if (Cools.isEmpty(wrkMasts) || wrkMasts.size()==0) {
+                LocMast locMastStart = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","D").eq("crn_no",basCrnp.getCrnNo()).orderBy("appe_time",true));//绌烘澘鎵�鍦�
+                if (Cools.isEmpty(locMastStart)){
+                    continue;
+                }
+                if (!Utils.isShallowLoc(slaveProperties, locMastStart.getLocNo())){
+                    String shallowLocNo = Utils.getShallowLoc(slaveProperties, locMastStart.getLocNo());
+                    LocMast locNo = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLocNo));
+                    if (!locNo.getLocSts().equals("O")){
+                        locMastStart = locNo;
+                    }
+                }
+                LocMast locMastEnd = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","O").eq("crn_no",basCrnp.getCrnNo()).ne("modi_user",66).orderBy("row1",true));//鐩爣
+                if (Cools.isEmpty(locMastEnd)){
+                    continue;
+                }
+                if (!Utils.isShallowLoc(slaveProperties, locMastEnd.getLocNo())){
+                    String shallowLocNo = Utils.getShallowLoc(slaveProperties, locMastEnd.getLocNo());
+                    LocMast locNo = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", shallowLocNo));
+                    if (locNo.getLocSts().equals("O")){
+
+                    }else {
+                        locMastEnd.setModiUser(66L);
+                        locMastService.updateById(locMastEnd);
+                        continue;
+                    }
+                }
+//                if (Cools.isEmpty(locMastStart) || Cools.isEmpty(locMastEnd)){
+
+                ReturnT<String> result = locMoveAllHandler.start(locMastStart,locMastEnd,basCrnp.getCrnNo());
+                if (!result.isSuccess()) {
+                    log.error("澶勭悊澶辫触");
+                }
+            }
+        }
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/LocMoveAllHandler.java b/src/main/java/com/zy/asrs/task/handler/LocMoveAllHandler.java
new file mode 100644
index 0000000..3dad35c
--- /dev/null
+++ b/src/main/java/com/zy/asrs/task/handler/LocMoveAllHandler.java
@@ -0,0 +1,80 @@
+package com.zy.asrs.task.handler;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Cools;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.WorkService;
+import com.zy.asrs.task.AbstractHandler;
+import com.zy.asrs.task.core.ReturnT;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+/**
+ * Created by vincent on 2020/7/6
+ */
+@Slf4j
+@Service
+public class LocMoveAllHandler extends AbstractHandler<String> {
+
+    @Autowired
+    private WorkService workService;
+    @Autowired
+    private LocMastService locMastService;
+    private final Integer BAY = 6;//PINGSHANG
+
+
+    @Transactional
+    public ReturnT<String> start(LocMast locMastStart, LocMast locMastEnd, Integer crnNo) {
+        try {
+            LocMast locMastEndNew = null;
+            Integer row1 = locMastStart.getRow1();
+            Integer row2 = 0;
+            Integer bay1 = locMastStart.getBay1();
+            Integer lev1 = locMastStart.getLev1();
+            if (row1==crnNo*2){
+                row1 = crnNo*2-1;
+                row2 = row1+1;
+            }else {
+                row1=crnNo*2;
+                row2 = row1-1;
+            }
+            Integer signInt = 0;
+            while (Cools.isEmpty(locMastEndNew) && lev1<10 && signInt<100){
+                signInt++;
+
+                bay1 = BAY+1-bay1;
+                if ((bay1<BAY && bay1>0) || (bay1.equals(BAY) && lev1>3)){
+
+                }else {
+                    bay1=1;
+                    lev1++;
+                }
+                locMastEndNew = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","O").eq("row1",row1).eq("bay1",bay1).eq("lev1",lev1).ne("modi_user",66));
+                LocMast locMastEndNew2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","O").eq("row1",row2).eq("bay1",bay1).eq("lev1",lev1).ne("modi_user",66));
+                if (!Cools.isEmpty(locMastEndNew) && !Cools.isEmpty(locMastEndNew2)){
+                    locMastEnd = locMastEndNew;
+                }
+                if ((bay1<BAY && bay1>0)){
+                    bay1++;
+                }
+                if (signInt==100){
+                    bay1=1;
+                    lev1++;
+                    signInt=0;
+                }
+            }
+            workService.locMove(locMastStart.getLocNo(), locMastEnd.getLocNo(), 66L);
+        } catch (Exception e) {
+            log.error("fail", e);
+            e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return FAIL.setMsg(e.getMessage());
+        }
+        return SUCCESS;
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index d3ad45c..68ac6c0 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -272,6 +272,7 @@
                 case 11:
                     // 榛樿鐩爣搴撲綅鏄┖鏉�
                     String locSts = "D";
+                    Long modiUser = wrkMast.getModiUser();
                     // 搴撲綅绉昏浆鍒ゆ柇鏄惁涓虹┖鏉跨Щ杞�
                     if (wrkMast.getEmptyMk().equals("N")) {
                         locSts = "F";
@@ -289,6 +290,7 @@
                         sourceLoc.setLocSts("O");
                         sourceLoc.setModiTime(now);
                         sourceLoc.setIoTime(now);
+                        sourceLoc.setModiUser(modiUser);
                         if (!locMastService.updateById(sourceLoc)) {
 //                            exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
                             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -300,6 +302,7 @@
                     locMast.setBarcode(wrkMast.getBarcode());
                     locMast.setIoTime(now);
                     locMast.setModiTime(now);
+                    locMast.setModiUser(modiUser);
                     if (!locMastService.updateById(locMast)) {
 //                        exceptionHandle("搴撲綅绉昏浆 ===>> 淇敼鐩爣搴撲綅鐘舵�佸け璐ワ紱[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
                         TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index e80f7e5..50e5c94 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -2,6 +2,7 @@
 
 import com.core.common.Arith;
 import com.core.common.Cools;
+import com.core.exception.CoolException;
 import com.zy.common.properties.SlaveProperties;
 
 import java.text.DecimalFormat;
@@ -172,4 +173,79 @@
         System.out.println(deepRow);
 
     }
+
+    //搴撲綅鎺掑彿鍒嗛厤
+    public static int[] LocNecessaryParameters(Integer whsType, Integer curRow, Integer crnNumber) {
+        switch (whsType){
+            case 1://缁忓吀鍙屼几搴撲綅
+                return LocNecessaryParametersDoubleExtension(whsType, curRow, crnNumber);
+            default:
+                return LocNecessaryParametersMove(whsType, curRow, crnNumber);//moveCrnNo
+        }
+    }
+
+    //缁忓吀鍙屼几搴撲綅
+    public static int[] LocNecessaryParametersDoubleExtension(Integer whsType, Integer curRow, Integer crnNumber) {
+        int[] necessaryParameters = new int[]{0, 0, 0, 0};
+        if (BooleanWhsTypeSta(whsType)) {
+            necessaryParameters[0] = crnNumber; // 杞娆℃暟
+            //婊℃澘姝e父鍏ュ簱
+            if (curRow.equals(crnNumber * 4)) {
+                necessaryParameters[1] = 1;    //curRow   鏈�娣卞簱浣嶆帓
+                necessaryParameters[2] = 1;     //crnNo     鍫嗗灈鏈哄彿
+                necessaryParameters[3] = 2;    //nearRow  鏈�娴呭簱浣嶆帓
+            } else if (curRow.equals(crnNumber * 4 - 3)) {
+                necessaryParameters[1] = 4;    //curRow   鏈�娣卞簱浣嶆帓
+                necessaryParameters[2] = 1;     //crnNo     鍫嗗灈鏈哄彿
+                necessaryParameters[3] = 3;    //nearRow  鏈�娴呭簱浣嶆帓
+            } else {
+                curRow = curRow + 4;
+                if (curRow < 1 || curRow > (crnNumber * 4)) {
+                    throw new CoolException("搴撲綅鎺掑彿寮傚父锛氭帓鍙凤細" + curRow);
+                }
+                if ((curRow - 1) % 4 == 0) {
+                    necessaryParameters[1] = curRow;    //curRow   鏈�娣卞簱浣嶆帓
+                    necessaryParameters[2] = (curRow + 3) / 4;     //crnNo     鍫嗗灈鏈哄彿
+                    necessaryParameters[3] = curRow + 1;    //nearRow  鏈�娴呭簱浣嶆帓
+                } else if (curRow % 4 == 0) {
+                    necessaryParameters[1] = curRow;    //curRow   鏈�娣卞簱浣嶆帓
+                    necessaryParameters[2] = curRow / 4;     //crnNo     鍫嗗灈鏈哄彿
+                    necessaryParameters[3] = curRow - 1;    //nearRow  鏈�娴呭簱浣嶆帓
+                } else {
+                    throw new CoolException("搴撲綅鎺掑彿寮傚父锛氭帓鍙凤細" + curRow);
+                }
+            }
+        }
+        return necessaryParameters;
+    }
+
+    //缁忓吀鍙屼几搴撲綅绉诲簱
+    public static int[] LocNecessaryParametersMove(Integer whsType, Integer curRow, Integer moveCrnNo) {
+        int[] necessaryParameters = new int[]{0, 0, 0, 0};
+        necessaryParameters[0] = 2; // 杞娆℃暟
+        if (curRow.equals(moveCrnNo*4-2)){
+            necessaryParameters[1] = curRow+2;    //curRow   鏈�娣卞簱浣嶆帓
+            necessaryParameters[2] = moveCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+            necessaryParameters[3] = curRow+1;    //nearRow  鏈�娴呭簱浣嶆帓
+        }else {
+            necessaryParameters[1] = curRow-2;    //curRow   鏈�娣卞簱浣嶆帓
+            necessaryParameters[2] = moveCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+            necessaryParameters[3] = curRow-1;    //nearRow  鏈�娴呭簱浣嶆帓
+        }
+        return necessaryParameters;
+    }
+
+    public static boolean BooleanWhsTypeSta(Integer whsType) {
+        if (whsType == 6) {
+            return true;
+        }
+        return false;
+    }
+
+    public static boolean BooleanWhsTypeSta(Integer whsType, Integer staDescId) {
+        if (whsType == 6 && staDescId != 11 && staDescId != 111) {
+            return true;
+        }
+        return false;
+    }
 }
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index fc3ddf7..703e347 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -118,49 +118,6 @@
         // 鐩爣搴撲綅
         LocMast locMast = null;
 
-//        // 闈犺繎鎽嗘斁瑙勫垯 --- 鍚屽ぉ鍚岃鏍肩墿鏂�
-//        if (!Cools.isEmpty(matNos)) {
-//            List<String> locNos = locDetlService.getSameDetlToday(matNos.get(0), sRow, eRow);
-//            for (String locNo : locNos) {
-//                if (Utils.isShallowLoc(slaveProperties, locNo)) {
-//                    continue;
-//                }
-//                String shallowLocNo = Utils.getShallowLoc(slaveProperties, locNo);
-//                // 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣�
-//                LocMast shallowLoc = locMastService.selectById(shallowLocNo);
-//                if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) {
-//                    if (VersionUtils.locMoveCheckLocType(shallowLoc, locTypeDto)) {
-//                        if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) {
-//                            locMast = shallowLoc;
-//                            crnNo = locMast.getCrnNo();
-//                            break;
-//                        }
-//                    }
-//                }
-//            }
-//        }
-//
-//        // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭
-//        if (staDescId == 10) {
-//            List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow));
-//            if (locMasts.size() > 0) {
-//                for (LocMast loc : locMasts) {
-//                    if (Utils.isShallowLoc(slaveProperties, loc.getLocNo())) {
-//                        continue;
-//                    }
-//                    String shallowLocNo = Utils.getShallowLoc(slaveProperties,  loc.getLocNo());
-//                    // 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣�
-//                    LocMast shallowLoc = locMastService.selectById(shallowLocNo);
-//                    if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) {
-//                        if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) {
-//                            locMast = shallowLoc;
-//                            crnNo = locMast.getCrnNo();
-//                            break;
-//                        }
-//                    }
-//                }
-//            }
-//        }
 
         // 濡傛灉娌℃湁鐩歌繎鐗╂枡锛屽垯鎸夎鍒欒疆璇㈣揣鏋�
         if (null == locMast) {
@@ -320,5 +277,152 @@
                 throw new CoolException("鏍规嵁鍏ュ簱绔欒幏鍙栧簱浣嶆帓鍙峰垎閰嶅け璐ワ紝鍏ュ簱绔欙細" + sourceStaNo);
         }
     }
+    /**
+     * 妫�绱㈠簱浣嶅彿
+     * @param whsType 绫诲瀷 1:鍙屾繁寮忚揣鏋�
+     * @param staDescId 璺緞宸ヤ綔绫诲瀷
+     * @param sourceStaNo 婧愮珯
+     * @param matnr 鍟嗗搧缂栧彿闆嗗悎
+     * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿
+     */
+    @Transactional
+    public StartupDto getLocNoRun(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times) {
+        if (Cools.isEmpty(matnr)) {  //鐗╂枡鍙�
+            matnr = "";
+        }
+        if (Cools.isEmpty(batch)) {  //绠卞彿
+            batch = "";
+        }
+        if (Cools.isEmpty(grade)) {  //澶囩敤
+            grade = "";
+        }
+
+        StartupDto startupDto = new StartupDto();
+        RowLastno rowLastno = rowLastnoService.selectById(whsType);
+        if (Cools.isEmpty(rowLastno)) {
+            throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
+        }
+
+        // ===============>>>> 寮�濮嬫墽琛�
+        int curRow = rowLastno.getCurrentRow();
+        int sRow = rowLastno.getsRow();
+        int eRow = rowLastno.geteRow();
+        int crn_qty = rowLastno.getCrnQty();
+        int rowCount = eRow - sRow + 1;
+        // 鐩爣鍫嗗灈鏈哄彿
+        int crnNo = 0;
+        // 鐩爣搴撲綅
+        LocMast locMast = null;
+
+
+        // 濡傛灉娌℃湁鐩歌繎鐗╂枡锛屽垯鎸夎鍒欒疆璇㈣揣鏋�
+        if (null == locMast) {
+            Shelves shelves = new Shelves(rowCount, crn_qty);
+            int divides = (int) Arith.divides(1, curRow - 1, 2);
+            curRow = (int) Arith.remainder(curRow, 2);
+            if (curRow == 0) {
+                curRow = 2;
+            }
+            for (int i = 0; i < shelves.group; i ++) {
+                curRow = shelves.start(curRow);
+                if (curRow < 0) {
+                    throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳");
+                }
+                Integer crnNo1 = shelves.get(curRow);
+                crnNo1 = crnNo1 + divides*1;
+                if (basCrnpService.checkSiteError(crnNo1, true)) {
+                    crnNo = crnNo1;
+                    curRow = curRow + divides*2;
+                    break;
+                }
+            }
+        }
+
+        if (crnNo == 0) {
+            throw new CoolException("娌℃湁鍙敤鐨勫爢鍨涙満");
+        }
+        // 鑾峰彇鐩爣绔�
+        Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                .eq("type_no", staDescId)
+                .eq("stn_no", sourceStaNo)
+                .eq("crn_no", crnNo);
+        StaDesc staDesc = staDescService.selectOne(wrapper);
+        if (Cools.isEmpty(staDesc)) {
+            log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
+            throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�");
+        }
+        BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn());
+        if (!staNo.getAutoing().equals("Y")) {
+            throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
+        }
+
+        // 鏇存柊搴撲綅鎺掑彿
+        rowLastno.setCurrentRow(curRow);
+        rowLastnoService.updateById(rowLastno);
+
+        // 寮�濮嬫煡鎵惧簱浣� ==============================>>
+
+        // 1.褰撴绱㈠簱鎺掍负娴呭簱浣嶆帓鏃讹紝浼樺厛瀵绘壘褰撳墠搴撴帓鐨勬繁搴撲綅鎺�
+        if (locMast == null) {
+            if (Utils.isShallowLoc(slaveProperties, curRow)) {
+                Integer deepRow = Utils.getDeepRow(slaveProperties, curRow);
+                locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1());
+                // todo:luxiaotao 濡傛灉鐢ㄦ祬鎺掓壘鍒扮殑娣卞簱浣嶏紝閭d箞鍒欓渶瑕佸垽鏂繖涓繁搴撲綅瀵瑰簲鐨勬祬搴撲綅鏄惁鏈夎揣锛團銆乆銆丏锛�
+                // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+                if (!locMastService.checkEmptyCount(locMast)) {
+                    locMast = null;
+                }
+            }
+            if (Cools.isEmpty(locMast)) {
+                locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1());
+                // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣�
+                if (!locMastService.checkEmptyCount(locMast)) {
+                    locMast = null;
+                }
+                // 鐩爣搴撲綅 ===>> 娴呭簱浣嶏紝 鍒欐牎楠屽叾娣卞簱浣嶆槸鍚︿负 F D X
+                if (null != locMast && Utils.isShallowLoc(slaveProperties, locMast.getLocNo())) {
+                    LocMast deepLoc = locMastService.selectById(Utils.getDeepLoc(slaveProperties, locMast.getLocNo()));
+                    if (!deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("X")) {
+                        locMast = null;
+                    }
+                }
+                // 鐩爣搴撲綅 ===>> 娣卞簱浣嶏紝 鍒欐牎楠屽叾娴呭簱浣嶆槸鍚︿负 O
+                if (null != locMast && Utils.isDeepLoc(slaveProperties, locMast.getLocNo())) {
+                    LocMast shallowLoc = locMastService.selectById(Utils.getShallowLoc(slaveProperties, locMast.getLocNo()));
+                    if (!shallowLoc.getLocSts().equals("O")) {
+                        locMast = null;
+                    }
+                }
+            }
+        }
+
+        // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣�
+        if (Cools.isEmpty(locMast)) {
+            // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
+            if (times < rowCount) {
+                times = times + 1;
+                return getLocNoRun(1, staDescId, sourceStaNo, matnr, batch, grade,moveCrnNo, locTypeDto, times);
+            }
+
+            // 杞昏揣鐗╂壘杞诲簱浣嶄负绌烘椂锛屽彲浠ュ幓鎵鹃噸搴撲綅浠�
+            //if (locTypeDto.getLocType1() == 1) {
+            //    locTypeDto.setLocType1((short) 2);
+            //    return getLocNoRun(1, staDescId, sourceStaNo, matnr, batch, grade,moveCrnNo, locTypeDto, times);
+            //}
+            log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times);
+            throw new CoolException("娌℃湁绌哄簱浣�");
+        }
+        String locNo = locMast.getLocNo();
+
+        // 鐢熸垚宸ヤ綔鍙�
+        int workNo = getWorkNo(0);
+        // 杩斿洖dto
+        startupDto.setWorkNo(workNo);
+        startupDto.setCrnNo(crnNo);
+        startupDto.setSourceStaNo(sourceStaNo);
+        startupDto.setStaNo(staNo.getDevNo());
+        startupDto.setLocNo(locNo);
+        return startupDto;
+    }
 
 }

--
Gitblit v1.9.1