From 3345225e1a1c5c9665a948ae612a677ae284431b Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期一, 02 十二月 2024 09:27:39 +0800
Subject: [PATCH] 1、提交中控模块 2、修改大理片笼进出片交互bug

---
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageGlassInfoServiceImpl.java |   74 +++++++++++++++----------------------
 1 files changed, 30 insertions(+), 44 deletions(-)

diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageGlassInfoServiceImpl.java
index 5b683fa..9586097 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageGlassInfoServiceImpl.java
@@ -9,8 +9,6 @@
 import com.mes.bigstorage.entity.BigStorageGlassInfo;
 import com.mes.bigstorage.entity.BigStorageGlassRelationInfo;
 import com.mes.bigstorage.entity.dto.BigStorageDTO;
-import com.mes.bigstorage.entity.dto.BigStorageRelationDTO;
-import com.mes.bigstorage.entity.dto.BigStorageSequenceDTO;
 import com.mes.bigstorage.mapper.BigStorageGlassInfoMapper;
 import com.mes.bigstorage.service.BigStorageCageDetailsService;
 import com.mes.bigstorage.service.BigStorageCageService;
@@ -51,25 +49,38 @@
     private Integer slotWidth;
     @Value("${mes.glassGap}")
     private Integer glassGap;
+    @Value("${mes.outCarMaxSize}")
+    private Integer outCarMaxSize;
 
     @Override
-    public BigStorageDTO queryBigStorageTargetSlot(String glassId) {
+    public BigStorageDTO queryBigStorageTargetSlot(String engineerId, Integer temperingLayoutId, Integer temperingFeedSequence) {
         //鎸夌収鐜荤拑淇℃伅鑾峰彇鍏崇郴琛ㄦ槸鍚︽湁瀵瑰簲鐨勫叧绯�
         BigStorageGlassRelationInfo relationInfoOne = bigStorageGlassRelationInfoService.getOne(new LambdaQueryWrapper<BigStorageGlassRelationInfo>()
-                .eq(BigStorageGlassRelationInfo::getGlassId, glassId));
+                .eq(BigStorageGlassRelationInfo::getEngineerId, engineerId)
+                .eq(BigStorageGlassRelationInfo::getTemperingLayoutId, temperingLayoutId)
+                .eq(BigStorageGlassRelationInfo::getTemperingFeedSequence, temperingFeedSequence)
+        );
         if (relationInfoOne == null) {
             //鐞嗙墖绗煎叧绯昏〃涓病鏈夊搴旂殑鏁版嵁锛屾煡鐪嬬悊鐗囩铏氭嫙浣嶇疆琛ㄦ槸鍚︽湁鏈伐绋嬩笅鐨勬墍鏈夌幓鐠冭櫄鎷熶俊鎭�
-            BigStorageGlassInfo bigStorageGlassInfo = this.getOne(new LambdaQueryWrapper<BigStorageGlassInfo>().eq(BigStorageGlassInfo::getGlassId, glassId));
+            BigStorageGlassInfo bigStorageGlassInfo = this.getOne(new LambdaQueryWrapper<BigStorageGlassInfo>()
+                    .eq(BigStorageGlassInfo::getEngineerId, engineerId)
+                    .eq(BigStorageGlassInfo::getTemperingLayoutId, temperingLayoutId)
+                    .eq(BigStorageGlassInfo::getTemperingFeedSequence, temperingFeedSequence));
             if (null == bigStorageGlassInfo) {
                 //铏氭嫙浣嶇疆琛ㄦ病鏈夋湰宸ョ▼涓嬬殑鎵�鏈夌幓鐠冭櫄鎷熶俊鎭紝鎸夌収鐜荤拑id鐢熸垚鏈伐绋嬩笅鎵�鏈夌幓鐠冪殑铏氭嫙淇℃伅
-                generateBigStorageGlassInfo(glassId);
-                bigStorageGlassInfo = this.getOne(new LambdaQueryWrapper<BigStorageGlassInfo>().eq(BigStorageGlassInfo::getGlassId, glassId));
+                generateBigStorageGlassInfo(engineerId, temperingLayoutId);
+                bigStorageGlassInfo = this.getOne(new LambdaQueryWrapper<BigStorageGlassInfo>()
+                        .eq(BigStorageGlassInfo::getEngineerId, engineerId)
+                        .eq(BigStorageGlassInfo::getTemperingLayoutId, temperingLayoutId)
+                        .eq(BigStorageGlassInfo::getTemperingFeedSequence, temperingFeedSequence));
             }
             //鎸夌収铏氭嫙浣嶇疆鍜屽ぇ鐞嗙墖绗肩幇鏈夊彲鐢ㄦ牸瀛愮敓鎴愬叧绯昏〃
             bigStorageSlotPair(bigStorageGlassInfo);
             //鍏崇郴琛ㄨ幏鍙栧疄闄呬綅缃�
             relationInfoOne = bigStorageGlassRelationInfoService.getOne(new LambdaQueryWrapper<BigStorageGlassRelationInfo>()
-                    .eq(BigStorageGlassRelationInfo::getGlassId, glassId));
+                    .eq(BigStorageGlassRelationInfo::getEngineerId, engineerId)
+                    .eq(BigStorageGlassRelationInfo::getTemperingLayoutId, temperingLayoutId)
+                    .eq(BigStorageGlassRelationInfo::getTemperingFeedSequence, temperingFeedSequence));
         }
         BigStorageCageDetails bigStorageCageDetails = bigStorageCageDetailsService.getOne(new LambdaQueryWrapper<BigStorageCageDetails>()
                 .eq(BigStorageCageDetails::getSlot, relationInfoOne.getSlot()).in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL_ZERO)
@@ -91,14 +102,17 @@
         if (null == relationInfoBefore) {
             //琛ㄧず搴忓彿娌℃湁鎴栬��  搴忓彿涓�1鍙堜笉鏄涓�鍧楁潵鐨� 鏂板紑涓�鏍�
             storageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
-                    .eq(BigStorageCage::getEnableState, Const.SLOT_ON).eq(BigStorageCage::getRemainWidth, slotWidth).last("limit 1"));
+                    .eq(BigStorageCage::getEnableState, Const.SLOT_ON).eq(BigStorageCage::getRemainWidth, slotWidth).orderByAsc(BigStorageCage::getSlot).last("limit 1"));
         } else {
             BigStorageCageDetails beforeGlass = bigStorageCageDetailsService.getOne(new LambdaQueryWrapper<BigStorageCageDetails>()
-                    .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL_ZERO).eq(BigStorageCageDetails::getGlassId, relationInfoBefore.getGlassId())
+                    .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL_ZERO)
+                    .eq(BigStorageCageDetails::getEngineerId, relationInfoBefore.getEngineerId())
+                    .eq(BigStorageCageDetails::getTemperingLayoutId, relationInfoBefore.getTemperingLayoutId())
+                    .eq(BigStorageCageDetails::getTemperingFeedSequence, relationInfoBefore.getTemperingFeedSequence())
             );
             if (null == beforeGlass) {
                 storageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
-                        .eq(BigStorageCage::getEnableState, Const.SLOT_ON).eq(BigStorageCage::getRemainWidth, slotWidth).last("limit 1"));
+                        .eq(BigStorageCage::getEnableState, Const.SLOT_ON).eq(BigStorageCage::getRemainWidth, slotWidth).orderByAsc(BigStorageCage::getSlot).last("limit 1"));
             } else {
                 storageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
                         .eq(BigStorageCage::getEnableState, Const.SLOT_ON).eq(BigStorageCage::getSlot, beforeGlass.getSlot()));
@@ -113,38 +127,10 @@
         return storageDTO;
     }
 
-    public void dispatchBigStorageSlot() {
-        //todo:鑾峰彇绗煎唴鍗曟牸宸茬粡鍒伴綈鐨勭幓鐠冩牸瀛愪俊鎭�
-        List<BigStorageRelationDTO> virtualList = bigStorageCageDetailsService.queryIsAllNeedDispatchVirtualSlot();
-        if (CollectionUtil.isEmpty(virtualList)) {
-            log.info("娌℃湁闇�瑕佽皟搴︾殑鏍煎瓙");
-        }
-        for (BigStorageRelationDTO dto : virtualList) {
-            List<BigStorageSequenceDTO> sequenceDTOList = bigStorageCageDetailsService.dispatchBigStorageGlassInfo(dto);
-            if (CollectionUtil.isEmpty(sequenceDTOList) || sequenceDTOList.size() == 1) {
-                continue;
-            }
-            int sequence = 0;
-            int startSlot = 0;
-            int targetSlot = 0;
-            for (BigStorageSequenceDTO item : sequenceDTOList) {
-                if (item.getMinSequence() == sequence + 1) {
-                    //鐢熸垚璋冨害浠诲姟
-                    startSlot = item.getSlot();
-                    break;
-                }
-                sequence = item.getMaxSequence();
-                targetSlot = item.getSlot();
-            }
-        }
-        //
-    }
-
     @Override
-    public void generateBigStorageGlassInfo(String glassId) {
-        GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
+    public void generateBigStorageGlassInfo(String engineerId, int temperingLayoutId) {
         List<BigStorageGlassInfo> list = this.list(new LambdaQueryWrapper<BigStorageGlassInfo>()
-                .eq(BigStorageGlassInfo::getEngineerId, glassInfo.getEngineerId()).eq(BigStorageGlassInfo::getTemperingLayoutId, glassInfo.getTemperingLayoutId()));
+                .eq(BigStorageGlassInfo::getEngineerId, engineerId).eq(BigStorageGlassInfo::getTemperingLayoutId, temperingLayoutId));
         if (CollectionUtil.isNotEmpty(list)) {
             return;
         }
@@ -152,7 +138,7 @@
 //                .eq(Engineering::getEngineerId, glassInfo.getEngineerId()));
         //鑾峰彇鐜荤拑鐨勫伐绋媔d锛屾寜鐓у伐绋媔d鑾峰彇宸ョ▼涓嬬殑鎵�鏈夌幓鐠冧俊鎭�
         List<GlassInfo> glassInfoList = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>()
-                .eq(GlassInfo::getEngineerId, glassInfo.getEngineerId())
+                .eq(GlassInfo::getEngineerId, engineerId)
                 .orderByAsc(GlassInfo::getTemperingLayoutId).orderByAsc(GlassInfo::getTemperingFeedSequence));
         Map<Integer, List<GlassInfo>> trmperingIdMap = glassInfoList.stream().collect(Collectors.groupingBy(GlassInfo::getTemperingLayoutId));
         List<BigStorageGlassInfo> bigStorageGlassInfoList = new ArrayList<>();
@@ -163,7 +149,7 @@
             int slotSequence = 1;
             for (GlassInfo item : v) {
                 int maxLength = (int) Math.max(item.getWidth(), item.getHeight());
-                if (remainWidth > maxLength) {
+                if (remainWidth > maxLength && slotSequence <= outCarMaxSize) {
                     remainWidth = remainWidth - maxLength - glassGap;
                 } else {
                     slotNumber = slotNumber + 1;
@@ -187,7 +173,7 @@
     public int bigStorageSlotPair(BigStorageGlassInfo bigStorageGlassInfo) {
         //鑾峰彇鎵�鏈夌┖闂插彲鐢ㄧ殑鏍煎瓙鍙�
         BigStorageCage storageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
-                .eq(BigStorageCage::getEnableState, Const.SLOT_ON).eq(BigStorageCage::getRemainWidth, slotWidth).last("limit 1"));
+                .eq(BigStorageCage::getEnableState, Const.SLOT_ON).eq(BigStorageCage::getRemainWidth, slotWidth).orderByAsc(BigStorageCage::getSlot).last("limit 1"));
         Assert.isTrue(null != storageCage, "娌℃湁绌轰綑鐨勭瀛愬瓨鏀剧幓鐠�");
         Integer slot = storageCage.getSlot();
         //鑾峰彇璇ュ伐绋嬪悓涓�娴佺▼鍗″悓涓�杞︾殑鐜荤拑淇℃伅

--
Gitblit v1.8.0