From 43a6eccb37602e27c56bf7c40a74c8350ecfd82e Mon Sep 17 00:00:00 2001 From: wang <3597712270@qq.com> Date: 星期三, 15 五月 2024 11:51:46 +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 | 234 ++++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 153 insertions(+), 81 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 b5c01ee..f94df84 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 @@ -1,6 +1,8 @@ package com.mes.downstorage.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.github.yulichang.query.MPJQueryWrapper; @@ -13,22 +15,33 @@ import com.mes.downstorage.mapper.DownStorageCageMapper; import com.mes.downstorage.service.DownStorageCageDetailsService; +import com.mes.downworkstation.entity.DownWorkstation; +import com.mes.downworkstation.mapper.DownWorkstationMapper; import com.mes.glassinfo.entity.GlassInfo; +import com.mes.glassinfo.mapper.GlassInfoMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; + @Slf4j @Service public class DownStorageCageDetailsServiceImpl extends ServiceImpl<DownStorageCageDetailsMapper, DownStorageCageDetails> implements DownStorageCageDetailsService { - @Autowired + @Autowired(required = false) private DownStorageCageMapper downStorageCageMapper; @Autowired private DownStorageCageDetailsMapper downStorageCageDetailsMapper; + @Autowired + private GlassInfoMapper glassInfoMapper; + @Autowired + private DownWorkstationMapper downWorkstationMapper; + @Override public void addDownStorageCageDetails(DownStorageCageDetails details) { this.save(details); @@ -37,7 +50,7 @@ @Override //淇敼鐞嗙墖绗煎唴淇℃伅 鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑 銆愭坊鍔�/鍒犻櫎/鏇存崲銆� - public boolean updatedownStorageCageDetails(DownStorageCageDetails details){ + public boolean updatedownStorageCageDetails(DownStorageCageDetails details) { baseMapper.updateById(details); return true; } @@ -63,104 +76,163 @@ } +// @Override +// public List<DownStorageCageDetails> getCacheOut(int start, int end) { +// log.info("鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗�"); +// return downStorageCageMapper.selectJoinList( +// DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>() +// .select("escd.*") +// .leftJoin("down_storage_cage_details escd on t.slot = escd.slot") +// .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id") +// .leftJoin("glass_info gi on dw.flow_card_id = gi.flowcard_id and gi.flowcard_id=escd.flow_card_id ") +// .isNotNull("escd.slot") +// .between("dw.workstation_id", start, end) +// .orderByDesc("escd.width") +// .orderByDesc("escd.height") +// ); +// } - - - - - - - - - - @Override - public List<DownStorageCageDetails> getCacheOut(int start, int end) { - log.info("鏍规嵁浼犲叆鐨勫伐浣嶆煡璇㈢鍚堟寜鐓ч『搴忓拰澶у皬鍑虹墖鐨勫皬鐗�"); - return downStorageCageMapper.selectJoinList( - DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>() - .select("escd.*") - .leftJoin("down_storage_cage_details escd on t.slot = escd.slot") - .leftJoin("down_workstation dw on escd.flow_card_id = dw.flow_card_id") - .leftJoin("glass_info gi on dw.flow_card_id = gi.flowcard_id and gi.flowcard_id=escd.flow_card_id ") - .isNotNull("escd.slot") - .between("dw.workstation_id", start, end) - .orderByDesc("escd.width") - .orderByDesc("escd.height") - ); - } +// @Override +// public List<DownStorageCageDetails> selectCacheEmpty2(){ +// return downStorageCageMapper.selectJoinList( +// DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>() +// .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height") +// .leftJoin("down_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot") +// .isNull("escd.slot") +// ); +// } @Override - public List<DownStorageCageDetails> selectCacheEmpty2(){ - return downStorageCageMapper.selectJoinList( - DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>() - .select("escd.glass_id","escd.flow_card_id","escd.width","escd.height") - .leftJoin("down_storage_cage_details escd on t.device_id=escd.device_id and t.slot=escd.slot") - .isNull("escd.slot") + public List<Map<String, Object>> getCacheInfo() { + log.info("鏌ヨ绗煎瓙鍐呬俊鎭�"); + return downStorageCageDetailsMapper.selectJoinMaps(JoinWrappers.lambda(DownStorageCageDetails.class) // 浣跨敤 JoinWrappers.lambda 鍒涘缓鑱斿悎鏌ヨ + .selectAll(DownStorageCageDetails.class) // 閫夋嫨鎵�鏈夊瓧娈� + .eq(DownStorageCage::getSlot, DownStorageCageDetails::getSlot) // 璁剧疆鍏宠仈鏉′欢 + .orderByAsc(DownStorageCage::getSlot) // 鎸� slot 瀛楁鍗囧簭鎺掑簭 ); } + +// +// @Override +// public List<Map> getCacheInfo() { +// log.info(" 鏌ヨ绗煎瓙鍐呬俊鎭�"); +// return downStorageCageMapper.selectJoinList( +// Map.class, new MPJQueryWrapper<DownStorageCage>() +// .select("escd.*") +// .leftJoin("down_storage_cage_details escd on t.slot = escd.slot") +// .orderByAsc("t.slot") +// ); +// +// } + +// @Override +// public List<DownStorageCageDetails> getCacheLeisure() { +// log.info(" 鏌ヨ绗煎瓙鍐呯┖闂�"); +// List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList( +// DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>() +// .select("escd.*") +// .leftJoin("down_storage_cage_details escd on t.slot = escd.slot") +// .isNull("escd.slot") +// +// .orderByAsc("escd.slot") +// ); +// return list; +// } + + +// @Override +// public List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width) { +// log.info(" 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿 鎵惧埌绌烘牸"); +// +// return downStorageCageMapper.selectJoinList( +// DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>() +// .select("escd.*") +// .leftJoin("down_storage_cage_details escd on t.slot = escd.slot") +// .isNull("escd.slot") +// .apply("t.remain_width - " + width + " > 0") +// .orderByAsc("escd.sequence") +// ); +// +// +// +// +// } @Override - public List<Map> getCacheInfo() { - log.info(" 鏌ヨ绗煎瓙鍐呬俊鎭�"); - return downStorageCageMapper.selectJoinList( - Map.class, new MPJQueryWrapper<DownStorageCage>() - .select("escd.*") - .leftJoin("down_storage_cage_details escd on t.slot = escd.slot") - .orderByAsc("t.slot") - ); - - } + public List<DownStorageCageDetails> CacheOut1(int start, int end) { - - @Override - public List<DownStorageCageDetails> getCacheLeisure() { - log.info(" 鏌ヨ绗煎瓙鍐呯┖闂�"); - List<DownStorageCageDetails> list = downStorageCageMapper.selectJoinList( - DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>() - .select("escd.*") - .leftJoin("down_storage_cage_details escd on t.slot = escd.slot") - .isNull("escd.slot") - - .orderByAsc("escd.slot") - ); - return list; - } + List<DownStorageCageDetails> cageDetails = downStorageCageDetailsMapper.selectList(null); + // Step 5: 鍒ゆ柇 down_storage_cage_details 缁撴灉鏁伴噺鏄惁涓�9锛屽鏋滄槸锛屽垯鎵ц鍙﹀涓�涓煡璇� + if (cageDetails.size() == 9) { + log.info("1銆佺瀛愭弧浜嗙殑鏃跺�欙紝鎸夌収绗煎唴鐗堝浘id 鐗堝浘鐗囧簭鍑�"); + List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end)); - @Override - public List<DownStorageCageDetails> getIsExistIntoCacheByflowcardid(String flowcardid, double width) { - log.info(" 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿 鎵惧埌绌烘牸"); + List<String> flowCardIds = new ArrayList<>(); + for (DownWorkstation workstation : workstationList) { + flowCardIds.add(workstation.getFlowCardId()); + } - return downStorageCageMapper.selectJoinList( - DownStorageCageDetails.class, new MPJQueryWrapper<DownStorageCage>() - .select("escd.*") - .leftJoin("down_storage_cage_details escd on t.slot = escd.slot") - .isNull("escd.slot") - .apply("t.remain_width - " + width + " > 0") - .orderByAsc("escd.sequence") - ); + 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.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, + 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(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); + + log.info("鎸夌収娴佺▼鍗$殑鐗堝浘id 鐗堝浘鐗囧簭鍑�"); + // Step 4: 鏌ヨ down_storage_cage_details 琛ㄥ苟杩斿洖缁撴灉 + return downStorageCageDetailsMapper.selectList(cageDetailsQueryWrapper); + } } - - - - - - - - - - - - - } -- Gitblit v1.8.0