hangzhoumesParent/JsonFile/PlcCacheGlass.json
@@ -59,6 +59,13 @@ "addressLenght":"2", "ratio":"1", "unit":"" } }, { "codeId": "A09_glass_status", "addressIndex": "76", "addressLenght": "2", "ratio": "1", "unit": "" } ] } hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -30,18 +30,18 @@ * A09出片目标位置 d02卧转立 钢化出片 3001 * A10出片目标位置 d05卧转立 人工出片 3002 */ // public static final Integer TEMPERING_OUT_TARGET_POSITION = 3001; // public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 3002; // public static final List<Integer> OUT_TARGET_POSITION_ALL = Arrays.asList(3001, 3002); public static final Integer TEMPERING_OUT_TARGET_POSITION = 3001; public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 3002; public static final List<Integer> OUT_TARGET_POSITION_ALL = Arrays.asList(3001, 3002); /** * 义乌磨边线 * A09出片目标位置 d02卧转立 钢化出片 930 * A10出片目标位置 d05卧转立 人工出片 931 */ public static final Integer TEMPERING_OUT_TARGET_POSITION = 930; public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 931; public static final List<Integer> OUT_TARGET_POSITION_ALL = Arrays.asList(930, 931); // /** // * 义乌磨边线 // * A09出片目标位置 d02卧转立 钢化出片 930 // * A10出片目标位置 d05卧转立 人工出片 931 // */ // public static final Integer TEMPERING_OUT_TARGET_POSITION = 930; // public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 931; // public static final List<Integer> OUT_TARGET_POSITION_ALL = Arrays.asList(930, 931); /** * 卧式理片笼详情表玻璃状态 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
@@ -148,7 +148,7 @@ /** * 预排格子 */ private Integer Slot; private Integer targetSlot; /** * 打标属性 */ hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
@@ -1,6 +1,7 @@ package com.mes.temperingglass.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.mes.base.entity.BigStorageCageBaseInfo; @@ -88,11 +89,24 @@ private Integer state; /** * 格子 */ @TableField("Slot") @ApiModelProperty(value = "格子", position = 17) private Integer slot; /** * 工程id */ @ApiModelProperty(value = "工程id", position = 17) @ApiModelProperty(value = "工程id", position = 18) private String engineerId; /** * 钢化类型 */ @ApiModelProperty(value = "钢化类型", position = 19) private Integer temperingType; @TableLogic private int deleted; } hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -211,8 +211,11 @@ new LambdaQueryWrapper<GlassInfo>() .eq(GlassInfo::getGlassId, glassId) ); if (Math.max(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) > cacheWidth || Math.min(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) > cacheHeight) { log.info("1.1、玻璃超过卧式理片最大尺寸:{}", feedGlassInfo); if (Math.max(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) > cacheWidth || Math.min(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) > cacheHeight || Math.min(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) < Integer.parseInt(minTwoFirstLength) ) { log.info("1.1、玻璃超过卧式理片尺寸范围:{}", feedGlassInfo); return; } hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
@@ -89,12 +89,12 @@ // miloService.subscriptionFromOpcUa(Arrays.asList("mes.WL2.edg_storage_device_two_task[1].task_state"), cacheGlassStartCallback); // } @Scheduled(fixedDelay = 1000) // @Scheduled(fixedDelay = 1000) public void startOneOpcTask() { startOneOpcTaskChild(EDG_STORAGE_DEVICE_ONE_TASK, 1); } @Scheduled(fixedDelay = 1000) // @Scheduled(fixedDelay = 1000) public void startTwoOpcTask() { startOneOpcTaskChild(EDG_STORAGE_DEVICE_TWO_TASK, 2); } @@ -142,7 +142,7 @@ } @Scheduled(fixedDelay = 1000) // @Scheduled(fixedDelay = 1000) public void edgOneOpcTask() throws Exception { EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(EDG_STORAGE_DEVICE_ONE_TASK); String glassId = task.getGlassId(); @@ -153,7 +153,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(); hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
@@ -74,7 +74,8 @@ public void testChangeCellSize() { // String url=getClass().getResource("").getPath(); // log.info("完整路径:{}", Arrays.asList(url)); cacheGlassTask.queryChangeGlassInfo(Const.A09_OUT_TARGET_POSITION, ""); // cacheGlassTask.queryChangeGlassInfo(Const.A09_OUT_TARGET_POSITION, ""); cacheGlassTask.inTo("P24110503|26|2","","2"); } @Test hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -272,7 +272,7 @@ new LambdaQueryWrapper<GlassInfo>() .eq(GlassInfo::getEngineerId, glassInfo.getEngineerId()) .eq(GlassInfo::getTemperingLayoutId, glassInfo.getTemperingLayoutId()) .eq(GlassInfo::getSlot, glassInfo.getSlot()) .eq(GlassInfo::getTargetSlot, glassInfo.getTargetSlot()) ); List<String> glassIds = glassInfoList.stream().map(GlassInfo::getGlassId).collect(Collectors.toList()); BigStorageDTO bigStorageDTO = null; hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -304,7 +304,7 @@ log.info("大理片笼空车进片任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); } @Scheduled(fixedDelay = 10000) @Scheduled(fixedDelay = 5000) public void plcToHomeEdgOutTask() { Date startDate = new Date(); log.info("大理片笼出片任务开始执行时间:{}", startDate); @@ -393,7 +393,7 @@ + temperingOccupySlot.getEngineerId() + "' and tempering_layout_id = '" + temperingOccupySlot.getTemperingLayoutId() + "'") .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence) ); Map<Integer, List<GlassInfo>> listMap = glassInfos.stream().collect(Collectors.groupingBy(item -> item.getSlot())); Map<Integer, List<GlassInfo>> listMap = glassInfos.stream().collect(Collectors.groupingBy(item -> item.getTargetSlot())); for (Map.Entry<Integer, List<GlassInfo>> entry : listMap.entrySet()) { List<GlassInfo> valueList = entry.getValue(); List<String> glassIds = valueList.stream().map(GlassInfo::getGlassId).collect(Collectors.toList()); @@ -427,9 +427,9 @@ .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)); //两次更新笼子的剩余尺寸:第一次防止有玻璃继续进调度后的笼子,第二次更新:计算格子的实际尺寸 // 仅更新调度后的格子信息:起始格子完成后更新:防止调度出片过程中有新玻璃进入, List<Integer> updateSlots = new ArrayList<>(); updateSlots.add(bigStorageCageDetails.getSlot()); updateSlotRemainBySlots(updateSlots); // List<Integer> updateSlots = new ArrayList<>(); // updateSlots.add(bigStorageCageDetails.getSlot()); // updateSlotRemainBySlots(updateSlots); } } break loop; @@ -673,7 +673,10 @@ bigStorageCageFeedTaskService.remove(new LambdaQueryWrapper<BigStorageCageFeedTask>().in(BigStorageCageFeedTask::getTaskState, Const.GLASS_STATE_DAMAGE_TAKE)); //理片笼详情表数据状态更新 bigStorageCageDetailsService.remove(new LambdaQueryWrapper<BigStorageCageDetails>() .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW).in(BigStorageCageDetails::getGlassId, inDamageTaskInfoList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList()))); // .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW) .and(e -> e.eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW).or() .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)) .in(BigStorageCageDetails::getGlassId, inDamageTaskInfoList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList()))); //将破损信息新增入破损表 List<Integer> slotList = new ArrayList<>(); for (BigStorageCageFeedTask bigStorageCageFeedTask : inDamageTaskInfoList) { @@ -867,9 +870,20 @@ .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) .eq(BigStorageCageFeedTask::getTargetSlot, 0) ); if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)){ log.info("获取到的进片任务信息{}", bigStorageCageFeedTasks); if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)) { log.info("计算目标格子发送任务{}", bigStorageCageFeedTasks); computeTargetByLineCar(bigStorageCageFeedTasks.get(0).getLine(), glassIdsCar); } else { log.info("再次发送进片任务{}", bigStorageCageFeedTasks); List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskService.list( new LambdaQueryWrapper<BigStorageCageFeedTask>() .in(BigStorageCageFeedTask::getGlassId, glassIdsCar) .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_CAR) .gt(BigStorageCageFeedTask::getTargetSlot, 0) ); if (CollectionUtils.isNotEmpty(bigStorageCageFeedTaskList)) { sendTaskListToPLCCar(bigStorageCageFeedTaskList); } } } @@ -1005,7 +1019,7 @@ new LambdaQueryWrapper<GlassInfo>() .eq(GlassInfo::getGlassId, glassId) ); if (glassInfo.getSlot() == null) { if (glassInfo.getTargetSlot() == null) { List<GlassInfo> glassInfos = glassInfoService.list( new LambdaQueryWrapper<GlassInfo>() .eq(GlassInfo::getEngineerId, glassInfo.getEngineerId()) @@ -1025,7 +1039,7 @@ glassInfoService.update( new LambdaUpdateWrapper<GlassInfo>() .eq(GlassInfo::getGlassId, bigStorageCageOutTask.getGlassId()) .set(GlassInfo::getSlot, bigStorageCageOutTask.getTrainNumber()) .set(GlassInfo::getTargetSlot, bigStorageCageOutTask.getTrainNumber()) ); } } @@ -1123,11 +1137,11 @@ if (info == null) { continue; } if(info.getSlot()==null){ if (info.getTargetSlot() == null) { computeSlot(info.getGlassId()); info=glassInfoService.getOne( info = glassInfoService.getOne( new LambdaQueryWrapper<GlassInfo>() .eq(GlassInfo::getGlassId,info.getGlassId()) .eq(GlassInfo::getGlassId, info.getGlassId()) ); } BigStorageCageDetails cageDetails = new BigStorageCageDetails(); @@ -1422,6 +1436,7 @@ .eq(GlassInfo::getTotalLayer, glassInfo.getTotalLayer()) .eq(GlassInfo::getLayer, glassInfo.getLayer()) .eq(GlassInfo::getEngineerId, glassInfo.getEngineerId()) .eq(GlassInfo::getMarkIcon, glassInfo.getMarkIcon()) .notInSql(GlassInfo::getGlassId, "select distinct glass_id from big_storage_cage_details " + "where state!=101 and engineer_id = '" + glassInfo.getEngineerId() + "' and width = " + glassInfo.getWidth() + " and height = " + glassInfo.getHeight()) .orderByAsc(GlassInfo::getTemperingLayoutId) hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml
@@ -18,8 +18,10 @@ and deleted = 0 and (target_slot = 0 or target_slot is null) group by line HAVING DATEDIFF(SECOND, max(create_time), GETDATE()) + 45>20 or SUM(case task_state when 2 then 1 else 0 end)>1 ) t where t.total_count = t.real_count order by real_count desc,line desc </select> <select id="querySitToUpRemainWidth" resultMap="bigStorageDTO"> SELECT CAST hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -24,6 +24,7 @@ import com.mes.edgglasstask.service.EdgGlassTaskInfoService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import com.mes.job.PlcSlicecage; import com.mes.job.PlcStorageCageTask; import com.mes.pp.entity.ReportingWork; import com.mes.pp.entity.ReportingWorkDetail; @@ -283,18 +284,20 @@ // .eq(GlassInfo::getGlassId,"P24120801|1|2") // ); // bigStorageCageDetailsService.queryTargetSlotByTempering(glassInfo); List<String> glassIdsCar=new ArrayList<>(); glassIdsCar.add("P24120801|4|3"); List<BigStorageCageFeedTask> bigStorageCageFeedTasks = bigStorageCageFeedTaskService.list( new LambdaQueryWrapper<BigStorageCageFeedTask>() .in(BigStorageCageFeedTask::getGlassId, glassIdsCar) .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) .eq(BigStorageCageFeedTask::getTargetSlot, 0) ); if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)){ log.info("获取到的进片任务信息{}", bigStorageCageFeedTasks); plcStorageCageTask.computeTargetByLineCar(bigStorageCageFeedTasks.get(0).getLine(), glassIdsCar); } // List<String> glassIdsCar=new ArrayList<>(); // glassIdsCar.add("P24120801|4|3"); // List<BigStorageCageFeedTask> bigStorageCageFeedTasks = bigStorageCageFeedTaskService.list( // new LambdaQueryWrapper<BigStorageCageFeedTask>() // .in(BigStorageCageFeedTask::getGlassId, glassIdsCar) // .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) // .eq(BigStorageCageFeedTask::getTargetSlot, 0) // ); // if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)){ // log.info("获取到的进片任务信息{}", bigStorageCageFeedTasks); // plcStorageCageTask.computeTargetByLineCar(bigStorageCageFeedTasks.get(0).getLine(), glassIdsCar); // } // plcStorageCageTask.queryAndChangeGlass("P24111102|1|6"); bigStorageCageDetailsService.selectFeedTask(); } @Test hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -275,7 +275,8 @@ for (DownGlassInfoDTO e : downGlassInfoDTOList) { List<GlassInfo> glassInfoList = e.getGlassInfoList(); List<GlassInfo> glassInfoTempList = glassInfoList.stream().filter(item -> item.getWidth() == glassInfo.getWidth() && item.getHeight() == glassInfo.getHeight() && item.getThickness() == glassInfo.getThickness() && item.getFilmsid().equals(glassInfo.getFilmsid())).collect(Collectors.toList()); && item.getThickness() == glassInfo.getThickness() && item.getMarkIcon().equals(glassInfo.getMarkIcon()) && item.getFilmsid().equals(glassInfo.getFilmsid())).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(glassInfoTempList)) { for (GlassInfo item : glassInfoTempList) { //玻璃是否为多层:1、先获取当前流程卡落架最多的层数,如果为空,表明未绑定流程卡,未落架,然后按照是否可绑定架子决定是否替换。(可忽略不计,本校验仅在前一次调用起作用)