hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -5,6 +5,7 @@ import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.mes.common.S7object; @@ -587,11 +588,9 @@ log.info("6、添加出片任务是否完成:{}", taskCacheStatus); } else { log.info("5、非直通任务,将玻璃信息插入卧式理片笼,当前玻璃信息:{}", glassInfo); LambdaQueryWrapper<EdgStorageCageDetails> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(EdgStorageCageDetails::getGlassId, glassInfo.getGlassId()); EdgStorageCageDetails updateDetail = new EdgStorageCageDetails(); updateDetail.setState(Const.GLASS_STATE_OUT); edgStorageCageDetailsService.update(updateDetail, wrapper); LambdaUpdateWrapper<EdgStorageCageDetails> wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(EdgStorageCageDetails::getGlassId, glassInfo.getGlassId()).set(EdgStorageCageDetails::getState, Const.GLASS_STATE_OUT); edgStorageCageDetailsService.update(wrapper); log.info("5、更新出片玻璃的状态为{}", Const.GLASS_STATE_OUT); boolean taskCacheStatus = saveTaskCache(glassInfo.getGlassId(), glassInfo.getSlot(), endcell, Const.GLASS_CACHE_TYPE_OUT); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/CacheVerticalClassModuleApplication.java
@@ -18,7 +18,7 @@ @EnableSwagger2 @EnableDiscoveryClient @MapperScan(basePackages = "com.mes.*.mapper") //@EnableScheduling @EnableScheduling public class CacheVerticalClassModuleApplication { public static void main(String[] args) { try { hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -18,6 +18,8 @@ import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper; import com.mes.bigstoragetask.mapper.BigStorageCageOutTaskMapper; import com.mes.common.config.Const; import com.mes.damage.entity.Damage; import com.mes.damage.service.DamageService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.mapper.GlassInfoMapper; import com.mes.temperingglass.entity.TemperingGlassInfo; @@ -54,6 +56,9 @@ private BigStorageCageService bigStorageCageService; @Resource private GlassInfoMapper glassInfoMapper; @Resource private DamageService damageService; @Value("${mes.minCount}") private int minCount; @@ -205,7 +210,12 @@ baseMapper.updateById(bigStorageCageDetails); bigStorageCageService.updateRemainWidth(bigStorageCageDetails.getSlot()); //todo:插入破损数据 Damage damage = new Damage(); damage.setGlassId(bigStorageCageDetails.getGlassId()); damage.setWorkingProcedure("冷加工"); damage.setRemark("大理片笼破损"); damage.setStatus(2); damageService.insertDamage(damage); } //查询玻璃信息 @@ -264,7 +274,7 @@ .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot) .eq(BigStorageCage::getEnableState, Const.SLOT_ON) .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId()) .gt(BigStorageCage::getRemainWidth, glassInfo.getWidth()) .gt(BigStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight())) .last("limit 1"); if (glassInfo.getTemperingLayoutId() == 0) { wrapper.eq(BigStorageCageDetails::getWidth, glassInfo.getWidth()).eq(BigStorageCageDetails::getHeight, glassInfo.getHeight()); @@ -292,7 +302,23 @@ bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId()); return bigStorageDTO; } //todo:获取玻璃的厚度:重新选笼子需要按照笼子可放玻璃厚度进行选择 //获取玻璃的厚度:重新选笼子需要按照笼子可放玻璃厚度进行选择 bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() .eq(BigStorageCage::getRemainWidth, slotWidth) .eq(BigStorageCage::getEnableState, Const.SLOT_ON) .notInSql(BigStorageCage::getDeviceId, "select distinct device_id from big_storage_cage_details where tempering_layout_id = " + glassInfo.getTemperingLayoutId()) .gt(BigStorageCage::getMaxThickness, glassInfo.getThickness()) .orderByAsc(BigStorageCage::getDeviceId) .last("limit 1")); if (null != bigStorageCage) { bigStorageDTO = new BigStorageDTO(); bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); bigStorageDTO.setSlot(bigStorageCage.getSlot()); bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId()); return bigStorageDTO; } bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() .eq(BigStorageCage::getRemainWidth, slotWidth) .eq(BigStorageCage::getEnableState, Const.SLOT_ON) hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
@@ -18,6 +18,7 @@ import com.mes.temperingglass.service.TemperingGlassInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -48,6 +49,9 @@ @Resource private GlassInfoService glassInfoService; @Value("${mes.glassGap}") private Integer glassGap; //进片逻辑 @Override @@ -217,15 +221,13 @@ LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper = new LambdaQueryWrapper(); bigStorageCageDetailsWrapper .eq(BigStorageCageDetails::getSlot, slot) .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL); .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL); List<BigStorageCageDetails> bigStorageCageDetailsList = bigStorageCageDetailsMapper.selectList(bigStorageCageDetailsWrapper); for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList ) { double widths = bigStorageCageDetails.getWidth(); double gap = bigStorageCageDetails.getGap(); width -= widths + gap; width = width - widths - glassGap; } //修改格子剩余宽度 BigStorageCage bigStorageCage = new BigStorageCage(); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -85,7 +85,10 @@ @Value("${mes.glassGap}") private Integer glassGap; @Scheduled(fixedDelay = 500) private String d01GlassId = ""; private String d04GlassId = ""; @Scheduled(fixedDelay = 300) public void plcToHomeEdgScan() { Date startDate = new Date(); log.info("大理片笼扫码任务开始执行时间:{}", startDate); @@ -114,27 +117,30 @@ } //按照线路及玻璃id获取相邻两块玻璃 卧转立上的玻璃: 状态为0不操作(D01送片,0不操作,1允许送片),请求字为1, (02玻璃id为空或者卧转立未启动) if (!REQUEST_WORD.equals(mesD01Value) && REQUEST_WORD.equals(d01ToMES) && (StringUtils.isBlank(d02State) || !REQUEST_WORD.equals(d03State))) { judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address); if (!d01GlassId.equals(d01Id)) { judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address); d01GlassId = d01Id; } } // 状态为0不操作(D01送片,0不操作,1允许送片),请求字为1, 卧转立未启动 if (!REQUEST_WORD.equals(mesD04Value) && REQUEST_WORD.equals(d04ToMES) && !REQUEST_WORD.equals(d05State)) { judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address); if (!d04GlassId.equals(d04Id)) { judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address); d04GlassId = d04Id; } } Date endDate = new Date(); log.info("大理片笼扫码任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); } @Scheduled(fixedDelay = 500) @Scheduled(fixedDelay = 300) public void plcToHomeEdgFreeCarTask() { Date startDate = new Date(); log.info("大理片笼空车进片任务开始执行时间:{}", startDate); PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; // String e01Status = plcParameterObject.getPlcParameter("E01State").getValue(); // String d03ToMES = plcParameterObject.getPlcParameter("D03ToMES").getValue(); // String d05ToMES = plcParameterObject.getPlcParameter("D05ToMES").getValue(); String e01Status="0"; String d03ToMES="1"; String d05ToMES="0"; String e01Status = plcParameterObject.getPlcParameter("E01State").getValue(); String d03ToMES = plcParameterObject.getPlcParameter("D03ToMES").getValue(); String d05ToMES = plcParameterObject.getPlcParameter("D05ToMES").getValue(); log.info("执行空车送片任务,获取到的大车状态为{},卧转立状态分别为d03:{},d05:{}", e01Status, d03ToMES, d05ToMES); if (REQUEST_WORD.equals(e01Status)) { Date endDate = new Date(); @@ -234,7 +240,7 @@ log.info("大理片笼空车进片任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); } @Scheduled(fixedDelay = 500) @Scheduled(fixedDelay = 300) public void plcToHomeEdgOutTask() { Date startDate = new Date(); log.info("大理片笼空车进片任务开始执行时间:{}", startDate); @@ -314,7 +320,7 @@ } } @Scheduled(fixedDelay = 500) @Scheduled(fixedDelay = 300) public void updateOutGlassStateTask() { Date startDate = new Date(); log.info("1、大理片笼出片完成后更新大理片笼数据任务开始执行时间:{}", startDate); @@ -343,7 +349,7 @@ /** * 处理破损表任务 */ @Scheduled(fixedDelay = 500) @Scheduled(fixedDelay = 300) public void dealDamageTask() { Date startDate = new Date(); log.info("大理片笼破损玻璃清除任务开始执行时间:{}", startDate); @@ -454,6 +460,7 @@ //向plc发送进片确认 if (flag) { S7object.getinstance().plccontrol.writeWord(mesAddress, 1); log.info("进卧转立发送确认字完成,地址为{}", mesAddress); } //记录无法放下玻璃,后续判断启动 return flag; @@ -531,7 +538,7 @@ //2、获取目标格子信息 BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info); //3、更新大理片笼表剩余宽度 bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - info.getWidth()) bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - info.getWidth() - glassGap) .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot())); //4、更新进片任务表,目标格子及状态(状态改为2 电气扫到自行处理) 遇到问题:无法批量更新,批量更新无法走指定从库 e.setTargetSlot(bigStorageDTO.getSlot()); @@ -634,7 +641,7 @@ } //获取玻璃信息 GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId)); return sitToUpRemainWidth.getWidth() < glassInfo.getWidth(); return sitToUpRemainWidth.getWidth() < Math.max(glassInfo.getWidth(), glassInfo.getHeight()); } }