From bdf490f12fa38c99593fdace907fa5379cc04413 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期日, 07 一月 2024 15:17:42 +0800
Subject: [PATCH] #输送报警对接+回退
---
src/main/java/com/zy/core/model/protocol/StaProtocol.java | 25 ++++++++
src/main/java/com/zy/core/thread/BarcodeThread.java | 2
src/main/java/com/zy/core/model/DevpSlave.java | 2
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 60 +++++++++++++++-----
src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 2
src/main/resources/mapper/WrkMastMapper.xml | 5 +
src/main/java/com/zy/common/model/LocTypeDto.java | 14 +---
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 53 ++++++++++++++---
src/main/resources/application.yml | 9 +++
9 files changed, 135 insertions(+), 37 deletions(-)
diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
index c6318bf..a1277f6 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java
@@ -109,7 +109,7 @@
Integer selectExistInEmpty();
- @Select("select * from asr_wrk_mast where crn_no=#{crnNo} and wrk_sts=11 and io_type>100 order by io_pri desc,io_time desc,wrk_no ASC")
+// @Select("select * from asr_wrk_mast 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 List<WrkMast> selectWaitPakIn(@Param("wrkNos")List<Integer> wrkNos);
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 16e6874..4b31eb4 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -90,6 +90,8 @@
@Value("${wms.url}")
private String wmsUrl;
+ public short wrkNo = 10000;
+
/**
* 缁勬墭
* 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2
@@ -116,23 +118,51 @@
continue;
}
String barcode = barcodeThread.getBarcode();
- //9998閫�鍥烇紝9996绌烘澘
- if (!Cools.isEmpty(barcode) && (staProtocol.getWorkNo() != 9998 || staProtocol.getWorkNo() != 9996)) {
-// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode);
- if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) {
- String errorMsg = "15绔欐壂鐮佸け璐ワ紝宸查��鍥�14绔�";
- staProtocol.setWorkNo((short) 9998);
- staProtocol.setStaNo((short) 14);
- devpThread.setPakMk(staProtocol.getSiteId(), false);
- // led 寮傚父鏄剧ず
- if (ledThread != null) {
- News.error(methodName + ":鎵爜澶辫触锛岃閲嶈瘯");
- MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg));
- }
+ // 灏哄妫�娴嬪紓甯�
+ boolean back = false;
+ String errMsg = "";
+ if (staProtocol.isFrontErr()) {
+ errMsg = "鍓嶈秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isBackErr()) {
+ errMsg = "鍚庤秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isHighErr()) {
+ errMsg = "楂樿秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isLeftErr()) {
+ errMsg = "宸﹁秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isRightErr()) {
+ errMsg = "鍙宠秴闄�";
+ back = true;
+ }
+ if (!back && staProtocol.isWeightErr()) {
+ errMsg = "瓒呴噸";
+ back = true;
+ }
+ if (!back && staProtocol.isBarcodeErr()) {
+ errMsg = "鎵爜澶辫触";
+ back = true;
+ }
+ // 閫�鍥�
+ if (back) {
+// News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg);
+ if (!staProtocol.isLoading()){
continue;
}
- } else {
- continue;
+ if (!staProtocol.isPakMk()) {
+ continue;
+ }
+ staProtocol.setWorkNo(wrkNo);
+ wrkNo++;
+ staProtocol.setStaNo(inSta.getBackSta().shortValue());
+ devpThread.setPakMk(staProtocol.getSiteId(), false);
+ MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
}
// 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
diff --git a/src/main/java/com/zy/common/model/LocTypeDto.java b/src/main/java/com/zy/common/model/LocTypeDto.java
index 20382a2..6e4ccff 100644
--- a/src/main/java/com/zy/common/model/LocTypeDto.java
+++ b/src/main/java/com/zy/common/model/LocTypeDto.java
@@ -29,15 +29,11 @@
}
public LocTypeDto(StaProtocol staProtocol) {
-// if (staProtocol.isHigh() == staProtocol.isLow()) {
-// throw new CoolException("plc楂樹綆妫�娴嬪紓甯�");
-// }
-// if (staProtocol.isLow()) {
-// this.locType1 = 1; // 浣庡簱浣�
-// } else {
-// this.locType1 = 2; // 楂樺簱浣�
-// }
- this.locType1 = 1;
+ if (!staProtocol.isWeight()) {
+ this.locType1 = 1; // 杞昏揣
+ } else {
+ this.locType1 = 2; // 閲嶈揣
+ }
}
/**
diff --git a/src/main/java/com/zy/core/model/DevpSlave.java b/src/main/java/com/zy/core/model/DevpSlave.java
index 4b78c42..cda7ed3 100644
--- a/src/main/java/com/zy/core/model/DevpSlave.java
+++ b/src/main/java/com/zy/core/model/DevpSlave.java
@@ -36,6 +36,8 @@
private Integer led;
+ private Integer backSta;
+
}
}
diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
index 5699c2a..ccc3096 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -46,6 +46,8 @@
// 浣�
private boolean low;
+ private boolean weight;
+
// 閿佸畾鏍囪
private boolean pakMk = true;
@@ -58,6 +60,29 @@
//鍏佽绌烘墭鍑哄簱
private String allowEmptyOut;
+ // 澶栧舰妫�娴� ------------------------------------------------------------------------
+
+ // 鍓嶈秴闄�
+ private boolean frontErr = false;
+
+ // 鍚庤秴闄�
+ private boolean backErr = false;
+
+ // 楂樿秴闄�
+ private boolean highErr = false;
+
+ // 宸﹁秴闄�
+ private boolean leftErr = false;
+
+ // 鍙宠秴闄�
+ private boolean rightErr = false;
+
+ // 瓒呴噸
+ private boolean weightErr = false;
+
+ // 鎵爜澶辫触
+ private boolean barcodeErr = false;
+
public BasDevp toSqlModel(){
BasDevp basDevp = new BasDevp();
basDevp.setDevNo(siteId);
diff --git a/src/main/java/com/zy/core/thread/BarcodeThread.java b/src/main/java/com/zy/core/thread/BarcodeThread.java
index e72bce3..8c633f1 100644
--- a/src/main/java/com/zy/core/thread/BarcodeThread.java
+++ b/src/main/java/com/zy/core/thread/BarcodeThread.java
@@ -37,7 +37,7 @@
this.barcode.delete(0, this.barcode.length());
this.barcode.append(barcode);
if(!Cools.isEmpty(barcode)) {
- News.info(methodName + ":{}鍙锋潯鐮佸櫒锛屾绱㈡暟鎹細{}", slave.getId(), this.barcode);
+// News.info(methodName + ":{}鍙锋潯鐮佸櫒锛屾绱㈡暟鎹細{}", slave.getId(), this.barcode);
JSONObject jsonObject = new JSONObject();
jsonObject.put("time", DateUtils.convert(new Date(), DateUtils.yyyyMMddHHmmss_F));
jsonObject.put("barcode", barcode);
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index 11e0670..3ef813e 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -63,6 +63,15 @@
add(308);add(309);add(310);add(311);
add(312);
}};
+ public static final ArrayList<Integer> staNosErr1 = new ArrayList<Integer>() {{
+ add(101); add(103); add(105);
+ }};
+ public static final ArrayList<Integer> staNosErr2 = new ArrayList<Integer>() {{
+ add(201); add(203); add(205);
+ }};
+ public static final ArrayList<Integer> staNosErr3 = new ArrayList<Integer>() {{
+ add(301); add(303); add(305);
+ }};
private ArrayList<Integer> getStaNo() {
switch (slave.getId()) {
case 1:
@@ -71,6 +80,18 @@
return staNos2;
case 3:
return staNos3;
+ default:
+ throw new CoolException("鑾峰彇绔欑偣澶辫触锛�");
+ }
+ }
+ private ArrayList<Integer> getStaNoErr() {
+ switch (slave.getId()) {
+ case 1:
+ return staNosErr1;
+ case 2:
+ return staNosErr2;
+ case 3:
+ return staNosErr3;
default:
throw new CoolException("鑾峰彇绔欑偣澶辫触锛�");
}
@@ -173,9 +194,7 @@
// System.out.println(i);
}
Integer siteId = staNos.get(i); // 绔欑偣缂栧彿
-// if(siteId==206){
-// System.out.println(1);
-// }
+
StaProtocol staProtocol = station.get(siteId);
if (null == staProtocol) {
staProtocol = new StaProtocol();
@@ -195,10 +214,28 @@
staProtocol.setFullPlt(status[5]); // 婊℃墭鐩�
staProtocol.setHigh(status[6]); // 楂樺簱浣�
staProtocol.setLow(status[7]); // 浣庡簱浣�
-
+ staProtocol.setWeight(status[8]); //鏄惁涓洪噸璐�
if (!staProtocol.isPakMk() && !staProtocol.isLoading()) {
staProtocol.setPakMk(true);
}
+ }
+ }
+ //澶栧舰妫�娴�
+ ArrayList<Integer> staNoErrs = getStaNoErr();
+ int staNoErrsSize = staNoErrs.size();
+ OperateResultExOne<byte[]> resultErr = siemensS7Net.Read("DB101.800", (short) (staNoErrsSize*8));
+ if (resultErr.IsSuccess){
+ for (int i = 0;i<3;i++){
+ Integer siteId = staNoErrs.get(i); // 绔欑偣缂栧彿
+ boolean[] status = siemensS7Net.getByteTransform().TransBool(resultErr.Content, i*4+2, 1);
+ StaProtocol staProtocol = station.get(siteId);
+ staProtocol.setFrontErr(status[0]);
+ staProtocol.setBackErr(status[1]);
+ staProtocol.setHighErr(status[2]);
+ staProtocol.setLeftErr(status[3]);
+ staProtocol.setRightErr(status[4]);
+ staProtocol.setWeightErr(status[5]);
+ staProtocol.setBarcodeErr(status[6]);
}
}
@@ -285,16 +322,10 @@
return;
}
int index = staNos.indexOf(staProtocol.getSiteId());
-// int[] array = new int[2];
-// array[0] = staProtocol.getWorkNo();
-// array[1] = staProtocol.getStaNo();
+
OperateResult write1 = siemensS7Net.Write("DB100." + (index*6+4),staProtocol.getStaNo());
OperateResult write = siemensS7Net.Write("DB100." + index*6, staProtocol.getWorkNo().intValue());
-
-// OperateResult write = siemensS7Net.Write("DB100." + index*2, staProtocol.getWorkNo()); // 宸ヤ綔鍙�
-// Thread.sleep(500);
-// OperateResult write1 = siemensS7Net.Write("DB101." + index*2, staProtocol.getStaNo()); // 鐩爣绔�
if (!write.IsSuccess && !write1.IsSuccess) {
staProtocol = station.get(staProtocol.getSiteId());
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 9338e0d..8dd92af 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -213,16 +213,19 @@
staNo: 101
barcode: ${wcs-slave.barcode[0].id}
led: ${wcs-slave.led[0].id}
+ backSta: 100
# 鍏ュ簱鍙�2
inSta[1]:
staNo: 103
barcode: ${wcs-slave.barcode[1].id}
led: ${wcs-slave.led[1].id}
+ backSta: 102
# 鍏ュ簱鍙�3
inSta[2]:
staNo: 105
barcode: ${wcs-slave.barcode[2].id}
led: ${wcs-slave.led[2].id}
+ backSta: 104
# 绌烘澘鍏ュ簱鍙�1
emptyInSta[0]:
staNo: 101
@@ -265,16 +268,19 @@
staNo: 201
barcode: ${wcs-slave.barcode[3].id}
led: ${wcs-slave.led[3].id}
+ backSta: 200
# 鍏ュ簱鍙�2
inSta[1]:
staNo: 203
barcode: ${wcs-slave.barcode[4].id}
led: ${wcs-slave.led[4].id}
+ backSta: 202
# 鍏ュ簱鍙�3
inSta[2]:
staNo: 205
barcode: ${wcs-slave.barcode[5].id}
led: ${wcs-slave.led[5].id}
+ backSta: 204
# 绌烘澘鍏ュ簱鍙�1
emptyInSta[0]:
staNo: 201
@@ -317,16 +323,19 @@
staNo: 301
barcode: ${wcs-slave.barcode[6].id}
led: ${wcs-slave.led[6].id}
+ backSta: 300
# 鍏ュ簱鍙�2
inSta[1]:
staNo: 303
barcode: ${wcs-slave.barcode[7].id}
led: ${wcs-slave.led[7].id}
+ backSta: 302
# 鍏ュ簱鍙�3
inSta[2]:
staNo: 305
barcode: ${wcs-slave.barcode[8].id}
led: ${wcs-slave.led[8].id}
+ backSta: 304
# 绌烘澘鍏ュ簱鍙�1
emptyInSta[0]:
staNo: 301
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index 0b09bcf..b0a5e47 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -194,4 +194,9 @@
and wrk_sts = 2 and io_type in (1,10,53,57)
order by io_pri desc,io_time desc,wrk_no ASC
</select>
+ <select id="selectWrkIoType" resultMap="BaseResultMap">
+ select * from asr_wrk_mast
+ where crn_no=#{crnNo} and wrk_sts=11 and io_type>100
+ order by io_pri desc,io_time desc,wrk_no ASC
+ </select>
</mapper>
--
Gitblit v1.9.1