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