From 1e585dfd636f811952a0d2b0fc3e735325cd5243 Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期二, 27 六月 2023 15:36:10 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/utils/RouteUtils.java | 79 +++++++++++++++++++
src/main/java/com/zy/core/model/RgvSlave.java | 6 +
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 89 ++++++++++++++++++++++
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 18 ++++
src/main/resources/mapper/WrkMastMapper.xml | 11 ++
src/main/java/com/zy/core/MainProcess.java | 2
6 files changed, 205 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index c860c1f..1517399 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -173,4 +173,22 @@
* @return
*/
List<WrkMast> selectRgvOutWorking(@Param("rgvNo")Integer rgvNo);
+
+ /*================================================RGV浠诲姟缁戝畾鐩稿叧 ==================================================*/
+
+ /**
+ * 鏌ユ壘鏄惁瀛樺湪RGV姝e湪鍑哄簱宸ヤ綔涓殑浠诲姟
+ * @param wrkNo
+ * @return
+ */
+ WrkMast selectRgvInSteWrkNo(@Param("wrkNo")Integer wrkNo);
+ /**
+ * 鏌ユ壘鏄惁瀛樺湪RGV姝e湪鍑哄簱宸ヤ綔涓殑浠诲姟
+ * @param wrkNo
+ * @return
+ */
+ WrkMast selectRgvOutSteWrkNo(@Param("wrkNo")Integer wrkNo);
+
+
+ /*================================================RGV浠诲姟缁戝畾鐩稿叧 ==================================================*/
}
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 12aca3a..cd92354 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -513,6 +513,95 @@
}
/**
+ * 缁戝畾灏忚溅鏂规硶
+ */
+ public synchronized void rgvBindSte() {
+ for (RgvSlave rgv : slaveProperties.getRgv()) {
+ // 鑾峰彇RGV淇℃伅
+ RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId());
+ RgvProtocol rgvProtocol = rgvThread.getRgvProtocol();
+ if (rgvProtocol == null) {
+ continue;
+ }
+ BasRgv basRgv = basRgvService.selectById(rgv.getId());
+ if (basRgv == null) {
+ log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgv.getId());
+ continue;
+ }
+
+ // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�, 骞朵笖鏃犱换鍔°�佹棤鐗╂椂鎵嶇户缁墽琛�
+ if (rgvProtocol.getStatusType() == RgvStatusType.IDLE
+ && rgvProtocol.getModeType() == RgvModeType.AUTO
+ && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0
+ && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0
+ ) {
+ // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡
+ if (rgvProtocol.getLastIo().equals("I")) {
+ if (basRgv.getInEnable().equals("Y")) {
+ this.rgvBindSteIn(rgv, rgvProtocol); // 鍏ュ簱
+ rgvProtocol.setLastIo("O");
+ } else if (basRgv.getOutEnable().equals("Y")) {
+ this.rgvBindSteOut(rgv, rgvProtocol); // 鍑哄簱
+ rgvProtocol.setLastIo("I");
+ }
+ }
+ // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡
+ else if (rgvProtocol.getLastIo().equals("O")) {
+ if (basRgv.getOutEnable().equals("Y")) {
+ this.rgvBindSteOut(rgv, rgvProtocol); // 鍑哄簱
+ rgvProtocol.setLastIo("I");
+ } else if (basRgv.getInEnable().equals("Y")) {
+ this.rgvBindSteIn(rgv, rgvProtocol); // 鍏ュ簱
+ rgvProtocol.setLastIo("O");
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * 缁戝畾灏忚溅鍏ュ簱鏂规硶
+ */
+ public synchronized void rgvBindSteIn(RgvSlave slave, RgvProtocol rgvProtocol) {
+ for (RgvSlave.RgvStn rgvStn: slave.getRgvInSStn()){
+ Integer staNo = rgvStn.getStaNo();
+ BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId());
+ if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
+ continue;
+ }else {
+ WrkMast wrkMast = wrkMastMapper.selectRgvInSteWrkNo(basDevp.getWrkNo());
+ if (!Cools.isEmpty(wrkMast)){
+ wrkMast.setRgvNo(wrkMast.getCrnNo()>3 ? 2 : 1);
+ wrkMast.setAppeTime(new Date());
+ if (wrkMastMapper.updateById(wrkMast)==0){
+ log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * 缁戝畾灏忚溅鍑哄簱鏂规硶
+ */
+ public synchronized void rgvBindSteOut(RgvSlave slave, RgvProtocol rgvProtocol) {
+ for (RgvSlave.RgvStn rgvStn: slave.getRgvOutSStn()){
+ BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId());
+ if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){
+ continue;
+ }else {
+ WrkMast wrkMast = wrkMastMapper.selectRgvOutSteWrkNo(basDevp.getWrkNo());
+ if (!Cools.isEmpty(wrkMast)){
+ wrkMast.setRgvNo(rgvStn.getStaNo());
+ wrkMast.setAppeTime(new Date());
+ if (wrkMastMapper.updateById(wrkMast)==0){
+ log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo());
+ }
+ }
+ }
+ }
+ }
+ /**
* 鍏ュ嚭搴� ===>> RGV鍏ュ嚭搴撲綔涓氫笅鍙�
*/
public synchronized void rgvIoExecute() {
diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java
new file mode 100644
index 0000000..22f35f5
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -0,0 +1,79 @@
+package com.zy.asrs.utils;
+
+import com.core.common.Arith;
+import com.core.common.Cools;
+import com.zy.core.properties.SlaveProperties;
+
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/8/27
+ */
+public class RouteUtils {
+
+// 姝e簭
+ public static final List<Integer> TRACK_POSITION_POSITIVE_SEQUENCE = new ArrayList<Integer>() {{
+ add(1);add(2);add(3);add(4);add(5);add(6);add(7);add(8);add(9);add(10);add(11);add(12);
+ }};
+// 鍙嶅簭
+ public static final List<Integer> TRACK_POSITION_REVERSE_SEQUENCE = new ArrayList<Integer>() {{
+ add(12);add(11);add(10);add(9);add(8);add(7);add(6);add(5);add(4);add(3);add(2);add(1);
+ }};
+
+ public static String zerofill(String msg, Integer count){
+ if (msg.length() == count){
+ return msg;
+ } else if (msg.length() > count){
+ return msg.substring(0, 16);
+ } else {
+ StringBuilder msgBuilder = new StringBuilder(msg);
+ for (int i = 0; i<count-msg.length(); i++){
+ msgBuilder.insert(0,"0");
+ }
+ return msgBuilder.toString();
+ }
+ }
+
+ // 鑾峰彇褰撳墠灏忚溅鏈璧扮殑璺嚎
+ public static List<Integer> getRoute(boolean sign,Integer drop){
+ List<Integer> result = new ArrayList<>();
+ List<Integer> groupRoute = new ArrayList<>();
+ if (sign){
+ groupRoute = TRACK_POSITION_POSITIVE_SEQUENCE;
+ }else {
+ groupRoute = TRACK_POSITION_REVERSE_SEQUENCE;
+ }
+ if (groupRoute.contains(drop)) {
+ sign = false;
+ for (Integer route : groupRoute) {
+ if (route == drop){
+ sign=true;
+ }
+ if (sign){
+ result.add(route);
+ }
+ }
+ }else {
+ return null;
+ }
+
+
+
+ return result;
+ }
+ // 澶栦晶鏂瑰悜鐨勮揣浣� 浼樺厛鍏ュ簱鏂瑰悜/浼樺厛鍑哄簱鏂瑰悜 ===>> 鍙嶄箣
+ public static List<String> getGroupOutsideLoc(String locNo,Integer crnNo){
+
+ List<String> result = new ArrayList<>();
+
+ return result;
+ }
+
+
+
+
+}
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index ad935a8..9b954fc 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -62,6 +62,8 @@
mainService.storeFinished();
///////////////////////RGV璋冨害/////////////////////////////////////
+ //缁戝畾灏忚溅鏂规硶
+ mainService.rgvBindSte();
// 鍏ュ嚭搴� ===>> RGV鍏ュ嚭搴撲綔涓氫笅鍙�
mainService.rgvIoExecute();
// RGV鍏ュ簱 ===>> 鏍规嵁RGV瀹屾垚淇″彿,鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
diff --git a/src/main/java/com/zy/core/model/RgvSlave.java b/src/main/java/com/zy/core/model/RgvSlave.java
index 36ff666..5e6df0b 100644
--- a/src/main/java/com/zy/core/model/RgvSlave.java
+++ b/src/main/java/com/zy/core/model/RgvSlave.java
@@ -28,6 +28,12 @@
// RGV鍑哄簱婧愮珯鐐�
private List<RgvStn> rgvOutSStn = new ArrayList<>();
+ // RGV鍙犵洏
+ private List<RgvStn> rgvEmptyInSStn = new ArrayList<>();
+
+ // RGV绌烘澘鍏ュ簱
+ private List<RgvStn> rgvEmptyOutSStn = new ArrayList<>();
+
// RGV鍑哄簱鐩爣绔欑偣
private List<RgvStn> rgvDestStn = new ArrayList<>();
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 1db0665..fd55f58 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -238,5 +238,16 @@
select * from dbo.asr_wrk_mast where 1=1 and wrk_sts in (16,17) and rgv_no=#{rgvNo} order by io_time,wrk_no
</select>
<!-- RGV璋冨害鍏ュ嚭搴撶浉鍏� -->
+ <!-- ==============================================RGV浠诲姟缁戝畾鐩稿叧 ============================================== -->
+
+ <select id="selectRgvInSteWrkNo" resultMap="BaseResultMap">
+ select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts =12 and wrk_no=#{wrkNo} and rgv_no is null
+ </select>
+
+ <select id="selectRgvOutSteWrkNo" resultMap="BaseResultMap">
+ select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts =24 and wrk_no=#{wrkNo} and rgv_no is null
+ </select>
+
+ <!-- ==============================================RGV浠诲姟缁戝畾鐩稿叧 ============================================== -->
</mapper>
--
Gitblit v1.9.1