From ffe256867f19115a442d96abadd270d2c17835a9 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期五, 08 十二月 2023 08:19:52 +0800
Subject: [PATCH] #出库强制预留小车给入库任务
---
src/main/java/com/zy/asrs/service/WrkMastService.java | 3 +
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 19 +++++++++
src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java | 39 +++++++++++++++++++
src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java | 5 ++
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 2 +
src/main/resources/mapper/WrkMastMapper.xml | 9 ++++
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 40 ++++++++++++++++++++
7 files changed, 116 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 55b70eb..ae8d873 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -61,6 +61,8 @@
List<WrkMast> selectShuttleWrkByLev(String lev);
+ List<WrkMast> selectShuttleOutWrkByLev(String lev);
+
WrkMast selectLiftWrkMast(Integer liftNo);
List<WrkMast> selectInOutWrkMast();//鏌ヨ鍑哄叆搴撳伐浣滄。
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index ac64813..ebcb626 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -20,4 +20,7 @@
//鏌ヨ鎸囧畾妤煎眰宸插垎閰嶈溅杈嗙殑浠诲姟
List<WrkMast> selectShuttleWrkByLev(Integer lev);
+ //鏌ヨ鎸囧畾妤煎眰宸插垎閰嶈溅杈嗙殑鍑哄簱浠诲姟
+ List<WrkMast> selectShuttleOutWrkByLev(Integer lev);
+
}
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 770c903..631a492 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1277,6 +1277,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;
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
index 466894c..04b26fd 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -37,4 +37,9 @@
public List<WrkMast> selectShuttleWrkByLev(Integer lev) {
return this.baseMapper.selectShuttleWrkByLev("%" + lev);
}
+
+ @Override
+ public List<WrkMast> selectShuttleOutWrkByLev(Integer lev) {
+ return this.baseMapper.selectShuttleOutWrkByLev("%" + lev);
+ }
}
diff --git a/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java b/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
index 92b3b45..c978bc0 100644
--- a/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
+++ b/src/main/java/com/zy/common/utils/ShuttleDispatchUtils.java
@@ -467,4 +467,43 @@
return true;//鏃犲厖鐢典换鍔℃斁琛� || 鍘诲厖鐢垫々涓斁琛�
}
+ /**
+ * 鑾峰彇妤煎眰鍙敤绌洪棽灏忚溅鏁伴噺
+ */
+ public int getShuttleCountByLev(int lev) {
+ int count = 0;
+ for (ShuttleSlave slave : slaveProperties.getShuttle()) {
+ //鑾峰彇鍥涘悜绌挎杞︾嚎绋�
+ NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId());
+ if (shuttleThread == null) {
+ continue;
+ }
+
+ NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol();
+ if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) {
+ continue;
+ }
+
+ if (checkChargeWrk(slave.getId())) {
+ continue;//瀛樺湪鍏呯數浠诲姟锛岃繃婊ゅ皬杞�
+ }
+
+ if (!shuttleProtocol.isIdle()) {
+ continue;//灏忚溅蹇欑涓�
+ }
+
+ if (shuttleProtocol.getSuspendState() == 1) {
+ //灏忚溅澶勪簬绠″埗涓�
+ continue;
+ }
+
+ if (shuttleProtocol.getPoint().getZ() == lev) {
+ //鍚屼竴妤煎眰绌洪棽鍙敤灏忚溅
+ count++;
+ continue;
+ }
+ }
+ return count;
+ }
+
}
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 0ade878..fbfb90f 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -58,6 +58,26 @@
add(309);add(312);
}};
+ public static final ArrayList<Integer> staNos2 = new ArrayList<Integer>() {{
+ add(302);add(304);
+ add(305);add(306);
+ add(307);add(308);
+ add(310);add(311);
+ add(312);add(313);
+ add(314);add(315);
+ add(316);add(318);
+ add(319);add(320);
+ add(321);add(322);
+ add(323);add(324);
+ add(326);add(327);
+ add(328);add(329);
+ add(330);add(332);
+ add(334);add(335);
+ add(336);add(337);
+ add(338);add(342);
+ add(343);add(344);
+ }};
+
//楂樹綆淇″彿绔欑偣
public static final ArrayList<Integer> locType1StaNos = new ArrayList<Integer>() {{
add(100);add(103);
@@ -250,6 +270,26 @@
}
}
+ Thread.sleep(100);
+ for (Integer staNo : staNos2) {
+ OperateResultExOne<byte[]> result5 = siemensS7Net.Read("DB" + staNo + ".0", (short) 48);
+ if (result5.IsSuccess) {
+ StaProtocol staProtocol = station.get(staNo);
+ if (null == staProtocol) {
+ staProtocol = new StaProtocol();
+ staProtocol.setSiteId(staNo);
+ station.put(staNo, staProtocol);
+ }
+
+ boolean[] status1 = siemensS7Net.getByteTransform().TransBool(result5.Content, 8, 1);
+ boolean[] status2 = siemensS7Net.getByteTransform().TransBool(result5.Content, 21, 1);
+ staProtocol.setWorkNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 34)); // 宸ヤ綔鍙�
+ staProtocol.setStaNo(siemensS7Net.getByteTransform().TransInt16(result.Content, 40)); // 鐩爣绔�
+ staProtocol.setAutoing(status1[0]); // 鑷姩
+ staProtocol.setLoading(status2[2]); // 鏈夌墿
+ }
+ }
+
if (result.IsSuccess && result1.IsSuccess) {
OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆慬id:{1}] <<<<< 瀹炴椂鏁版嵁鏇存柊鎴愬姛",DateUtils.convert(new Date()), slave.getId()));
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 761b714..8bb543e 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -161,7 +161,14 @@
<select id="selectShuttleWrkByLev" resultMap="BaseResultMap">
select * from dbo.asr_wrk_mast
where shuttle_no is not null
- and ((wrk_sts not in (14,15) and loc_no like #{lev}) or (wrk_sts not in (34,35) and source_loc_no like #{lev}))
+ and ((wrk_sts not in (9,10) and loc_no like #{lev}) or (wrk_sts not in (29,30) and source_loc_no like #{lev}))
+ order by io_pri desc,wrk_sts desc
+ </select>
+
+ <select id="selectShuttleOutWrkByLev" resultMap="BaseResultMap">
+ select * from dbo.asr_wrk_mast
+ where shuttle_no is not null
+ and (wrk_sts not in (29,30) and source_loc_no like #{lev})
order by io_pri desc,wrk_sts desc
</select>
--
Gitblit v1.9.1