From 59dbc0c01c79f901189ceb7b7d924a0dfe4f1203 Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期三, 16 四月 2025 16:34:55 +0800 Subject: [PATCH] 1、卧式理片一拖二功能测试通过, 小片台新增最大尺寸配置:8mm,超过的玻璃小片只能走大线 --- hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java | 83 ++++++++++++++++++++++++++--------------- 1 files changed, 52 insertions(+), 31 deletions(-) diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java index 332b090..cee94a9 100644 --- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java +++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java @@ -26,6 +26,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; @@ -91,37 +92,38 @@ @Value("${mes.max.secondLength}") private int maxTwoSecondLength; + @Value("${mes.maxThickness}") + private int maxThickness; + private String glassInIdOne = ""; private String glassInIdTwo = ""; private String glassIdOne = ""; private String glassIdTwo = ""; - // @Scheduled(fixedDelay = 1000) + @Scheduled(fixedDelay = 1000) public void startOneOpcTask() throws Exception { //鑾峰彇绗簩鏉$嚎璺殑鍗у紡鐞嗙墖绗肩姸鎬� - ReadWriteEntity twoInkageEntity = miloService.readFromOpcUa("ZKQ2.ZKQ2.isInkage"); + ReadWriteEntity twoInkageEntity = miloService.readFromOpcUa("WL2.WL2.deviceState"); //榛樿鍙窇涓�鍙板崸寮忕悊鐗�,涓ゆ潯绾胯矾閮藉彲浠ヨ蛋 int cellFlag = 2; //濡傛灉涓ゆ潯绾块兘鍚姩鍒欏彧鑳借窇涓�鏉$嚎 - if (twoInkageEntity != null && "1".equals(twoInkageEntity.getValue() + "")) { + if (twoInkageEntity != null && Boolean.parseBoolean(twoInkageEntity.getValue() + "")) { cellFlag = 1; } startOneOpcTaskChild(EDG_STORAGE_DEVICE_ONE_TASK, 1, cellFlag); } - // @Scheduled(fixedDelay = 1000) + @Scheduled(fixedDelay = 1000) public void startTwoOpcTask() throws Exception { - ReadWriteEntity oneInkageEntity = miloService.readFromOpcUa("ZKQ1.ZKQ1.isInkage"); + ReadWriteEntity oneInkageEntity = miloService.readFromOpcUa("WL1.WL1.deviceState"); int cellFlag = 2; - if (oneInkageEntity != null && "1".equals(oneInkageEntity.getValue() + "")) { + if (oneInkageEntity != null && Boolean.parseBoolean(oneInkageEntity.getValue() + "")) { cellFlag = 1; } startOneOpcTaskChild(EDG_STORAGE_DEVICE_TWO_TASK, 2, cellFlag); } private void startOneOpcTaskChild(String tableName, int device, int cellFlag) throws Exception { - edgStorageDeviceTaskHistoryService.getOne(new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>() - .eq(EdgStorageDeviceTaskHistory::getDeviceId, device)); EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(tableName); if (task == null) { log.info("浠诲姟琛ㄥ熀纭�鏁版嵁褰曞叆澶辫触锛岃妫�鏌ユ暟鎹槸鍚﹀綍鍏ユ垚鍔�"); @@ -163,16 +165,19 @@ log.info("鐜荤拑寮傚父澶勭悊"); damageTask(task, tableName, device); } -// } catch (Exception e) { -// log.info("鎵ц浠诲姟杩囩▼涓彂鐢熷紓甯革紝浠诲姟瀛梴}锛寋}", task.getTaskState(), e.getMessage()); -// log.info("灏嗗惎鍔ㄥ瓧鏀逛负0"); -// task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); -// edgStorageDeviceTaskService.updateTaskMessage(tableName, task); -// } +// } catch(Exception e) +// +// { +// log.info("鎵ц浠诲姟杩囩▼涓彂鐢熷紓甯革紝浠诲姟瀛梴}锛寋}", task.getTaskState(), e.getMessage()); +// log.info("灏嗗惎鍔ㄥ瓧鏀逛负0"); +// task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); +// edgStorageDeviceTaskService.updateTaskMessage(tableName, task); +// } + } - // @Scheduled(fixedDelay = 1000) + @Scheduled(fixedDelay = 1000) public void edgOneOpcTask() throws Exception { EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(EDG_STORAGE_DEVICE_ONE_TASK); String glassId = task.getGlassId(); @@ -183,7 +188,7 @@ edgTaskChild(glassId, 1); } - // @Scheduled(fixedDelay = 1000) + @Scheduled(fixedDelay = 1000) public void edgTwoOpcTask() throws Exception { EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(EDG_STORAGE_DEVICE_TWO_TASK); String glassId = task.getGlassId(); @@ -222,7 +227,6 @@ } else { glassIdTwo = glassId; } - } private boolean intoTask(EdgStorageDeviceTask task, String tableName, int deviceId) { @@ -254,7 +258,7 @@ log.info("缁撴潫杩涚墖浠诲姟璁惧涓簕}锛岀粨鏉熸椂闂翠负锛歿}锛屽叡鑰楁椂锛歿}ms", deviceId, endDate, endDate.getTime() - startDate.getTime()); return Boolean.FALSE; } - EdgStorageCage edgStorageCage = edgStorageCageService.selectNearestEmpty(task.getCurrentCell(), Boolean.FALSE); + EdgStorageCage edgStorageCage = edgStorageCageService.selectNearestEmpty(task.getCurrentCell(), deviceId, Boolean.FALSE); Assert.isTrue(null != edgStorageCage, "鏍煎瓙宸叉弧"); log.info("4銆佸皢鐜荤拑淇℃伅鎻掑叆鍗у紡鐞嗙墖绗�,褰撳墠鐜荤拑淇℃伅:{}", glassInfo); EdgStorageCageDetails details = new EdgStorageCageDetails(); @@ -283,24 +287,24 @@ private boolean outTask(EdgStorageDeviceTask task, String tableName, int deviceId, int cellFlag) throws Exception { Date startDate = new Date(); //鑾峰彇瀵瑰簲鐨勮澶囩姸鎬佷俊鎭� - ReadWriteEntity oneOutStateEntity = miloService.readFromOpcUa("WL1.WL1.OUTSTATE"); - ReadWriteEntity twoOutStateEntity = miloService.readFromOpcUa("WL2.WL2.OUTSTATE"); + ReadWriteEntity oneOutStateEntity = miloService.readFromOpcUa("WL1.WL1.slotState"); + ReadWriteEntity twoOutStateEntity = miloService.readFromOpcUa("WL2.WL2.slotState"); //鐘舵�佹湁3涓儏鍐碉細0绌洪棽 1蹇欑 2绂佺敤 - String oneOutState = "0"; - String twoOutState = "0"; + String oneOutState = "2"; + String twoOutState = "2"; if (null != oneOutStateEntity && null != oneOutStateEntity.getValue()) { oneOutState = oneOutStateEntity.getValue().toString(); } if (null != twoOutStateEntity && null != twoOutStateEntity.getValue()) { twoOutState = twoOutStateEntity.getValue().toString(); } - if (Const.OUT_DISABLE_ALL.contains(oneOutState) && Const.OUT_DISABLE_ALL.contains(twoOutState)) { + + if ((Const.OUT_BUSY.equals(oneOutState) && Const.OUT_BUSY.equals(twoOutState)) || (Const.OUT_DISABLE.equals(oneOutState) && Const.OUT_DISABLE.equals(twoOutState))) { log.info("A09銆丄10涓簕},{}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖", oneOutState, oneOutState); return Boolean.FALSE; } log.info("寮�濮嬫墽琛屽嚭鐗�/鐩撮�氫换鍔★紝浠诲姟淇℃伅涓猴細{},琛ㄥ悕涓猴細{},璁惧id:{},寮�濮嬫椂闂达細{},涓�鍙风嚎鐘舵�侊細{}锛屼簩鍙风嚎鐘舵�侊細{}", task, tableName, deviceId, startDate, oneOutState, twoOutState); - EdgStorageCageDetails edgStorageCageDetails = null; //鑾峰彇褰撳墠闇�瑕佽蛋閭f潯绾� int cell = 0; if (cellFlag == 1) { @@ -308,10 +312,25 @@ } else { if (Const.OUT_FREE.equals(oneOutState)) { cell = Const.ONE_OUT_TARGET_POSITION; - } else { + } else if (Const.OUT_FREE.equals(twoOutState)) { cell = Const.TWO_OUT_TARGET_POSITION; + } else { + return Boolean.FALSE; } } + if (Const.OUT_FREE.equals(oneOutState) && Const.OUT_FREE.equals(twoOutState)) { + if (!outChildTask(task, tableName, deviceId, cell, startDate)) { + cell = cell == Const.ONE_OUT_TARGET_POSITION ? Const.TWO_OUT_TARGET_POSITION : Const.ONE_OUT_TARGET_POSITION; + return outChildTask(task, tableName, deviceId, cell, startDate); + } + } else { + return outChildTask(task, tableName, deviceId, cell, startDate); + } + return Boolean.TRUE; + } + + private boolean outChildTask(EdgStorageDeviceTask task, String tableName, int deviceId, int cell, Date startDate) { + EdgStorageCageDetails edgStorageCageDetails = null; //绗煎唴鏄増鍥剧浉宸槸鍚﹁秴杩囬槇鍊� boolean flag = queryMaxMinDiffByDevice(threshold, deviceId); @@ -327,7 +346,7 @@ double maxLength = Math.max(minEdgDetails.getWidth(), minEdgDetails.getHeight()); double minLength = Math.min(minEdgDetails.getWidth(), minEdgDetails.getHeight()); if ((cell == 1 && maxLength >= minOneFirstLength && minLength >= minOneSecondLength) || - (cell == 2 && maxLength <= maxTwoFirstLength && minLength <= maxTwoSecondLength)) { + (cell == 2 && maxLength <= maxTwoFirstLength && minLength <= maxTwoSecondLength && minEdgDetails.getThickness() < maxThickness)) { //鐜荤拑灏忕墖鍚屽昂瀵哥殑绂诲綋鍓嶆牸瀛愭渶杩戠殑鐜荤拑灏忕墖 edgStorageCageDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>() .eq(EdgStorageCageDetails::getWidth, minEdgDetails.getWidth()) @@ -347,15 +366,17 @@ if (null != edgeData) { GlassInfo glassOutInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, edgeData.getGlassIdOut())); //绗煎唴鐨勭幓鐠冪殑灏哄鏄惁鍜屼笂涓�娆′换鍔′竴鑷� - edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(deviceId, task.getCurrentCell(), glassOutInfo.getWidth(), glassOutInfo.getHeight()); + edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(deviceId, task.getCurrentCell(), glassOutInfo.getWidth(), glassOutInfo.getHeight(), cell, maxThickness); if (null == edgStorageCageDetails && StringUtils.isNotBlank(task.getGlassIdIn())) { GlassInfo glassInInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>() .eq(GlassInfo::getGlassId, task.getGlassIdIn()) .eq(GlassInfo::getWidth, glassOutInfo.getWidth()) .eq(GlassInfo::getHeight, glassOutInfo.getHeight())); if (null != glassInInfo) { - edgStorageCageDetails = new EdgStorageCageDetails(); - BeanUtils.copyProperties(glassInInfo, edgStorageCageDetails); + if (cell == 2 && glassInInfo.getThickness() < maxThickness) { + edgStorageCageDetails = new EdgStorageCageDetails(); + BeanUtils.copyProperties(glassInInfo, edgStorageCageDetails); + } } } } @@ -363,7 +384,7 @@ //鍓嶉潰宸茬粡灏哄闂澶勭悊瀹屾瘯锛屽紑濮嬭绠楁棤鐩稿悓灏哄鐨勬柊鐜荤拑灏忕墖 if (null == edgStorageCageDetails) { edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsByLimitSize(deviceId, task.getCurrentCell(), 0, 0, - cell, minOneFirstLength, minOneSecondLength, maxTwoFirstLength, maxTwoSecondLength); + cell, minOneFirstLength, minOneSecondLength, maxTwoFirstLength, maxTwoSecondLength, maxThickness); } if (edgStorageCageDetails == null && StringUtils.isNotBlank(task.getGlassIdIn())) { //鍜屼笂娆′换鍔′笉瀛樺湪鐩稿悓灏哄 @@ -373,7 +394,7 @@ double minLength = Math.min(glassInInfo.getWidth(), glassInInfo.getHeight()); if ((cell == 1 && maxLength >= minOneFirstLength && minLength >= minOneSecondLength) || (cell == 2 && maxLength <= maxTwoFirstLength && minLength <= maxTwoSecondLength - && maxLength >= minTwoFirstLength && minLength >= minTwoSecondLength)) { + && maxLength >= minTwoFirstLength && minLength >= minTwoSecondLength && glassInInfo.getThickness() < maxThickness)) { //鐜荤拑灏忕墖鍚屽昂瀵哥殑绂诲綋鍓嶆牸瀛愭渶杩戠殑鐜荤拑灏忕墖 edgStorageCageDetails = new EdgStorageCageDetails(); BeanUtils.copyProperties(glassInInfo, edgStorageCageDetails); -- Gitblit v1.8.0