From 8891898a6ae6229ede66c8005f2912c75ddc6d90 Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期三, 05 三月 2025 22:32:26 +0800 Subject: [PATCH] 1、fixbug:中空任务领取部分对数玻璃后继续领任务,任务显示异常bug解决 2、大理片笼/中空理片笼显示异常bug:进片任务计算目标格子后,预先将笼子插入一条记录,界面相同判断时显示存在歧义,修改数据返回逻辑:在没有目标格子前提下,如果笼内存在玻璃显示相同,有目标格子后笼内有数据不显示 3、中空理片笼进片任务优化:中空可能存在脏数据,原因人为操作或订单多补片造成中空关系订单数量与实际数据不匹配,实际数量大于订单数量,系统会重新生成一份关系造成关系进笼玻璃数据顺序存在重复而无法进笼。 --- hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java | 49 +++++++++++++++++++++++++++++++------------------ 1 files changed, 31 insertions(+), 18 deletions(-) diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java index 9be61a8..640cf2f 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java @@ -101,6 +101,8 @@ private Integer artificialOutTargetPosition; @Value("${mes.slotMaxHeight}") private Integer slotMaxHeight; + @Value("${mes.slotMaxthickness}") + private Integer slotMaxthickness; @Scheduled(fixedDelay = 1000) public void inBigStorageTask() throws Exception { @@ -139,6 +141,11 @@ return; } log.info("鑾峰彇浠诲姟鐨勭幓鐠僫d锛歿}", glassIdList); + ReadWriteEntity countEntity = miloService.readFromOpcUa("DLP1A.DLP1A.glassCount"); + if (null == countEntity.getValue() || Integer.parseInt(countEntity.getValue() + "") != glassIdList.size()) { + log.info("褰撳墠澶ц溅杩涚墖鐜荤拑鏁伴噺{}涓巑es璇诲彇鍒扮殑鏁伴噺{}涓嶅尮閰嶏紝缁撴潫杩涚墖浠诲姟", countEntity.getValue(), glassIdList.size()); + return; + } Map<String, Long> glassCountMap = glassIdList.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting())); for (Map.Entry<String, Long> entry : glassCountMap.entrySet()) { if (entry.getValue() > 1) { @@ -175,7 +182,7 @@ } } //todo:瓒呭ぇ灏哄 - if (slotMaxHeight < Math.min(glassInfoList.get(0).getWidth(), glassInfoList.get(0).getHeight())) { + if (slotMaxHeight < Math.min(glassInfoList.get(0).getWidth(), glassInfoList.get(0).getHeight()) || glassInfoList.get(0).getThickness() > slotMaxthickness) { int count = bigStorageCageDetailsService.count(new LambdaQueryWrapper<BigStorageCageDetails>() .eq(BigStorageCageDetails::getSlot, THROUGH_SLOT) .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL)); @@ -189,6 +196,11 @@ //淇敼纾ㄨ竟瀵瑰垪琛ㄧ殑鐜荤拑鐘舵�� edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>() .set(EdgGlassTaskInfo::getState, Const.EDG_GLASS_SUCCESS).in(EdgGlassTaskInfo::getGlassId, glassIdList)); + //鎶ュ伐 + for (String glass : glassIdList) { + damageService.autoSubmitReport(glass, inTaskList.get(0).getStartSlot(), "纾ㄨ竟", "杩涘ぇ鐞嗙墖绗�", 1); + } + Map<String, List<GlassInfo>> glassListMap = glassInfoList.stream().collect(Collectors.groupingBy(GlassInfo::getGlassId)); //璁$畻鐩爣鏍煎瓙 List<BigStorageCageHistoryTask> historyTasks = new ArrayList<>(); @@ -219,7 +231,9 @@ cageDetails.setState(Const.GLASS_STATE_NEW); cageDetails.setDeviceId(bigStorageDTO.getDeviceId()); cageDetails.setSequence(bigStorageDTO.getSlotSequence()); + cageDetails.setAngle((int) info.getAngle()); cageDetails.setGap(glassGap); + cageDetails.setFilmsId(info.getFilmsid()); cageDetails.setId(null); bigStorageCageDetailsService.save(cageDetails); } @@ -242,6 +256,8 @@ cageDetails.setDeviceId(0); cageDetails.setSequence(0); cageDetails.setGap(glassGap); + cageDetails.setAngle((int) info.getAngle()); + cageDetails.setFilmsId(info.getFilmsid()); cageDetails.setId(null); bigStorageCageDetailsService.save(cageDetails); } @@ -279,18 +295,8 @@ //鏄惁鏈夋鍦ㄩ挗鍖栫殑鐜荤拑:閽㈠寲灏忕墖琛ㄥ叧鑱斿巻鍙蹭换鍔¤〃锛岀瓫閫夋湭鍑虹鐨勭幓鐠冧俊鎭� // 鑾峰彇褰撳墠閽㈠寲浠诲姟鏈畬鎴愬嚭鐗囩殑鐜荤拑淇℃伅 List<TemperingGlassInfo> unFinishTemperingGlassInfoList = temperingGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>() - .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW).orderByAsc(TemperingGlassInfo::getTemperingFeedSequence)); + .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW).orderByAsc(TemperingGlassInfo::getTemperingLayoutId).orderByAsc(TemperingGlassInfo::getTemperingFeedSequence)); if (CollectionUtil.isNotEmpty(unFinishTemperingGlassInfoList)) { -// List<String> glassIdList = unFinishTemperingGlassInfoList.stream().map(TemperingGlassInfo::getGlassId).collect(Collectors.toList()); -// List<BigStorageCageHistoryTask> historyTaskList = bigStorageCageHistoryTaskService.list(new LambdaQueryWrapper<BigStorageCageHistoryTask>() -// .eq(BigStorageCageHistoryTask::getTaskType, Const.BIG_STORAGE_BEFORE_OUT) -// .in(BigStorageCageHistoryTask::getGlassId, glassIdList)); -// List<TemperingGlassInfo> temperingGlassList = unFinishTemperingGlassInfoList; -// if (CollectionUtil.isNotEmpty(historyTaskList)) { -// List<String> taskGlassList = historyTaskList.stream().map(BigStorageCageHistoryTask::getGlassId).collect(Collectors.toList()); -// temperingGlassList = unFinishTemperingGlassInfoList.stream().filter(e -> !taskGlassList.contains(e.getGlassId())).collect(Collectors.toList()); -// } -// if (CollectionUtil.isNotEmpty(unFinishTemperingGlassInfoList)) { log.info("鏈夋鍦ㄥ嚭鐗囩殑閽㈠寲浠诲姟"); computeOutGlassInfoByVirtualSlot(unFinishTemperingGlassInfoList, "big_storage_cage_out_one_task", temperingOutTargetPosition, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_BEFORE_OUT); Date endDate = new Date(); @@ -319,9 +325,9 @@ for (TemperingLayoutDTO item : temperingLayoutDTOList) { // if (item.getEngineerId().equals(redisUtil.getCacheObject("temperingengineerId"))) { List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class) - .selectAll(GlassInfo.class) - .select("-1 as state") - .selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot) + .select("-1 as state,t.filmsid as films_id,t.glass_id,t.flow_card_id,t.glass_type,t.width,t.height" + + ",t.thickness,t.ishorizontal,t.tempering_layout_id,t.tempering_feed_sequence,t.x_coordinate,t.y_coordinate," + + "t.angle,t1.slot,t.engineer_id") .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId) .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId()) @@ -533,6 +539,10 @@ bigStorageCageDetailsService.updateBySlot(storageCageDTOList, Const.GLASS_STATE_OUT); } else { bigStorageCageDetailsService.updateBySlot(storageCageDTOList, Const.GLASS_STATE_IN); + //鎸夌収鏍煎瓙淇℃伅鏇存柊瀵瑰簲鐨勮澶噄d + List<Integer> slotList = storageCageDTOList.stream().map(UpdateBigStorageCageDTO::getTargetSlot).distinct().collect(Collectors.toList()); + bigStorageCageDetailsService.updateDeviceIdBySlot(slotList); + } log.info("4銆佸ぇ鐞嗙墖绗艰繘鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", v); updateSlotRemainBySlots(outSuccessGlassSlot); @@ -682,9 +692,12 @@ */ private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfoByVirtualSlot(List<T> list, String tableName, int targetSlot, int state, int taskType) { //浠诲姟鏁版嵁:鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲�,鐜荤拑闂撮殧 - List<String> glassIdList = bigStorageGlassRelationInfoService.queryNeedOutGlassId( - list.get(0).getEngineerId(), list.get(0).getTemperingLayoutId(), list.get(0).getTemperingFeedSequence()); - List<T> outGlassList = list.stream().filter(e -> glassIdList.contains(e.getGlassId())).collect(Collectors.toList()); + List<T> outGlassList = list; + if (!THROUGH_SLOT.equals(list.get(0).getSlot())) { + List<String> glassIdList = bigStorageGlassRelationInfoService.queryNeedOutGlassId( + list.get(0).getEngineerId(), list.get(0).getTemperingLayoutId(), list.get(0).getTemperingFeedSequence()); + outGlassList = list.stream().filter(e -> glassIdList.contains(e.getGlassId())).collect(Collectors.toList()); + } Assert.isFalse(CollectionUtil.isEmpty(outGlassList), "鏈幏鍙栧嚭鐗囨暟鎹紝缁撴潫鍑虹墖浠诲姟"); log.info("鑾峰彇鍑虹墖浠诲姟鏁版嵁{}鏉★紝鎵ц淇濆瓨", outGlassList.size()); List<BigStorageCageTask> bigStorageCageTaskList = outGlassList.stream() -- Gitblit v1.8.0