From 13a7ee010e75bab8030c7c0be736d0ca02d966d7 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 08 十二月 2023 10:04:11 +0800
Subject: [PATCH] #避让起始列

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |   91 ++++++++++++++++++++++++---------------------
 1 files changed, 48 insertions(+), 43 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index e2e5bbb..b655e3a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1,6 +1,7 @@
 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;
@@ -36,6 +37,8 @@
 
 import java.util.*;
 import java.util.stream.Collectors;
+
+import static com.zy.asrs.utils.Utils.isJson;
 
 /**
  * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔�
@@ -1277,6 +1280,25 @@
             }
 
             if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴�
+                //寮哄埗棰勭暀涓�鍙板皬杞︾粰鍏ュ簱浠诲姟
+                int lev = Utils.getLev(wrkMast.getSourceLocNo());
+                //鑾峰彇褰撳墠妤煎眰鏈夊嚑鍙板彲鐢ㄥ皬杞�
+                int shuttleCount = shuttleDispatchUtils.getShuttleCountByLev(lev);
+                if (shuttleCount >= 2) {//鍙湁鍙敤灏忚溅鏁伴噺澶т簬2锛屾墠杩涜鍏ュ簱浠诲姟棰勭暀灏忚溅
+                    int shuttleWrkInObligateCount = 1;//棰勭暀灏忚溅鏁伴噺
+                    Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1));
+                    if (config != null) {
+                        shuttleWrkInObligateCount = Integer.parseInt(config.getValue());
+                    }
+                    //鍙敤鍑哄簱灏忚溅鏁伴噺(缁欏叆搴撲换鍔¢鐣欎竴鍙拌溅)
+                    int useShuttleCount = shuttleCount - shuttleWrkInObligateCount;
+                    //鏌ヨ妤煎眰宸插垎閰嶈溅杈嗙殑鍑哄簱浠诲姟鏁伴噺
+                    List<WrkMast> wrkMasts = wrkMastService.selectShuttleOutWrkByLev(lev);
+                    if (wrkMasts.size() >= useShuttleCount) {
+                        News.info("{}浠诲姟锛屽綋鍓嶆ゼ灞傚彲鐢ㄥ皬杞}鍙帮紝鍑哄簱浠诲姟宸插垎閰峽}鍙帮紝绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size());
+                        return false;
+                    }
+                }
                 boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐�
                 News.info("{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触");
                 return false;
@@ -2827,51 +2849,15 @@
                 ledCommand.setLocNo(wrkMast.getLocNo());
                 ledCommand.setStaNo(wrkMast.getStaNo());
                 if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
-                    //for (WrkDetl wrkDetl : wrkDetls) {
-                    //    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
-                    //
-                    //    locDetls.forEach(locDetl1 -> {
-                    //        //宸ヤ綔妗d腑瀛樺湪璇ョ墿鏂欏垯璺宠繃
-                    //        String suppCode = "";
-                    //
-                    //        if (wrkDetl.getMatnr().equals(locDetl1.getMatnr())) {
-                    //            Double anfme = 0D;
-                    //            if (locDetl != null) {
-                    //                anfme = locDetl.getAnfme();
-                    //            }
-                    //            if (wrkDetl.getSuppCode() != null) {
-                    //                suppCode = wrkDetl.getSuppCode();
-                    //            }
-                    //            ledCommand.getMatDtos()
-                    //                    .add(new MatDto(wrkDetl.getMatnr()
-                    //                            , wrkDetl.getMaktx()
-                    //                            , wrkDetl.getAnfme()
-                    //                            , (wrkDetl.getAnfme()-anfme)
-                    //                            , wrkDetl.getSpecs()
-                    //                            , suppCode));
-                    //        } else {
-                    //            if (locDetl1.getSuppCode() != null) {
-                    //                suppCode = locDetl1.getSuppCode();
-                    //            }
-                    //            ledCommand.getMatDtos()
-                    //                    .add(new MatDto(locDetl1.getMatnr()
-                    //                            , locDetl1.getMaktx()
-                    //                            , 0D
-                    //                            , locDetl1.getAnfme()
-                    //                            , locDetl1.getSpecs()
-                    //                            , suppCode));
-                    //        }
-                    //    });
-                    //    //LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
-                    //}
                     List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()));
                     locDetls.forEach(locDetl -> {
-                        Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no",wrkMast.getWrkNo());
-                        Utils.wapperSetCondition(wrapper,"batch",locDetl.getBatch());
-                        Utils.wapperSetCondition(wrapper,"three_code",locDetl.getThreeCode());
-                        Utils.wapperSetCondition(wrapper,"dead_time",locDetl.getDeadTime());
-                        Utils.wapperSetCondition(wrapper,"supp_code",locDetl.getSuppCode());//鏂欑鐮�
+                        Wrapper<WrkDetl> wrapper = new EntityWrapper<WrkDetl>().eq("matnr", locDetl.getMatnr()).eq("wrk_no", wrkMast.getWrkNo());
+                        Utils.wapperSetCondition(wrapper, "batch", locDetl.getBatch());
+                        Utils.wapperSetCondition(wrapper, "three_code", locDetl.getThreeCode());
+                        Utils.wapperSetCondition(wrapper, "dead_time", locDetl.getDeadTime());
+                        Utils.wapperSetCondition(wrapper, "supp_code", locDetl.getSuppCode());//鏂欑鐮�
                         WrkDetl detl = wrkDetlService.selectOne(wrapper);
+
                         if (Cools.isEmpty(detl)) {
                             String suppCode = "";
                             if (locDetl.getSuppCode() != null) {
@@ -2880,13 +2866,32 @@
                             ledCommand.getMatDtos().add(new MatDto(locDetl.getMatnr(), locDetl.getMaktx(), 0D, locDetl.getAnfme(), locDetl.getSpecs(), suppCode));
                         } else {
                             String suppCode = "";
+                            String orderNo = detl.getOrderNo();
                             if (detl.getSuppCode() != null) {
                                 suppCode = detl.getSuppCode();
                             }
-                            ledCommand.getMatDtos().add(new MatDto(detl.getMatnr(), detl.getMaktx(), detl.getAnfme(), (locDetl.getAnfme() - detl.getAnfme()), detl.getSpecs(), suppCode));
+                            if (isJson(orderNo)) {
+                                JSONArray orders = JSON.parseArray(orderNo);
+                                for (Object order : orders) {
+                                    JSONObject order1 = (JSONObject) order;
+                                    ledCommand.getMatDtos().add(new MatDto(detl.getMatnr(), detl.getMaktx(), (Double) order1.get("anfme"), (locDetl.getAnfme() - detl.getAnfme()), detl.getSpecs(), suppCode,(String) order1.get("orderNo")));
+                                }
+                            } else {
+                                ledCommand.getMatDtos().add(new MatDto(detl.getMatnr(), detl.getMaktx(), detl.getAnfme(), (locDetl.getAnfme() - detl.getAnfme()), detl.getSpecs(), suppCode,detl.getOrderNo()));
+                            }
+
+
                         }
                     });
+
+                    if (locDetls.isEmpty()) {
+                        List<WrkDetl> wrkDetls = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo()));
+                        wrkDetls.forEach(wrkDetl -> {
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getAnfme(), wrkDetl.getAnfme(), wrkDetl.getSpecs(), wrkDetl.getSuppCode()));
+                        });
+                    }
                 }
+
                 commands.add(ledCommand);
             }
             Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());

--
Gitblit v1.9.1