From a12e16c98db1dd2b712a092912abf4aa20c3c00c Mon Sep 17 00:00:00 2001 From: whycq <913841844@qq.com> Date: 星期一, 30 十二月 2024 15:23:12 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/WrkMastService.java | 2 + src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 44 ++++++++++++++++++++++ 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 | 7 +++ src/main/java/com/zy/core/MainProcess.java | 1 src/main/java/com/zy/core/thread/SiemensDevpThread.java | 51 +++++++++++++++++++++++++ 7 files changed, 112 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 633e46e..9e296c8 100644 --- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java @@ -129,4 +129,6 @@ WrkMast selectByWrkNo(Integer wrkNo); + WrkMast getLastWrkMast105(); + } diff --git a/src/main/java/com/zy/asrs/service/WrkMastService.java b/src/main/java/com/zy/asrs/service/WrkMastService.java index 191bbea..9f013ea 100644 --- a/src/main/java/com/zy/asrs/service/WrkMastService.java +++ b/src/main/java/com/zy/asrs/service/WrkMastService.java @@ -22,4 +22,6 @@ WrkMast selectByworkNo(Short workNo); WrkMast selectByworkNo(Integer workNo); + + WrkMast getLastWrkMast105(); } 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 af60d3d..50e6a67 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -51,6 +51,8 @@ import java.util.*; import java.util.stream.Collectors; +import static com.zy.common.utils.RandomValidateCodeUtil.code; + /** * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔� * Created by vincent on 2020/8/6 @@ -3718,6 +3720,48 @@ } + public synchronized void getNeed() { + for (DevpSlave devp : slaveProperties.getDevp()) { + if (devp.getId() != 2) { + continue; + } + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + if (devpThread.isCalled == 1) { + try { + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/process/loc/v1") + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + log.info("浠诲姟涓嬪彂鎴愬姛"); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, null)); + } else { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況esponse锛歿}", wmsUrl + "/mobile/comb/auth", response); + } + Thread.sleep(1000); + } catch (Exception e) { + e.printStackTrace(); + } + } + if (devpThread.isFinish == 1) { + + Integer weight = devpThread.weight; + Integer isHalf = devpThread.isHalf; + WrkMast lastWrkMast105 = wrkMastService.getLastWrkMast105(); + if (Cools.isEmpty(lastWrkMast105)) continue; + List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(lastWrkMast105.getWrkNo()); + if (!Cools.isEmpty(wrkDetls)) { + for (WrkDetl wrkDetl : wrkDetls) { + wrkDetl.setWeight(weight.doubleValue()); + wrkDetlService.updateById(wrkDetl); + } + } + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(5, null)); + } + } + } public void CreateComb(String barcode,String code,Integer wrkNo,String batch,DevpSlave.Sta inSta) throws IOException { Double anfme = 0d; Double weight = 0d; 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 d0352f3..07f81ef 100644 --- a/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WrkMastServiceImpl.java @@ -71,4 +71,9 @@ public WrkMast selectByworkNo(Integer workNo) { return this.baseMapper.selectByWrkNo(workNo); } + + @Override + public WrkMast getLastWrkMast105() { + return this.baseMapper.getLastWrkMast105(); + } } diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index 1b96b52..6cd6912 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -86,6 +86,7 @@ mainService.RGV2TaskOver(); //浜屾湡缁勬墭 mainService.generateStoreWrkFile2(); + mainService.getNeed(); } catch (Exception e) { diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java index de92dcf..3390bc2 100644 --- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java +++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java @@ -42,6 +42,12 @@ private SiemensS7Net siemensS7Net; private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); private short heartBeatVal = 1; + public Integer isCalled = 0; + public Integer isFinish = 0; + public ArrayList<Integer> weights = new ArrayList<>(); + public Integer weight = 0; + public ArrayList<Integer> halfs = new ArrayList<>(); + public Integer isHalf = 0; public static final ArrayList<Integer> staNos1 = new ArrayList<Integer>() {{ @@ -259,6 +265,18 @@ switch (slave.getId()){ case 2: write2106((StaProtocol)task.getData());break; + } + + break; + case 4: + switch (slave.getId()){ + case 2: + writeIsCalled();break; + } + case 5: + switch (slave.getId()){ + case 2: + writeIsFinish();break; } break; @@ -511,6 +529,29 @@ staProtocol.setBatch(batch); } } + + // 绌烘《鍑哄簱淇″彿 + OperateResultExOne<byte[]> readCall = siemensS7Net.Read("DB102", (short) 4); + if (readCall.IsSuccess){ + Integer isNeed = siemensS7Net.getByteTransform().TransInt32(result.Content, 0); // IBC瑕佹《淇″彿 + Integer isFinish = siemensS7Net.getByteTransform().TransInt32(result.Content, 2); // IBC鐏岃瀹屾垚淇″彿 + Integer weight = siemensS7Net.getByteTransform().TransInt32(result.Content, 4); // IBC鐏岃閲嶉噷 + Integer isAHalf = siemensS7Net.getByteTransform().TransInt32(result.Content, 6); // IBC鍗婃《鏍囪 + + isCalled = isNeed; + isFinish = isFinish; + } + + // 瀹屾垚缃愯淇″彿 + OperateResultExOne<byte[]> finish = siemensS7Net.Read("DB105.240", (short) 4); + if (finish.IsSuccess){ + short amount = siemensS7Net.getByteTransform().TransInt16(result.Content, 0); +// isCalled = amount; + } + +// if (isCalled == 1) { +// writeIsCalled(); +// } OperateResultExOne<byte[]> readWeight = siemensS7Net.Read("DB101.260", (short) 2); if (readWeight.IsSuccess){ @@ -837,6 +878,16 @@ log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", slave.getId(), JSON.toJSON(staProtocol)); } } + + private void writeIsCalled() throws InterruptedException { + OperateResult write = siemensS7Net.Write("DB102.0" , 0); // 宸ヤ綔鍙� + } + + private void writeIsFinish() throws InterruptedException { + OperateResult finish = siemensS7Net.Write("DB102.2" , 0); // 宸ヤ綔鍙� + OperateResult half = siemensS7Net.Write("DB102.6" , 0); // 宸ヤ綔鍙� + } + /** * 鍐欏叆 ID+鐩爣绔� =====> 鍗曠珯鐐瑰啓鍏� */ diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml index 13a0a46..b73f218 100644 --- a/src/main/resources/mapper/WrkMastMapper.xml +++ b/src/main/resources/mapper/WrkMastMapper.xml @@ -210,4 +210,11 @@ <select id="selectCrn5Task2" resultMap="BaseResultMap"> select * from dbo.asr_wrk_mast where wrk_sts=1 and io_type=1 and crn_no=5 order by io_pri desc,io_time,wrk_no ASC </select> + + <select id="getLastWrkMast105" resultMap="BaseResultMap"> + SELECT TOP 1 mast.* FROM asr_wrk_mast mast + JOIN asr_wrk_detl detl + ON mast.wrk_no = detl.wrk_no AND mast.io_type = 105 AND mast.wrk_sts = 14 AND detl.weight is null + ORDER BY mast.modi_time + </select> </mapper> -- Gitblit v1.9.1