From e4ce58dbf41ba490d9c68bfd90a078c229a93bc7 Mon Sep 17 00:00:00 2001
From: 野心家 <1051256694@qq.com>
Date: 星期三, 15 三月 2023 13:04:24 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/WrkMastService.java | 3 +
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 128 ++++++++++++++++++++++++++++++++++++++++++
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 +++
5 files changed, 144 insertions(+), 3 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index 9443bfe..122f6c8 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -112,5 +112,5 @@
@Select("select * from where crn_no=#{crnNo} and wrk_sts=11 and io_type>100 order by io_pri desc,io_time desc,wrk_no ASC")
public List<WrkMast> selectWrkIoType(@Param("crnNo") Integer crnNo);
-
+ public WrkMast selectTop1(@Param("wrkNo")List<Integer> wrkNo);
}
diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java
index 3ec7f59..5fbb4b8 100644
--- a/src/main/java/com/zy/asrs/service/WrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/WrkMastService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.service.IService;
import com.zy.asrs.entity.WrkMast;
+import io.swagger.models.auth.In;
import java.util.List;
@@ -17,4 +18,6 @@
List<WrkMast> selectWrkIoType(Integer crnNo);
+ WrkMast selectTop1(List<Integer> wrkNO);
+
}
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 34b993d..36f2230 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -689,9 +689,133 @@
/**
* 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣�
- * 鏍规嵁鍏ュ簱鏃堕棿杩涜鎺掑簭鍏ュ簱
+ * 鏍规嵁浼樺厛绾э紝鍏ュ簱鏃堕棿杩涜鎺掑簭鍏ュ簱
*/
public synchronized void crnStnToLoc(CrnSlave slave, CrnProtocol crnProtocol) {
+ String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
+ List<Integer> wrkMasts= new ArrayList<>();
+ for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) {
+ // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅
+ DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId());
+ StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo());
+ if (staProtocol == null) {
+ continue;
+ } else {
+ staProtocol = staProtocol.clone();
+ }
+ // 鏌ヨ绔欑偣璇︾粏淇℃伅
+ BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo());
+ if (staDetl == null) {
+ News.error(methodName + ":鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo());
+ continue;
+ }
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() >= 9990 && staProtocol.isInEnable()
+ && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) {
+ // 鑾峰彇宸ヤ綔鐘舵�佷负2锛堣澶囦笂璧帮級鐨勫叆搴撳伐浣滄。
+ WrkMast wrkMast = wrkMastMapper.selectPakInStep2(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo());
+ if (null == wrkMast) {
+// News.error("鏌ヨ鏃犲緟鍏ュ簱鏁版嵁--wrk_sts=2, 宸ヤ綔鍙�={}", staProtocol.getWorkNo());
+ continue;
+ }
+ wrkMasts.add(wrkMast.getWrkNo());
+ }
+ }
+ WrkMast wrkMast=wrkMastService.selectTop1(wrkMasts);
+
+
+ // 鑾峰彇搴撲綅淇℃伅
+ LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
+ if (locMast != null) {
+ if (locMast.getLocSts().equals("S") && locMast.getLocSts().equals("Q")) {
+ // 鍫嗗灈鏈烘帶鍒惰繃婊�
+ if (crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() == 0) {
+ // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+ if (wrkMastMapper.selectWorking(slave.getId()) == null) {
+// // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞�
+ if (Utils.isDeepLoc(slaveProperties, wrkMast.getLocNo())) {
+//// String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getLocNo());
+//// LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+//// // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒
+//// if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
+//// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+//// if (null == waitWrkMast) {
+//// News.error(methodName + ":{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
+//// } else {
+//// waitWrkMast.setIoPri(15D);
+//// waitWrkMast.setModiTime(new Date());
+//// if (wrkMastMapper.updateById(waitWrkMast) == 0) {
+//// News.error(methodName + ":璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+//// }
+//// continue;
+//// }
+////
+//// } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+//// // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔�
+//// if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) {
+//// wrkMast.setUpdMk("Y");
+//// wrkMast.setIoPri(14D);
+//// wrkMastMapper.updateById(wrkMast);
+//// // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑
+//// moveLocForDeepLoc(slave, shallowLoc);
+//// // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�)
+////// moveLocForDeepLocPakin(slave, shallowLoc, wrkMast);
+//// }
+//// continue;
+//// } else if (shallowLoc.getLocSts().equals("Q")) {
+//// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+//// if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) {
+//// continue;
+//// }
+//// }
+//// }
+// // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+// CrnCommand crnCommand = new CrnCommand();
+// crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+// crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+// crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣�
+// crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆
+// crnCommand.setSourcePosX(crnStn1.getRow().shortValue()); // 婧愬簱浣嶆帓
+// crnCommand.setSourcePosY(crnStn1.getBay().shortValue()); // 婧愬簱浣嶅垪
+// crnCommand.setSourcePosZ(crnStn1.getLev().shortValue()); // 婧愬簱浣嶅眰
+// crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺�
+// crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒�
+// crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞�
+// if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+// News.error(methodName + ":鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+// } else {
+//
+//// long startTime = System.currentTimeMillis();
+//// while ((System.currentTimeMillis() - startTime) < COMMAND_TIMEOUT) {
+////
+//// if (true) {
+//// break;
+//// }
+////
+//// try{
+//// Thread.sleep(500);
+//// }catch(Exception ignore){}
+//// }
+//
+// // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓�
+// Date now = new Date();
+// wrkMast.setWrkSts(3L);
+// wrkMast.setCrnStrTime(now);
+// wrkMast.setModiTime(now);
+// if (wrkMastMapper.updateById(wrkMast) == 0) {
+// News.error(methodName + ":淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+// }
+ }
+ }
+ }
+ }else News.error(methodName + ":鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts());
+ }else News.error(methodName + ":鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo());
+ }
+
+ /**
+ * 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣�
+ * 鏍规嵁鍏ュ簱鏃堕棿杩涜鎺掑簭鍏ュ簱
+ */
+ public synchronized void crnStnToLoc2(CrnSlave slave, CrnProtocol crnProtocol) {
String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
List<WrkMast> wrkMasts= new ArrayList<>();
//鎸囬拡
@@ -729,7 +853,7 @@
wrkMasts.add(wrkMast);
count++;
if(count==0) continue;
- if(wrkMast.getWrkDate().getTime()<wrkMasts.get(i).getWrkDate().getTime() && wrkMast.getIoPri()<wrkMasts.get(i).getIoPri())
+ if(wrkMast.getWrkDate().getTime()<wrkMasts.get(i).getWrkDate().getTime() && wrkMast.getIoPri()>=wrkMasts.get(i).getIoPri())
i=count;
crnStn1=crnStn;
}
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 cfee07c..db74894 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java
@@ -36,4 +36,9 @@
public List<WrkMast> selectWrkIoType(Integer crnNo) {
return this.baseMapper.selectWrkIoType(crnNo);
}
+
+ @Override
+ public WrkMast selectTop1(List<Integer> wrkNO) {
+ return this.baseMapper.selectTop1(wrkNO);
+ }
}
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 9906b7d..926df6c 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -185,4 +185,13 @@
<select id="selectExistInEmpty" resultType="java.lang.Integer">
SELECT COUNT(*) FROM dbo.asr_wrk_mast Where io_type = 10 and wrk_sts in (1,2,3)
</select>
+ <select id="selectTop1" resultType="BaseResultMap">
+ select top 1* from dbo.asr_wrk_mast Where 1=1
+ and wrk_no in
+ <foreach collection="wrkNo" index="index" item="item" open="(" close=")" separator=",">
+ #{item}
+ </foreach>
+ and wrk_sts == 2
+ order by io_pri desc,io_time desc,wrk_no ASC
+ </select>
</mapper>
--
Gitblit v1.9.1