From 2bcc7bbdf9257c5b9e952f7e206123bf1c3d6826 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期四, 08 八月 2024 15:34:50 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java | 197 ++++++++++++++++++++++++++++++++++++++----------
1 files changed, 155 insertions(+), 42 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 225e002..0ea5be2 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
@@ -3,16 +3,14 @@
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;
-
-
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-
+import com.github.yulichang.query.MPJLambdaQueryWrapper;
import com.github.yulichang.toolkit.JoinWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.common.config.Const;
import com.mes.downstorage.entity.DownStorageCage;
import com.mes.downstorage.entity.DownStorageCageDetails;
import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
-
import com.mes.downstorage.mapper.DownStorageCageMapper;
import com.mes.downstorage.service.DownStorageCageDetailsService;
import com.mes.downworkstation.entity.DownWorkstation;
@@ -56,24 +54,24 @@
}
- @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
@@ -110,6 +108,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 瀛楁鍗囧簭鎺掑簭
);
}
@@ -160,38 +159,59 @@
//
// }
+ // @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 List<GlassInfo> DirectConnection(){
- LambdaQueryWrapper<GlassInfo> queryWrapper2 = Wrappers.lambdaQuery();
- queryWrapper2.select(GlassInfo::getFlowCardId,
- GlassInfo::getGlassId,
- GlassInfo::getTemperingLayoutId,
- GlassInfo::getTemperingFeedSequence)
+ 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")
- .orderByAsc(GlassInfo::getTemperingLayoutId)
- .orderByDesc(GlassInfo::getTemperingFeedSequence)
+ .orderByDesc(GlassInfo::getGlassType)
+ .groupBy(GlassInfo::getFlowCardId)
.last("LIMIT 1");
- // 鏌ヨ GlassInfo 琛�
- log.info("鐩撮�氭煡璇�");
- return glassInfoMapper.selectList(queryWrapper2);
+ // 鏌ヨ绗﹀悎鏉′欢鐨� GlassInfo 璁板綍鏁伴噺
+ int count = glassInfoMapper.selectCount(queryWrapper);
- };
+ return count > 0;
+ }
-
-
+ @Override
+ public String getGlassInfoMaxCount(String glassId, List<Integer> workList) {
+ DownStorageCageDetails glassInfoMaxCount = baseMapper.getGlassInfoMaxCount(workList);
+ return null == glassInfoMaxCount ? glassId : glassInfoMaxCount.getGlassId();
+ }
@Override
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("1銆佺瀛愭弧浜嗙殑鏃跺�欙紝鎸夌収绗煎唴鐗堝浘id 鐗堝浘鐗囧簭鍑�");
List<DownWorkstation> workstationList = downWorkstationMapper.selectList(new QueryWrapper<DownWorkstation>().between("workstation_id", start, end));
-
List<String> flowCardIds = new ArrayList<>();
for (DownWorkstation workstation : workstationList) {
@@ -207,6 +227,7 @@
anotherQueryWrapper.orderByAsc(DownStorageCageDetails::getTemperingLayoutId);
anotherQueryWrapper.orderByDesc(DownStorageCageDetails::getTemperingFeedSequence);
anotherQueryWrapper.in(DownStorageCageDetails::getFlowCardId, flowCardIds);
+ anotherQueryWrapper.eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN);
anotherQueryWrapper.last("LIMIT 1");
return downStorageCageDetailsMapper.selectList(anotherQueryWrapper);
} else {
@@ -214,12 +235,10 @@
// 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(); // 杩斿洖绌哄垪琛ㄦ垨鑰呮姏鍑哄紓甯革紝瑙嗘儏鍐佃�屽畾
@@ -246,7 +265,7 @@
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);
@@ -256,4 +275,98 @@
}
+
+
+ @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);
+ }
+
+
+ }
+
+
+
+
+ @Override
+ public boolean identWorn(String glassId, int ControlsId) {
+ List<DownStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new MPJLambdaQueryWrapper<DownStorageCageDetails>().selectAll(DownStorageCageDetails.class).eq(DownStorageCageDetails::getGlassId, glassId));
+ if (edgStorageCageDetails.size() == 1) {
+ DownStorageCageDetails item = edgStorageCageDetails.get(0);
+ item.setState(ControlsId);
+ baseMapper.update(item, new MPJLambdaWrapper<DownStorageCageDetails>().selectAll(DownStorageCageDetails.class).eq(DownStorageCageDetails::getGlassId, glassId));
+ return true;
+ }
+
+ return false;
+ }
+
+
+
+
+
+
}
--
Gitblit v1.8.0