From 37733cc39c04b863a0b997c7fa3d9ac6a24e08be Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期三, 19 六月 2024 15:58:19 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SiemensDevpThread.java | 90 ++++++++++++++++++++++++++++++++------------ 1 files changed, 65 insertions(+), 25 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SiemensDevpThread.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SiemensDevpThread.java index f28644c..9668756 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SiemensDevpThread.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/rcs/thread/impl/SiemensDevpThread.java @@ -9,8 +9,10 @@ import com.zy.asrs.framework.common.Cools; import com.zy.asrs.framework.common.DateUtils; import com.zy.asrs.framework.common.SpringUtils; -import com.zy.asrs.wcs.core.entity.Station; -import com.zy.asrs.wcs.core.service.StationService; +import com.zy.asrs.wcs.core.entity.BasConveyor; +import com.zy.asrs.wcs.core.entity.BasConveyorSta; +import com.zy.asrs.wcs.core.service.BasConveyorService; +import com.zy.asrs.wcs.core.service.BasConveyorStaService; import com.zy.asrs.wcs.core.utils.RedisUtil; import com.zy.asrs.wcs.rcs.News; import com.zy.asrs.wcs.rcs.cache.OutputQueue; @@ -35,7 +37,7 @@ private Map<Integer, StaProtocol> station = new ConcurrentHashMap<>(); - public static ArrayList<Station> stationList = new ArrayList<>(); + public static ArrayList<BasConveyorSta> stationList = new ArrayList<>(); /** * 鏉$爜鏁伴噺 @@ -47,15 +49,20 @@ this.redisUtil = redisUtil; } - private ArrayList<Station> getStaNo() { + private ArrayList<BasConveyorSta> getStaNo() { try { if (stationList.isEmpty()) { - StationService stationService = SpringUtils.getBean(StationService.class); - List<Station> stations = stationService.list(new LambdaQueryWrapper<Station>() - .eq(Station::getDeviceId, device.getId()) - .eq(Station::getStatus, 1) - .eq(Station::getHostId, device.getHostId())); - stationList.addAll(stations); + BasConveyorService basConveyorService = SpringUtils.getBean(BasConveyorService.class); + BasConveyorStaService basConveyorStaService = SpringUtils.getBean(BasConveyorStaService.class); + BasConveyor basConveyor = basConveyorService.getOne(new LambdaQueryWrapper<BasConveyor>() + .eq(BasConveyor::getDeviceId, device.getId()) + .eq(BasConveyor::getHostId, device.getHostId())); + if(basConveyor != null) { + List<BasConveyorSta> stations = basConveyorStaService.list(new LambdaQueryWrapper<BasConveyorSta>() + .eq(BasConveyorSta::getConveyorId, basConveyor.getId()) + .eq(BasConveyorSta::getHostId, device.getHostId())); + stationList.addAll(stations); + } } return stationList; } catch (Exception e) { @@ -79,13 +86,13 @@ } private void read() throws InterruptedException { - ArrayList<Station> staNos = getStaNo(); + ArrayList<BasConveyorSta> staNos = getStaNo(); int staNoSize = staNos.size(); OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) (staNoSize*8)); if (result.IsSuccess) { for (int i = 0; i < staNoSize; i++) { - Station siteStation = staNos.get(i); - int siteId = Integer.parseInt(siteStation.getStaNo());// 绔欑偣缂栧彿 + BasConveyorSta siteStation = staNos.get(i); + int siteId = siteStation.getSiteNo();// 绔欑偣缂栧彿 StaProtocol staProtocol = station.get(siteId); if (null == staProtocol) { staProtocol = new StaProtocol(); @@ -113,12 +120,12 @@ } Thread.sleep(200); - ArrayList<Station> errorStaNo = getStaNo(); + ArrayList<BasConveyorSta> errorStaNo = getStaNo(); OperateResultExOne<byte[]> result3 = siemensS7Net.Read("DB101.800.0", (short) (errorStaNo.size() * 4)); if (result3.IsSuccess) { for (int i = 0; i < errorStaNo.size(); i++) { - Station siteStation = errorStaNo.get(i); - Integer siteId = Integer.parseInt(siteStation.getStaNo()); // 绔欑偣缂栧彿 + BasConveyorSta siteStation = errorStaNo.get(i); + Integer siteId = siteStation.getSiteNo(); // 绔欑偣缂栧彿 StaProtocol staProtocol = station.get(siteId); boolean[] status = siemensS7Net.getByteTransform().TransBool(result3.Content, (i * 4 + 2), 2); staProtocol.setFrontErr(status[0]);//鍓嶈秴闄� @@ -137,16 +144,16 @@ // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� try { - List<Station> stations = new ArrayList<>(); - for (Station sta : getStaNo()) { - StaProtocol staProtocol = station.get(Integer.parseInt(sta.getStaNo())); - Station sqlModel = staProtocol.toSqlModel(sta); + List<BasConveyorSta> stations = new ArrayList<>(); + for (BasConveyorSta sta : getStaNo()) { + StaProtocol staProtocol = station.get(sta.getSiteNo()); + BasConveyorSta sqlModel = staProtocol.toSqlModel(sta); stations.add(sqlModel); } if (!stations.isEmpty()) { - StationService stationService = SpringUtils.getBean(StationService.class); - if (null != stationService && !stationService.updateBatchById(stations)) { + BasConveyorStaService basConveyorStaService = SpringUtils.getBean(BasConveyorStaService.class); + if (null != basConveyorStaService && !basConveyorStaService.updateBatchById(stations)) { throw new Exception("鏇存柊鏁版嵁搴撴暟鎹け璐�"); } } @@ -230,21 +237,54 @@ } @Override + public boolean writeWorkSta(int siteId, short staNo, short workNo) { + int index = findStaNosIndex(siteId); + + OperateResult write1 = siemensS7Net.Write("DB100." + index*6, workNo); // 宸ヤ綔鍙� + OperateResult write2 = siemensS7Net.Write("DB100." + (index*6+4), staNo); // 鐩爣绔� + + if (!(write1.IsSuccess && write2.IsSuccess)) { + StaProtocol staProtocol = station.get(siteId); + if (staProtocol.getWorkNo() == 0 && staProtocol.getStaNo() ==0) { + staProtocol.setPakMk(true); + } + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆戝啓鍏ヨ緭閫佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={1}锛岀珯鐐规暟鎹�={2}", device.getId(), JSON.toJSON(staProtocol))); + log.error("鍐欏叆杈撻�佺嚎绔欑偣鏁版嵁澶辫触銆傝緭閫佺嚎plc缂栧彿={}锛岀珯鐐规暟鎹�={}", device.getId(), JSON.toJSON(staProtocol)); + } else { + OutputQueue.DEVP.offer(MessageFormat.format("銆恵0}銆� 杈撻�佺嚎鍛戒护涓嬪彂 [id:{1}] >>>>> {2}", DateUtils.convert(new Date()), device.getId(), JSON.toJSON(staNo))); + log.info("杈撻�佺嚎鍛戒护涓嬪彂 [id:{}] >>>>> 鍛戒护涓嬪彂锛� {}", device.getId(), JSON.toJSON(staNo)); + return true; + } + return false; + } + + @Override public Map<Integer, StaProtocol> getStation() { return this.station; } private int findStaNosIndex(int siteId) { - ArrayList<Station> staNos = getStaNo(); + ArrayList<BasConveyorSta> staNos = getStaNo(); int index = -1; for (int i = 0; i < staNos.size(); i++) { - Station sta = staNos.get(i); - if (Integer.parseInt(sta.getStaNo()) == siteId) { + BasConveyorSta sta = staNos.get(i); + if (sta.getSiteNo() == siteId) { index = i; break; } } return index; } + + /** + * 璁剧疆鍏ュ簱鏍囪 + */ + @Override + public void setPakMk(Integer siteId, boolean pakMk) { + StaProtocol staProtocol = station.get(siteId); + if (null != staProtocol) { + staProtocol.setPakMk(pakMk); + } + } } -- Gitblit v1.9.1