From 09a010c5dc11c68a866a6075a74bd1bbefb4a9a8 Mon Sep 17 00:00:00 2001 From: wu <731351411@qq.com> Date: 星期一, 24 六月 2024 16:38:23 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes --- hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java | 250 ++++++++++++++++++++++++++++++++++--------------- 1 files changed, 173 insertions(+), 77 deletions(-) diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java index 211dc88..42c4c7a 100644 --- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java +++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.toolkit.JoinWrappers; +import com.mes.common.config.Const; import com.mes.downstorage.entity.DownStorageCage; import com.mes.downstorage.entity.DownStorageCageDetails; import com.mes.downstorage.mapper.DownStorageCageDetailsMapper; @@ -33,7 +34,7 @@ @Service public class DownStorageCageDetailsServiceImpl extends ServiceImpl<DownStorageCageDetailsMapper, DownStorageCageDetails> implements DownStorageCageDetailsService { - @Autowired(required=false) + @Autowired(required = false) private DownStorageCageMapper downStorageCageMapper; @Autowired private DownStorageCageDetailsMapper downStorageCageDetailsMapper; @@ -41,6 +42,7 @@ private GlassInfoMapper glassInfoMapper; @Autowired private DownWorkstationMapper downWorkstationMapper; + @Override public void addDownStorageCageDetails(DownStorageCageDetails details) { this.save(details); @@ -49,51 +51,30 @@ @Override //淇敼鐞嗙墖绗煎唴淇℃伅 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆� - public boolean updatedownStorageCageDetails(DownStorageCageDetails details){ + public boolean updatedownStorageCageDetails(DownStorageCageDetails details) { baseMapper.updateById(details); return true; } - @Override - public List<DownStorageCageDetails> CacheOut(int start, int end) { - log.info("鍗曠墖鎯呭喌鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓уぇ灏忓嚭鐗�,骞朵笖浼樺厛鍑烘弧鏋剁殑灏忕墖"); - return downStorageCageDetailsMapper.selectJoinList( - DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>() - .select("t.*") - .leftJoin("(SELECT t1.* FROM down_storage_cage_details t1 " - + "JOIN (SELECT flow_card_id, MAX(width*height) AS max_width FROM glass_info GROUP BY flow_card_id) t " - + "ON t1.flow_card_id = t.flow_card_id WHERE t1.width*t1.height = t.max_width) t3" - + " ON t.glass_id = t3.glass_id") - .leftJoin("down_workstation t4 ON t3.flow_card_id = t4.flow_card_id") - .isNull(Boolean.parseBoolean("t.glass_id"), "SELECT glass_id FROM down_glass_info") - .between("t4.workstation_id", start, end) - // 鏍规嵁 racks_number 鎺掑簭 - .orderByDesc("t4.racks_number") - - ); - } - - - - - - - - - - - - - - - - - - - - - +// @Override +// public List<DownStorageCageDetails> CacheOut(int start, int end) { +// log.info("鍗曠墖鎯呭喌鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓уぇ灏忓嚭鐗�,骞朵笖浼樺厛鍑烘弧鏋剁殑灏忕墖"); +// return downStorageCageDetailsMapper.selectJoinList( +// DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCageDetails>() +// .select("t.*") +// .leftJoin("(SELECT t1.* FROM down_storage_cage_details t1 " +// + "JOIN (SELECT flow_card_id, MAX(width*height) AS max_width FROM glass_info GROUP BY flow_card_id) t " +// + "ON t1.flow_card_id = t.flow_card_id WHERE t1.width*t1.height = t.max_width) t3" +// + " ON t.glass_id = t3.glass_id") +// .leftJoin("down_workstation t4 ON t3.flow_card_id = t4.flow_card_id") +// .isNull(Boolean.parseBoolean("t.glass_id"), "SELECT glass_id FROM down_glass_info") +// .between("t4.workstation_id", start, end) +// // 鏍规嵁 racks_number 鎺掑簭 +// .orderByDesc("t4.racks_number") +// +// ); +// } // @Override @@ -130,6 +111,7 @@ return downStorageCageDetailsMapper.selectJoinMaps(JoinWrappers.lambda(DownStorageCageDetails.class) // 浣跨敤 JoinWrappers.lambda 鍒涘缓鑱斿悎鏌ヨ .selectAll(DownStorageCageDetails.class) // 閫夋嫨鎵�鏈夊瓧娈� .eq(DownStorageCage::getSlot, DownStorageCageDetails::getSlot) // 璁剧疆鍏宠仈鏉′欢 + .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN) .orderByAsc(DownStorageCage::getSlot) // 鎸� slot 瀛楁鍗囧簭鎺掑簭 ); } @@ -180,66 +162,114 @@ // // } + // @Override +// public List<GlassInfo> DirectConnection(){ +// LambdaQueryWrapper<GlassInfo> queryWrapper2 = Wrappers.lambdaQuery(); +// queryWrapper2.select(GlassInfo::getFlowCardId, +// GlassInfo::getGlassId, +// GlassInfo::getTemperingLayoutId, +// GlassInfo::getTemperingFeedSequence) +// .notInSql(GlassInfo::getGlassId, "SELECT glass_id FROM down_glass_info") +// .orderByAsc(GlassInfo::getTemperingLayoutId) +// .orderByDesc(GlassInfo::getTemperingFeedSequence) +// .last("LIMIT 1"); +// +// // 鏌ヨ GlassInfo 琛� +// log.info("鐩撮�氭煡璇�"); +// return glassInfoMapper.selectList(queryWrapper2); +// +// }; + + @Override + public boolean DirectConnection(GlassInfo glassInfo) { + LambdaQueryWrapper<GlassInfo> queryWrapper = Wrappers.lambdaQuery(); + queryWrapper.eq(GlassInfo::getGlassId, glassInfo.getGlassId()) + .notInSql(GlassInfo::getGlassId, "SELECT glass_id FROM down_glass_info") + .orderByDesc(GlassInfo::getGlassType) + .groupBy(GlassInfo::getFlowCardId) + .last("LIMIT 1"); + + // 鏌ヨ绗﹀悎鏉′欢鐨� GlassInfo 璁板綍鏁伴噺 + int count = glassInfoMapper.selectCount(queryWrapper); + + return count > 0; + } + + + @Override - public List<DownStorageCageDetails> CacheOut1(int start,int end) { + public List<DownStorageCageDetails> CacheOut1(int start, int end) { - - List<DownStorageCageDetails> cageDetails = downStorageCageDetailsMapper.selectList(null); + // 鍒涘缓涓�涓� LambdaQueryWrapper 瀹炰緥 + LambdaQueryWrapper<DownStorageCageDetails> lambdaQueryWrapper = new LambdaQueryWrapper<>(); +// 鏉′欢 state=100 + lambdaQueryWrapper.eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN); + List<DownStorageCageDetails> cageDetails = downStorageCageDetailsMapper.selectList(lambdaQueryWrapper); // Step 5: 鍒ゆ柇 down_storage_cage_details 缁撴灉鏁伴噺鏄惁涓�9锛屽鏋滄槸锛屽垯鎵ц鍙﹀涓�涓煡璇� if (cageDetails.size() == 9) { - log.info("婊′簡鐨勬椂鍊欙紝鎸夌収绗煎唴鐗堝浘id 鐗堝浘鐗囧簭鍑�"); + log.info("1銆佺瀛愭弧浜嗙殑鏃跺�欙紝鎸夌収绗煎唴鐗堝浘id 鐗堝浘鐗囧簭鍑�"); List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end)); - List<String> flowCardIds = new ArrayList<>(); for (DownWorkstation workstation : workstationList) { flowCardIds.add(workstation.getFlowCardId()); } + + if (flowCardIds.isEmpty()) { + log.error("鏈壘鍒板搴旂殑 flow_card_id"); + return Collections.emptyList(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾 + } LambdaQueryWrapper<DownStorageCageDetails> anotherQueryWrapper = Wrappers.lambdaQuery(); anotherQueryWrapper.orderByAsc(DownStorageCageDetails::getTemperingLayoutId); anotherQueryWrapper.orderByDesc(DownStorageCageDetails::getTemperingFeedSequence); - anotherQueryWrapper.in(DownStorageCageDetails::getFlowCardId,flowCardIds); + anotherQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds); + anotherQueryWrapper.eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN); anotherQueryWrapper.last("LIMIT 1"); return downStorageCageDetailsMapper.selectList(anotherQueryWrapper); - }else - { + } else { - // Step 1: 鏌ヨ DownWorkstation 琛ㄨ幏鍙栧搴� workstation_id 鐨� flow_card_id - List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end)); + // Step 1: 鏌ヨ DownWorkstation 琛ㄨ幏鍙栧搴� workstation_id 鐨� flow_card_id + List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end)); + List<String> flowCardIds = new ArrayList<>(); + for (DownWorkstation workstation : workstationList) { + flowCardIds.add(workstation.getFlowCardId()); + } + if (flowCardIds.isEmpty()) { + log.error("2銆佹湭鎵惧埌瀵瑰簲鐨� flow_card_id"); + return Collections.emptyList(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾 + } + log.info("娴佺▼鍗�:{}", flowCardIds); + LambdaQueryWrapper<GlassInfo> queryWrapper2 = Wrappers.lambdaQuery(); + queryWrapper2.select(GlassInfo::getFlowCardId, + GlassInfo::getGlassId, + GlassInfo::getTemperingLayoutId, + GlassInfo::getTemperingFeedSequence) + .notInSql(GlassInfo::getGlassId, "SELECT glass_id FROM down_glass_info") + .orderByAsc(GlassInfo::getTemperingLayoutId) + .orderByDesc(GlassInfo::getTemperingFeedSequence) + .last("LIMIT 1"); - List<String> flowCardIds = new ArrayList<>(); - for (DownWorkstation workstation : workstationList) { - flowCardIds.add(workstation.getFlowCardId()); - } - - LambdaQueryWrapper<GlassInfo> queryWrapper = Wrappers.lambdaQuery(); - queryWrapper.select(GlassInfo::getFlowCardId, - GlassInfo::getGlassId, - GlassInfo::getTemperingLayoutId, - GlassInfo::getTemperingFeedSequence) - .notInSql(GlassInfo::getGlassId, "SELECT glass_id FROM down_glass_info") - .orderByAsc(GlassInfo::getTemperingLayoutId) - .orderByDesc(GlassInfo::getTemperingFeedSequence) - .last("LIMIT 1"); - - // 鏌ヨ GlassInfo 琛� - List<GlassInfo> glassInfos = glassInfoMapper.selectList(queryWrapper); - - // Step 3: 鏋勯�犳煡璇� down_storage_cage_details 琛ㄧ殑鏉′欢 - List<String> glassIds = glassInfos.stream().map(GlassInfo::getGlassId).collect(Collectors.toList()); - LambdaQueryWrapper<DownStorageCageDetails> cageDetailsQueryWrapper = Wrappers.lambdaQuery(); - cageDetailsQueryWrapper.in(DownStorageCageDetails::getGlassId, glassIds); - cageDetailsQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds); - + // 鏌ヨ GlassInfo 琛� + List<GlassInfo> glassInfos = glassInfoMapper.selectList(queryWrapper2); + if (glassInfos.isEmpty()) { + log.error("鏈壘鍒板搴旂殑鐜荤拑淇℃伅"); + return Collections.emptyList(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾 + } + // Step 3: 鏋勯�犳煡璇� down_storage_cage_details 琛ㄧ殑鏉′欢 + List<String> glassIds = glassInfos.stream().map(GlassInfo::getGlassId).collect(Collectors.toList()); + LambdaQueryWrapper<DownStorageCageDetails> cageDetailsQueryWrapper = Wrappers.lambdaQuery(); + cageDetailsQueryWrapper.in(DownStorageCageDetails::getGlassId, glassIds); + cageDetailsQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds); + cageDetailsQueryWrapper.eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN); log.info("鎸夌収娴佺▼鍗$殑鐗堝浘id 鐗堝浘鐗囧簭鍑�"); - // Step 4: 鏌ヨ down_storage_cage_details 琛ㄥ苟杩斿洖缁撴灉 - return downStorageCageDetailsMapper.selectList(cageDetailsQueryWrapper); + // Step 4: 鏌ヨ down_storage_cage_details 琛ㄥ苟杩斿洖缁撴灉 + return downStorageCageDetailsMapper.selectList(cageDetailsQueryWrapper); } @@ -248,10 +278,76 @@ + @Override + public List<DownStorageCageDetails> CacheOut2(int start, int end) { + // 鍒涘缓涓�涓� LambdaQueryWrapper 瀹炰緥 + LambdaQueryWrapper<DownStorageCageDetails> lambdaQueryWrapper = new LambdaQueryWrapper<>(); +// 鏉′欢 state=100 + lambdaQueryWrapper.eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN); + List<DownStorageCageDetails> cageDetails = downStorageCageDetailsMapper.selectList(lambdaQueryWrapper); + // Step 5: 鍒ゆ柇 down_storage_cage_details 缁撴灉鏁伴噺鏄惁涓�9锛屽鏋滄槸锛屽垯鎵ц鍙﹀涓�涓煡璇� + if (cageDetails.size() == 9) { + log.info("1銆佺瀛愭弧浜嗙殑鏃跺�欙紝鎸夌収绗煎唴娴佺▼鍗¢『搴忓嚭 GlassType鐩墠鏄祦绋嬪崱涓殑椤哄簭"); + List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end)); + + List<String> flowCardIds = new ArrayList<>(); + for (DownWorkstation workstation : workstationList) { + flowCardIds.add(workstation.getFlowCardId()); + } + + if (flowCardIds.isEmpty()) { + log.error("鏈壘鍒板搴旂殑 flow_card_id"); + return Collections.emptyList(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾 + } + LambdaQueryWrapper<DownStorageCageDetails> anotherQueryWrapper = Wrappers.lambdaQuery(); + + anotherQueryWrapper.orderByAsc(DownStorageCageDetails::getGlassType); + anotherQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds); + anotherQueryWrapper.eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN); + anotherQueryWrapper.last("LIMIT 1"); + return downStorageCageDetailsMapper.selectList(anotherQueryWrapper); + } else { + + // Step 1: 鏌ヨ DownWorkstation 琛ㄨ幏鍙栧搴� workstation_id 鐨� flow_card_id + List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end)); + + List<String> flowCardIds = new ArrayList<>(); + for (DownWorkstation workstation : workstationList) { + flowCardIds.add(workstation.getFlowCardId()); + } + if (flowCardIds.isEmpty()) { + log.error("2銆佹湭鎵惧埌瀵瑰簲鐨� flow_card_id"); + return Collections.emptyList(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾 + } + log.info("娴佺▼鍗�:{}", flowCardIds); + LambdaQueryWrapper<GlassInfo> queryWrapper2 = Wrappers.lambdaQuery(); + queryWrapper2.select(GlassInfo::getFlowCardId, + GlassInfo::getGlassId) + .notInSql(GlassInfo::getGlassId, "SELECT glass_id FROM down_glass_info") + .orderByAsc(GlassInfo::getGlassType) + .last("LIMIT 1"); + + // 鏌ヨ GlassInfo 琛� + List<GlassInfo> glassInfos = glassInfoMapper.selectList(queryWrapper2); + if (glassInfos.isEmpty()) { + log.error("鏈壘鍒板搴旂殑鐜荤拑淇℃伅"); + return Collections.emptyList(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾 + } + // Step 3: 鏋勯�犳煡璇� down_storage_cage_details 琛ㄧ殑鏉′欢 + List<String> glassIds = glassInfos.stream().map(GlassInfo::getGlassId).collect(Collectors.toList()); + LambdaQueryWrapper<DownStorageCageDetails> cageDetailsQueryWrapper = Wrappers.lambdaQuery(); + cageDetailsQueryWrapper.in(DownStorageCageDetails::getGlassId, glassIds); + cageDetailsQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds); + cageDetailsQueryWrapper.eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN); + log.info("鎸夌収娴佺▼鍗$殑椤哄簭鍑�"); + // Step 4: 鏌ヨ down_storage_cage_details 琛ㄥ苟杩斿洖缁撴灉 + return downStorageCageDetailsMapper.selectList(cageDetailsQueryWrapper); + } + } } -- Gitblit v1.8.0