From 2ab23232212bdea3435240031b41f3a6a0d56352 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期三, 23 十月 2024 10:07:52 +0800 Subject: [PATCH] * --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 68 ++++++++++++++++++++++++++++++++++ 1 files changed, 68 insertions(+), 0 deletions(-) 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 1f5b0d3..221f89c 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -49,6 +49,74 @@ /** * 绔欑偣浠诲姟妫�娴� 鏇存柊灏忚溅浣嶇疆淇℃伅 */ + public synchronized void updateStePositionNearby() { + try{ + List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 1L)); + if (wrkMasts.isEmpty()){ + return; + } + List<BasDevpPosition> basDevpPositions = basDevpPositionService.selectList(new EntityWrapper<BasDevpPosition>().orderBy("plc_position",false)); + if (basDevpPositions.isEmpty()){ + log.error("鑾峰彇鎵�鏈夌珯鐐逛俊鎭紓甯�"); + return; + } + List<Integer> siteList = SortTheExecutionOfTheCarUtil.WrkMastExtractSites(wrkMasts); + List<Integer> devpList = SortTheExecutionOfTheCarUtil.BasDevpPositionExtractSites(basDevpPositions); + Integer siteNo = SortTheExecutionOfTheCarUtil.ObtainDenseAreasFirstPlace(siteList, devpList); + if (siteNo == null){ + log.error("灏辫繎瀵嗛泦鍘熷垯鑾峰彇绔欑偣澶辫触"); + return; + } + Long sitePosition = 0L; + for (BasDevpPosition basDevpPosition : basDevpPositions){ + if (basDevpPosition.getDevNo().equals(siteNo)){ + sitePosition = basDevpPosition.getPlcPosition(); + } + } + List<List<Long>> rgvPositionList = new ArrayList<>(); + for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + continue; + } + List<Long> rgvPosition = new ArrayList<>(); + rgvPosition.add(rgvProtocol.getRgvNo().longValue()); + rgvPosition.add(rgvProtocol.getRgvPos()); + rgvPositionList.add(rgvPosition); + } + Integer rgvNo = SortTheExecutionOfTheCarUtil.LatelyAndGreaterThan(rgvPositionList, sitePosition); + + List<BasCircularShuttle> basCircularShuttleList = basCircularShuttleService.selectList(new EntityWrapper<BasCircularShuttle>().orderBy("rgv_id", true)); + + int[][] ints = new int[basCircularShuttleList.size()][2]; + for (BasCircularShuttle basCircularShuttle : basCircularShuttleList){ + ints[basCircularShuttle.getRgvNo()-1] = new int[]{basCircularShuttle.getRgvNo(),basCircularShuttle.getRgvId()}; + } + String[] oldList = new String[ints.length]; + for (int[] rgv : ints){ + oldList[rgv[0]-1] = Arrays.toString(rgv); + } + int[][] rgvList = SortTheExecutionOfTheCarUtil.ReorderSteId(ints, rgvNo); + String[] newList = new String[rgvList.length]; + for (int[] rgv : rgvList){ + newList[rgv[0]-1] = Arrays.toString(rgv); + } + + log.info("鏇存柊灏忚溅鎺掑簭淇℃伅锛氬師濮嬪皬杞﹀彿rgvNo={},灏忚溅閲嶆柊鎺掑簭淇℃伅={},灏忚溅鍘熷鎺掑簭淇℃伅={}",rgvNo,Arrays.toString(newList),Arrays.toString(oldList)); + for (BasCircularShuttle basCircularShuttle : basCircularShuttleList){ + int[] rgv = rgvList[basCircularShuttle.getRgvNo() - 1]; + basCircularShuttle.setRgvId(rgv[1]); + basCircularShuttleService.updateById(basCircularShuttle); + } + + } catch (Exception e) { + log.error("鑷姩鏇存柊灏忚溅鎺掑簭淇℃伅澶辫触锛屽紓甯革細"+e); + } + } + /** + * 绔欑偣浠诲姟妫�娴� 鏇存柊灏忚溅浣嶇疆淇℃伅 + */ public synchronized void updateStePosition() { try{ boolean sign = false; -- Gitblit v1.9.1