hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/dto/TemperingLayoutDTO.java
@@ -12,6 +12,11 @@ /** * 钢化版图id */ private String engineerId; /** * 钢化版图id */ private Integer temperingLayoutId; /** * 当前版图数量 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
@@ -4,8 +4,6 @@ import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.entity.dto.TemperingLayoutDTO; import java.util.List; /** * <p> @@ -17,6 +15,11 @@ */ public interface BigStorageCageDetailsMapper extends MPJBaseMapper<BigStorageCageDetails> { List<TemperingLayoutDTO> listAllTemperingCount(); /** * 获取钢化版图已经到齐的工程号及版图id * * @return */ TemperingLayoutDTO temperingIsAll(); } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -41,5 +41,5 @@ */ BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo); List<TemperingLayoutDTO> listAllTemperingCount(); TemperingLayoutDTO temperingIsAll(); } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -256,7 +256,7 @@ } @Override public List<TemperingLayoutDTO> listAllTemperingCount() { return baseMapper.listAllTemperingCount(); public TemperingLayoutDTO temperingIsAll() { return baseMapper.temperingIsAll(); } } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -288,11 +288,39 @@ //todo:获取状态字 钢化优先 or 人工下片优先 if (true) { //todo:钢化优先:获取理片笼 玻璃小片 破损表 数量 判断笼内版图是否到齐 //todo: 到齐,将玻璃小片数据存入钢化小片表,逻辑生成出片任务 结束 TemperingLayoutDTO temperingLayoutDTO = bigStorageCageDetailsService.temperingIsAll(); if (null != temperingLayoutDTO) { //玻璃到齐 //todo: 到齐,将玻璃小片数据存入钢化小片表,逻辑生成出片任务 结束 List<BigStorageCageDetails> bigStorageCageDetails = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() .eq(BigStorageCageDetails::getTemperingLayoutId, temperingLayoutDTO.getTemperingLayoutId()) .eq(BigStorageCageDetails::getEngineerId, temperingLayoutDTO.getEngineerId())); List<TemperingGlassInfo> temperingGlassInfos = bigStorageCageDetails.stream().map(e -> { TemperingGlassInfo info = new TemperingGlassInfo(); BeanUtils.copyProperties(e, info); return info; }).collect(Collectors.toList()); temperingGlassInfoService.saveBatch(temperingGlassInfos); //打车剩余尺寸 AtomicReference<Integer> remainWidth = new AtomicReference<>(Const.BIG_STORAGE_WIDTH); temperingGlassInfoList.stream().forEach(e -> { if (bigStorageCageOutTaskList.size() > 5 || e.getWidth() > remainWidth.get()) { return; } remainWidth.set(remainWidth.get() - e.getWidth().intValue() - Const.BIG_STORAGE_GAP); bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getState(), Const.A09_OUT_TARGET_POSITION, 0, 0, 1)); }); bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList); return; } //todo: 未到齐 执行内部调度任务 结束 } //todo:笼内是否有人工下片玻璃 有直接出 无 结束 List<TemperingLayoutDTO> list = bigStorageCageDetailsService.listAllTemperingCount(); } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -3,15 +3,42 @@ <mapper namespace="com.mes.bigstorage.mapper.BigStorageCageDetailsMapper"> <resultMap id="temperingLayoutDTO" type="com.mes.bigstorage.entity.dto.TemperingLayoutDTO"> <result column="engineer_id" property="engineerId"/> <result column="tempering_layout_id" property="temperingLayoutId"/> <result column="count" property="count"/> </resultMap> <select id="listAllTemperingCount" resultMap="temperingLayoutDTO"> select tempering_layout_id, count(tempering_layout_id) as count from big_storage_cage_details where state = 100 group by tempering_layout_id <!-- <select id="listAllTemperingCount" resultMap="temperingLayoutDTO">--> <!-- select tempering_layout_id,--> <!-- count(tempering_layout_id) as count--> <!-- from big_storage_cage_details--> <!-- where state = 100--> <!-- group by tempering_layout_id--> <!-- </select>--> <select id="temperingIsAll" resultMap="temperingLayoutDTO"> SELECT T.ENGINEER_ID, T.TEMPERING_LAYOUT_ID, COUNT(T.TEMPERING_FEED_SEQUENCE) AS COUNT FROM GLASS_INFO T LEFT JOIN DAMAGE T1 ON T.ENGINEER_ID = T1.ENGINEER_ID AND T.GLASS_ID = T1.GLASS_ID LEFT JOIN BIG_STORAGE_CAGE_DETAILS T2 ON T.ENGINEER_ID = T2.ENGINEER_ID AND T.GLASS_ID = T2.GLASS_ID WHERE T1.GLASS_ID IS NULL AND T2.GLASS_ID IS NULL AND ( T.ENGINEER_ID , T.TEMPERING_LAYOUT_ID ) IN ( SELECT DISTINCT ENGINEER_ID , TEMPERING_LAYOUT_ID FROM BIG_STORAGE_CAGE_DETAILS WHERE STATE = 100 ) GROUP BY T.ENGINEER_ID, T.TEMPERING_LAYOUT_ID HAVING COUNT = 0 ORDER BY T.TEMPERING_LAYOUT_ID LIMIT 1 </select> </mapper>