From e95543888fce8eb09d1d7d140158514ae1b93ff5 Mon Sep 17 00:00:00 2001
From: ZengTao <2773468879@qq.com>
Date: 星期一, 29 七月 2024 13:50:32 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml                                                  |    4 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml                           |   20 ++
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java          |   11 +
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java |   81 +++++++----
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                                   |  202 ++++++++++++++++------------
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java    |   24 ++-
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/UpdateBigStorageCageDTO.java            |   16 ++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                          |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java            |    9 +
 9 files changed, 242 insertions(+), 127 deletions(-)

diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
index 5a0bd8a..2a8f6ea 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -40,6 +40,7 @@
      * 鍑虹墖浠诲姟101
      * 浜哄伐涓嬬墖102
      * 鍑虹墖涓�103
+     * 璋冨害涓�104
      * 鎷胯蛋200
      * 鐮存崯201
      */
@@ -48,6 +49,7 @@
     public static final Integer GLASS_STATE_OUT = 101;
     public static final Integer GLASS_STATE_ARTIFICIAL = 102;
     public static final Integer GLASS_STATE_OUT_ING = 103;
+    public static final Integer GLASS_STATE_SCHEDULE_ING = 104;
     public static final Integer GLASS_STATE_TAKE = 200;
     public static final Integer GLASS_STATE_DAMAGE = 201;
     public static final List<Integer> GLASS_STATE_IN_ALL = Arrays.asList(100, 102, 103);
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml
index c85d6d5..92cbb79 100644
--- a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml
@@ -4,12 +4,12 @@
     <insert id="saveBatch">
         INSERT INTO tempering_glass_info (glass_id, flow_card_id, glass_type, width, height, thickness, filmsid,
         ishorizontal, tempering_layout_id,
-        tempering_feed_sequence, x_coordinate, y_coordinate, angle, state, slot ) VALUES
+        tempering_feed_sequence, x_coordinate, y_coordinate, angle, state, slot, engineer_id) VALUES
         <foreach collection="list" item="item" separator=",">
             (#{item.glassId}, #{item.flowCardId}, #{item.glassType}, #{item.width}, #{item.height}, #{item.thickness},
             #{item.filmsid},#{item.ishorizontal},
             #{item.temperingLayoutId}, #{item.temperingFeedSequence}, #{item.xCoordinate}, #{item.yCoordinate},
-            #{item.angle}, #{item.state}, #{item.slot})
+            #{item.angle}, #{item.state}, #{item.slot}, #{item.engineerId})
         </foreach>
     </insert>
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
index 3dd6f8f..77c81be 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -1,4 +1,5 @@
 package com.mes.bigstorage.controller;
+
 import com.mes.bigstorage.entity.BigStorageCageDetails;
 import com.mes.bigstorage.service.BigStorageCageDetailsService;
 import com.mes.bigstorage.service.BigStorageCageService;
@@ -6,7 +7,10 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
 import java.util.Map;
@@ -78,11 +82,11 @@
 
     @ApiOperation("鎸囧畾閽㈠寲")
     @PostMapping("/TemperingGlass")
-    public Result TemperingGlass(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
-        boolean result=bigStorageCageDetailsService.TemperingGlass(bigStorageCageDetails.getTemperingLayoutId().toString(),bigStorageCageDetails.getEngineerId());
-        if(result==true){
-            return Result.build(200,"鎸囧畾閽㈠寲鎴愬姛",1);
-        }else {
+    public Result temperingGlass(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
+        boolean result = bigStorageCageDetailsService.temperingGlass(bigStorageCageDetails.getTemperingLayoutId().toString(), bigStorageCageDetails.getEngineerId());
+        if (result == true) {
+            return Result.build(200, "鎸囧畾閽㈠寲鎴愬姛", 1);
+        } else {
             return Result.build(200, "宸插瓨鍦ㄩ挗鍖栦换鍔★紝璇风瓑寰呴挗鍖栧畬鎴愬啀鎸囧畾閽㈠寲", 1);
         }
     }
@@ -90,7 +94,13 @@
     @ApiOperation("閽㈠寲鏌ヨ")
     @PostMapping("/selectTemperingGlass")
     public Result selectTemperingGlass() {
-        return Result.build(200,"鏌ヨ鎴愬姛",bigStorageCageDetailsService.selectTemperingGlass());
+        return Result.build(200, "鏌ヨ鎴愬姛", bigStorageCageDetailsService.selectTemperingGlass());
+    }
+
+    @ApiOperation("鏄惁閽㈠寲寮�鍏�")
+    @PostMapping("/temperingSwitch")
+    public Result temperingSwitch(Boolean flag) {
+        return Result.build(200, "鏌ヨ鎴愬姛", bigStorageCageDetailsService.temperingSwitch(flag));
     }
 }
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
index 495b06a..5831a80 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/mapper/BigStorageCageDetailsMapper.java
@@ -4,6 +4,7 @@
 import com.mes.bigstorage.entity.BigStorageCageDetails;
 import com.mes.bigstorage.entity.dto.SlotSequenceDTO;
 import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
+import com.mes.bigstoragetask.entity.UpdateBigStorageCageDTO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -35,4 +36,12 @@
 
 
     List<SlotSequenceDTO> queryGlassMaxAndMin(@Param(value = "engineerId") String engineerId, @Param(value = "temperingLayoutId") Integer temperingLayoutId);
+
+    /**
+     * 鎸夌収鐜荤拑id鍜岀洰鏍囨牸瀛愭洿鏂扮鍐呯幓鐠冧俊鎭�
+     *
+     * @param glassList
+     * @param state
+     */
+    void updateBySlot(@Param(value = "list") List<UpdateBigStorageCageDTO> glassList, @Param(value = "state") int state);
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
index cab1f09..23a4613 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -5,6 +5,7 @@
 import com.mes.bigstorage.entity.BigStorageDTO;
 import com.mes.bigstorage.entity.dto.SlotSequenceDTO;
 import com.mes.bigstorage.entity.dto.TemperingLayoutDTO;
+import com.mes.bigstoragetask.entity.UpdateBigStorageCageDTO;
 import com.mes.glassinfo.entity.GlassInfo;
 
 import java.util.List;
@@ -12,7 +13,7 @@
 
 /**
  * <p>
- *  鏈嶅姟绫�
+ * 鏈嶅姟绫�
  * </p>
  *
  * @author zhoush
@@ -26,7 +27,7 @@
 
     void deleteBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails);
 
-    void damageBigStorageCageDetails(String glassId,int status);
+    void damageBigStorageCageDetails(String glassId, int status);
 
     List<BigStorageCageDetails> selectBigStorageCageDetails(String glassId);
 
@@ -66,7 +67,11 @@
      */
     List<SlotSequenceDTO> queryGlassMaxAndMin(String engineerId, Integer temperingLayoutId);
 
-    boolean TemperingGlass(String temperingLayoutId, String engineerId);
+    boolean temperingGlass(String temperingLayoutId, String engineerId);
 
     List<Map<String, Object>> selectTemperingGlass();
+
+    void updateBySlot(List<UpdateBigStorageCageDTO> glassList, int state);
+
+    String temperingSwitch(Boolean flag);
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
index 8de5698..6761928 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -3,7 +3,9 @@
 import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.toolkit.JoinWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.bigstorage.entity.BigStorageCage;
 import com.mes.bigstorage.entity.BigStorageCageDetails;
@@ -15,15 +17,19 @@
 import com.mes.bigstorage.service.BigStorageCageService;
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
 import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
+import com.mes.bigstoragetask.entity.UpdateBigStorageCageDTO;
 import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper;
 import com.mes.bigstoragetask.mapper.BigStorageCageOutTaskMapper;
 import com.mes.common.config.Const;
+import com.mes.common.utils.RedisUtil;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.mapper.GlassInfoMapper;
+import com.mes.glassinfo.service.GlassInfoService;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.mapper.TemperingGlassInfoMapper;
+import com.mes.temperingglass.service.TemperingGlassInfoService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -58,7 +64,15 @@
     private GlassInfoMapper glassInfoMapper;
 
     @Resource
+    private GlassInfoService glassInfoService;
+
+    @Resource
+    private TemperingGlassInfoService temperingGlassInfoService;
+
+    @Resource
     private DamageService damageService;
+    @Resource
+    private RedisUtil redisUtil;
 
     @Value("${mes.minCount}")
     private int minCount;
@@ -68,6 +82,10 @@
 
     @Value("${mes.glassGap}")
     private Integer glassGap;
+
+    @Value("${mes.sequence.order}")
+    private boolean sequenceOrder;
+
 
     /**
      * 鏌ヨ杩�/鍑虹墖浠诲姟
@@ -292,6 +310,7 @@
         bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
                 .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
                 .eq(BigStorageCage::getRemainWidth, slotWidth)
+                .notInSql(BigStorageCage::getSlot, "select distinct slot from big_storage_cage_details where state = 0")
                 .inSql(BigStorageCage::getDeviceId,
                         "select distinct device_id from big_storage_cage_details where tempering_layout_id = " + glassInfo.getTemperingLayoutId())
                 .last("limit 1"));
@@ -307,6 +326,7 @@
         bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
                 .eq(BigStorageCage::getRemainWidth, slotWidth)
                 .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
+                .notInSql(BigStorageCage::getSlot, "select distinct slot from big_storage_cage_details where state = 0")
                 .notInSql(BigStorageCage::getDeviceId,
                         "select distinct device_id from big_storage_cage_details where state in (100,102,103)")
                 .ge(BigStorageCage::getMaxThickness, glassInfo.getThickness())
@@ -321,6 +341,7 @@
         }
         bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
                 .eq(BigStorageCage::getRemainWidth, slotWidth)
+                .notInSql(BigStorageCage::getSlot, "select distinct slot from big_storage_cage_details where state = 0")
                 .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
                 .ge(BigStorageCage::getMaxThickness, glassInfo.getThickness())
                 .orderByAsc(BigStorageCage::getDeviceId)
@@ -350,47 +371,49 @@
     }
 
     @Override
-    public boolean TemperingGlass(String temperingLayoutId, String engineerId) {
+    public boolean temperingGlass(String temperingLayoutId, String engineerId) {
         LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
         temperingGlassInfoLambdaQueryWrapper
-                .eq(TemperingGlassInfo::getState,Const.TEMPERING_NEW);
-        List<TemperingGlassInfo> temperingGlassInfoList=temperingGlassInfoMapper.selectList(temperingGlassInfoLambdaQueryWrapper);
+                .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW);
+        List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoMapper.selectList(temperingGlassInfoLambdaQueryWrapper);
 
-        if(temperingGlassInfoList.size()==0){
-            LambdaQueryWrapper<BigStorageCageDetails> wrapper =new LambdaQueryWrapper<>();
-            wrapper.eq(BigStorageCageDetails::getTemperingLayoutId,temperingLayoutId)
-                    .eq(BigStorageCageDetails::getEngineerId,engineerId)
-                    .in(BigStorageCageDetails::getState,Const.GLASS_STATE_IN,Const.GLASS_STATE_ARTIFICIAL);
-            List<BigStorageCageDetails> bigStorageCageDetailsList=baseMapper.selectList(wrapper);
-
-            for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
-            ) {
-                TemperingGlassInfo temperingGlassInfo = new TemperingGlassInfo();
-                LambdaQueryWrapper<GlassInfo> glassInfoLambdaQueryWrapper = new LambdaQueryWrapper<>();
-                glassInfoLambdaQueryWrapper.eq(GlassInfo::getGlassId, bigStorageCageDetails.getGlassId());
-                GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoLambdaQueryWrapper);
-
-                BeanUtils.copyProperties(glassInfo, temperingGlassInfo);
-                temperingGlassInfo.setAngle((int) glassInfo.getAngle());
-                temperingGlassInfo.setState(Const.TEMPERING_NEW);
-                temperingGlassInfo.setSlot(bigStorageCageDetails.getSlot());
-                temperingGlassInfoMapper.insert(temperingGlassInfo);
+        if (temperingGlassInfoList.size() == 0) {
+            List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class)
+                    .selectAll(GlassInfo.class)
+                    .select("-1 as state")
+                    .selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot)
+                    .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId)
+                    .eq(GlassInfo::getTemperingLayoutId, temperingLayoutId)
+                    .eq(GlassInfo::getEngineerId, engineerId)
+                    .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
+                    .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence));
+            if (CollectionUtils.isNotEmpty(temperingGlassInfos)) {
+                temperingGlassInfoService.saveBatch(temperingGlassInfos);
+                return true;
             }
-            return true;
-        } else {
-            return false;
         }
-
-
+        return false;
     }
 
+
     @Override
-    public List<Map<String, Object>> selectTemperingGlass(){
+    public List<Map<String, Object>> selectTemperingGlass() {
         QueryWrapper<BigStorageCageDetails> wrapper = new QueryWrapper<>();
         wrapper.select("engineer_id,tempering_layout_id,count(*) as count")
-                .in("state",Const.GLASS_STATE_IN,Const.GLASS_STATE_ARTIFICIAL)
+                .in("state", Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL)
                 .groupBy("engineer_id,tempering_layout_id");
         List<Map<String, Object>> TemperingGlass = baseMapper.selectMaps(wrapper);
         return TemperingGlass;
     }
+
+    @Override
+    public void updateBySlot(List<UpdateBigStorageCageDTO> glassList, int state) {
+        baseMapper.updateBySlot(glassList, state);
+    }
+
+    @Override
+    public String temperingSwitch(Boolean flag) {
+        redisUtil.setCacheObject("temperingSwitch", flag);
+        return "success";
+    }
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/UpdateBigStorageCageDTO.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/UpdateBigStorageCageDTO.java
new file mode 100644
index 0000000..6a1cecc
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/UpdateBigStorageCageDTO.java
@@ -0,0 +1,16 @@
+package com.mes.bigstoragetask.entity;
+
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/7/26 9:05
+ * @Description:
+ */
+@Data
+public class UpdateBigStorageCageDTO {
+
+    private String glassId;
+
+    private int targetSlot;
+}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index 6952bac..126fbbd 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -16,10 +16,12 @@
 import com.mes.bigstorage.service.BigStorageCageService;
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
 import com.mes.bigstoragetask.entity.BigStorageCageOutTask;
+import com.mes.bigstoragetask.entity.UpdateBigStorageCageDTO;
 import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService;
 import com.mes.bigstoragetask.service.BigStorageCageOutTaskService;
 import com.mes.common.S7object;
 import com.mes.common.config.Const;
+import com.mes.common.utils.RedisUtil;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
 import com.mes.device.PlcParameterObject;
@@ -64,6 +66,9 @@
     private TemperingGlassInfoService temperingGlassInfoService;
     @Resource
     private DamageService damageService;
+
+    @Resource
+    private RedisUtil redisUtil;
 
     private static final String REQUEST_WORD = "1";
 
@@ -178,11 +183,6 @@
         String d01Id = plcParameterObject.getPlcParameter("D01ID").getValue();
         String d04Id = plcParameterObject.getPlcParameter("D04ID").getValue();
         log.info("1銆佽幏鍙杁01Id鎵弿ID涓猴細{};鑾峰彇d04Id鎵弿ID涓猴細{};", d01Id, d04Id);
-        //涓ゆ潯绾块兘鏈夎繘鍗ц浆绔嬩换鍔★紝鐩存帴缁撴潫
-//        if (StringUtils.isNotBlank(d01Id) && StringUtils.isNotBlank(d04Id)) {
-//            log.info("涓ゆ潯绾块兘瀛樺湪杩涚墖浠诲姟锛岀粨鏉熶换鍔�");
-//            return;
-//        }
         //鑾峰彇涓ゆ潯绾垮崸杞珛鏄惁鏈夌幓鐠冿紝涓斾换鍔$姸鎬佷负1/2
         List<Integer> lineList = bigStorageCageFeedTaskService.querySitToUpGlass();
         if (CollectionUtils.isEmpty(lineList)) {
@@ -244,68 +244,73 @@
         log.info("澶х悊鐗囩绌鸿溅杩涚墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
     }
 
-    @Scheduled(fixedDelay = 300)
+    @Scheduled(fixedDelay = 5000)
     public void plcToHomeEdgOutTask() {
         Date startDate = new Date();
         log.info("澶х悊鐗囩绌鸿溅杩涚墖浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
         PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject;
-        String e02State = plcMesObject.getPlcParameter("E02State").getAddress();
+        String e02State = plcMesObject.getPlcParameter("E02State").getValue();
         if (REQUEST_WORD.equals(e02State)) {
             log.info("鍑虹墖蹇欑锛岀粨鏉熷嚭鐗囦换鍔�");
             return;
         }
         String mesToPLCAddress = plcMesObject.getPlcParameter("MESToPLC").getAddress();
-        List<BigStorageCageOutTask> outingList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_NEW));
-        Assert.isTrue(CollectionUtils.isEmpty(outingList), "鏈夋鍦ㄦ墽琛屽嚭鐗囩殑浠诲姟锛岀粨鏉熷綋鍓嶅嚭鐗囩嚎绋�");
-
-        //鏄惁鏈夋鍦ㄩ挗鍖栫殑鐜荤拑
-        List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.selectJoinList(TemperingGlassInfo.class, new MPJLambdaWrapper<TemperingGlassInfo>()
-                .selectAll(TemperingGlassInfo.class)
-                .leftJoin(BigStorageCageOutTask.class, BigStorageCageOutTask::getGlassId, TemperingGlassInfo::getGlassId)
-                .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW)
-                .isNull(BigStorageCageOutTask::getGlassId)
-                .orderBy(Boolean.TRUE, sequenceOrder, TemperingGlassInfo::getTemperingFeedSequence));
-        if (CollectionUtils.isNotEmpty(temperingGlassInfoList)) {
-            log.info("鏈夋鍦ㄥ嚭鐗囩殑閽㈠寲浠诲姟");
-            computeOutGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress);
-            Date endDate = new Date();
-            log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
+        List<BigStorageCageOutTask> outingList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>()
+                .eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_NEW));
+        if (CollectionUtils.isNotEmpty(outingList)) {
+            log.info("鏈夋鍦ㄦ墽琛屽嚭鐗囩殑浠诲姟锛岀粨鏉熷綋鍓嶅嚭鐗囩嚎绋�");
             return;
         }
-        //鏄惁鏈変汉宸ヤ笅鐗囦换鍔�   鏈夌洿鎺ュ嚭
-        List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
-                .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL).orderByDesc(BigStorageCageDetails::getWidth));
-        if (CollectionUtils.isNotEmpty(artificialList)) {
-            computeOutGlassInfo(artificialList, Boolean.FALSE, mesToPLCAddress);
-            Date endDate = new Date();
-            log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
-            return;
-        }
-        //閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩  鐜荤拑灏忕墖  鐮存崯琛� 鏁伴噺   鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈
-        List<TemperingLayoutDTO> temperingLayoutDTOList = bigStorageCageDetailsService.temperingIsAll();
-        if (CollectionUtils.isNotEmpty(temperingLayoutDTOList)) {
-            //鐜荤拑鍒伴綈鍖呮嫭宸插嚭鐗囩殑
-            //鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟  缁撴潫
-            for (TemperingLayoutDTO item : temperingLayoutDTOList) {
-                List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class)
-                        .selectAll(GlassInfo.class)
-                        .select("-1 as state")
-                        .selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot)
-                        .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId)
-                        .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
-                        .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId())
-                        .eq(GlassInfo::getEngineerId, item.getEngineerId())
-                        .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence));
-                if (CollectionUtils.isNotEmpty(temperingGlassInfos)) {
-                    temperingGlassInfoService.saveBatch(temperingGlassInfos);
-                    computeOutGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress);
-                    Date endDate = new Date();
-                    log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
-                    return;
+        if (redisUtil.getCacheObject("temperingSwitch")) {
+            //鏄惁鏈夋鍦ㄩ挗鍖栫殑鐜荤拑
+            List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.selectJoinList(TemperingGlassInfo.class, new MPJLambdaWrapper<TemperingGlassInfo>()
+                    .selectAll(TemperingGlassInfo.class)
+                    .leftJoin(BigStorageCageOutTask.class, BigStorageCageOutTask::getGlassId, TemperingGlassInfo::getGlassId)
+                    .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW)
+                    .isNull(BigStorageCageOutTask::getGlassId)
+                    .orderBy(Boolean.TRUE, sequenceOrder, TemperingGlassInfo::getTemperingFeedSequence));
+            if (CollectionUtils.isNotEmpty(temperingGlassInfoList)) {
+                log.info("鏈夋鍦ㄥ嚭鐗囩殑閽㈠寲浠诲姟");
+                computeOutGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress);
+                Date endDate = new Date();
+                log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
+                return;
+            }
+            //鏄惁鏈変汉宸ヤ笅鐗囦换鍔�   鏈夌洿鎺ュ嚭
+            List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
+                    .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL).orderByDesc(BigStorageCageDetails::getWidth));
+            if (CollectionUtils.isNotEmpty(artificialList)) {
+                computeOutGlassInfo(artificialList, Boolean.FALSE, mesToPLCAddress);
+                Date endDate = new Date();
+                log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
+                return;
+            }
+            //閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩  鐜荤拑灏忕墖  鐮存崯琛� 鏁伴噺   鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈
+            List<TemperingLayoutDTO> temperingLayoutDTOList = bigStorageCageDetailsService.temperingIsAll();
+            if (CollectionUtils.isNotEmpty(temperingLayoutDTOList)) {
+                //鐜荤拑鍒伴綈鍖呮嫭宸插嚭鐗囩殑
+                //鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟  缁撴潫
+                for (TemperingLayoutDTO item : temperingLayoutDTOList) {
+                    List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class)
+                            .selectAll(GlassInfo.class)
+                            .select("-1 as state")
+                            .selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot)
+                            .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId)
+                            .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
+                            .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId())
+                            .eq(GlassInfo::getEngineerId, item.getEngineerId())
+                            .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence));
+                    if (CollectionUtils.isNotEmpty(temperingGlassInfos)) {
+                        temperingGlassInfoService.saveBatch(temperingGlassInfos);
+                        computeOutGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress);
+                        Date endDate = new Date();
+                        log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
+                        return;
+                    }
                 }
             }
         }
-        //鏈埌榻� 鎵ц鍐呴儴璋冨害浠诲姟
+        //鎵ц鍐呴儴璋冨害浠诲姟
         TemperingLayoutDTO temperingOccupySlot = bigStorageCageDetailsService.queryTemperingOccupySlot();
         if (null != temperingOccupySlot) {
             List<SlotSequenceDTO> slotSequenceList = bigStorageCageDetailsService.queryGlassMaxAndMin(temperingOccupySlot.getEngineerId(), temperingOccupySlot.getTemperingLayoutId());
@@ -314,12 +319,25 @@
                 SlotSequenceDTO second = slotSequenceList.get(i + 1);
                 int slotWidth = carWidth - first.getRemainWidth() - glassGap;
                 if (first.getMinSequence() == second.getMaxSequence() + 1
-                        && second.getRemainWidth() > slotWidth) {
+                        && second.getRemainWidth() > slotWidth && slotWidth >= 0) {
+
                     List<BigStorageCageDetails> list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
-                            .eq(BigStorageCageDetails::getSlot, first.getSlot()).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN));
-                    List<BigStorageCageOutTask> outTasks = list.stream().map(e -> new BigStorageCageOutTask(e.getGlassId(), first.getSlot(), second.getSlot(),
-                            e.getWidth() * 10, e.getHeight() * 10, 0, 0, 1)).collect(Collectors.toList());
-                    bigStorageCageOutTaskService.saveBatch(outTasks);
+                            .eq(BigStorageCageDetails::getSlot, first.getSlot()).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
+                            .orderBy(Boolean.TRUE, sequenceOrder, BigStorageCageDetails::getTemperingFeedSequence));
+                    if (CollectionUtils.isNotEmpty(list)) {
+                        List<BigStorageCageOutTask> outTasks = new ArrayList<>();
+                        int serialNumber = 1;
+                        for (BigStorageCageDetails item : list) {
+                            outTasks.add(new BigStorageCageOutTask(item.getGlassId(), first.getSlot(), second.getSlot(),
+                                    item.getWidth() * 10, item.getHeight() * 10, 1, serialNumber++, Const.BIG_STORAGE_OUT_NEW));
+                        }
+                        //鏂板璋冨害浠诲姟
+                        bigStorageCageOutTaskService.saveBatch(outTasks);
+                        //鏇存柊鐞嗙墖绗艰鎯呰〃璋冨害鐨勫悗鐨勭幓鐠冧綅缃俊鎭細鐢熸垚浠诲姟鍚庡厛灏嗙幓鐠冩牸瀛愪綅缃繘琛岃皟鏁达紝鐜荤拑鐘舵�佹敼涓鸿皟搴︿腑锛屾柊澧炶皟搴﹀畬鎴愪换鍔★紝澶勭悊璋冨害瀹屾垚鍚庣幓鐠冪姸鎬佹敼涓�100.
+                        List<String> glassList = list.stream().map(BigStorageCageDetails::getGlassId).collect(Collectors.toList());
+                        bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>().set(BigStorageCageDetails::getState, Const.GLASS_STATE_SCHEDULE_ING)
+                                .set(BigStorageCageBaseInfo::getSlot, second.getSlot()).eq(BigStorageCageDetails::getGlassId, glassList));
+                    }
 
                     //鍚憄lc鍐欏叆纭瀛�
                     int returnData = 0;
@@ -348,14 +366,18 @@
         if (CollectionUtils.isNotEmpty(list)) {
             log.info("2銆佽幏鍙栨墍鏈夋鍦ㄨ繘鐗囩殑鐜荤拑淇℃伅id:{}", list);
             List<String> glassIds = list.stream().map(String::valueOf).collect(Collectors.toList());
-            List<Object> inSuccessGlassIdsObj = bigStorageCageFeedTaskService.listObjs(new LambdaQueryWrapper<BigStorageCageFeedTask>()
-                    .select(BigStorageCageFeedTask::getGlassId).in(BigStorageCageFeedTask::getGlassId, glassIds)
+            List<BigStorageCageFeedTask> inSuccessGlass = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
+                    .in(BigStorageCageFeedTask::getGlassId, glassIds)
                     .in(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT));
-            List<String> inSuccessGlassIds = inSuccessGlassIdsObj.stream().map(String::valueOf).collect(Collectors.toList());
-            if (CollectionUtils.isNotEmpty(inSuccessGlassIds)) {
-                log.info("3銆佽幏鍙栬繘鐗囧凡瀹屾垚鐨勭幓鐠冧俊鎭痠d:{}", inSuccessGlassIds);
-                bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
-                        .set(BigStorageCageDetails::getState, Const.GLASS_STATE_IN).in(BigStorageCageDetails::getGlassId, inSuccessGlassIds));
+            if (CollectionUtils.isNotEmpty(inSuccessGlass)) {
+                log.info("3銆佽幏鍙栬繘鐗囧凡瀹屾垚鐨勭幓鐠冧俊鎭痠d:{}", inSuccessGlass);
+                List<String> inSuccessGlassIds = inSuccessGlass.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList());
+                List<UpdateBigStorageCageDTO> storageCageDTOList = inSuccessGlass.stream().map(e -> {
+                    UpdateBigStorageCageDTO storageCageDTO = new UpdateBigStorageCageDTO();
+                    BeanUtils.copyProperties(e, storageCageDTO);
+                    return storageCageDTO;
+                }).collect(Collectors.toList());
+                bigStorageCageDetailsService.updateBySlot(storageCageDTOList, Const.GLASS_STATE_IN);
                 log.info("4銆佸ぇ鐞嗙墖绗艰繘鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", inSuccessGlassIds);
                 //鏇存柊鐞嗙墖绗肩幓鐠冨昂瀵�
                 updateSlotRemain(inSuccessGlassIds, Boolean.TRUE);
@@ -379,14 +401,19 @@
         if (CollectionUtils.isNotEmpty(list)) {
             log.info("2銆佽幏鍙栨墍鏈夋鍦ㄥ嚭鐗囩殑鐜荤拑淇℃伅id:{}", list);
             List<String> glassIds = list.stream().map(String::valueOf).collect(Collectors.toList());
-            List<Object> outSuccessGlassIdsObj = bigStorageCageOutTaskService.listObjs(new LambdaQueryWrapper<BigStorageCageOutTask>()
-                    .select(BigStorageCageOutTask::getGlassId).in(BigStorageCageOutTask::getGlassId, glassIds).in(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_ALL));
-            List<String> outSuccessGlassIds = outSuccessGlassIdsObj.stream().map(String::valueOf).collect(Collectors.toList());
-            if (CollectionUtils.isNotEmpty(outSuccessGlassIds)) {
-                log.info("3銆佽幏鍙栧嚭鐗囧凡瀹屾垚鐨勭幓鐠冧俊鎭痠d:{}", outSuccessGlassIdsObj);
-                bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
-                        .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT).in(BigStorageCageDetails::getGlassId, outSuccessGlassIds));
-                log.info("4銆佸ぇ鐞嗙墖绗煎嚭鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", outSuccessGlassIdsObj);
+            List<BigStorageCageOutTask> outSuccessGlass = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>()
+                    .in(BigStorageCageOutTask::getGlassId, glassIds).in(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_ALL));
+            if (CollectionUtils.isNotEmpty(outSuccessGlass)) {
+                log.info("3銆佽幏鍙栧嚭鐗囧凡瀹屾垚鐨勭幓鐠冧俊鎭痠d:{}", outSuccessGlass);
+                List<UpdateBigStorageCageDTO> storageCageDTOList = outSuccessGlass.stream().map(e -> {
+                    UpdateBigStorageCageDTO storageCageDTO = new UpdateBigStorageCageDTO();
+                    storageCageDTO.setGlassId(e.getGlassId());
+                    storageCageDTO.setTargetSlot(e.getStartSlot());
+                    return storageCageDTO;
+                }).collect(Collectors.toList());
+                bigStorageCageDetailsService.updateBySlot(storageCageDTOList, Const.GLASS_STATE_OUT);
+                List<String> outSuccessGlassIds = outSuccessGlass.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
+                log.info("4銆佸ぇ鐞嗙墖绗煎嚭鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", outSuccessGlassIds);
                 //鏇存柊鐞嗙墖绗肩幓鐠冨昂瀵�
                 updateSlotRemain(outSuccessGlassIds, Boolean.FALSE);
                 log.info("5銆佸ぇ鐞嗙墖绗艰繘鐗囩洰鏍囨牸瀛愬昂瀵告洿鏂板畬鎴�");
@@ -624,6 +651,7 @@
         for (int i = 1; i <= taskList.size(); i++) {
             s7control.writeWord(plcMesObject.getPlcParameter("StartAddToImport" + i).getAddress(), taskList.get(i - 1).getLine());
             s7control.writeWord(plcMesObject.getPlcParameter("TargetAddToImport" + i).getAddress(), taskList.get(i - 1).getTargetSlot());
+            log.info("鍚憄lc鍙戦�佺{}鐗囩幓鐠冨凡瀹屾垚", i);
         }
         int returnData = 0;
         int count = 1;
@@ -639,27 +667,36 @@
         List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>();
         //鎵撹溅鍓╀綑灏哄
         Integer remainWidth = carWidth;
+        int trainNumber = 1;
+        int serialNumber = 1;
         int maxX = 0;
         for (T e : list) {
-            if (bigStorageCageOutTaskList.size() >= outCarMaxSize || e.getWidth() > remainWidth) {
-                break;
+            int maxLength = Math.max((int) e.getWidth(), (int) e.getHeight());
+            if (bigStorageCageOutTaskList.size() >= outCarMaxSize || maxLength > remainWidth) {
+                remainWidth = carWidth;
+                trainNumber = trainNumber + 1;
+                serialNumber = 1;
+                maxX = 0;
+                continue;
             }
-            remainWidth = remainWidth - (int) e.getWidth() - glassGap;
+            remainWidth = remainWidth - maxLength - glassGap;
             if (isTempering) {
                 int minLength = Math.min((int) e.getWidth(), (int) e.getHeight());
                 if (maxX + minLength <= xMaxSize) {
                     bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION,
-                            e.getWidth() * 10, e.getHeight() * 10, 0, 0, 1));
+                            e.getWidth() * 10, e.getHeight() * 10, trainNumber, serialNumber++, 1));
                     maxX = Math.max(maxX, e.getXCoordinate());
                 } else {
-                    break;
+                    remainWidth = carWidth;
+                    trainNumber = trainNumber + 1;
+                    serialNumber = 1;
+                    maxX = 0;
+                    continue;
                 }
-
             } else {
                 bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.ARTIFICIAL_OUT_TARGET_POSITION,
-                        e.getWidth() * 10, e.getHeight(), 0, 0, 1));
+                        e.getWidth() * 10, e.getHeight(), trainNumber, serialNumber++, 1));
             }
-
         }
         Assert.isFalse(CollectionUtils.isEmpty(bigStorageCageOutTaskList), "鏈幏鍙栧嚭鐗囨暟鎹紝缁撴潫鍑虹墖浠诲姟");
         log.info("鑾峰彇鍑虹墖浠诲姟鏁版嵁{}鏉★紝鎵ц淇濆瓨", bigStorageCageOutTaskList.size());
@@ -669,9 +706,6 @@
         bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
                 .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING)
                 .in(BigStorageCageDetails::getGlassId, glassIds));
-        //鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄(绉昏嚦鍑虹墖浠诲姟瀹屾垚鍚�)
-//        updateSlotRemain(list, glassIds);
-
         int returnData = 0;
         int count = 1;
         while (returnData == 0) {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
index b49e679..24eca61 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -44,13 +44,15 @@
     </select>
 
     <select id="queryTemperingOccupySlot" resultMap="temperingLayoutDTO">
-        SELECT TEMPERING_LAYOUT_ID,
+        SELECT ENGINEER_ID,
+               TEMPERING_LAYOUT_ID,
                COUNT(DISTINCT SLOT) as SLOT_COUNT
         FROM BIG_STORAGE_CAGE_DETAILS
         WHERE STATE = 100
         GROUP BY ENGINEER_ID,
                  TEMPERING_LAYOUT_ID
-        HAVING SLOT_COUNT &gt;= #{count} LIMIT 1
+        HAVING SLOT_COUNT &gt;= #{count}
+        ORDER BY SLOT_COUNT DESC LIMIT 1
     </select>
     <select id="queryGlassMaxAndMin" resultMap="slotSequenceDTO">
         SELECT T.*,
@@ -71,4 +73,18 @@
                  INNER JOIN BIG_STORAGE_CAGE T1 ON T.SLOT = T1.SLOT
         ORDER BY T.MAX_SEQUENCE DESC
     </select>
+
+    <update id="updateBySlot">
+        update big_storage_cage_details
+        <set>
+            state = #{state}
+        </set>
+        <where>
+            (glass_id,slot) in (
+            <foreach collection="list" item="item" separator=",">
+                (#{item.glassId}, #{item.targetSlot})
+            </foreach>
+            )
+        </where>
+    </update>
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0