From 98483334fc6b6288a9a27240bd8b79777a445ce9 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期五, 26 七月 2024 16:38:43 +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  |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml                             |   25 ++-
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                                  |   67 ++++----
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java        |   37 ++++
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java          |    5 
 hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java                              |   23 +++
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java                  |   27 +++
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java                                          |   33 ++--
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                               |   93 ++++++++++---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java             |    5 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java |   56 +++++++-
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java                |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java           |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                      |    5 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java                     |    8 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java                 |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java           |    9 
 17 files changed, 294 insertions(+), 109 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 fe5c038..5a0bd8a 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
@@ -35,19 +35,22 @@
 
     /**
      * 鍗у紡鐞嗙墖绗艰鎯呰〃鐜荤拑鐘舵��
-     * 璇嗗埆鍚庢垚鍔熺姸鎬�100
+     * 璇嗗埆鍚庢垚鍔熺姸鎬�0
+     * 璇嗗埆鍚庢垚鍔熻繘绗肩殑鐘舵��100
      * 鍑虹墖浠诲姟101
      * 浜哄伐涓嬬墖102
      * 鍑虹墖涓�103
      * 鎷胯蛋200
      * 鐮存崯201
      */
+    public static final Integer GLASS_STATE_NEW = 0;
     public static final Integer GLASS_STATE_IN = 100;
     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_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/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
index d06778e..9944d58 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java
@@ -30,7 +30,7 @@
     public List<TemperingGlassInfo> selectWaitingGlass() {
         //鑾峰彇绛夊緟杩涚倝涓殑鐜荤拑淇℃伅
         QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>();
-        wrapper.select("Top 1 *").eq("state",1);
+        wrapper.select("Top 1 *").in("state",1,0);
         TemperingGlassInfo glass=temperingMapper.selectOne(wrapper);
         if(glass!=null) {
             QueryWrapper<TemperingGlassInfo> glassinfo = new QueryWrapper<>();
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
index 289db38..f6ed2a9 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java
@@ -63,17 +63,20 @@
     @PostMapping("/edgStorageCageGlass")
     @ResponseBody
     public Result edgStorageCageGlass(@RequestBody EdgStorageCageDetails edgStorageCageDetails,int edgStorageCageId) {
+
         String isSucess=edgStorageCageService.updateEdgStorageCageDetails(edgStorageCageId,edgStorageCageDetails)?"鎴愬姛":"澶辫触";
         return Result.build(200,"銆愭竻闄�/鏇存崲/缁戝畾銆�"+isSucess,1);
     }
+
+
 
     @ApiOperation("纾ㄨ竟妯″潡姹囨姤鐜荤拑鐘舵��   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愮牬鎹�/鎷胯蛋銆�  ")
     @PostMapping("/edgReportStatus")
     @ResponseBody
     public Result edgReportStatus(@RequestBody Map<String, String> arguments) {
-        String edgStorageCageDetailsId=arguments.get("glassId");
-        int controlsId=Integer.valueOf(arguments.get("controlsId"));
-        String isSucess=edgStorageCageDetailsService.identWorn(edgStorageCageDetailsId,controlsId)?"鎴愬姛":"澶辫触";
+        /*arguments.put("line","1002");
+        arguments.put("machine","鍗у紡鐞嗙墖");*/
+        String isSucess=edgStorageCageDetailsService.identWorn(arguments)?"鎴愬姛":"澶辫触";
         return Result.build(200,"銆愮牬鎹�/鎷胯蛋銆�"+isSucess,1);
     }
 
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
index f9c0aa1..3a3bb31 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java
@@ -18,11 +18,10 @@
 
     /**
      * 璇嗗埆 鐮存崯/鎷胯蛋
-     * @param glassId
-     * @param ControlsId
+     * @param arguments
      * @return
      */
-    boolean identWorn(String glassId,int ControlsId);
+    boolean identWorn(Map<String, String> arguments);
 
     /**
      * 鑾峰彇 鍒囧壊褰撳墠鐗堝浘
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
index cd22d48..73b2bd4 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
@@ -25,7 +25,7 @@
      */
     EdgStorageCage selectNearestEmpty(int currentSlot, boolean flag);
 
-
+    List<EdgStorageCage> selectCacheEmpty();
     /**
      * 鏌ヨ绗煎唴鍑虹墖椤哄簭璇︽儏
      * @return
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
index 481483a..b4c28b8 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -8,11 +8,15 @@
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.common.config.Const;
+import com.mes.damage.entity.Damage;
+import com.mes.damage.service.DamageService;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
 import com.mes.edgstoragecage.mapper.EdgStorageCageMapper;
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
+import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.glassinfo.mapper.GlassInfoMapper;
 import com.mes.pp.entity.OptimizeDetail;
 import com.mes.pp.entity.OptimizeLayout;
 import com.mes.pp.mapper.OptimizeDetailMapper;
@@ -51,27 +55,65 @@
 
     @Autowired
     EdgStorageCageMapper edgStorageCageMapper;
+    @Autowired
+    GlassInfoMapper glassInfoMapper;
 
     @Autowired
     TaskCacheService taskCacheService;
+
+    @Autowired
+    DamageService damageService;
 
 
     /**
      * 璇嗗埆   鎷胯蛋:200/鐮存崯:201
      *
-     * @param glassId
-     * @param ControlsId
+     * @param arguments
      * @return
      */
     @Override
-    public boolean identWorn(String glassId, int ControlsId) {
-        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId, glassId));
+    public boolean identWorn(Map<String, String> arguments) {
+        String glassId=arguments.get("glassId");
+        int controlsId=arguments.get("controlsId").isEmpty()?0:Integer.parseInt(arguments.get("controlsId"));
+        int line=arguments.get("line").isEmpty()?0:Integer.parseInt(arguments.get("line"));
+        String machine=arguments.get("machine");
+        if(controlsId==0||line==0||machine==null||glassId==null||glassId.isEmpty()){
+            log.info("鍓嶇浼犻�掓暟鎹笉鍏�:{}",arguments);
+            return false;
+        }
+        int state;
+        if(controlsId==200||controlsId==201){
+            state=controlsId==200?3:2;
+        }else if (controlsId==300||controlsId==301){
+            state=controlsId==300?3:2;
+        }else{
+            log.info("鍓嶇浼犻�掔姸鎬佷笉鍚堟硶:{}",arguments);
+            return false;
+        }
+
+        List<GlassInfo> GlassInfos = glassInfoMapper.selectList(new MPJLambdaQueryWrapper<GlassInfo>()
+                .selectAll(GlassInfo.class)
+                .eq(GlassInfo::getGlassId, glassId));
+        if (GlassInfos.size() == 1) {
+            Damage damage =new Damage();
+            damage.setGlassId(glassId);
+            damage.setLine(line);
+            damage.setWorkingProcedure(machine);
+            damage.setRemark("");
+            damage.setStatus(state);//201鐮存崯锛�200鎷胯蛋   =銆嬬牬鎹熻〃 2鐮存崯  3 鎷胯蛋
+            damageService.insertDamage(damage);
+        }else{
+            return false;
+        }
+        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
+                .selectAll(EdgStorageCageDetails.class)
+                .eq(EdgStorageCageDetails::getGlassId, glassId));
         if (edgStorageCageDetails.size() == 1) {
             EdgStorageCageDetails item = edgStorageCageDetails.get(0);
-            item.setState(ControlsId);
+            item.setState(controlsId);
             baseMapper.update(item, new MPJLambdaWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId, glassId));
-            return true;
         }
+
 //            Sql鐗堟湰
 //        List<EdgStorageCageDetails> edgStorageCageDetails = baseMapper.selectList(new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId));
 //        if (edgStorageCageDetails.size() == 1) {
@@ -80,7 +122,7 @@
 //            baseMapper.update(edgStorageCageDetails.get(0), new QueryWrapper<EdgStorageCageDetails>().eq("glass_id", glassId));
 //            return true;
 //        }
-        return false;
+        return true;
     }
 
     /**
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
index f7600e6..87716c5 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java
@@ -5,17 +5,21 @@
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.common.config.Const;
+import com.mes.damage.entity.Damage;
+import com.mes.damage.service.DamageService;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
 import com.mes.edgstoragecage.mapper.EdgStorageCageMapper;
+import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
 import com.mes.edgstoragecage.service.EdgStorageCageService;
 import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.annotation.Resource;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -31,10 +35,13 @@
 @Service
 public class EdgStorageCageServiceImpl extends MPJBaseServiceImpl<EdgStorageCageMapper, EdgStorageCage> implements EdgStorageCageService {
 
-    @Resource
+    @Autowired
     EdgStorageCageDetailsMapper edgStorageCageDetailsMapper;
-    @Resource
+    @Autowired
     UpPattenUsageMapper upPattenUsageMapper;
+
+    @Autowired
+    DamageService damageService;
 
     @Override
     public EdgStorageCage selectNearestEmpty(int currentSlot, boolean flag) {
@@ -44,7 +51,6 @@
                         .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
                         .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN))
                 .isNull(EdgStorageCageDetails::getSlot)
-                .eq(EdgStorageCage::getEnableState, Const.SLOT_ON)
                 .last("order by abs(t.slot - " + currentSlot + ")  asc limit 2")
         );
         if (flag && CollectionUtil.isNotEmpty(emptyList)) {
@@ -54,6 +60,23 @@
             return null;
         }
         return emptyList.get(0);
+    }
+
+    /**
+     * 鏌ヨ绗煎唴绌烘牸
+     *
+     * @return
+     */
+    @Override
+    public List<EdgStorageCage> selectCacheEmpty() {
+        return baseMapper.selectJoinList(EdgStorageCage.class, new MPJLambdaWrapper<EdgStorageCage>()
+                .selectAll(EdgStorageCage.class)
+                .leftJoin(EdgStorageCageDetails.class, on -> on
+                        .eq(EdgStorageCageDetails::getSlot, EdgStorageCage::getSlot)
+                        .eq(EdgStorageCageDetails::getState, "100"))
+                .isNull(EdgStorageCageDetails::getSlot)
+                .last("order by abs(t.slot - 4)  asc")
+        );
     }
 
     /**
@@ -134,6 +157,12 @@
             if (result != null) {
                 result.setSlot(0);
                 result.setState(201);
+                Damage damage =new Damage();
+                damage.setGlassId(edgStorageCageDetails.getGlassId());
+                damage.setLine(1002);
+                damage.setWorkingProcedure("鍗у紡鐞嗙墖");
+                damage.setStatus(2);
+                damageService.insertDamage(damage);
                 edgStorageCageDetailsMapper.updateById(result);
             }
             //娣诲姞
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
index 58a0dfd..6f09fea 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java
@@ -51,8 +51,12 @@
     @ApiOperation("璇嗗埆鎿嶄綔锛�   鐮存崯/鎷胯蛋     鍙傛暟锛圛D,鍔熻兘[200锛氭嬁璧帮紝201:鐮存崯]锛�")
     @PostMapping("/identControls")
     @ResponseBody
-    public Result identControls(@RequestParam(name = "identId", required = false) String identId,@RequestParam(name = "controlsId", required = false) int controlsId) {
-        boolean issucess = edgStorageCageDetailsService.identWorn(identId,controlsId);
+    public Result identControls(@RequestBody Map<String, String> arguments) {
+       /* arguments.put("glassId","鐜荤拑ID");
+        arguments.put("controlsId","鍔熻兘鍙穂200鎷胯蛋/201鐮存崯]");*/
+        /*arguments.put("line","1001");
+        arguments.put("machine","璇嗗埆");*/
+        boolean issucess = edgStorageCageDetailsService.identWorn(arguments);
         return Result.build(200,"鎴愬姛",issucess);
     }
 
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
index 3b56659..7fff8e4 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java
@@ -3,6 +3,10 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.mes.common.config.Const;
+import com.mes.damage.entity.Damage;
+import com.mes.damage.service.DamageService;
+import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
 import com.mes.glassinfo.entity.GlassInfo;
@@ -10,6 +14,7 @@
 import com.mes.taskcache.entity.TaskCache;
 import com.mes.taskcache.mapper.TaskCacheMapper;
 import com.mes.taskcache.service.TaskCacheService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -26,6 +31,7 @@
  * @author zhoush
  * @since 2024-04-07
  */
+@Slf4j
 @Service
 public class TaskCacheServiceImpl extends ServiceImpl<TaskCacheMapper, TaskCache> implements TaskCacheService {
 
@@ -34,6 +40,8 @@
 
     @Autowired
     GlassInfoMapper glassInfoMapper;
+
+
     /**
      * 娣诲姞鐞嗙墖绗间换鍔�
      * @param taskCache
@@ -61,10 +69,19 @@
         int serialNumber=1;
         for(TaskCache taskCache1:taskCache){
             Map<String,Object> map=new HashMap<>();
-            GlassInfo glassInfo=glassInfoMapper.selectOne(new MPJLambdaWrapper<GlassInfo>()
+//            GlassInfo glassInfo=glassInfoMapper.selectOne(new MPJLambdaWrapper<GlassInfo>()
+//                    .selectAll(GlassInfo.class)
+//                    .eq(GlassInfo::getGlassId,taskCache1.getGlassId()));
+            List<GlassInfo> glassInfos=glassInfoMapper.selectJoinList(GlassInfo.class, new MPJLambdaWrapper<GlassInfo>()
                     .selectAll(GlassInfo.class)
-                    .eq(GlassInfo::getGlassId,taskCache1.getGlassId()));
-            if(glassInfo!=null){
+                    .innerJoin(EdgStorageCageDetails.class, on -> on
+                            .eq(EdgStorageCageDetails::getGlassId, GlassInfo::getGlassId)
+                            .eq(EdgStorageCageDetails::getEngineerId, GlassInfo::getEngineerId))
+                    .eq(GlassInfo::getGlassId,taskCache1.getGlassId())
+                    .eq(EdgStorageCageDetails::getState,Const.GLASS_STATE_IN)
+            );
+            if(glassInfos.size()==1){
+                GlassInfo glassInfo=glassInfos.get(0);
                 map.put("Line",line);//绾胯矾   2001  1绾匡紝 2002 2绾�
                 map.put("Width",glassInfo.getWidth());//瀹�
                 map.put("Height",glassInfo.getHeight());//楂�
@@ -76,6 +93,9 @@
                 map.put("FilmsId",glassInfo.getFilmsid());//鑶滅郴
                 map.put("SerialNumber",serialNumber);//鍑虹墖椤哄簭
                 result.add(map);
+            }else if(glassInfos.size()>1){
+                log.info("鏁版嵁涓嶇鍚堥�昏緫--纾ㄨ竟闃熷垪glassId閲嶅:",glassInfos);
+                return new ArrayList<>();
             }
             serialNumber++;
         }
@@ -151,4 +171,5 @@
     }
 
 
+
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
index 6673bc9..19a87ce 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
@@ -15,6 +15,7 @@
 import com.mes.pp.mapper.OptimizeDetailMapper;
 import com.mes.taskcache.entity.TaskCache;
 import com.mes.taskcache.mapper.TaskCacheMapper;
+import com.mes.taskcache.service.TaskCacheService;
 import com.mes.taskcache.service.impl.TaskCacheServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
@@ -25,6 +26,7 @@
 
 import javax.annotation.Resource;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -53,6 +55,9 @@
     GlassInfoService glassInfoService;
     @Autowired
     CacheGlassTask cacheGlassTask;
+
+    @Autowired
+    TaskCacheService taskCacheService;
 
     @Test
     public void testFindPath() {
@@ -132,6 +137,17 @@
     }
 
     @Test
+    public void testidentWorn() {
+        Map<String, String> arguments=new HashMap<>();
+        arguments.put("glassId","P24060403|3|6");//鐜荤拑ID
+        arguments.put("controlsId","300");        //鎷胯蛋锛�200/鐮存崯锛�201
+        arguments.put("line","2001");             //绾胯矾锛�
+        arguments.put("machine","鍐峰姞宸�");           //璁惧鍚嶇О锛�
+        edgStorageCageDetailsService.identWorn(arguments);
+        log.info("璇嗗埆鍙般�愮牬鎹�/鎷胯蛋銆戯細{}", 1);
+    }
+
+    @Test
     public void testPpOptimizeDetail() {
         List<OptimizeDetail> optimizeDetail = optimizeDetailMapper.selectList(new QueryWrapper<OptimizeDetail>()
                 .eq("project_no", "P24032204")
@@ -163,4 +179,11 @@
         log.info("鍑虹墖浠诲姟锛歿}", Arrays.asList(edgStorageCageDetails));
     }
 
+    @Test
+    public void testedgTask() {
+        List<Map<String,Object>> EdgTasks = taskCacheService.selectEdgInfo("2001");
+
+        log.info("纾ㄨ竟浠诲姟锛歿}", Arrays.asList(EdgTasks));
+    }
+
 }
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 1254d27..6952bac 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
@@ -294,7 +294,8 @@
                         .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId)
                         .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN)
                         .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId())
-                        .eq(GlassInfo::getEngineerId, item.getEngineerId()));
+                        .eq(GlassInfo::getEngineerId, item.getEngineerId())
+                        .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence));
                 if (CollectionUtils.isNotEmpty(temperingGlassInfos)) {
                     temperingGlassInfoService.saveBatch(temperingGlassInfos);
                     computeOutGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress);
@@ -338,6 +339,37 @@
     }
 
     @Scheduled(fixedDelay = 300)
+    public void updateInGlassStateTask() {
+        Date startDate = new Date();
+        log.info("1銆佸ぇ鐞嗙墖绗艰繘鐗囧畬鎴愬悗鏇存柊澶х悊鐗囩鏁版嵁浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
+        //鍥犱负澶х悊鐗囩鍜屽嚭鐗囦换鍔℃槸涓や釜搴撶殑鏁版嵁锛屾墍浠ヨ鍒嗗紑鏌ユ壘
+        List<Object> list = bigStorageCageDetailsService.listObjs(new LambdaQueryWrapper<BigStorageCageDetails>()
+                .select(BigStorageCageDetails::getGlassId).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW));
+        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)
+                    .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));
+                log.info("4銆佸ぇ鐞嗙墖绗艰繘鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", inSuccessGlassIds);
+                //鏇存柊鐞嗙墖绗肩幓鐠冨昂瀵�
+                updateSlotRemain(inSuccessGlassIds, Boolean.TRUE);
+                log.info("5銆佸ぇ鐞嗙墖绗艰繘鐗囩洰鏍囨牸瀛愬昂瀵告洿鏂板畬鎴�");
+            }
+
+        }
+        Date endDate = new Date();
+        log.info("end:澶х悊鐗囩杩涚墖瀹屾垚鍚庢洿鏂板ぇ鐞嗙墖绗兼暟鎹换鍔$粨鏉熸椂闂达細{}锛屽叡鑰楁椂锛歿}ms,缁撴潫浠诲姟", endDate, endDate.getTime() - startDate.getTime());
+        return;
+
+    }
+
+    @Scheduled(fixedDelay = 300)
     public void updateOutGlassStateTask() {
         Date startDate = new Date();
         log.info("1銆佸ぇ鐞嗙墖绗煎嚭鐗囧畬鎴愬悗鏇存柊澶х悊鐗囩鏁版嵁浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
@@ -355,6 +387,9 @@
                 bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
                         .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT).in(BigStorageCageDetails::getGlassId, outSuccessGlassIds));
                 log.info("4銆佸ぇ鐞嗙墖绗煎嚭鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", outSuccessGlassIdsObj);
+                //鏇存柊鐞嗙墖绗肩幓鐠冨昂瀵�
+                updateSlotRemain(outSuccessGlassIds, Boolean.FALSE);
+                log.info("5銆佸ぇ鐞嗙墖绗艰繘鐗囩洰鏍囨牸瀛愬昂瀵告洿鏂板畬鎴�");
             }
         }
         Date endDate = new Date();
@@ -561,17 +596,16 @@
             BeanUtils.copyProperties(info, cageDetails);
             //2銆佽幏鍙栫洰鏍囨牸瀛愪俊鎭�
             BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info);
-            //3銆佹洿鏂板ぇ鐞嗙墖绗艰〃鍓╀綑瀹藉害
-            bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - info.getWidth() - glassGap)
-                    .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot()));
+            //3銆佹洿鏂板ぇ鐞嗙墖绗艰〃鍓╀綑瀹藉害锛堟洿鏂板ぇ鐞嗙墖绗煎墿浣欏昂瀵哥Щ鍒拌繘绗煎畬鎴愬悗鎵ц锛�
+//            bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - info.getWidth() - glassGap)
+//                    .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot()));
             //4銆佹洿鏂拌繘鐗囦换鍔¤〃锛岀洰鏍囨牸瀛愬強鐘舵�侊紙鐘舵�佹敼涓�2 鐢垫皵鎵埌鑷澶勭悊锛�  閬囧埌闂锛氭棤娉曟壒閲忔洿鏂帮紝鎵归噺鏇存柊鏃犳硶璧版寚瀹氫粠搴�
             e.setTargetSlot(bigStorageDTO.getSlot());
-//            e.setTaskType(Const.BIG_STORAGE_IN_RUN);
             bigStorageCageFeedTaskService.updateById(e);
 
             //5銆佸皢杩涚墖淇℃伅瀛樺叆澶х悊鐗囩璇︽儏琛�
             cageDetails.setSlot(bigStorageDTO.getSlot());
-            cageDetails.setState(Const.GLASS_STATE_IN);
+            cageDetails.setState(Const.GLASS_STATE_NEW);
             cageDetails.setDeviceId(bigStorageDTO.getDeviceId());
             cageDetails.setGap(glassGap);
             bigStorageCageDetailsService.save(cageDetails);
@@ -635,8 +669,8 @@
         bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
                 .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING)
                 .in(BigStorageCageDetails::getGlassId, glassIds));
-        //鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄
-        updateSlotRemain(list, glassIds);
+        //鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄(绉昏嚦鍑虹墖浠诲姟瀹屾垚鍚�)
+//        updateSlotRemain(list, glassIds);
 
         int returnData = 0;
         int count = 1;
@@ -651,29 +685,44 @@
     /**
      * 鏇存柊绗煎瓙鍐呮牸瀛愮殑鍓╀綑灏哄
      *
-     * @param list         绗煎唴鍙互鍑虹鐨勭幓鐠冧俊鎭�
      * @param taskGlassIds 鏈浠诲姟鍑哄幓鐨勭幓鐠僫ds
-     * @param <T>
+     * @param flag         鏄惁杩涘嚭鐗� true 杩涚墖  false 鍑虹墖
      */
-    public <T extends BigStorageCageBaseInfo> void updateSlotRemain(List<T> list, List<String> taskGlassIds) {
-        //鑾峰彇闇�瑕佸嚭鍘伙紙鍖呮嫭寰呭嚭鍘荤殑锛夌殑鎵�鏈夌幓鐠冩牸瀛愬彿
-        List<Integer> slotList = list.stream().map(T::getSlot).distinct().collect(Collectors.toList());
-        //鑾峰彇寰呭嚭鍘荤殑鐜荤拑淇℃伅锛堢瓑寰呮湰娆′换鍔$粨鏉熷悗涓嬭溅鍑哄幓鐨勭幓鐠冿級
-        Map<Integer, Double> slotRemainMap = list.stream().filter(e -> !taskGlassIds.contains(e.getGlassId()))
-                .collect(Collectors.groupingBy(T::getSlot, Collectors.summingDouble(item -> item.getWidth() + glassGap)));
+    public void updateSlotRemain(List<String> taskGlassIds, Boolean flag) {
+        //鎸夌収鐜荤拑id鑾峰彇鐜荤拑淇℃伅鍙婄幓鐠冪殑鏍煎瓙鍙�
+        List<BigStorageCageDetails> glassList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
+                .in(BigStorageCageDetails::getGlassId, taskGlassIds));
+        //鑾峰彇闇�瑕佸嚭鍘�/杩涚锛堝寘鎷緟鍑哄幓鐨勶級鐨勬墍鏈夌幓鐠冩牸瀛愬彿
+        List<Integer> slotList = glassList.stream().map(BigStorageCageDetails::getSlot).distinct().collect(Collectors.toList());
+        //鑾峰彇鏍煎瓙鍐呮墍鏈夌殑鐜荤拑淇℃伅
+        List<BigStorageCageDetails> inSlotGlassList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
+                .in(BigStorageCageDetails::getSlot, slotList).in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL));
+        //鑾峰彇寰呰繘鐗�/鍑哄幓鐨勭幓鐠冧俊鎭�
+        Map<Integer, Double> slotRemainMap = null;
+        if (flag) {
+            slotRemainMap = inSlotGlassList.stream().filter(e -> taskGlassIds.contains(e.getGlassId()))
+                    .collect(Collectors.groupingBy(BigStorageCageDetails::getSlot, Collectors.summingDouble(item -> item.getWidth() + glassGap)));
+        } else {
+            slotRemainMap = inSlotGlassList.stream().filter(e -> !taskGlassIds.contains(e.getGlassId()))
+                    .collect(Collectors.groupingBy(BigStorageCageDetails::getSlot, Collectors.summingDouble(item -> item.getWidth() + glassGap)));
+        }
+        //鏍煎瓙鍐呮湁鐜荤拑鐨勶紝璁$畻涓猴細 鏍煎瓙鐨勫搴� - 锛堢粰瀛愬唴鐜荤拑鐨勫昂瀵�+闂磋窛锛�
         if (CollectionUtils.isNotEmpty(slotRemainMap)) {
-            //鎸夌収鏍煎瓙鍙锋洿鏂板墿浣欏昂瀵�
             slotRemainMap.forEach((e, v) -> {
                 bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, slotWidth - v)
                         .eq(BigStorageCage::getSlot, e));
             });
         }
-        Set<Integer> remainSlotList = slotRemainMap.keySet();
-        slotList.removeAll(remainSlotList);
-        if (CollectionUtils.isNotEmpty(slotList)) {
-            bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, slotWidth)
-                    .in(BigStorageCage::getSlot, slotList));
+        //鍙洿鏂拌繘绗煎畬鎴愮殑鐘舵�侊紝濡傛灉杩涚瀹屾垚锛屾牸瀛愬唴蹇呭畾鏈夌幓鐠冿紝涓嶅瓨鍦ㄥ嚭鐗囧悗鏍煎瓙鍐呮病鏈夌幓鐠冪殑鎯呭喌锛屾墍鏈夋牸瀛愬昂瀵搁噸缃紝鍙兘瀛樺湪浜庡嚭鐗囦换鍔�
+        if (!flag) {
+            Set<Integer> remainSlotList = slotRemainMap.keySet();
+            slotList.removeAll(remainSlotList);
+            if (CollectionUtils.isNotEmpty(slotList)) {
+                bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, slotWidth)
+                        .in(BigStorageCage::getSlot, slotList));
+            }
         }
+
     }
 
     public Boolean computeIsRun(int line, String glassId) {
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
index 9c1a54e..5e73260 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
@@ -47,12 +47,12 @@
     public void plcLoadGlassTask() throws InterruptedException {
         try {
             //鑾峰彇鑱旀満鐘舵��
-            String inkageStatus =plcParameterObject.getPlcParameter("MesToPlc").getValue();
+            String inkageStatus = plcParameterObject.getPlcParameter("InkageStatus").getValue();
             //鑾峰彇鏄惁鏈変笂鐗囪姹�
             String loadRequest = plcParameterObject.getPlcParameter("loadRequest").getValue();
             //mes鐘舵��
             String mesToPlc = plcParameterObject.getPlcParameter("MesToPlc").getValue();
-            if("1".equals(inkageStatus)&&"1".equals(loadRequest)) {
+            if ("1".equals(inkageStatus) && "1".equals(loadRequest)) {
                 //鍒ゆ柇寮�濮嬩笂鐗囩殑宸ョ▼鍙�
                 Engineering engineering = engineeringService.selectInitiate(1);
                 if (engineering != null) {
@@ -65,10 +65,10 @@
                         int workId = upwork.getWorkstationId();//宸ヤ綅id
                         double width = upwork.getPatternWidth();//瀹藉害
                         double height = upwork.getPatternHeight();//楂樺害
-                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("WorkId").getAddress(), workId);
-                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("GlassWidth").getAddress(), (long) width);
-                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("GlassHeight").getAddress(), (long) height);
-                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlc").getAddress(), 1);
+                        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("WorkId").getAddress(), workId);
+                        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("GlassWidth").getAddress(), (int) width);
+                        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("GlassHeight").getAddress(), (int) height);
+                        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("MesToPlc").getAddress(), 1);
                         //鏇存敼涓婄墖琛ㄧ姸鎬�
                         upPattenUsageService.updateUpPattenUsageState(upPattenUsage, workId);
 
@@ -78,7 +78,7 @@
             }
             if ("1".equals(mesToPlc) && "0".equals(loadRequest)) {
                 //璇锋眰瀛椾负闆舵椂锛屼换鍔″瓧娓呴浂
-                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlc").getAddress(), 0);
+                S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("MesToPlc").getAddress(), 0);
             }
             //鎵ц鍚庝紤鐪�300姣
             //Thread.sleep(300);
@@ -88,7 +88,7 @@
     }
 
     @Scheduled(fixedDelay = 300)
-    public void plcLoadGlassReport(){
+    public void plcLoadGlassReport() {
         //鑾峰彇鏄惁鏈夋眹鎶�
         String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue();
         if (loadStatus != null) {
@@ -109,14 +109,14 @@
                     overTask(loadStatus, 0);
                     break;
                 case "0":
-                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 0);
+                    S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 0);
                     break;
             }
         }
     }
 
     @Scheduled(fixedDelay = 1000)
-    public void loadGlassHome(){
+    public void loadGlassHome() {
         JSONObject jsonObject = new JSONObject();
         //姝e湪杩涜鐨勪换鍔�
         List<UpPattenUsage> upPattenUsages = upPattenUsageService.prioritylist();
@@ -143,11 +143,12 @@
             }
         }
     }
+
     @Scheduled(fixedDelay = 5000)
-    public void loadGlassStatus(){
+    public void loadGlassStatus() {
         JSONObject jsonObject = new JSONObject();
         //姝e湪杩涜鐨勪换鍔�
-        String inkageStatus =plcParameterObject.getPlcParameter("MesToPlc").getValue();
+        String inkageStatus =plcParameterObject.getPlcParameter("InkageStatus").getValue();
 //        String inkageStatus ="1";
         jsonObject.append("InkageStatus", inkageStatus);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlass");
@@ -162,7 +163,7 @@
         }
     }
 
-    public void overTask(String loadStatus, int state)  {
+    public void overTask(String loadStatus, int state) {
 
         UpPattenUsage upPattenUsage = upPattenUsageService.selectOverTask();
         if (upPattenUsage != null) {
@@ -172,11 +173,11 @@
             //瀹屾垚涓婄墖琛ㄧ姸鎬�
             upPattenUsageService.updateUpPattenUsageState(upPattenUsage, state);
             //鍒ゆ柇鏄惁鏄渶鍚庝竴鍧楃幓鐠�
-            UpPattenUsage sequence=upPattenUsageService.selectSequence(upPattenUsage);
+            UpPattenUsage sequence = upPattenUsageService.selectSequence(upPattenUsage);
             //濡傛灉鏄渶鍚庝竴鍧楁椂瀹屾垚宸ョ▼浠诲姟
-            optimizeProjectService.overTask(sequence,300);
+            optimizeProjectService.overTask(sequence, 300);
         }
-        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
+        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
     }
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
index 50991e4..72b4043 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
@@ -2,6 +2,9 @@
 
 import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.downstorage.entity.DownStorageCageDetails;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -14,5 +17,5 @@
 
 public interface DownStorageCageDetailsMapper extends MPJBaseMapper<DownStorageCageDetails> {
 
-    DownStorageCageDetails getGlassInfoMaxCount();
+    DownStorageCageDetails getGlassInfoMaxCount(@Param(value = "workList") List<Integer> workList);
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
index a5a3a3c..54966ee 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
@@ -71,7 +71,7 @@
      */
     boolean DirectConnection(GlassInfo glassInfo);
 
-    String getGlassInfoMaxCount(String glassId);
+    String getGlassInfoMaxCount(String glassId, List<Integer> workList);
 
     /**
      * @param glassId
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 027a0a0..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
@@ -193,8 +193,8 @@
     }
 
     @Override
-    public String getGlassInfoMaxCount(String glassId) {
-        DownStorageCageDetails glassInfoMaxCount = baseMapper.getGlassInfoMaxCount();
+    public String getGlassInfoMaxCount(String glassId, List<Integer> workList) {
+        DownStorageCageDetails glassInfoMaxCount = baseMapper.getGlassInfoMaxCount(workList);
         return null == glassInfoMaxCount ? glassId : glassInfoMaxCount.getGlassId();
     }
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
index 13d4b6e..841570f 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -303,6 +303,8 @@
                 workList.addAll(Const.G06_WORK_STATION);
             }
         }
+        List<Integer> workStationAll = Arrays.asList(1, 2, 3, 4, 5, 6);
+        List<Integer> offWorkStationList = workStationAll.stream().filter(e -> !workList.contains(e)).collect(Collectors.toList());
         List<DownStorageCageDetails> list = new ArrayList();
         Boolean isEmptyShelf = Boolean.FALSE;
         //瀵圭鍐呯幓鐠冭繘琛岃繃婊わ紝浠呭嚭绗﹀悎閫昏緫鐨勭幓鐠�
@@ -329,8 +331,7 @@
                 } else {
                     log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�,涓旀湭缁戝畾鏋跺瓙鐨勭幓鐠冧俊鎭�");
                     //鑾峰彇绂佺敤鏋跺瓙鐨勬祦绋嬪彿锛屽皢绗煎唴缁戝畾鏋跺瓙涓旀灦瀛愯绂佺敤鐨勬祦绋嬪崱淇℃伅
-                    List<Integer> workStationAll = Arrays.asList(1, 2, 3, 4, 5, 6);
-                    List<Integer> offWorkStationList = workStationAll.stream().filter(e -> !workList.contains(e)).collect(Collectors.toList());
+
                     List<DownWorkstation> downWorkstationOffList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
                             .and(i -> i.in(DownWorkstation::getWorkstationId, offWorkStationList).or().eq(DownWorkstation::getEnableState, Const.SLOT_OFF)));
                     //鑾峰彇琚鐢ㄧ殑娴佺▼鍗′俊鎭�
@@ -369,13 +370,14 @@
             }
         }
         loop:
-        if (tempGlassId == null) {
+        if (StringUtils.isBlank(tempGlassId)) {
             //鑾峰彇姝e湪钀芥灦鐨勭粦瀹氭祦绋嬪崱鐨勪俊鎭�(娴佺▼鍗°�佸眰鏁般�佽惤鏋舵暟閲�)
             List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Boolean.TRUE);
             List<String> downGlassFlowList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList());
             if (CollectionUtils.isEmpty(downGlassFlowList)) {
                 //鏋跺瓙閮芥湭缁戝畾娴佺▼鍗★紝鍑虹鍐呭瓙鏁伴噺鏈�澶氬昂瀵告渶澶х殑鐜荤拑id,鏃�  鍒欒繑鍥炴壂鎻忔壂鍒扮殑鐜荤拑id杩涜鍑虹墖
-                tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId);
+                tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId, offWorkStationList);
+
                 isBind = Boolean.TRUE;
                 break loop;
             }
@@ -388,7 +390,7 @@
 //                        .isNull(DownWorkstation::getFlowCardId));
                 if (isEmptyShelf) {
                     //鏋跺瓙閮芥湭缁戝畾娴佺▼鍗★紝鍑虹鍐呭瓙鏁伴噺鏈�澶氬昂瀵告渶澶х殑鐜荤拑id,鏃�  鍒欒繑鍥炴壂鎻忔壂鍒扮殑鐜荤拑id杩涜鍑虹墖
-                    tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId);
+                    tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId, offWorkStationList);
                     isBind = Boolean.TRUE;
                     break loop;
                 }
@@ -436,7 +438,7 @@
 
             Map<String, List<DownStorageCageDetails>> singleLayerMap = list.stream().filter(item -> item.getTotalLayer() == 1)
                     .collect(Collectors.groupingBy(item -> item.getFlowCardId() + item.getLayer(), Collectors.toList()));
-            if (tempGlassId == null) {
+            if (StringUtils.isBlank(tempGlassId)) {
                 if (CollectionUtils.isNotEmpty(singleLayerMap)) {
                     //鑾峰彇宸茶惤鏋舵祦绋嬪崱淇℃伅锛屾寜钀芥灦鏁伴噺鎺掑簭
                     for (DownGlassInfoDTO e : downGlassInfoDTOList) {
@@ -450,49 +452,29 @@
                 }
             }
         }
-        if (tempGlassId == null) {
+        if (StringUtils.isBlank(tempGlassId)) {
             log.info("娌℃湁鎵惧埌鍙互涓嬬墖鐨勭殑鐜荤拑锛岀粨鏉熶换鍔�");
             return Boolean.FALSE;
         } else {
             //鎸夌収鍑虹墖鐨勭幓鐠僫d鏇存柊绗煎唴鐨勭幓鐠冪姸鎬佷负宸插嚭鐗�
-            return generateDownGlassOutTask(tempGlassId, Const.GLASS_CACHE_TYPE_OUT, isBind, cageDetails);
+            return generateDownGlassOutTask(tempGlassId, Const.GLASS_CACHE_TYPE_OUT, isBind, cageDetails, workList);
         }
     }
 
     public Boolean generateDownGlassOutTask(String glassId, Integer taskType, Boolean
-            isBind, DownStorageCageDetails cageDetails) {
+            isBind, DownStorageCageDetails cageDetails, List<Integer> workList) {
         //鎸夌幓鐠僫d鑾峰彇鐜荤拑淇℃伅
         DownStorageCageDetails downStorageCageDetails = null;
         if (glassId.equals(cageDetails.getGlassId())) {
             downStorageCageDetails = cageDetails;
             taskType = 3;
+            //灏嗕笅鐗囩幓鐠冨瓨鍏ョ瀛愯鎯呬俊鎭〃涓�
+            //灏嗕换鍔℃彃鍏ョ悊鐗囩璇︽儏琛�
+            downStorageCageDetails.setState(Const.GLASS_STATE_OUT);
+            downStorageCageDetailsService.save(downStorageCageDetails);
         } else {
             downStorageCageDetails = downStorageCageDetailsService.getOne(new LambdaQueryWrapper<DownStorageCageDetails>()
                     .eq(DownStorageCageDetails::getGlassId, glassId).eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN));
-        }
-
-        Integer endCell = null;
-        if (isBind) {
-            //鑾峰彇绌烘灦瀛愪俊鎭紝灏嗙┖鏋跺瓙淇℃伅缁戝畾娴佺▼鍗�
-            DownWorkstation emptyDownWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
-                    .isNull(DownWorkstation::getFlowCardId).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1"));
-            if (null != emptyDownWorkstation) {
-                log.info("鑾峰彇鍒扮┖鏋跺瓙淇℃伅锛岀粦瀹氭祦绋嬪崱");
-                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getWorkstationId(), downStorageCageDetails.getLayer());
-                endCell = emptyDownWorkstation.getWorkstationId();
-                //灏嗕笅鐗囩幓鐠冨瓨鍏ョ瀛愯鎯呬俊鎭〃涓�
-                //灏嗕换鍔℃彃鍏ョ悊鐗囩璇︽儏琛�
-                downStorageCageDetails.setState(Const.GLASS_STATE_OUT);
-                downStorageCageDetailsService.save(downStorageCageDetails);
-            } else {
-                log.info("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�");
-                return Boolean.FALSE;
-            }
-        } else {
-            DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
-                    .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer()));
-            endCell = workstation.getWorkstationId();
-
             if (downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>()
                     .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId))) {
                 log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佹垚鍔�");
@@ -502,6 +484,25 @@
                 return Boolean.FALSE;
             }
         }
+
+        Integer endCell = null;
+        if (isBind) {
+            //鑾峰彇绌烘灦瀛愪俊鎭紝灏嗙┖鏋跺瓙淇℃伅缁戝畾娴佺▼鍗�
+            DownWorkstation emptyDownWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
+                    .isNull(DownWorkstation::getFlowCardId).in(DownWorkstation::getWorkstationId, workList).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1"));
+            if (null != emptyDownWorkstation) {
+                log.info("鑾峰彇鍒扮┖鏋跺瓙淇℃伅锛岀粦瀹氭祦绋嬪崱");
+                downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getWorkstationId(), downStorageCageDetails.getLayer());
+                endCell = emptyDownWorkstation.getWorkstationId();
+            } else {
+                log.info("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�");
+                return Boolean.FALSE;
+            }
+        } else {
+            DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
+                    .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer()));
+            endCell = workstation.getWorkstationId();
+        }
         //鏇存柊钀芥灦鐜荤拑鏁伴噺
         if (endCell == 7) {
             downWorkstationService.update(new UpdateWrapper<DownWorkstation>().eq("flow_card_id", downStorageCageDetails.getFlowCardId())
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
index c506462..ee9090e 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
@@ -25,16 +25,23 @@
         SELECT *
         FROM DOWN_STORAGE_CAGE_DETAILS
         WHERE (FLOW_CARD_ID, LAYER) = (SELECT FLOW_CARD_ID, LAYER
-                                       FROM DOWN_STORAGE_CAGE_DETAILS
-                                       WHERE STATE = 100
-                                       GROUP BY FLOW_CARD_ID, LAYER
-                                       ORDER BY COUNT(FLOW_CARD_ID) DESC
-            LIMIT 1 )
-          AND STATE = 100
+        FROM DOWN_STORAGE_CAGE_DETAILS
+        WHERE STATE = 100
+        and (FLOW_CARD_ID, LAYER) not in (
+        select FLOW_CARD_ID, LAYER from down_workstation where flow_card_id is not null and workstation_id not in
+        <foreach collection="workList" item="item" open='(' close=')' separator=','>
+            #{item}
+        </foreach>
+        )
+
+        GROUP BY FLOW_CARD_ID, LAYER
+        ORDER BY COUNT(FLOW_CARD_ID) DESC
+        LIMIT 1 )
+        AND STATE = 100
         ORDER BY
-            WIDTH DESC,
-            HEIGHT DESC
-            LIMIT 1
+        WIDTH DESC,
+        HEIGHT DESC
+        LIMIT 1
     </select>
 
 

--
Gitblit v1.8.0