hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -30,7 +30,7 @@ * A09出片目标位置 d02卧转立 钢化出片 3001 * A10出片目标位置 d05卧转立 人工出片 3002 */ public static final Integer TEMPERING_OUT_TARGET_POSITION = 3002; public static final Integer TEMPERING_OUT_TARGET_POSITION = 3001; public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 3002; /** @@ -38,12 +38,14 @@ * 识别后成功状态100 * 出片任务101 * 人工下片102 * 出片中103 * 拿走200 * 破损201 */ public static final Integer GLASS_STATE_IN = 100; public static final Integer GLASS_STATE_OUT = 101; public static final Integer GLASS_STATE_ARTIFICIAL = 102; public static final Integer GLASS_STATE_OUT_ING = 103; public static final Integer GLASS_STATE_TAKE = 200; public static final Integer GLASS_STATE_DAMAGE = 201; @@ -113,6 +115,7 @@ public static final Integer BIG_STORAGE_OUT_SUCCESS = 3; public static final Integer BIG_STORAGE_OUT_ERROR = 4; public static final Integer BIG_STORAGE_OUT_DAMAGE = 5; public static final List<Integer> BIG_STORAGE_OUT_ALL = Arrays.asList(2, 3); /** * 卧转立出片请求 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -85,7 +85,7 @@ @Value("${mes.glassGap}") private Integer glassGap; @Scheduled(fixedDelay = 300) @Scheduled(fixedDelay = 500) public void plcToHomeEdgScan() { Date startDate = new Date(); log.info("大理片笼扫码任务开始执行时间:{}", startDate); @@ -124,7 +124,7 @@ log.info("大理片笼扫码任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); } @Scheduled(fixedDelay = 300) @Scheduled(fixedDelay = 500) public void plcToHomeEdgFreeCarTask() { Date startDate = new Date(); log.info("大理片笼空车进片任务开始执行时间:{}", startDate); @@ -231,7 +231,7 @@ log.info("大理片笼空车进片任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); } @Scheduled(fixedDelay = 300) @Scheduled(fixedDelay = 500) public void plcToHomeEdgOutTask() { Date startDate = new Date(); log.info("大理片笼空车进片任务开始执行时间:{}", startDate); @@ -311,10 +311,36 @@ } } @Scheduled(fixedDelay = 500) public void updateOutGlassStateTask() { Date startDate = new Date(); log.info("1、大理片笼出片完成后更新大理片笼数据任务开始执行时间:{}", startDate); //因为大理片笼和出片任务是两个库的数据,所以要分开查找 List<Object> list = bigStorageCageDetailsService.listObjs(new LambdaQueryWrapper<BigStorageCageDetails>() .select(BigStorageCageDetails::getGlassId).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING)); if (CollectionUtils.isNotEmpty(list)) { log.info("2、获取所有正在出片的玻璃信息id:{}", list); List<String> glassIds = list.stream().map(String::valueOf).collect(Collectors.toList()); List<Object> outSuccessGlassIdsObj = bigStorageCageOutTaskService.listObjs(new LambdaQueryWrapper<BigStorageCageOutTask>() .select(BigStorageCageOutTask::getGlassId).in(BigStorageCageOutTask::getGlassId, glassIds).in(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_ALL)); List<String> outSuccessGlassIds = outSuccessGlassIdsObj.stream().map(String::valueOf).collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(outSuccessGlassIds)) { log.info("3、获取出片已完成的玻璃信息id:{}", outSuccessGlassIdsObj); bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>() .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT).in(BigStorageCageDetails::getGlassId, outSuccessGlassIds)); log.info("4、大理片笼出片状态已完成已完成的玻璃信息id:{}", outSuccessGlassIdsObj); } } Date endDate = new Date(); log.info("end:大理片笼出片完成后更新大理片笼数据任务结束时间:{},共耗时:{}ms,结束任务", endDate, endDate.getTime() - startDate.getTime()); return; } /** * 处理破损表任务 */ @Scheduled(fixedDelay = 300) @Scheduled(fixedDelay = 500) public void dealDamageTask() { Date startDate = new Date(); log.info("大理片笼破损玻璃清除任务开始执行时间:{}", startDate); @@ -548,7 +574,7 @@ List<String> glassIds = bigStorageCageOutTaskList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList()); log.info("将出片玻璃{}玻璃状态改为已出片", glassIds); bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>() .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT) .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING) .in(BigStorageCageDetails::getGlassId, glassIds)); //更新笼子内格子的剩余尺寸 updateSlotRemain(list, glassIds); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -37,7 +37,7 @@ ) T2 INNER JOIN (SELECT ENGINEER_ID, TEMPERING_LAYOUT_ID, COUNT(TEMPERING_FEED_SEQUENCE) AS COUNT FROM BIG_STORAGE_CAGE_DETAILS WHERE STATE in (100, 101, 102) WHERE STATE in (100, 101, 102, 103) GROUP BY ENGINEER_ID, TEMPERING_LAYOUT_ID) T3 ON T2.ENGINEER_ID = T3.ENGINEER_ID AND T2.TEMPERING_LAYOUT_ID = T3.TEMPERING_LAYOUT_ID AND T2.COUNT = T3.COUNT hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
@@ -1,25 +1,76 @@ package com.mes.job; import com.mes.tempering_record.service.TemperingRecordService; import cn.smallbun.screw.core.util.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mes.common.S7object; import com.mes.common.config.Const; import com.mes.device.PlcParameterObject; import com.mes.temperingglass.entity.TemperingGlassInfo; import com.mes.temperingglass.service.TemperingGlassInfoService; import com.mes.temperingrecord.entity.TemperingRecord; import com.mes.temperingrecord.service.TemperingRecordService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.stream.Collectors; /** * @Author : zhoush * @Date: 2024/7/17 12:47 * @Description: */ @Component @Slf4j public class TemperingTask { @Autowired private TemperingRecordService temporalRecordService; @Autowired private TemperingGlassInfoService temporaryGlassInfoService; private static final String ALONE_STATE = "0"; @Scheduled(fixedDelay = 1000) public void temperingGlassBefore() { Date startDate = new Date(); log.info("本次任务开始执行时间:{}", startDate); PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; String state = plcParameterObject.getPlcParameter("state").getValue(); // 当前连线状态为 if (ALONE_STATE.equals(state)) { log.info("当前钢化炉连线模式为:{},不执行该任务", state); return; } //将确认字置为0 S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("confirmationWord").getAddress(), 0); //todo:获取钢化版图中状态为2的(进炉完成的玻璃信息) 且不存在钢化记录表内的 List<Object> temperRecordIdListObj = temporalRecordService.listObjs(new QueryWrapper<TemperingRecord>().select("distinct tempering_layout_id")); List<String> temperRecordIdList = temperRecordIdListObj.stream().map(String::valueOf).collect(Collectors.toList()); List<TemperingGlassInfo> list = temporaryGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>() .eq(TemperingGlassInfo::getState, Const.TEMPERING_START).notIn(TemperingGlassInfo::getTemperingLayoutId, temperRecordIdList)); if (CollectionUtils.isEmpty(list)) { log.info("当前系统没有需要钢化的玻璃信息"); return; } List<Integer> temperingLayoutIdList = list.stream().map(TemperingGlassInfo::getTemperingLayoutId).distinct().collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(temperRecordIdList)) { temperingLayoutIdList.removeAll(temperRecordIdList); } if (CollectionUtils.isEmpty(temperingLayoutIdList)) { log.info("当前玻璃有正在钢化的任务"); } // 获取钢化下片表状态为2的玻璃信息 //完成任务将确认字置为1 S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("confirmationWord").getAddress(), 1); } @Scheduled(fixedDelay = 1000) hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/controller/TemperingRecordController.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/controller/TemperingRecordController.java @@ -1,4 +1,4 @@ package com.mes.tempering_record.controller; package com.mes.temperingrecord.controller; import org.springframework.web.bind.annotation.RequestMapping; hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/entity/TemperingRecord.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/entity/TemperingRecord.java @@ -1,4 +1,4 @@ package com.mes.tempering_record.entity; package com.mes.temperingrecord.entity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -20,6 +20,10 @@ private static final long serialVersionUID = 1L; /** * 工程id */ private String engineerId; /** * 钢化版图 */ private Integer temperingLayoutId; hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/TemperingRecordMapper.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/mapper/TemperingRecordMapper.java @@ -1,7 +1,7 @@ package com.mes.tempering_record.mapper; package com.mes.temperingrecord.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mes.tempering_record.entity.TemperingRecord; import com.mes.temperingrecord.entity.TemperingRecord; /** * <p> hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/mapper/xml/TemperingRecordMapper.xml
hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/TemperingRecordService.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/service/TemperingRecordService.java @@ -1,7 +1,7 @@ package com.mes.tempering_record.service; package com.mes.temperingrecord.service; import com.baomidou.mybatisplus.extension.service.IService; import com.mes.tempering_record.entity.TemperingRecord; import com.mes.temperingrecord.entity.TemperingRecord; /** * <p> hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/temperingrecord/service/impl/TemperingRecordServiceImpl.java
File was renamed from hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/tempering_record/service/impl/TemperingRecordServiceImpl.java @@ -1,9 +1,9 @@ package com.mes.tempering_record.service.impl; package com.mes.temperingrecord.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.tempering_record.entity.TemperingRecord; import com.mes.tempering_record.mapper.TemperingRecordMapper; import com.mes.tempering_record.service.TemperingRecordService; import com.mes.temperingrecord.entity.TemperingRecord; import com.mes.temperingrecord.mapper.TemperingRecordMapper; import com.mes.temperingrecord.service.TemperingRecordService; import org.springframework.stereotype.Service; /**