From 7f4ae8816d0df23ec4e31b72a9a961a5d49d365d Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期二, 27 八月 2024 14:10:18 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java               |   48 ++
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                                      |   97 +++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/Reportingdamage.java                                            |    4 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java                                            |   36 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageDetailsService.java              |   25 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageMapper.xml                                  |    3 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java               |   25 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java                                  |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java                                       |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java         |   32 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java                     |    7 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                                   |   75 ++-
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java     |  209 +++-----
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java                  |   12 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java             |  205 ++++++++
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml                                                          |    8 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java                  |   40 +
 UI-Project/config.js                                                                                                                         |    8 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/controller/OrderController.java                                             |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java                                               |    4 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java            |   62 +-
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java                  |   16 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/request/CacheWornRequest.java                     |   28 +
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java        |   14 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java |    7 
 UI-Project/src/utils/constants.js                                                                                                            |    4 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml                                                  |    4 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageServiceImpl.java            |    8 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java                                                    |  133 ++++-
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java                                    |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java             |   27 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/impl/TaskCacheServiceImpl.java                      |  100 ++--
 /dev/null                                                                                                                                    |    0 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java                             |    4 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java                               |    7 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java                     |   28 +
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java            |   20 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java                    |    4 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/controller/TaskCacheController.java                         |   29 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java                                            |    8 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/controller/EdgStorageCageController.java               |   42 -
 41 files changed, 1,011 insertions(+), 382 deletions(-)

diff --git a/UI-Project/config.js b/UI-Project/config.js
index 9a4f798..8801d0c 100644
--- a/UI-Project/config.js
+++ b/UI-Project/config.js
@@ -1,10 +1,10 @@
 export default {
- serverUrl: "10.153.19.150:88/api",
+//  serverUrl: "10.153.19.150:88/api",
 //  serverUrl: "192.168.1.199:88/api",
-//  serverUrl: "127.0.0.1:88/api",
-  serverUrl2: "10.153.19.150:88"
+ serverUrl: "127.0.0.1:88/api",
+  // serverUrl2: "10.153.19.150:88"
   // serverUrl2: "192.168.1.199:88"
-    // serverUrl2: "127.0.0.1:88"
+    serverUrl2: "127.0.0.1:88"
 
   //serverUrl:"res.abeim.cn"
 }
\ No newline at end of file
diff --git a/UI-Project/src/utils/constants.js b/UI-Project/src/utils/constants.js
index b551cfb..69000bc 100644
--- a/UI-Project/src/utils/constants.js
+++ b/UI-Project/src/utils/constants.js
@@ -1,4 +1,4 @@
 //  export const WebSocketHost = "192.168.1.199";
-export const WebSocketHost = "10.153.19.150";
-// export const WebSocketHost = "127.0.0.1";
+// export const WebSocketHost = "10.153.19.150";
+export const WebSocketHost = "127.0.0.1";
 export const host = "88";
\ No newline at end of file
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/controller/OrderController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/controller/OrderController.java
index 18b23f5..06f0c22 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/controller/OrderController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/controller/OrderController.java
@@ -26,7 +26,7 @@
     //鑾峰彇寰呴�夋嫨鐨勫伐绋嬪彿
     private OrdersService ordersService;
 
-    @ApiOperation("鏄剧ず璁㈠崟璇︾粏1")
+    @ApiOperation("鏄剧ず璁㈠崟璇︾粏")
     @PostMapping("/selectOrderdetail") //鏄剧ず宸ョ▼閫夋嫨淇℃伅
     @ResponseBody
     public Result<List<Orderdetail>> listByState(@RequestBody Orders orders) {
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/Reportingdamage.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/Reportingdamage.java
index cd88ede..130ce69 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/Reportingdamage.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/Reportingdamage.java
@@ -31,6 +31,10 @@
      * 娆$牬鏃堕棿
      */
     private String reportingWorkTime;
+    /**
+     * 娆$牬鏃堕棿2
+     */
+    private String reportingWorkTime2;
 
 
 }
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 c34be28..537dbdf 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
@@ -65,7 +65,7 @@
         if(glass != null) {
             return temperingMapper.selectByEngineerIdAndLayoutId(glass.getEngineerId(),glass.getTemperingLayoutId());
         }
-            return  null;
+        return  null;
     }
 
     @Override
@@ -93,7 +93,7 @@
     }
 
     @Override
-        public List<TemperingGlassInfo> selectTaskType() {
+    public List<TemperingGlassInfo> selectTaskType() {
         QueryWrapper<TemperingGlassInfo> wrapper = new QueryWrapper<>();
         wrapper.select("state")
                 .groupBy("state");
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java
index b8b8a9d..8e16a5e 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/controller/EdgGlassTaskInfoController.java
@@ -1,12 +1,19 @@
 package com.mes.edgglasstask.controller;
 
 
+import com.mes.edgglasstask.entity.request.EdgGlassInfoRequest;
+import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
+import com.mes.utils.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+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;
 
 /**
  * <p>
- *  鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
  * </p>
  *
  * @author wu
@@ -16,5 +23,21 @@
 @RequestMapping("/edgGlassTaskInfo")
 public class EdgGlassTaskInfoController {
 
+    @Autowired
+    EdgGlassTaskInfoService edgGlassTaskInfoService;
+
+    /**
+     * 璁剧疆纾ㄨ竟闃熷垪鏌ヨ鍙傛暟
+     *
+     * @param request
+     * @return
+     */
+    @PostMapping("/setEdgGlassInfoRequest")
+    @ApiOperation(value = "璁剧疆纾ㄨ竟闃熷垪鏌ヨ鍙傛暟", notes = "璁剧疆纾ㄨ竟闃熷垪鏌ヨ鍙傛暟")
+    public Result<String> setEdgGlassInfoRequest(@RequestBody EdgGlassInfoRequest request) {
+        edgGlassTaskInfoService.setEdgGlassInfoRequest(request);
+        return Result.build(200, "鏌ヨ鎴愬姛", "1");
+    }
+
 }
 
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java
index 1d660e3..387c397 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java
@@ -1,5 +1,6 @@
 package com.mes.edgglasstask.entity;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -36,4 +37,7 @@
 
     private Date time;
 
+    @TableLogic
+    private int deleted;
+
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java
new file mode 100644
index 0000000..973b4c2
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/EdgGlassInfoRequest.java
@@ -0,0 +1,40 @@
+package com.mes.edgglasstask.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/8/7 16:16
+ * @Description:
+ */
+@Data
+public class EdgGlassInfoRequest {
+
+    /**
+     * 纾ㄨ竟绾� 2001   2002
+     */
+    private List<Integer> cellList;
+    /**
+     * 鐘舵��  0 寰呭鐞�  1 澶勭悊涓�  2 澶勭悊瀹屾垚
+     */
+    private List<Integer> stateList;
+
+    /**
+     * 寮�濮嬫椂闂�
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date beginDate;
+
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endDate;
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java
new file mode 100644
index 0000000..a383b93
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/entity/request/IdentWornRequest.java
@@ -0,0 +1,28 @@
+package com.mes.edgglasstask.entity.request;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/8/10 13:34
+ * @Description:
+ */
+@Data
+public class IdentWornRequest {
+
+    @NotBlank(message = "鐜荤拑ID涓嶈兘涓虹┖")
+    private String glassId;
+
+    @NotNull(message = "鐘舵�佷笉鑳戒负绌�")
+    private int state;
+
+    @NotNull(message = "绾胯矾涓嶈兘涓虹┖")
+    private int line;
+
+    @NotBlank(message = "宸ュ簭涓嶈兘涓虹┖")
+    private String workingProcedure;
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java
index 7df5e0f..45651a3 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/EdgGlassTaskInfoService.java
@@ -2,12 +2,13 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
+import com.mes.edgglasstask.entity.request.EdgGlassInfoRequest;
 
 import java.util.List;
 
 /**
  * <p>
- *  鏈嶅姟绫�
+ * 鏈嶅姟绫�
  * </p>
  *
  * @author wu
@@ -15,9 +16,9 @@
  */
 public interface EdgGlassTaskInfoService extends IService<EdgGlassTaskInfo> {
 
-  //  List<EdgGlassTaskInfo> selectEdgInfo();
+    List<EdgGlassTaskInfo> selectEdgInfo();
 
-//    String setEdgGlassInfoRequest(EdgGlassInfoRequest request);
+    String setEdgGlassInfoRequest(EdgGlassInfoRequest request);
     /**
      * 鏌ヨ鍒ゆ柇纾ㄨ竟绾挎槸鍚︽湁鐜荤拑杩愯
      * @param
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java
index 1e132e5..0934ab6 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgglasstask/service/impl/EdgGlassTaskInfoServiceImpl.java
@@ -1,11 +1,15 @@
 package com.mes.edgglasstask.service.impl;
 
+import cn.smallbun.screw.core.util.CollectionUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.common.utils.RedisUtil;
 import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
+import com.mes.edgglasstask.entity.request.EdgGlassInfoRequest;
 import com.mes.edgglasstask.mapper.EdgGlassTaskInfoMapper;
 import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
+import com.mes.tools.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -13,7 +17,7 @@
 
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author wu
@@ -25,34 +29,34 @@
     @Autowired
     RedisUtil redisUtil;
 
-    //@Override
-//    public List<EdgGlassTaskInfo> selectEdgInfo() {
-//        EdgGlassInfoRequest request = redisUtil.getCacheObject("edgGlassRequest");
-//
-//        if (null == request) {
-//            request = new EdgGlassInfoRequest();
-//        }
-//        if (null == request.getBeginDate()) {
-//            request.setBeginDate(DateUtil.getBeginDate());
-//            request.setEndDate(DateUtil.getEndDate());
-//        }
-//        LambdaQueryWrapper<EdgGlassTaskInfo> edgGlassWrapper = new LambdaQueryWrapper<EdgGlassTaskInfo>()
-//                .in(CollectionUtils.isNotEmpty(request.getCellList()), EdgGlassTaskInfo::getLine, request.getCellList())
-//                .in(CollectionUtils.isNotEmpty(request.getStateList()), EdgGlassTaskInfo::getStatus, request.getStateList())
-//                .between(null != request.getBeginDate(), EdgGlassTaskInfo::getTime, request.getBeginDate(), request.getEndDate())
-//                .orderByDesc(EdgGlassTaskInfo::getTime);
-//        return this.list(edgGlassWrapper);
-//    }
-//
-//    @Override
-//    public String setEdgGlassInfoRequest(EdgGlassInfoRequest request) {
-//        if (request == null) {
-//            redisUtil.deleteObject("edgGlassRequest");
-//        } else {
-//            redisUtil.setCacheObject("edgGlassRequest", request);
-//        }
-//        return "success";
-//    }
+    @Override
+    public List<EdgGlassTaskInfo> selectEdgInfo() {
+        EdgGlassInfoRequest request = redisUtil.getCacheObject("edgGlassRequest");
+
+        if (null == request) {
+            request = new EdgGlassInfoRequest();
+        }
+        if (null == request.getBeginDate()) {
+            request.setBeginDate(DateUtil.getBeginDate());
+            request.setEndDate(DateUtil.getEndDate());
+        }
+        LambdaQueryWrapper<EdgGlassTaskInfo> edgGlassWrapper = new LambdaQueryWrapper<EdgGlassTaskInfo>()
+                .in(CollectionUtils.isNotEmpty(request.getCellList()), EdgGlassTaskInfo::getLine, request.getCellList())
+                .in(CollectionUtils.isNotEmpty(request.getStateList()), EdgGlassTaskInfo::getStatus, request.getStateList())
+                .between(null != request.getBeginDate(), EdgGlassTaskInfo::getTime, request.getBeginDate(), request.getEndDate())
+                .orderByDesc(EdgGlassTaskInfo::getTime);
+        return this.list(edgGlassWrapper);
+    }
+
+    @Override
+    public String setEdgGlassInfoRequest(EdgGlassInfoRequest request) {
+        if (request == null) {
+            redisUtil.deleteObject("edgGlassRequest");
+        } else {
+            redisUtil.setCacheObject("edgGlassRequest", request);
+        }
+        return "success";
+    }
 
     /**
      * 鏌ヨ鍒ゆ柇纾ㄨ竟绾挎槸鍚︽湁鐜荤拑杩愯
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 e7fea1b..a28f44b 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
@@ -1,26 +1,23 @@
 package com.mes.edgstoragecage.controller;
 
+import com.mes.edgglasstask.entity.request.IdentWornRequest;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
 import com.mes.edgstoragecage.service.EdgStorageCageService;
-import com.mes.edgstoragecage.service.impl.EdgStorageCageServiceImpl;
-import com.mes.taskcache.entity.TaskCache;
-import com.mes.taskcache.service.impl.TaskCacheServiceImpl;
 import com.mes.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.awt.image.ImageProducer;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 /**
  * <p>
- *  鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
  * </p>
  *
  * @author zhoush
@@ -40,44 +37,33 @@
     @ApiOperation("鏌ヨ纾ㄨ竟缂撳瓨鐞嗙墖绗煎唴璇︽儏 鍙傛暟()")
     @PostMapping("/selectEdgStorageCage")
     @ResponseBody
-    public Result selectEdgStorageCage () {
-        List<Map<String, Object>> list=edgStorageCageService.selectEdgStorageCages();
-        return Result.build(200,"鎴愬姛",list);
+    public Result selectEdgStorageCage() {
+        List<Map<String, Object>> list = edgStorageCageService.selectEdgStorageCages();
+        return Result.build(200, "鎴愬姛", list);
     }
-//    @ApiOperation("娣诲姞纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氱鍐呯粦瀹氱幓鐠�  鍙傛暟(EdgStorageCage edgStorageCage)")
-//    @PostMapping("/insertEdgStorageCage")
-//    @ResponseBody
-//    public Result insertEdgStorageCage(@RequestBody EdgStorageCage edgStorageCage) {
-//        boolean isSucess=edgStorageCageService.updateEdgStorageCage(edgStorageCage);
-//        return Result.build(200,"娣诲姞鎴愬姛",1);
-//    }
+
     @ApiOperation("淇敼纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氬绗煎唴鏍呮牸杩涜銆愬惎鐢�/绂佺敤銆�")
     @PostMapping("/updateEdgStorageCage")
     @ResponseBody
     public Result updateEdgStorageCage(@RequestBody EdgStorageCage edgStorageCage) {
-        String isSucess=edgStorageCageService.updateEdgStorageCage(edgStorageCage)?"鎴愬姛":"澶辫触";
-        return Result.build(200,"銆愬惎鐢�/绂佺敤銆�"+isSucess,1);
+        String isSucess = edgStorageCageService.updateEdgStorageCage(edgStorageCage) ? "鎴愬姛" : "澶辫触";
+        return Result.build(200, "銆愬惎鐢�/绂佺敤銆�" + isSucess, 1);
     }
 
     @ApiOperation("纾ㄨ竟缂撳瓨鐞嗙墖绗间俊鎭�   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愭竻闄�/鏇存崲/缁戝畾銆� EdgStorageCage鏍煎瓙淇℃伅,EdgStorageCageDetails 鐜荤拑淇℃伅 ")
     @PostMapping("/edgStorageCageGlass")
     @ResponseBody
-    public Result edgStorageCageGlass(@RequestBody EdgStorageCageDetails edgStorageCageDetails,int edgStorageCageId) {
+    public Result edgStorageCageGlass(@RequestBody EdgStorageCageDetails edgStorageCageDetails, int edgStorageCageId) {
 
-        String isSucess=edgStorageCageService.updateEdgStorageCageDetails(edgStorageCageId,edgStorageCageDetails)?"鎴愬姛":"澶辫触";
-        return Result.build(200,"銆愭竻闄�/鏇存崲/缁戝畾銆�"+isSucess,1);
+        String isSucess = edgStorageCageService.updateEdgStorageCageDetails(edgStorageCageId, edgStorageCageDetails) ? "鎴愬姛" : "澶辫触";
+        return Result.build(200, "銆愭竻闄�/鏇存崲/缁戝畾銆�" + isSucess, 1);
     }
-
-
 
     @ApiOperation("纾ㄨ竟妯″潡姹囨姤鐜荤拑鐘舵��   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愮牬鎹�/鎷胯蛋銆�  ")
     @PostMapping("/edgReportStatus")
     @ResponseBody
-    public Result edgReportStatus(@RequestBody Map<String, Object> arguments) {
-        /*arguments.put("line","1002");
-        arguments.put("machine","鍗у紡鐞嗙墖");*/
-        String isSucess=edgStorageCageDetailsService.identWorn(arguments)?"鎴愬姛":"澶辫触";
-        return Result.build(200,"銆愮牬鎹�/鎷胯蛋銆�"+isSucess,1);
+    public Result edgReportStatus(@RequestBody @Validated IdentWornRequest request) {
+        return Result.build(200, "銆愮牬鎹�/鎷胯蛋銆�" + edgStorageCageDetailsService.edgReportStatus(request), 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 4f00afb..4e7ef5c 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
@@ -1,6 +1,7 @@
 package com.mes.edgstoragecage.service;
 
 import com.github.yulichang.base.MPJBaseService;
+import com.mes.edgglasstask.entity.request.IdentWornRequest;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 
 import java.util.List;
@@ -15,13 +16,6 @@
  * @since 2024-04-07
  */
 public interface EdgStorageCageDetailsService extends MPJBaseService<EdgStorageCageDetails> {
-
-    /**
-     * 璇嗗埆 鐮存崯/鎷胯蛋
-     * @param arguments
-     * @return
-     */
-    boolean identWorn(Map<String, Object> arguments);
 
     /**
      * 鑾峰彇 鍒囧壊褰撳墠鐗堝浘
@@ -46,9 +40,26 @@
 
     /**
      * 鑾峰彇鍑虹墖淇℃伅鏁版嵁
+     *
      * @param glassId
      * @param threshold
      * @return
      */
     EdgStorageCageDetails selectOutGlass(String glassId, int threshold);
+
+    /**
+     * 璇嗗埆   鎷胯蛋:9/鐮存崯:8
+     *
+     * @param request
+     * @return
+     */
+    String identControls(IdentWornRequest request);
+
+    /**
+     * 纾ㄨ竟妯″潡姹囨姤鐜荤拑鐘舵��   鍔熻兘锛氬绗煎唴鏍呮牸鐜荤拑杩涜銆愮牬鎹�/鎷胯蛋銆�
+     *
+     * @param request
+     * @return
+     */
+    String edgReportStatus(IdentWornRequest request);
 }
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 eef3b5d..e214749 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
@@ -2,6 +2,7 @@
 
 import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.query.MPJLambdaQueryWrapper;
@@ -9,16 +10,15 @@
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.mes.common.config.Const;
 import com.mes.damage.entity.Damage;
-import com.mes.damage.mapper.DamageMapper;
 import com.mes.damage.service.DamageService;
+import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
+import com.mes.edgglasstask.entity.request.IdentWornRequest;
+import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
 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.engineering.entity.Engineering;
-import com.mes.engineering.mapper.EngineeringMapper;
-import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.mapper.GlassInfoMapper;
 import com.mes.pp.entity.OptimizeDetail;
 import com.mes.pp.entity.OptimizeLayout;
@@ -29,12 +29,11 @@
 import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.print.attribute.standard.MediaSize;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -60,12 +59,6 @@
     @Autowired
     EdgStorageCageMapper edgStorageCageMapper;
     @Autowired
-    DamageMapper damageMapper;
-
-    @Autowired
-    EngineeringMapper engineeringMapper;
-
-    @Autowired
     GlassInfoMapper glassInfoMapper;
 
     @Autowired
@@ -74,47 +67,8 @@
     @Autowired
     DamageService damageService;
 
-
-    /**
-     * 璇嗗埆   鎷胯蛋:200/鐮存崯:201
-     *
-     * @param arguments
-     * @return
-     */
-    @Override
-    public boolean identWorn(Map<String,Object> arguments) {
-        String glassId=arguments.get("glassId").toString();
-        int state=arguments.get("state").toString().isEmpty()?0:Integer.parseInt(arguments.get("state").toString());
-        int line=arguments.get("line").toString().isEmpty()?0:Integer.parseInt(arguments.get("line").toString());
-        String workingProcedure=arguments.get("workingProcedure").toString();
-        if(state==0||line==0||workingProcedure==null||glassId==null||glassId.isEmpty()){
-            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(workingProcedure);
-            damage.setRemark("");
-            damage.setStatus(state);//8鐮存崯锛�9鎷胯蛋
-            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(state);
-            baseMapper.update(item, new MPJLambdaWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class).eq(EdgStorageCageDetails::getGlassId, glassId));
-        }
-        return true;
-    }
+    @Autowired
+    EdgGlassTaskInfoService edgGlassTaskInfoService;
 
     /**
      * 鑾峰彇 鍒囧壊褰撳墠鐗堝浘
@@ -123,17 +77,13 @@
      */
     @Override
     public List<Map<String, Object>> selectCutTerritory() {
-        List<UpPattenUsage> upPattenUsage=upPattenUsageMapper.selectJoinList(UpPattenUsage.class, new MPJLambdaWrapper<UpPattenUsage>()
+        List<UpPattenUsage> upPattenUsage = upPattenUsageMapper.selectList(new MPJLambdaWrapper<UpPattenUsage>()
                 .selectAll(UpPattenUsage.class)
-                .innerJoin(Engineering.class, on -> on
-                        .eq(Engineering::getEngineerId, UpPattenUsage::getEngineeringId))
-                .eq(Engineering::getState,1)
                 .orderByDesc(UpPattenUsage::getState)
-                .orderByDesc(UpPattenUsage::getId)
-        );
+                .orderByDesc(UpPattenUsage::getId));
         if (!upPattenUsage.isEmpty()) {
             UpPattenUsage upPattenUsage1 = upPattenUsage.get(0);
-            List<Map<String, Object>> cutTerritorys=optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
+            List<Map<String, Object>> cutTerritorys = optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
                     .selectAll(OptimizeDetail.class)
                     .selectAs(OptimizeLayout::getWidth, "olWidth")
                     .selectAs(OptimizeLayout::getHeight, "olHeight")
@@ -143,34 +93,29 @@
                     .eq(OptimizeDetail::getProjectNo, upPattenUsage1.getEngineeringId())
                     .eq(OptimizeDetail::getStockId, upPattenUsage1.getLayoutSequence())
             );
-            Map<String, EdgStorageCageDetails> edgMaps=baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
-                    .selectAll(EdgStorageCageDetails.class)
-                    .eq(EdgStorageCageDetails::getEngineerId,upPattenUsage1.getEngineeringId())
-                    .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
-            ).stream().collect(Collectors.toMap(EdgStorageCageDetails::getGlassId,EdgStorageCageDetails->EdgStorageCageDetails));
-
-            Map<String, Damage> damageMaps=damageMapper.selectList(new MPJLambdaQueryWrapper<Damage>()
-                    .selectAll(Damage.class)
-                    .eq(Damage::getEngineerId,upPattenUsage1.getEngineeringId())
-            ).stream().collect(Collectors.toMap(Damage::getGlassId,Damage->Damage,(V1,V2)->V2));
-
-            List<Map<String, Object>> resultCutTerritory=new ArrayList<>();
+            List<Map<String, Object>> ResultcutTerritorys = new ArrayList<>();
             for (Map<String, Object> cutTerritory : cutTerritorys) {
+                EdgStorageCageDetails edgStorageCageDetails = baseMapper.selectOne(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
+                        .selectAll(EdgStorageCageDetails.class)
+                        .eq(EdgStorageCageDetails::getGlassId, cutTerritory.get("glass_id"))
+                        .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN));
 //                log.info("鍐呭锛歿}-------{}",cutTerritory,edgStorageCageDetails);
-                if(cutTerritory.get("glass_id")==null||"".equals(cutTerritory.get("glass_id"))){
-                    log.info("浼樺寲鏁版嵁涓璯lassId瀛樺湪绌哄��-----鍐呭锛歿}",cutTerritorys);
-                    return new ArrayList<>();
-                }else if(edgMaps.get(cutTerritory.get("glass_id"))!=null){
-                    cutTerritory.put("glass_state",edgMaps.get(cutTerritory.get("glass_id")).getState());
-                }else if(damageMaps.get(cutTerritory.get("glass_id"))!=null){
-                    //log.info("鐜荤拑宸茬牬鎹�/鎷胯蛋-----鍐呭锛歿}",damageMaps.get(item.get("glass_id")));
-                    cutTerritory.put("glass_state",damageMaps.get(cutTerritory.get("glass_id")).getStatus());
-                }else{
-                    cutTerritory.put("glass_state",0);
+                if (edgStorageCageDetails != null) {
+                    cutTerritory.put("glass_state", edgStorageCageDetails.getState());
+                } else {
+                    cutTerritory.put("glass_state", 0);
                 }
-                resultCutTerritory.add(cutTerritory);
+                ResultcutTerritorys.add(cutTerritory);
             }
-            return resultCutTerritory;
+            return ResultcutTerritorys;
+
+//            Sql鐗堟湰
+//            return optimizeDetailMapper.selectJoinMaps(new MPJQueryWrapper<OptimizeDetail>().selectAll(OptimizeDetail.class)
+//                    .select("ol.width as olwidth","ol.height as olheight")
+//                    .leftJoin("optimize_layout ol on t.project_no=ol.project_no and t.stock_id=ol.stock_id")
+//                    .eq("t.project_no", upPattenUsage1.getEngineeringId())
+//                    .eq("t.stock_id",upPattenUsage1.getLayoutSequence())
+//            );
         }
         return null;
     }
@@ -184,9 +129,9 @@
     @Override
     public List<List<Map<String, Object>>> selectCurrentCutTerritory(String current) {
         //缁撴灉
-        List<Map<String, Object>> resultCutTerritory=new ArrayList<>();
+        List<Map<String, Object>> ResultcutTerritorys = new ArrayList<>();
         //姝ゅ伐绋嬬殑鎵�鏈変紭鍖栨暟鎹�
-        List<Map<String, Object>> cutTerritory=optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
+        List<Map<String, Object>> cutTerritorys = optimizeDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeDetail.class)
                 .selectAll(OptimizeDetail.class)
                 .selectAs(OptimizeLayout::getWidth, "olWidth")
                 .selectAs(OptimizeLayout::getHeight, "olHeight")
@@ -196,35 +141,32 @@
                 .eq(OptimizeDetail::getProjectNo, current)
         );
 
-        Map<String, EdgStorageCageDetails> edgMaps=baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
+        Map<String, EdgStorageCageDetails> edgMaps = baseMapper.selectList(new MPJLambdaQueryWrapper<EdgStorageCageDetails>()
                 .selectAll(EdgStorageCageDetails.class)
-                .eq(EdgStorageCageDetails::getEngineerId,current)
+                .eq(EdgStorageCageDetails::getEngineerId, current)
                 .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)
-        ).stream().collect(Collectors.toMap(EdgStorageCageDetails::getGlassId,EdgStorageCageDetails->EdgStorageCageDetails,(V1,V2)->V2));
-
-        Map<String, Damage> damageMaps=damageMapper.selectList(new MPJLambdaQueryWrapper<Damage>()
-                .selectAll(Damage.class)
-                .eq(Damage::getEngineerId,current)
-        ).stream().collect(Collectors.toMap(Damage::getGlassId,Damage->Damage));
-
-        for (Map<String, Object> item : cutTerritory) {
+        ).stream().collect(Collectors.toMap(EdgStorageCageDetails::getGlassId, EdgStorageCageDetails -> EdgStorageCageDetails));
+        for (Map<String, Object> cutTerritory : cutTerritorys) {
 //                log.info("鍐呭锛歿}-------{}",cutTerritory,edgStorageCageDetails);
-            if(item.get("glass_id")==null||"".equals(item.get("glass_id"))){
-                log.info("浼樺寲鏁版嵁涓璯lassId瀛樺湪绌哄��-----鍐呭锛歿}",cutTerritory);
+            if (cutTerritory.get("glass_id") == null || "".equals(cutTerritory.get("glass_id"))) {
+                log.info("浼樺寲鏁版嵁涓璯lassId瀛樺湪绌哄��-----鍐呭锛歿}", cutTerritorys);
                 return new ArrayList<>();
-            }else if(edgMaps.get(item.get("glass_id"))!=null){
-                item.put("glass_state",edgMaps.get(item.get("glass_id")).getState());
-            }else if(damageMaps.get(item.get("glass_id"))!=null){
-                //log.info("鐜荤拑宸茬牬鎹�/鎷胯蛋-----鍐呭锛歿}",damageMaps.get(item.get("glass_id")));
-                item.put("glass_state",damageMaps.get(item.get("glass_id")).getStatus());
-            }else{
-                item.put("glass_state",0);
+            } else if (edgMaps.get(cutTerritory.get("glass_id")) != null) {
+                cutTerritory.put("glass_state", edgMaps.get(cutTerritory.get("glass_id")).getState());
+            } else {
+                cutTerritory.put("glass_state", 0);
             }
-            resultCutTerritory.add(item);
+            ResultcutTerritorys.add(cutTerritory);
         }
-        Map<String, List<Map<String, Object>>> groupBy=resultCutTerritory.stream().collect(Collectors.groupingBy(item->item.get("stock_id").toString()));
+        Map<String, List<Map<String, Object>>> groupBy = ResultcutTerritorys.stream().collect(Collectors.groupingBy(item -> item.get("stock_id").toString()));
 //        List<List<Map<String, Object>>> Result=groupBy.values().stream().collect(Collectors.toList());
         return new ArrayList<>(groupBy.values());
+//Sql鐗堟湰
+//        return optimizeDetailMapper.selectJoinMaps(new MPJQueryWrapper<OptimizeDetail>().selectAll(OptimizeDetail.class)
+//                .select("ol.width as olwidth","ol.height as olheight")
+//                .leftJoin("optimize_layout ol on t.project_no=ol.project_no and t.stock_id=ol.stock_id")
+//                .eq("t.project_no",current)
+//        );
     }
 
     /**
@@ -315,22 +257,49 @@
         EdgStorageCageDetails outEdgStorageCageDetails = null;
 
 //        if (queryMaxMinDiff(threshold))
-            //todo:閫昏緫1锛氳幏鍙栦袱鏉$嚎宸插嚭鏈�鍚庝竴鍧楃幓鐠冨湪绗煎唴鐩稿悓灏哄鎵�鍓╂暟閲忥紝浼樺厛璧版暟閲忓皯鐨勭嚎
-            //todo:闇�瑕佸湪鍗у紡鐞嗙墖绗艰鎯呰〃涓柊澧炵姸鎬侊紝鐢ㄦ潵琛ㄧず鐜荤拑杩涘嚭鐞嗙墖绗兼儏鍐�
-            if (oldEdgStorageCageDetails != null && minTemperingLayoutId != null) {
-                log.info("鎸夌収涓婁竴鐗囧凡鍑虹幓鐠冨搴}锛岄珮搴}锛屽強鐗堝浘id鍖洪棿{}鍒皗}鑾峰彇鍑虹墖浠诲姟鐜荤拑淇℃伅", oldEdgStorageCageDetails.getWidth()
-                        , oldEdgStorageCageDetails.getHeight(), minTemperingLayoutId.getTemperingLayoutId(), minTemperingLayoutId.getTemperingLayoutId() + threshold);
-                outEdgStorageCageDetails = this.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
-                        .notIn(CollectionUtils.isNotEmpty(glassIds), EdgStorageCageDetails::getGlassId, glassIds)
-                        .eq(EdgStorageCageDetails::getWidth, oldEdgStorageCageDetails.getWidth())
-                        .eq(EdgStorageCageDetails::getHeight, oldEdgStorageCageDetails.getHeight())
-                        .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId, EdgStorageCageDetails::getTemperingFeedSequence)
-                        .last("limit 1"));
-                log.info("鍑虹墖浠诲姟鐨勭幓鐠冧俊鎭細{}", outEdgStorageCageDetails);
-            }
+        //todo:閫昏緫1锛氳幏鍙栦袱鏉$嚎宸插嚭鏈�鍚庝竴鍧楃幓鐠冨湪绗煎唴鐩稿悓灏哄鎵�鍓╂暟閲忥紝浼樺厛璧版暟閲忓皯鐨勭嚎
+        //todo:闇�瑕佸湪鍗у紡鐞嗙墖绗艰鎯呰〃涓柊澧炵姸鎬侊紝鐢ㄦ潵琛ㄧず鐜荤拑杩涘嚭鐞嗙墖绗兼儏鍐�
+        if (oldEdgStorageCageDetails != null && minTemperingLayoutId != null) {
+            log.info("鎸夌収涓婁竴鐗囧凡鍑虹幓鐠冨搴}锛岄珮搴}锛屽強鐗堝浘id鍖洪棿{}鍒皗}鑾峰彇鍑虹墖浠诲姟鐜荤拑淇℃伅", oldEdgStorageCageDetails.getWidth()
+                    , oldEdgStorageCageDetails.getHeight(), minTemperingLayoutId.getTemperingLayoutId(), minTemperingLayoutId.getTemperingLayoutId() + threshold);
+            outEdgStorageCageDetails = this.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
+                    .notIn(CollectionUtils.isNotEmpty(glassIds), EdgStorageCageDetails::getGlassId, glassIds)
+                    .eq(EdgStorageCageDetails::getWidth, oldEdgStorageCageDetails.getWidth())
+                    .eq(EdgStorageCageDetails::getHeight, oldEdgStorageCageDetails.getHeight())
+                    .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId, EdgStorageCageDetails::getTemperingFeedSequence)
+                    .last("limit 1"));
+            log.info("鍑虹墖浠诲姟鐨勭幓鐠冧俊鎭細{}", outEdgStorageCageDetails);
+        }
         if (outEdgStorageCageDetails == null) {
             outEdgStorageCageDetails = minTemperingLayoutId;
         }
         return outEdgStorageCageDetails;
     }
+
+    @Override
+    public String identControls(IdentWornRequest request) {
+        //灏嗚瘑鍒牬鎹熺殑鐜荤拑鐩存帴鍔犲叆鐮存崯琛�
+        Damage damage = new Damage();
+        BeanUtils.copyProperties(request, damage);
+        damage.setType(request.getState());
+        damage.setRemark("");
+        damage.setStatus(0);
+        damageService.insertDamage(damage);
+        return "success";
+    }
+
+    @Override
+    public String edgReportStatus(IdentWornRequest request) {
+        //灏嗙(杈归槦鍒楃牬鎹熺殑鐜荤拑鐩存帴鍔犲叆鐮存崯琛�
+        Damage damage = new Damage();
+        BeanUtils.copyProperties(request, damage);
+        damage.setType(request.getState());
+        damage.setRemark("");
+        damage.setStatus(0);
+        damageService.insertDamage(damage);
+        //淇敼纾ㄨ竟闃熷垪鏁版嵁鐘舵��
+        edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>()
+                .set(EdgGlassTaskInfo::getStatus, request.getState()).eq(EdgGlassTaskInfo::getGlassId, request.getGlassId()));
+        return "success";
+    }
 }
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 b11d08b..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
@@ -153,17 +153,15 @@
         EdgStorageCageDetails edgDItem = edgStorageCageDetailsMapper.selectById(edgStorageCageDetails.getId());
         if (edgItem != null) {
             //绉婚櫎  锛堢牬鎹�,鐩墠涓や釜姒傚康娣峰悎鍦ㄤ竴璧�,寤鸿鎷嗗紑锛�
-            EdgStorageCageDetails result = edgStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<EdgStorageCageDetails>()
-                    .eq(EdgStorageCageDetails::getSlot, edgStorageCageId));
+            EdgStorageCageDetails result = edgStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getSlot, edgStorageCageId));
             if (result != null) {
-                int state=8;
                 result.setSlot(0);
-                result.setState(state);
+                result.setState(201);
                 Damage damage =new Damage();
                 damage.setGlassId(edgStorageCageDetails.getGlassId());
                 damage.setLine(1002);
                 damage.setWorkingProcedure("鍗у紡鐞嗙墖");
-                damage.setStatus(state);
+                damage.setStatus(2);
                 damageService.insertDamage(damage);
                 edgStorageCageDetailsMapper.updateById(result);
             }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
index c1c52ec..d0fb44d 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -737,8 +737,8 @@
         jsonObject.append("currentCutTerritory", currentCutTerritorys);
         //log.info("鏈璇嗗埆鐗堝浘{},++++{}",engineerId,currentCutTerritorys);
         //纾ㄨ竟淇℃伅
-//        List<EdgGlassTaskInfo> edgTasks = edgGlassTaskInfoService.selectEdgInfo();
-//        jsonObject.append("edgTasks", edgTasks);
+        List<EdgGlassTaskInfo> edgTasks = edgGlassTaskInfoService.selectEdgInfo();
+        jsonObject.append("edgTasks", edgTasks);
 
         //鍗у缂撳瓨绗煎唴淇℃伅
         List<Map<String, Object>> EdgStorageCageinfos = edgStorageCageService.selectEdgStorageCages();
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 62508b2..850789e 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
@@ -1,23 +1,21 @@
 package com.mes.taskcache.controller;
 
+import com.mes.edgglasstask.entity.request.IdentWornRequest;
 import com.mes.edgstoragecage.service.EdgStorageCageDetailsService;
-import com.mes.edgstoragecage.service.EdgStorageCageService;
-import com.mes.taskcache.entity.TaskCache;
 import com.mes.taskcache.service.TaskCacheService;
 import com.mes.utils.Result;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 import java.util.Map;
 
-import static com.mes.job.CacheGlassTask.engineerId;
-
 /**
  * <p>
- *  鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
  * </p>
  *
  * @author zhoush
@@ -32,8 +30,6 @@
     private EdgStorageCageDetailsService edgStorageCageDetailsService;
 
     @Autowired
-    private EdgStorageCageService edgStorageCageService;
-    @Autowired
     private TaskCacheService taskCacheService;
 
     @ApiOperation("鏌ヨ鍒囧壊鐗堝浘淇℃伅-鏍规嵁 宸ョ▼鍙�   鍙傛暟(宸ョ▼鍙�)")
@@ -42,30 +38,31 @@
     public Result cutTerritory(String current) {
         //engineerId=current;
         List<List<Map<String, Object>>> h = edgStorageCageDetailsService.selectCurrentCutTerritory(current);
-        return Result.build(200,"鎴愬姛",h);
+        return Result.build(200, "鎴愬姛", h);
     }
+
     @ApiOperation("璇嗗埆鏄剧ず  褰撳墠鐗堝浘   鍙傛暟()")
     @PostMapping("/currentCutTerritory")
     @ResponseBody
     public Result currentCutTerritory() {
         List<Map<String, Object>> h = edgStorageCageDetailsService.selectCutTerritory();
-        return Result.build(200,"鎴愬姛",h);
+        return Result.build(200, "鎴愬姛", h);
     }
-    @ApiOperation("璇嗗埆鎿嶄綔锛�   鐮存崯/鎷胯蛋     鍙傛暟锛圛D,鍔熻兘[200锛氭嬁璧帮紝201:鐮存崯]锛�")
+
+    @ApiOperation("璇嗗埆鎿嶄綔锛�   鐮存崯/鎷胯蛋     鍙傛暟锛圛D,鍔熻兘[9锛氭嬁璧帮紝8:鐮存崯]锛�")
     @PostMapping("/identControls")
     @ResponseBody
-    public Result identControls(@RequestBody Map<String, Object> arguments) {
-        boolean issucess = edgStorageCageDetailsService.identWorn(arguments);
-        return Result.build(200,"鎴愬姛",issucess);
+    public Result<String> identControls(@RequestBody @Validated IdentWornRequest request) {
+        return Result.build(200, "鎴愬姛", edgStorageCageDetailsService.identControls(request));
     }
 
     @ApiOperation("纾ㄨ竟浠诲姟 鍙傛暟()")
     @PostMapping("/selectEdgTask")
     @ResponseBody
     public Result selectEdgTask(@RequestBody Map<String, String> arguments) {
-        String line=arguments.get("line");
-        List<Map<String,Object>> EdgTasks = taskCacheService.selectEdgInfo(line);
-        return Result.build(200,"鎴愬姛",EdgTasks);
+        String line = arguments.get("line");
+        List<Map<String, Object>> EdgTasks = taskCacheService.selectEdgInfo(line);
+        return Result.build(200, "鎴愬姛", EdgTasks);
     }
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java
index fb0c415..9226203 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/entity/TaskCache.java
@@ -1,5 +1,6 @@
 package com.mes.taskcache.entity;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
@@ -36,4 +37,7 @@
      */
     private Date createTime;
 
+    @TableLogic
+    private int deleted;
+
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java
index daaf6e3..07275d1 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/taskcache/service/TaskCacheService.java
@@ -73,11 +73,6 @@
      * @return
      */
     TaskCache selectLastOutCacheInfo(int line);
-    /**
-     * 鏌ヨ鍒ゆ柇纾ㄨ竟绾挎槸鍚︽湁鐜荤拑杩愯
-     * @param
-     * @return
-     */
-    List<TaskCache> selectTaskCacheIsRun();
+
 
 }
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 0e330b0..df949ef 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
@@ -1,5 +1,6 @@
 package com.mes.taskcache.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.base.MPJBaseServiceImpl;
@@ -7,6 +8,7 @@
 import com.mes.common.config.Const;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
+import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
 import com.mes.edgstoragecage.entity.EdgStorageCage;
 import com.mes.edgstoragecage.entity.EdgStorageCageDetails;
 import com.mes.edgstoragecage.mapper.EdgStorageCageDetailsMapper;
@@ -23,7 +25,7 @@
 
 /**
  * <p>
- *  鏈嶅姟瀹炵幇绫�
+ * 鏈嶅姟瀹炵幇绫�
  * </p>
  *
  * @author zhoush
@@ -44,57 +46,59 @@
 
     /**
      * 娣诲姞鐞嗙墖绗间换鍔�
+     *
      * @param taskCache
      * @return
      */
     @Override
-    public boolean insertTaskCache(TaskCache taskCache){
+    public boolean insertTaskCache(TaskCache taskCache) {
         baseMapper.insert(taskCache);
         return true;
     }
 
     /**
      * 鏌ヨ纾ㄨ竟浠诲姟
+     *
      * @param line
      * @return
      */
     @Override
-    public List<Map<String,Object>> selectEdgInfo(String line) {
-        List<TaskCache> taskCache=baseMapper.selectList(new MPJLambdaWrapper<TaskCache>()
+    public List<Map<String, Object>> selectEdgInfo(String line) {
+        List<TaskCache> taskCache = baseMapper.selectList(new MPJLambdaWrapper<TaskCache>()
                 .selectAll(TaskCache.class)
                 .eq(TaskCache::getEndCell, line)
-                .eq(TaskCache::getTaskStatus,1)
+                .eq(TaskCache::getTaskStatus, 1)
                 .orderByAsc(TaskCache::getCreateTime));
-        List<Map<String,Object>> result=new ArrayList<>();
-        int serialNumber=1;
-        for(TaskCache taskCache1:taskCache){
-            Map<String,Object> map=new HashMap<>();
+        List<Map<String, Object>> result = new ArrayList<>();
+        int serialNumber = 1;
+        for (TaskCache taskCache1 : taskCache) {
+            Map<String, Object> map = new HashMap<>();
 //            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>()
+            List<GlassInfo> glassInfos = glassInfoMapper.selectJoinList(GlassInfo.class, new MPJLambdaWrapper<GlassInfo>()
                     .selectAll(GlassInfo.class)
                     .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_OUT)
+                    .eq(GlassInfo::getGlassId, taskCache1.getGlassId())
+                    .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_OUT)
             );
-            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());//楂�
-                map.put("Thickness",glassInfo.getThickness());//鍘�
-                map.put("GlassId",glassInfo.getGlassId());//鐜荤拑ID
-                map.put("FlowCardId",glassInfo.getFlowCardId());//娴佺▼鍗″彿
-                map.put("TemperingLayoutId",glassInfo.getTemperingLayoutId());// 鏆備笉鏄剧ず  閽㈠寲鐗堝浘ID
-                map.put("TemperingFeedSequence",glassInfo.getTemperingFeedSequence());// 鏆備笉鏄剧ず  閽㈠寲鐗堝浘ID鍐呯殑搴忓彿
-                map.put("FilmsId",glassInfo.getFilmsid());//鑶滅郴
-                map.put("SerialNumber",serialNumber);//鍑虹墖椤哄簭
+            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());//楂�
+                map.put("Thickness", glassInfo.getThickness());//鍘�
+                map.put("GlassId", glassInfo.getGlassId());//鐜荤拑ID
+                map.put("FlowCardId", glassInfo.getFlowCardId());//娴佺▼鍗″彿
+                map.put("TemperingLayoutId", glassInfo.getTemperingLayoutId());// 鏆備笉鏄剧ず  閽㈠寲鐗堝浘ID
+                map.put("TemperingFeedSequence", glassInfo.getTemperingFeedSequence());// 鏆備笉鏄剧ず  閽㈠寲鐗堝浘ID鍐呯殑搴忓彿
+                map.put("FilmsId", glassInfo.getFilmsid());//鑶滅郴
+                map.put("SerialNumber", serialNumber);//鍑虹墖椤哄簭
                 result.add(map);
-            }else if(glassInfos.size()>1){
-                log.info("鏁版嵁涓嶇鍚堥�昏緫--纾ㄨ竟闃熷垪glassId閲嶅:",glassInfos);
+            } else if (glassInfos.size() > 1) {
+                log.info("鏁版嵁涓嶇鍚堥�昏緫--纾ㄨ竟闃熷垪glassId閲嶅:", glassInfos);
                 return new ArrayList<>();
             }
             serialNumber++;
@@ -111,16 +115,18 @@
 
     /**
      * 鏌ヨ寰呯悊鐗囧伐浣滅殑浠诲姟
+     *
      * @return
      */
     @Override
-    public List<TaskCache> selectCacheInfo(){
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus,0));
+    public List<TaskCache> selectCacheInfo() {
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus, 0));
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0));
     }
 
     /**
      * 鏌ヨ鍏ㄩ儴浠诲姟
+     *
      * @return
      */
     @Override
@@ -130,61 +136,51 @@
 
     /**
      * 鏌ヨ寰呰繘鐗囦换鍔�
+     *
      * @return
      */
     @Override
-    public List<TaskCache> selectInputTaskCache(){
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus,0).eq(TaskCache::getTaskType,1));
+    public List<TaskCache> selectInputTaskCache() {
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus, 0).eq(TaskCache::getTaskType, 1));
 
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0).eq("task_type",1));
     }
 
     /**
      * 鏌ヨ寰呭嚭鐗囦换鍔�
+     *
      * @return
      */
     @Override
-    public List<TaskCache> selectOutTaskCache(){
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus,0).eq(TaskCache::getTaskType,2));
+    public List<TaskCache> selectOutTaskCache() {
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getTaskStatus, 0).eq(TaskCache::getTaskType, 2));
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("task_status",0).eq("task_type",2));
     }
 
     /**
      * 鏌ヨ  A09  鎴� A10 鏈�鏂扮殑涓�鐗� 鍑虹墖浠诲姟
+     *
      * @param line
      * @return
      */
     @Override
-    public List<TaskCache> selectLastOutCacheInfos(int line){
-        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell,line).eq(TaskCache::getTaskStatus,1).orderByDesc(TaskCache::getCreateTime));
+    public List<TaskCache> selectLastOutCacheInfos(int line) {
+        return baseMapper.selectList(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell, line).eq(TaskCache::getTaskStatus, 1).orderByDesc(TaskCache::getCreateTime));
 //        return baseMapper.selectList(new QueryWrapper<TaskCache>().eq("end_cell",line).eq("task_status",1).orderByDesc("ID"));
     }
 
     /**
      * 鏌ヨ  A09  鎴� A10 鏈�鏂扮殑涓�鐗� 鍑虹墖浠诲姟
+     *
      * @param line
      * @return
      */
     @Override
-    public TaskCache selectLastOutCacheInfo(int line){
-        return baseMapper.selectOne(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell,line).eq(TaskCache::getTaskStatus,1).orderByDesc(TaskCache::getCreateTime));
+    public TaskCache selectLastOutCacheInfo(int line) {
+        return baseMapper.selectOne(new MPJLambdaWrapper<TaskCache>().selectAll(TaskCache.class).eq(TaskCache::getEndCell, line).eq(TaskCache::getTaskStatus, 1).orderByDesc(TaskCache::getCreateTime));
     }
-    /**
-     * 鏌ヨ鍒ゆ柇纾ㄨ竟绾挎槸鍚︽湁鐜荤拑杩愯
-     * @param
-     * @return
-     */
-    @Override
-    public List<TaskCache> selectTaskCacheIsRun() {
-        List<TaskCache> taskCaches=null;
-        taskCaches=taskCacheMapper.selectJoinList(TaskCache.class, new MPJLambdaWrapper<TaskCache>()
-                .select("top 4   t.end_cell,ISNULL(b.glass_id, 0)as glass_id")
-                .leftJoin("big_storage_cage_feed_task as b on t.glass_id=b.glass_id ")
-                .groupBy("t.end_cell,b.glass_id,t.create_time")
-                .orderByDesc("t.create_time")
-        );
-        return taskCaches;
-    }
+
+
 
 
 }
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
index 3a702c3..8ab9ab1 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
 
 spring:
   profiles:
-    active: prod
+    active: dev
   application:
     name: cacheGlass
 mybatis-plus:
@@ -18,11 +18,11 @@
     secondLength: 2500
   min:
     one: #绗竴鏉$(杈圭嚎鐨勬渶灏忓昂瀵镐俊鎭�
-      firstLength: 600
-      secondLength: 350
+      firstLength: 500
+      secondLength: 400
     two: #绗簩鏉$(杈圭嚎鐨勬渶灏忓昂瀵镐俊鎭�
       firstLength: 400
-      secondLength: 300
+      secondLength: 400
   sequence:
     order: false
 
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 233e6f1..ad5430b 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
@@ -149,7 +149,7 @@
         arguments.put("state","8");        //鎷胯蛋锛�200/鐮存崯锛�201
         arguments.put("line","1001");             //绾胯矾锛�
         arguments.put("workingProcedure","璇嗗埆");           //璁惧鍚嶇О锛�
-        edgStorageCageDetailsService.identWorn(arguments);
+//        edgStorageCageDetailsService.identWorn(arguments);
         log.info("璇嗗埆鍙般�愮牬鎹�/鎷胯蛋銆戯細{}", 1);
     }
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
index e717b46..2b2ed15 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
@@ -94,20 +94,26 @@
     /**
      * 宸ョ▼鍙�
      */
-    @ApiModelProperty(value = "宸ョ▼鍙�")
+    @ApiModelProperty(value = "宸ョ▼鍙�", position = 16)
     private String engineerId;
+
+    /**
+     * 宸ョ▼鍙�
+     */
+    @ApiModelProperty(value = "灞�", position = 17)
+    private String layer;
 
     /**
      * 杩涚墖浠诲姟
      */
-    @ApiModelProperty(value = "杩涚墖浠诲姟", position = 16)
+    @ApiModelProperty(value = "杩涚墖浠诲姟", position = 18)
     @TableField(exist = false)
     private BigStorageCageFeedTask bigStorageCageFeedTask;
 
     /**
      * 鍑虹墖浠诲姟
      */
-    @ApiModelProperty(value = "鍑虹墖浠诲姟", position = 17)
+    @ApiModelProperty(value = "鍑虹墖浠诲姟", position = 19)
     @TableField(exist = false)
     private BigStorageCageOutTask bigStorageCageOutTask;
 
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 a7531d2..2b910c0 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
@@ -276,10 +276,9 @@
                 .gt(BigStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight()))
                 .last("limit 1");
         if (glassInfo.getTemperingLayoutId() == 0) {
-            //todo:鍚屾祦绋嬭繘鍚屼竴鏍�
-//            wrapper.eq(BigStorageCageDetails::getFlowCardId,glassInfo.getFlowCardId())
-//                    .eq(BigStorageCageDetails::get)
-            wrapper.eq(BigStorageCageDetails::getWidth, glassInfo.getWidth()).eq(BigStorageCageDetails::getHeight, glassInfo.getHeight());
+            wrapper.eq(BigStorageCageDetails::getFlowCardId,glassInfo.getFlowCardId())
+                    .eq(BigStorageCageDetails::getLayer,glassInfo.getLayer());
+//            wrapper.eq(BigStorageCageDetails::getWidth, glassInfo.getWidth()).eq(BigStorageCageDetails::getHeight, glassInfo.getHeight());
         } else {
             wrapper.eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() + 1);
         }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
index a255625..b7f6d9b 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
@@ -221,12 +221,12 @@
         LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper = new LambdaQueryWrapper();
         bigStorageCageDetailsWrapper
                 .eq(BigStorageCageDetails::getSlot, slot)
-                .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN, Const.GLASS_STATE_ARTIFICIAL);
+                .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL);
 
         List<BigStorageCageDetails> bigStorageCageDetailsList = bigStorageCageDetailsMapper.selectList(bigStorageCageDetailsWrapper);
         for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
         ) {
-            double widths = bigStorageCageDetails.getWidth();
+            double widths = Math.max(bigStorageCageDetails.getWidth(),bigStorageCageDetails.getHeight()) ;
             width = width - widths - glassGap;
         }
         //淇敼鏍煎瓙鍓╀綑瀹藉害
@@ -266,7 +266,7 @@
     @Override
     public List<Map<String, Object>> selectBigStorageCageUsage() {
         QueryWrapper<BigStorageCage> wrapper = new QueryWrapper<>();
-        wrapper.select("device_id,ROUND(1 - SUM(CASE WHEN remain_width = 5000 THEN 1 ELSE 0 END) / COUNT(device_id), 2) AS percentage,SUM(CASE WHEN remain_width = 5000 THEN 1 ELSE 0 END) AS count")
+        wrapper.select("device_id,ROUND(1 - SUM(CASE WHEN remain_width = 5000 THEN 1 ELSE 0 END) / COUNT(device_id), 2)*100 AS percentage,SUM(CASE WHEN remain_width = 5000 THEN 1 ELSE 0 END) AS count")
 
                 .groupBy("device_id");
         List<Map<String, Object>> bigStorageCageUsages = baseMapper.selectMaps(wrapper);
@@ -289,8 +289,8 @@
         return baseMapper.queryFreeDeviceByUsed(thickness);
     }
 
-    @Override
-    public List<Integer> queryFreeDeviceByNotUsed(double thickness) {
-        return baseMapper.queryFreeDeviceByNotUsed(thickness);
-    }
+//    @Override
+//    public List<Integer> queryFreeDeviceByNotUsed(double thickness) {
+//        return baseMapper.queryFreeDeviceByNotUsed(thickness);
+//    }
 }
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 5378df6..5a7eade 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
@@ -2,7 +2,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.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
@@ -128,6 +130,8 @@
         if (!REQUEST_WORD.equals(mesD01Value) && REQUEST_WORD.equals(d01ToMES) && (StringUtils.isBlank(d02State) || !REQUEST_WORD.equals(d03State))) {
             if (!d01GlassId.equals(d01Id)) {
                 judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD01Address);
+                edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>()
+                        .set(EdgGlassTaskInfo::getStatus, Const.EDG_GLASS_SUCCESS).eq(EdgGlassTaskInfo::getGlassId, d01Id));
                 d01GlassId = d01Id;
             }
         }
@@ -135,6 +139,8 @@
         if (!REQUEST_WORD.equals(mesD04Value) && REQUEST_WORD.equals(d04ToMES) && !REQUEST_WORD.equals(d05State)) {
             if (!d04GlassId.equals(d04Id)) {
                 judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD04Address);
+                edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>()
+                        .set(EdgGlassTaskInfo::getStatus, Const.EDG_GLASS_SUCCESS).eq(EdgGlassTaskInfo::getGlassId, d04Id));
                 d04GlassId = d04Id;
             }
         }
@@ -277,8 +283,12 @@
                 return;
             }
             //鏄惁鏈変汉宸ヤ笅鐗囦换鍔�   鏈夌洿鎺ュ嚭
+//            List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
+//                    .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL).orderByDesc(BigStorageCageDetails::getWidth));
             List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>()
-                    .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL).orderByDesc(BigStorageCageDetails::getWidth));
+                    .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL)
+                    .orderByAsc(BigStorageCageDetails::getSlot)
+                    .orderByDesc(BigStorageCageDetails::getId));
             if (CollectionUtils.isNotEmpty(artificialList)) {
                 computeOutMoreGlassInfo(artificialList, Boolean.FALSE, mesToPLCAddress);
                 Date endDate = new Date();
@@ -346,15 +356,15 @@
                     }
                 }
             }
-            //鍚憄lc鍐欏叆纭瀛�
-            int returnData = 0;
-            int count = 1;
-            while (returnData == 0) {
-                log.info("宸插悜plc绗瑊}娆¢�佸崗璁�", count);
-                S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
-                returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0);
-                log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesToPLCAddress, returnData);
-            }
+//            //鍚憄lc鍐欏叆纭瀛�
+//            int returnData = 0;
+//            int count = 1;
+//            while (returnData == 0) {
+//                log.info("宸插悜plc绗瑊}娆¢�佸崗璁�", count);
+//                S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
+//                returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0);
+//                log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesToPLCAddress, returnData);
+//            }
             Date endDate = new Date();
             log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime());
             return;
@@ -476,10 +486,10 @@
         log.info("澶х悊鐗囩鐮存崯鐜荤拑娓呴櫎浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
         //鑾峰彇杩涚墖浠诲姟琛ㄤ腑鐘舵�佷负鐮存崯鐨勬暟鎹�
         List<BigStorageCageFeedTask> inDamageTaskInfoList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
-                .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
+                .in(BigStorageCageFeedTask::getTaskState, Const.GLASS_STATE_DAMAGE_TAKE));
         if (CollectionUtils.isNotEmpty(inDamageTaskInfoList)) {
             log.info("鑾峰彇杩涚墖浠诲姟琛ㄤ腑鐮存崯鐨勭幓鐠冧俊鎭瘂}", inDamageTaskInfoList);
-            bigStorageCageFeedTaskService.remove(new LambdaQueryWrapper<BigStorageCageFeedTask>().eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_DAMAGE));
+            bigStorageCageFeedTaskService.remove(new LambdaQueryWrapper<BigStorageCageFeedTask>().in(BigStorageCageFeedTask::getTaskState, Const.GLASS_STATE_DAMAGE_TAKE));
             //鐞嗙墖绗艰鎯呰〃鏁版嵁鐘舵�佹洿鏂�
             bigStorageCageDetailsService.remove(new LambdaQueryWrapper<BigStorageCageDetails>()
                     .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW).in(BigStorageCageDetails::getGlassId, inDamageTaskInfoList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList())));
@@ -491,7 +501,8 @@
                 damage.setLine(bigStorageCageFeedTask.getLine());
                 damage.setWorkingProcedure("鍐峰姞宸�");
                 damage.setRemark("杩涚鍓嶅崸杞珛");
-                damage.setStatus(2);
+                damage.setStatus(0);
+                damage.setType(bigStorageCageFeedTask.getTaskState());
                 damageService.insertDamage(damage);
                 slotList.add(bigStorageCageFeedTask.getTargetSlot());
             }
@@ -501,16 +512,15 @@
         }
         //鑾峰彇鍑虹墖浠诲姟琛ㄤ腑鐘舵�佷负鐮存崯鐨勬暟鎹�
         List<BigStorageCageOutTask> outDamageTaskInfoList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>()
-                .eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_DAMAGE));
+                .in(BigStorageCageOutTask::getTaskState, Const.GLASS_STATE_DAMAGE_TAKE));
         if (CollectionUtils.isNotEmpty(outDamageTaskInfoList)) {
             log.info("鑾峰彇鍑虹墖浠诲姟琛ㄤ腑鐮存崯鐨勭幓鐠冧俊鎭瘂}", outDamageTaskInfoList);
-            bigStorageCageOutTaskService.remove(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_DAMAGE));
+            bigStorageCageOutTaskService.remove(new LambdaQueryWrapper<BigStorageCageOutTask>().in(BigStorageCageOutTask::getTaskState, Const.GLASS_STATE_DAMAGE_TAKE));
             List<String> glassIdList = outDamageTaskInfoList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList());
             //绉婚櫎閽㈠寲涓嬬墖琛ㄦ暟鎹�
             temperingGlassInfoService.remove(new LambdaQueryWrapper<TemperingGlassInfo>().in(TemperingGlassInfo::getGlassId, glassIdList));
             //鐞嗙墖绗艰鎯呰〃鏁版嵁鐘舵�佸垹闄�
             bigStorageCageDetailsService.remove(new LambdaQueryWrapper<BigStorageCageDetails>().in(BigStorageCageDetails::getGlassId, glassIdList));
-
             //灏嗙牬鎹熶俊鎭柊澧炲叆鐮存崯琛�
             List<Integer> slotList = new ArrayList<>();
             for (BigStorageCageOutTask bigStorageCageOutTask : outDamageTaskInfoList) {
@@ -519,7 +529,8 @@
                 damage.setLine(bigStorageCageOutTask.getEndSlot());
                 damage.setWorkingProcedure("鍐峰姞宸�");
                 damage.setRemark("鍑虹墖鍚庡崸杞珛");
-                damage.setStatus(2);
+                damage.setStatus(0);
+                damage.setType(bigStorageCageOutTask.getTaskState());
                 damageService.insertDamage(damage);
                 slotList.add(bigStorageCageOutTask.getStartSlot());
             }
@@ -537,10 +548,20 @@
      */
     public Boolean judgeGlassTypeStatus(String glassId, Integer line, String mesAddress) {
         //1銆佽幏鍙栦换鍔¤〃涓浉閭荤幓鐠�
-        List<EdgGlassTaskInfo> edgGlassTaskInfoList = edgGlassTaskInfoService.list(new LambdaQueryWrapper<EdgGlassTaskInfo>()
+        List<EdgGlassTaskInfo> edgGlassTaskInfoList;
+        edgGlassTaskInfoList = edgGlassTaskInfoService.list(new LambdaQueryWrapper<EdgGlassTaskInfo>()
                 .eq(EdgGlassTaskInfo::getLine, line)
-                .apply("time >= (select time from edg_glass_task_info where glass_id = '" + glassId + "')")
+                .apply("time >= (select time from edg_glass_task_info where line='" + line + "' and glass_id = '" + glassId + "' and deleted = 0)")
                 .orderByAsc(EdgGlassTaskInfo::getTime));
+        if (edgGlassTaskInfoList == null) {
+            log.info("绾胯矾锛歿}璇嗗埆鐜荤拑淇℃伅鏈嚭鐜板湪灏哄琛ㄤ腑,鑾峰彇鐩搁偦涓ゅ潡鐜荤拑澶辫触", line);
+        } else {
+            edgGlassTaskInfoList = edgGlassTaskInfoService.list(new QueryWrapper<EdgGlassTaskInfo>()
+                    .select("Top 1 *")
+                    .eq("glass_id", glassId)
+            );
+            log.info("鍦ㄥ昂瀵歌〃涓幏鍙栫幓鐠冧俊鎭瘂}", edgGlassTaskInfoList);
+        }
         Assert.isFalse(CollectionUtils.isEmpty(edgGlassTaskInfoList), "璇嗗埆鐜荤拑淇℃伅鏈嚭鐜板湪灏哄琛ㄤ腑,鑾峰彇鐩搁偦涓ゅ潡鐜荤拑澶辫触");
         //2銆佽幏鍙栧崸杞珛鍓╀綑瀹藉害
         BigStorageDTO sitToUpRemainWidth = bigStorageCageFeedTaskService.querySitToUpRemainWidth(line);
@@ -708,7 +729,7 @@
         while (returnData == 0) {
             s7control.writeWord(outLine, 2);
             returnData = s7control.readWord(outLine, 1).get(0);
-            log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, outLine, returnData);
+            log.info("宸插悜plc绗瑊}娆″彂閫佽繘鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, outLine, returnData);
         }
     }
 
@@ -818,13 +839,13 @@
         bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>()
                 .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING)
                 .in(BigStorageCageDetails::getGlassId, glassIds));
-        int returnData = 0;
-        int count = 1;
-        while (returnData == 0) {
-            S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
-            returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0);
-            log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesToPLCAddress, returnData);
-        }
+//        int returnData = 0;
+//        int count = 1;
+//        while (returnData == 0) {
+//            S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1);
+//            returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0);
+//            log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesToPLCAddress, returnData);
+//        }
         return Boolean.TRUE;
     }
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
index 99bc35f..dd5a317 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
 
 spring:
   profiles:
-    active: dev
+    active: cz
   application:
     name: cacheVerticalGlass
 mybatis-plus:
@@ -16,7 +16,7 @@
   minCount: 20
   carWidth: 5000   #澶ц溅瀹藉害
   slotWidth: 5000   #澶ц溅瀹藉害
-  inCarMaxSize: 1     #杩涚墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
+  inCarMaxSize: 1    #杩涚墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
   outCarMaxSize: 2     #鍑虹墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
   glassGap: 350  #鐜荤拑闂磋窛
   xMaxSize: 2800
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageMapper.xml
index e8cc8c2..92e73a1 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageMapper.xml
@@ -11,7 +11,8 @@
         WHERE T.MAX_THICKNESS >= #{thickness}
           AND T.ENABLE_STATE = 1
         GROUP BY T.DEVICE_ID
-        ORDER BY COUNT(DISTINCT T1.ENGINEER_ID), COUNT(DISTINCT T1.TEMPERING_LAYOUT_ID),
+        ORDER BY T.MAX_THICKNESS,
+                 COUNT(DISTINCT T1.ENGINEER_ID), COUNT(DISTINCT T1.TEMPERING_LAYOUT_ID),
                  COUNT(DISTINCT T1.SLOT)
     </select>
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
index d9a451e..ca96d50 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -1,5 +1,7 @@
 package com.mes;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.mes.bigstorage.entity.BigStorageCage;
 import com.mes.bigstorage.service.BigStorageCageDetailsService;
 import com.mes.bigstorage.service.BigStorageCageService;
@@ -7,7 +9,10 @@
 import com.mes.common.config.Const;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
+import com.mes.edgglasstask.entity.EdgGlassTaskInfo;
+import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
 import com.mes.job.PlcStorageCageTask;
+import com.mes.temperingglass.entity.TemperingGlassInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -37,6 +42,8 @@
     BigStorageCageDetailsService bigStorageCageDetailsService;
     @Autowired
     DamageService damageService;
+    @Autowired
+    EdgGlassTaskInfoService edgGlassTaskInfoService;
 
 //    @Autowired
 //    BigStorageCageFeedTaskMapper bigStorageCageFeedTaskMapper;
@@ -167,4 +174,13 @@
         plcStorageCageTask.updateOutGlassStateTask();
     }
 
+    @Test
+    public void chaxun(){
+        List<EdgGlassTaskInfo> edgGlassTaskInfoList = edgGlassTaskInfoService.list(new QueryWrapper<EdgGlassTaskInfo>()
+                .select("Top 1 *")
+                .eq("glass_id", "P24072402|1|13")
+        );
+        log.info("鍦ㄥ昂瀵歌〃涓幏鍙栫幓鐠冧俊鎭瘂}", edgGlassTaskInfoList);
+    }
+
 }
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java
index 5395e56..f8df5ef 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcScreenTask.java
@@ -36,11 +36,10 @@
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
      */
 
-    @Scheduled(fixedDelay = 5000)
+    @Scheduled(fixedDelay = 10000)
     public void screenHome() {
         JSONObject jsonObject = new JSONObject();
         Reportingdamage reportingdamage = new Reportingdamage();
-        //reportingdamage.setReportingWorkTime("2024-05-11");
         // 鑾峰彇褰撳墠鏃ユ湡
         LocalDate today = LocalDate.now();
         // 璁$畻鏈�杩戜竷澶╃殑寮�濮嬫棩鏈�
@@ -52,8 +51,9 @@
         String startOfPeriodStr = startOfPeriod.format(formatter);
         String endOfPeriodStr = endOfPeriod.format(formatter);
         // 璁剧疆涓烘渶杩戜竷澶╃殑鏃堕棿鑼冨洿
-        reportingdamage.setReportingWorkTime("2024-05-11" + " to " + endOfPeriodStr);
-        //reportingdamage.setReportingWorkTime(startOfPeriodStr + " to " + endOfPeriodStr);
+        reportingdamage.setReportingWorkTime("2024-05-11");
+        //reportingdamage.setReportingWorkTime("2024-05-11");
+        reportingdamage.setReportingWorkTime2(endOfPeriodStr);
         //鎵囧舰鍥惧悇璁惧鐨勫姞宸ョ牬鎹熸暟閲�
         List<Reportingdamage> device = reportingWorkService.selectDamage(reportingdamage);
         jsonObject.append("device", device);
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
index 1b5426b..220c807 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java
@@ -86,6 +86,8 @@
         //姝e湪杩涜鐨勪换鍔�
         List<TemperingGlassInfo> temperingTaskType = temperingAgoService.selectTaskType();
         jsonObject.append("temperingTaskType", temperingTaskType);
+
+
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("temperingIsRun");
         if (sendwServer != null) {
             for (WebSocketServer webserver : sendwServer) {
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
index 8646b79..ac92054 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/TemperingTask.java
@@ -5,6 +5,8 @@
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.mes.common.S7object;
 import com.mes.common.config.Const;
+import com.mes.damage.entity.Damage;
+import com.mes.damage.service.DamageService;
 import com.mes.device.PlcParameterObject;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
@@ -33,6 +35,10 @@
 
     @Autowired
     private TemperingGlassInfoService temporaryGlassInfoService;
+
+    @Autowired
+    private DamageService damageService;
+
     private static final String ALONE_STATE = "0";
 
 
@@ -54,6 +60,10 @@
         List<Object> temperRecordIdListObj = temporalRecordService.listObjs(new QueryWrapper<TemperingRecord>().select("distinct tempering_layout_id"));
 
         List<String> temperRecordIdList = temperRecordIdListObj.stream().map(String::valueOf).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(temperRecordIdList)) {
+            log.info("褰撳墠绯荤粺娌℃湁闇�瑕侀挗鍖栫殑鐜荤拑淇℃伅");
+            return;
+        }
         List<TemperingGlassInfo> list = temporaryGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>()
                 .eq(TemperingGlassInfo::getState, Const.TEMPERING_START).notIn(TemperingGlassInfo::getTemperingLayoutId, temperRecordIdList));
         if (CollectionUtils.isEmpty(list)) {
@@ -77,4 +87,30 @@
     public void temperingGlassAfter() {
 
     }
+
+    @Scheduled(fixedDelay = 1000)
+    public void dealDamageTask() {
+        Date startDate = new Date();
+        log.info("閽㈠寲鐮存崯鐜荤拑娓呴櫎浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
+        List<TemperingGlassInfo> temperingGlassInfoList = temporaryGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>().in(TemperingGlassInfo::getState, Const.GLASS_STATE_DAMAGE_TAKE));
+        if (CollectionUtils.isNotEmpty(temperingGlassInfoList)) {
+            //鑾峰彇鐮存崯/鎷胯蛋鐜荤拑id
+            List<String> glassList = temperingGlassInfoList.stream().map(TemperingGlassInfo::getGlassId).collect(Collectors.toList());
+            //灏嗕换鍔¤〃涓殑鏁版嵁鍒犻櫎
+            temporaryGlassInfoService.remove(new LambdaQueryWrapper<TemperingGlassInfo>().in(TemperingGlassInfo::getGlassId, glassList));
+            List<Damage> damageList = temperingGlassInfoList.stream().map(e -> {
+                Damage damage = new Damage();
+                damage.setGlassId(e.getGlassId());
+                damage.setLine(Const.TEMPERING_OUT_TARGET_POSITION);
+                damage.setWorkingProcedure("閽㈠寲");
+                damage.setRemark("閽㈠寲");
+                damage.setStatus(0);
+                damage.setType(e.getState());
+                return damage;
+            }).collect(Collectors.toList());
+            damageService.batchInsertDamage(damageList);
+        }
+        Date endDate = new Date();
+        log.info("鏈浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms", endDate, endDate.getTime() - startDate.getTime());
+    }
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java
new file mode 100644
index 0000000..9f342f0
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/request/DownGlassInfoRequest.java
@@ -0,0 +1,48 @@
+package com.mes.downglassinfo.entity.request;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-03-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class DownGlassInfoRequest implements Serializable {
+
+    /**
+     * 宸ヤ綅id
+     */
+    private Integer workStationId;
+
+    /**
+     * 宸ョ▼id
+     */
+    private String engineerId;
+
+    /**
+     * 寮�濮嬫椂闂�
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date beginDate;
+
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date endDate;
+
+
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
index b39daf2..f6b9c71 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -1,24 +1,39 @@
 package com.mes.downglassinfo.service.impl;
 
+import cn.smallbun.screw.core.util.CollectionUtils;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.common.config.Const;
+import com.mes.common.utils.RedisUtil;
 import com.mes.downglassinfo.entity.DownGlassInfo;
+import com.mes.downglassinfo.entity.request.DownGlassInfoRequest;
 import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
 import com.mes.downglassinfo.service.DownGlassInfoService;
 import com.mes.downstorage.entity.DownStorageCageDetails;
 import com.mes.downstorage.service.DownStorageCageDetailsService;
+import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.dto.DownGlassInfoDTO;
+import com.mes.downworkstation.service.DownWorkstationService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.job.DownLoadCacheGlassTask;
+import com.mes.pp.service.FlowCardService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
+@Slf4j
 @Service
 public class DownGlassInfoServiceImpl extends ServiceImpl<DownGlassInfoMapper, DownGlassInfo> implements DownGlassInfoService {
 
@@ -27,6 +42,16 @@
 
     @Autowired
     DownStorageCageDetailsService downStorageCageDetailsService;
+
+
+    @Autowired
+    DownWorkstationService downWorkstationService;
+
+    @Autowired
+    RedisUtil redisUtil;
+
+    @Autowired
+    FlowCardService flowCardService;
 
     /**
      * 鏍规嵁娴佺▼鍗″彿鏌ヨ鏈�澶у簭鍙�
@@ -60,8 +85,15 @@
     }
 
     @Override
-    public List<DownGlassInfoDTO> queryWorkStationIsIn(Boolean isDownload) {
-        return baseMapper.queryWorkStationIsIn(isDownload);
+    public List<DownGlassInfoDTO> queryWorkStationIsIn(List<Integer> workList, Boolean isDownload) {
+        //鎸夌収瑕佹眰鑾峰彇宸茶惤鏋�/鏈惤鏋剁殑鐜荤拑淇℃伅
+        return baseMapper.queryWorkStationIsIn(workList, isDownload);
+    }
+
+    @Override
+    public List<DownGlassInfoDTO> queryWorkStationFlowCard(List<Integer> workList) {
+        //鑾峰彇宸茬粦瀹氭祦绋嬪崱鐨勬灦瀛愭湭钀界幓鐠冪殑鏁版嵁淇℃伅
+        return baseMapper.queryWorkStationFlowCard(workList);
     }
 
     @Override
@@ -76,10 +108,179 @@
         BeanUtils.copyProperties(details, downGlassInfo);
         //鑾峰彇褰撳墠娴佺▼鍗℃渶澶х墖搴�
         downGlassInfo.setSequence(this.getMaxSequenceByFlowCardId(details.getFlowCardId(), details.getLayer()) + 1);
+        downGlassInfo.setWorkStationId(Const.G13_WORK_STATION);
         this.save(downGlassInfo);
         //鐢熸垚浠诲姟淇℃伅 骞跺悜plc鍙戦�佸嚭鐗囦换鍔�
         GlassInfo glassInfo = new GlassInfo();
         BeanUtils.copyProperties(details, glassInfo);
         return downLoadCacheGlassTask.initDownGlassTask(glassInfo, details.getSlot(), Const.G13_WORK_STATION, 2);
     }
+
+    @Override
+    public String setDownGlassInfoRequest(DownGlassInfoRequest request) {
+        if (request == null) {
+            redisUtil.deleteObject("downGlassRequest");
+        } else {
+            redisUtil.setCacheObject("downGlassRequest", request);
+        }
+        return "success";
+    }
+
+    @Override
+    public List<DownWorkstation> queryWorkStationIsFull() {
+        //鏌ヨ鍙互钀芥灦鐨勭幓鐠冧俊鎭笖宸茬粦瀹氭祦绋嬪崱鐨勫伐浣嶄俊鎭�
+        List<DownWorkstation> list = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getEnableState, Const.SLOT_ON)
+                .isNotNull(DownWorkstation::getFlowCardId).ne(DownWorkstation::getFlowCardId, ""));
+        List<DownWorkstation> workstationFull = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(list)) {
+            //閮芥湁鐜荤拑鐨勫伐浣嶄俊鎭紙鍖呮嫭缁戝畾娴佺▼鍗★級
+            List<Integer> workstationList = list.stream().map(DownWorkstation::getWorkstationId).collect(Collectors.toList());
+            //鎸夌収绗﹀悎鏉′欢鐨勫伐浣嶈幏鍙栨湭钀芥灦鐨勬祦绋嬪崱鐜荤拑锛屽鏋滆繑鍥炰负绌猴紝鍒欒〃鏄庢墍鏈夐兘宸茶惤鏋跺畬鎴�
+            List<DownGlassInfoDTO> downGlassInfoDTOList = queryWorkStationIsIn(workstationList, Boolean.FALSE);
+            //鑾峰彇宸ヤ綅涓婄殑鏈弧鐨勬祦绋嬪崱鍙婂眰鏁�
+            List<String> flowCardIdList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList());
+            //鍙互钀芥灦鐨勭幓鐠冧俊鎭笖宸茬粦瀹氭祦绋嬪崱鐨勬墍鏈夌殑宸ヤ綅 - 鐜荤拑鏈弧娴佺▼鍗″強灞傛暟鐨勫伐浣�  =  宸叉弧宸ヤ綅
+            workstationFull = list.stream().filter(item -> !flowCardIdList.contains(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
+            //鏄惁闇�瑕佸皢宸叉弧鐨勫伐浣嶇疆涓轰笉鍙惤鏋�
+            if (CollectionUtils.isNotEmpty(workstationFull)) {
+                List<Integer> workstationIds = workstationFull.stream().map(DownWorkstation::getWorkstationId).collect(Collectors.toList());
+                downWorkstationService.update(new LambdaUpdateWrapper<DownWorkstation>().set(DownWorkstation::getEnableState, Const.SLOT_OFF)
+                        .in(DownWorkstation::getWorkstationId, workstationIds));
+            }
+        }
+        return workstationFull;
+    }
+
+    @Override
+    public List<Map<String, List<Map<String, Object>>>> downGlassPrint(DownGlassInfo downGlassInfo) {
+        log.info("鎵撳嵃鍙傛暟:{}", downGlassInfo);
+        QueryWrapper<DownGlassInfo> queryWrapper = Wrappers.query();
+        queryWrapper.eq("flow_card_id", downGlassInfo.getFlowCardId())
+                .eq("layer", downGlassInfo.getLayer())
+                .select("flow_card_id", "layer", "width", "height", "filmsid", "thickness", "glass_type", "COUNT(*) AS quantity")
+                .groupBy("flow_card_id", "layer", "width", "height", "filmsid", "thickness", "glass_type", "id")
+                .orderByAsc("id");
+        List<Map<String, Object>> resultList = baseMapper.selectMaps(queryWrapper);
+
+        log.info("MES钀芥灦鏁版嵁:{}", resultList);
+
+        List<Map<String, Object>> projectInfo = flowCardService.selectProject(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer());
+        log.info("娴佺▼鍗″ご閮ㄦ暟鎹�:{}", projectInfo);
+        List<Map<String, Object>> flowCardInfo = flowCardService.selectFlowCard(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer());
+        log.info("娴佺▼鍗$幓鐠冩暟鎹�:{}", flowCardInfo);
+        for (Map<String, Object> row : flowCardInfo) {
+            int order_number = (int) row.get("order_number");
+            int technology_number = (int) row.get("technology_number");
+            int quantity1 = 0;
+            for (Map<String, Object> row1 : resultList) {
+                int glass_type = (int) row1.get("glass_type");
+                int layer = (int) row1.get("layer");
+//                String child_width = (String) row1.get("child_width");
+//                Long quantity = (Long) row1.get("quantity");
+//                BigDecimal total_area = (BigDecimal) row1.get("total_area");
+//                String separation = (String) row1.get("separation");
+//                String perimeter = (String) row1.get("perimeter");
+//                BigDecimal width = (BigDecimal) row1.get("width");
+//                String other_columns = (String) row1.get("other_columns");
+//                String remarks = (String) row1.get("remarks");
+//                BigDecimal height = (BigDecimal) row1.get("height");
+                if (order_number == glass_type && technology_number == layer) {
+                    quantity1+=1;
+//                    row.put("quantity", quantity);
+//                    row.put("order_number", order_number);
+//                    row.put("technology_number", technology_number);
+//                    row.put("child_width", child_width);
+//                    row.put("total_area", total_area);
+//                    row.put("separation", separation);
+//                    row.put("perimeter", perimeter);
+//                    row.put("width", width);
+//                    row.put("other_columns", other_columns);
+//                    row.put("remarks", remarks);
+//                    row.put("height", height);
+                }
+            }
+            row.put("quantity1", quantity1);
+        }
+        log.info("娴佺▼鍗$幓鐠冩暟鎹�2:{}", flowCardInfo);
+        List<Map<String, List<Map<String, Object>>>> listMap = new ArrayList<>();
+        Map<String, List<Map<String, Object>>> result = new HashMap<>();
+        result.put("detail", projectInfo);
+        result.put("detailList", flowCardInfo);
+        for (Map<String, Object> row : projectInfo) {
+            String order_number = (String) row.get("process");
+            String[] processes = order_number.split("->");
+            List<Map<String, Object>> processList = new ArrayList<>();
+            for (int i = 0; i < processes.length; i++) {
+                Map<String, Object> processMap = new JSONObject();
+                processMap.put("process", processes[i]);
+                processMap.put("id", i);
+                processList.add(processMap);
+            }
+            result.put("processList", processList);
+        }
+        listMap.add(result);
+        return listMap;
+    }
+
+
+    @Override
+    public List<Map<String, Object>> downGlassLabelPrint(DownGlassInfo downGlassInfo) {
+        //鑾峰彇涓嬬墖鐜荤拑鐨勯『搴�
+//        QueryWrapper<DownGlassInfo> queryWrapper = Wrappers.query();
+//        queryWrapper
+//                .eq("flow_card_id", downGlassInfo.getFlowCardId())
+//                .eq("layer", downGlassInfo.getLayer())
+//                .select("flow_card_id", "layer", "width", "height", "filmsid", "thickness", "glass_type", "COUNT(*) AS quantity")
+//                .groupBy("flow_card_id", "layer", "width", "height", "filmsid", "thickness", "glass_type", "id")
+//                .orderByAsc("id");
+//        List<Map<String, Object>> resultList = baseMapper.selectMaps(queryWrapper);
+        List<Map<String, Object>> resultList = baseMapper.downGlassLabelPrint(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer());
+        log.info("MES钀芥灦鏁版嵁:{}", resultList);
+        //鑾峰彇ERP鏍囩鎵�闇�鐨勪俊鎭�
+        List<Map<String, Object>> labelInfo = flowCardService.selectLabel(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer());
+        log.info("鏍囩鏁版嵁:{}", labelInfo);
+
+        for (Map<String, Object> row : resultList) {
+            int glass_type = (int) row.get("glass_type");
+            int layer = (int) row.get("layer");
+            for (Map<String, Object> row1 : labelInfo) {
+                int orderNumber = (int) row1.get("orderNumber");
+                int technologyNumber = (int) row1.get("technologyNumber");
+                if (orderNumber == glass_type && technologyNumber == layer) {
+
+                    String order_id = (String) row1.get("order_id");
+                    String project = (String) row1.get("project");
+                    Long customer_id = (Long) row1.get("customer_id");
+                    BigDecimal width = (BigDecimal) row1.get("width");
+                    BigDecimal height = (BigDecimal) row1.get("height");
+                    Long quantity = (Long) row1.get("quantity");
+                    String glass_child = (String) row1.get("glass_child");
+                    String process = (String) row1.get("process");
+                    String customer_name = (String) row1.get("customer_name");
+                    String processing_note = (String) row1.get("processing_note");
+                    String other_colunmns = (String) row1.get("other_colunmns");
+                    String building_number = (String) row1.get("building_number");
+                    String bend_radius = (String) row1.get("bend_radius");
+
+                    row.put("orderNumber", orderNumber);
+                    row.put("technology_number", technologyNumber);
+                    row.put("order_id", order_id);
+                    row.put("project", project);
+                    row.put("customer_id", customer_id);
+                    row.put("width", width);
+                    row.put("height", height);
+                    row.put("quantity", quantity);
+                    row.put("glass_child", glass_child);
+                    row.put("process", process);
+                    row.put("customer_name", customer_name);
+                    row.put("processing_note", processing_note);
+                    row.put("other_colunmns", other_colunmns);
+                    row.put("building_number", building_number);
+                    row.put("bend_radius", bend_radius);
+                }
+            }
+        }
+        return resultList;
+    }
+
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/request/CacheWornRequest.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/request/CacheWornRequest.java
new file mode 100644
index 0000000..05a9aed
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/request/CacheWornRequest.java
@@ -0,0 +1,28 @@
+package com.mes.downstorage.entity.request;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/8/10 13:34
+ * @Description:
+ */
+@Data
+public class CacheWornRequest {
+
+    @NotBlank(message = "鐜荤拑ID涓嶈兘涓虹┖")
+    private String glassId;
+
+    @NotNull(message = "鐘舵�佷笉鑳戒负绌�")
+    private int state;
+
+    @NotNull(message = "绾胯矾涓嶈兘涓虹┖")
+    private int line;
+
+    @NotBlank(message = "宸ュ簭涓嶈兘涓虹┖")
+    private String workingProcedure;
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
index 18e1259..b204f0c 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -1,14 +1,18 @@
 package com.mes.downstorage.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 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.downglassinfo.entity.DownGlassTask;
 import com.mes.downglassinfo.service.DownGlassTaskService;
 import com.mes.downstorage.entity.DownStorageCage;
 import com.mes.downstorage.entity.DownStorageCageDetails;
+import com.mes.downstorage.entity.request.CacheWornRequest;
 import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
 import com.mes.downstorage.mapper.DownStorageCageMapper;
 import com.mes.downstorage.service.DownStorageCageDetailsService;
@@ -46,6 +50,8 @@
     private DownStorageCageDetailsService downStorageCageDetailsService;
     @Autowired
     private DownStorageCageDetailsMapper downStorageCageDetailsMapper;
+    @Autowired
+    DamageService damageService;
 
     @Override
     public DownGlassTask createDownGlassTask(GlassInfo glassInfo, Integer startCell, Integer endCell, Integer taskType) {
@@ -128,7 +134,6 @@
     }
 
 
-
     @Override
     public List<Map<String, Object>> selectDownStorageCages() {
         return baseMapper.selectJoinMaps(JoinWrappers.lambda(DownStorageCage.class)
@@ -190,7 +195,10 @@
 
         if (downItem != null) {
             //绉婚櫎
-            DownStorageCageDetails result = downStorageCageDetailsMapper.selectOne(new MPJLambdaWrapper<DownStorageCageDetails>().eq(DownStorageCageDetails::getSlot, downStorageCageId));
+            DownStorageCageDetails result = downStorageCageDetailsMapper
+                    .selectOne(new MPJLambdaWrapper<DownStorageCageDetails>()
+                            .eq(DownStorageCageDetails::getSlot, downStorageCageId)
+                    );
             if (result != null) {
                 result.setSlot(0);
                 downStorageCageDetailsMapper.updateById(result);
@@ -200,4 +208,19 @@
         return true;
     }
 
+    @Override
+    public void deleteDownStorageCage(CacheWornRequest cacheWornRequest) {
+        Damage damage = new Damage();
+        BeanUtils.copyProperties(cacheWornRequest, damage);
+        damage.setType(cacheWornRequest.getState());
+        damage.setRemark("");
+        damage.setStatus(0);
+        damageService.insertDamage(damage);
+        downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>()
+                .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT)
+                .eq(DownStorageCageDetails::getGlassId, cacheWornRequest.getGlassId())
+                .eq(DownStorageCageDetails::getState,Const.GLASS_STATE_IN));
+
+    }
+
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
index 3c547af..996f091 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/controller/DownWorkstationController.java
@@ -137,6 +137,26 @@
         return Result.build(200, "淇敼鎴愬姛", redisUtil.getCacheObject("autoPrint"));
     }
 
+    @ApiOperation("鏂板铏氭嫙宸ヤ綅")
+    @PostMapping("/insertDownWorkstation")
+    public Result insertDownWorkstation() {
+        DownWorkstation downWorkstation = new DownWorkstation();
+        downWorkstation.setTotalQuantity(0);
+        downWorkstation.setRacksNumber(0);
+        downWorkstation.setOtherNumber(0);
+        downWorkstation.setDeviceId(3);
+        downWorkstation.setEnableState(1);
+        downWorkstation.setWorkState(1);
+        downWorkstationService.save(downWorkstation);
+        return Result.build(200, "鏂板鎴愬姛", 1);
+    }
+
+    @ApiOperation("鍒犻櫎铏氭嫙宸ヤ綅")
+    @PostMapping("/deleteDownWorkstation")
+    public Result deleteDownWorkstation(DownWorkstation downWorkstation) {
+        downWorkstationService.removeById(downWorkstation.getWorkstationId());
+        return Result.build(200, "鍒犻櫎鎴愬姛", 1);
+    }
 
 }
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
index cbcb1ff..6b8f507 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/service/impl/DownWorkstationServiceImpl.java
@@ -4,12 +4,13 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.query.MPJQueryWrapper;
+import com.mes.common.S7object;
+import com.mes.common.utils.RedisUtil;
 import com.mes.damage.entity.Damage;
 import com.mes.damage.service.DamageService;
+import com.mes.device.PlcParameterObject;
 import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
-import com.mes.downglassinfo.service.DownGlassInfoService;
-import com.mes.downglassinfo.service.DownGlassTaskService;
 import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.entity.DownWorkstationTask;
 import com.mes.downworkstation.entity.DownWorkstionAndDownGlassinfo;
@@ -23,6 +24,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -37,11 +39,7 @@
     @Autowired(required = false)
     private DownWorkstationTaskMapper downWorkstationTaskMapper;
     @Autowired
-    private DownGlassInfoService downGlassInfoService;
-    @Autowired
     private DownGlassInfoMapper downGlassInfoMapper;
-    @Autowired
-    private DownGlassTaskService downGlassTaskService;
     @Autowired
     private GlassInfoService glassInfoService;
     @Autowired
@@ -49,6 +47,8 @@
 
     @Autowired
     private DownWorkstationTaskService downWorkstationTaskService;
+    @Resource
+    private RedisUtil redisUtil;
 
     //    @Override
 //    public List<DownWorkstation> gettwoDownWorkstations() {
@@ -69,7 +69,7 @@
     @Override
     public List<Map<String, Object>> getTotalGlassDimensionsByWorkstation(int start, int end) {
         MPJQueryWrapper<DownWorkstation> queryWrapper = new MPJQueryWrapper<>();
-        queryWrapper.select("t.workstation_id", "t.flow_card_id", "COALESCE(SUM(b.width), 0) AS totalwidth", "COALESCE(SUM(b.height), 0) AS totalheight")
+        queryWrapper.select("t.workstation_id", "t.flow_card_id", "COALESCE(SUM(b.width), 0) AS totalwidth", "COALESCE(SUM(b.height), 0) AS totalheight,total_quantity,racks_number,other_number")
                 .leftJoin("down_glass_info b on t.flow_card_id = b.flow_card_id")
                 .groupBy("t.workstation_id", "t.flow_card_id")
                 .orderByAsc("t.workstation_id").between("t.workstation_id", start, end)
@@ -86,6 +86,11 @@
             item.put("width", downWorkstionAndDownGlassinfo.getTotalwidth());
             item.put("fillColor", "yellow");
             item.put("content", downWorkstionAndDownGlassinfo.getFlowCardId());
+            if (downWorkstionAndDownGlassinfo.getFlowCardId() != "" && downWorkstionAndDownGlassinfo.getFlowCardId() != null && downWorkstionAndDownGlassinfo.getTotalQuantity() == downWorkstionAndDownGlassinfo.getRacksNumber() + downWorkstionAndDownGlassinfo.getRacksNumber()) {
+                item.put("fullCardColor", "red");
+            } else {
+                item.put("fullCardColor", "blue");
+            }
 
             // 鏌ヨ DownGlassInfo 骞舵坊鍔犲埌 item 涓�
             MPJQueryWrapper<DownGlassInfo> glassInfoQueryWrapper = new MPJQueryWrapper<>();
@@ -165,6 +170,8 @@
         updateWrapper.set("flow_card_id", null)
                 .set("total_quantity", 0)
                 .set("racks_number", 0)
+                .set("other_number", 0)
+                .set("layer", null)
                 .eq("workstation_id", workstationId);
 
         baseMapper.update(new DownWorkstation(), updateWrapper);
@@ -209,5 +216,16 @@
         }
     }
 
+    @Override
+    public String closeAlarmSignal() {
+        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
+        S7object.getinstance().plccontrol.writeWord(plcParameterObject.getPlcParameter("alarm_signal").getAddress(), 0);
+        return "success";
+    }
+
+    @Override
+    public void autoPrint(Boolean flag) {
+        redisUtil.setCacheObject("autoPrint", flag);
+    }
 
 }
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 ab141ce..c324ce2 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
@@ -3,10 +3,13 @@
 import cn.hutool.core.lang.Assert;
 import cn.smallbun.screw.core.util.CollectionUtils;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.mes.common.S7object;
 import com.mes.common.config.Const;
+import com.mes.damage.entity.Damage;
+import com.mes.damage.service.DamageService;
 import com.mes.device.PlcParameterObject;
 import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downglassinfo.entity.DownGlassTask;
@@ -54,9 +57,8 @@
     DownWorkstationService downWorkstationService;
     @Autowired
     DownGlassInfoService downGlassInfoService;
-
-    @Value("${mes.threshold}")
-    private Integer threshold;
+    @Autowired
+    DamageService damageService;
 
     @Value("${mes.throughWidth}")
     private Integer throughWidth;
@@ -126,6 +128,68 @@
         }
     }
 
+    @Scheduled(fixedDelay = 300)
+    public void plcShelfFull() {
+        List<DownWorkstation> list = downGlassInfoService.queryWorkStationIsFull();
+        if (CollectionUtils.isNotEmpty(list)) {
+            S7control s7control = S7object.getinstance().plccontrol;
+            PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject;
+            s7control.writeWord(plcMesObject.getPlcParameter("alarm_signal").getAddress(), 1);
+        }
+    }
+
+    @Scheduled(fixedDelay = 1000)
+    public void dealDamageTask() {
+        Date startDate = new Date();
+        log.info("涓嬬墖鐮存崯鐜荤拑娓呴櫎浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
+        List<DownGlassTask> downGlassTaskList = downGlassTaskService.list(new LambdaQueryWrapper<DownGlassTask>()
+                .in(DownGlassTask::getTaskType, Const.GLASS_CACHE_TYPE_OUT_ALL).in(DownGlassTask::getTaskStatus, Const.GLASS_STATE_DAMAGE_TAKE));
+        if (CollectionUtils.isNotEmpty(downGlassTaskList)) {
+            //鑾峰彇鐮存崯/鎷胯蛋鐜荤拑id
+            List<String> glassList = downGlassTaskList.stream().map(DownGlassTask::getGlassId).collect(Collectors.toList());
+            //灏嗕换鍔¤〃涓殑鏁版嵁鍒犻櫎
+            downGlassTaskService.remove(new LambdaQueryWrapper<DownGlassTask>().in(DownGlassTask::getTaskType, Const.GLASS_CACHE_TYPE_OUT_ALL).in(DownGlassTask::getGlassId, glassList));
+            List<Damage> damageList = downGlassTaskList.stream().map(e -> {
+                Damage damage = new Damage();
+                damage.setGlassId(e.getGlassId());
+                damage.setLine(Const.TEMPERING_OUT_TARGET_POSITION);
+                damage.setWorkingProcedure("涓嬬墖");
+                damage.setRemark("涓嬬墖");
+                damage.setStatus(0);
+                damage.setType(e.getTaskStatus());
+                return damage;
+            }).collect(Collectors.toList());
+            damageService.batchInsertDamage(damageList);
+        }
+        Date endDate = new Date();
+        log.info("鏈浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms", endDate, endDate.getTime() - startDate.getTime());
+    }
+
+    /**
+     * 鏇存柊宸茬粦瀹氬伐浣嶆祦绋嬪崱鐨勭牬鎹�/鎷胯蛋鐨勬暟閲忎俊鎭�
+     */
+    @Scheduled(fixedDelay = 1000)
+    public void updateWorkStationOtherCount() {
+        Date startDate = new Date();
+        log.info("涓嬬墖鐮存洿鏂版崯鐜荤拑鏁伴噺浠诲姟寮�濮嬫墽琛屾椂闂达細{}", startDate);
+        //鑾峰彇宸茬粦瀹氭祦绋嬪崱鐨勫伐浣嶄俊鎭�
+        List<DownWorkstation> downWorkstationList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
+                .isNotNull(DownWorkstation::getFlowCardId)
+                .ne(DownWorkstation::getFlowCardId, "")
+                .orderByDesc(DownWorkstation::getWorkstationId));
+        for (DownWorkstation downWorkstation : downWorkstationList) {
+            //鏇存柊宸ヤ綅鍏朵粬鐜荤拑淇℃伅鐨勬暟閲�
+            QueryWrapper<Damage> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("process_id", downWorkstation.getFlowCardId());
+            queryWrapper.eq("technology_number", downWorkstation.getLayer());
+            int otherNumber = damageService.count(queryWrapper);
+            downWorkstationService.update(new LambdaUpdateWrapper<DownWorkstation>().set(DownWorkstation::getOtherNumber, otherNumber)
+                    .eq(DownWorkstation::getWorkstationId, downWorkstation.getWorkstationId()));
+        }
+        Date endDate = new Date();
+        log.info("涓嬬墖鐮存洿鏂版崯鐜荤拑鏁伴噺浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms", endDate, endDate.getTime() - startDate.getTime());
+    }
+
     public void inTo(String glassId, String requestWord, String currentSlot) {
         log.info("1銆佹寜鐓х幓鐠僫d:{}鑾峰彇鐜荤拑灏忕墖淇℃伅,褰撳墠鏍煎瓙涓�:{}", glassId, currentSlot);
         //娣诲姞杩涚墖浠诲姟  鏌ユ壘绌烘牸
@@ -170,7 +234,7 @@
             }
             if (!checkFlag) {
                 log.info("鏃犵┖鏋跺瓙,鑾峰彇宸茬粦瀹氭灦瀛愮殑娴佺▼鍗′俊鎭�,鏌ョ湅鐜荤拑淇℃伅鏄惁鍙瀵硅皟");
-                List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Boolean.FALSE);
+                List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Const.WORK_STATION_ALL, Boolean.FALSE);
                 log.info("鑾峰彇鏋跺瓙涓婂凡缁戝畾娴佺▼鍗¤惤鏋剁殑鏁伴噺鍙婃湭钀芥灦鐨勭幓鐠冩暟鎹細{}", downGlassInfoDTOList);
                 if (CollectionUtils.isEmpty(downGlassInfoDTOList)) {
                     log.info("宸茬粦瀹氭祦绋嬪崱鍧囨棤鏈惤鏋剁幓鐠冿紝璇峰強鏃跺鐞嗘灦瀛愪笂鐨勭幓鐠冿紝娓呴櫎娴佺▼鍗�,鎵ц杩涚墖浠诲姟");
@@ -215,6 +279,7 @@
         BeanUtils.copyProperties(glassInfo, downStorageCageDetails);
         downStorageCageDetails.setState(Const.GLASS_STATE_IN);
         downStorageCageDetails.setSlot(nearestEmpty.getSlot());
+        downStorageCageDetails.setDeviceId(nearestEmpty.getDeviceId());
         downStorageCageDetailsService.save(downStorageCageDetails);
         //        鐢熸垚杩涚墖浠诲姟
         initDownGlassTask(glassInfo, 0, nearestEmpty.getSlot(), Const.GLASS_CACHE_TYPE_IN);
@@ -237,6 +302,7 @@
             //鑾峰彇褰撳墠绗煎瓙绌烘牸淇℃伅
             DownStorageCage empty = downStorageCageService.selectCacheEmpty(Integer.parseInt(currentSlot), Boolean.TRUE);
             cageDetails.setSlot(empty.getSlot());
+            cageDetails.setDeviceId(empty.getDeviceId());
             tempList.add(cageDetails);
         }
         log.info("鍑虹墖2锛氱鍐呯幓鐠冪殑鏁版嵁(鍖呮嫭寰呰繘鐗�)鏈夛細{}", tempList);
@@ -309,6 +375,7 @@
             }
         }
         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();
         //鏄惁鏈夌┖鏋跺瓙 true锛氭湁   false:鏃�
@@ -339,8 +406,15 @@
                             .filter(item -> StringUtils.isNotBlank(item.getFlowCardId())).collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer()));
                     //杩囨护绛涢�夎幏鍙栨灦瀛愪笂瀵瑰簲娴佺▼鍗�+灞傛暟鐨勭瀛愬唴鐨勭幓鐠冧俊鎭�
                     list = tempList.stream().filter(item -> listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
+                    if (CollectionUtils.isEmpty(list) && flag08 && !"2".equals(glassStatus13)) {
+                        list = tempList.stream().filter(item -> {
+                            double firstLength = Math.max(item.getWidth(), item.getHeight());
+                            double secondLength = Math.min(item.getWidth(), item.getHeight());
+                            return firstLength > maxWidth || secondLength > maxHeight;
+                        }).collect(Collectors.toList());
+                    }
                 } else {
-                    log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�,涓旀湭缁戝畾鏋跺瓙鐨勭幓鐠冧俊鎭�");
+                    log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�,涓旀湭缁戝畾鏋跺瓙鐨勭幓鐠冧俊鎭紙閮藉彲浠ュ嚭鐨勭幓鐠冿級");
                     //鑾峰彇绂佺敤鍙婇潪鏈満姊拌噦鐨勬灦瀛愮殑娴佺▼鍙峰強灞傛暟瀵瑰簲鐨勭幓鐠冧俊鎭�
                     List<DownWorkstation> downWorkstationOffList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
                             .and(i -> i.in(DownWorkstation::getWorkstationId, offWorkStationList).or().eq(DownWorkstation::getEnableState, Const.SLOT_OFF)));
@@ -370,6 +444,8 @@
             log.info("绗煎唴鐜荤拑鏃犳硶鎵ц鍑虹墖");
             return Boolean.FALSE;
         }
+        //鑾峰彇鍏蜂綋鍑洪偅涓�鐗囩幓鐠�
+        //tao:浜哄伐--> 鎵�鏈夋灦瀛愰兘鏈粦瀹氭椂杩涜缁戝畾 --->鏈夋湭缁戝畾鏋跺瓙鏃惰繘琛岀粦瀹� --->缁戝畾杩囨祦绋嬪崱鐨勭幓鐠�-->鐜荤拑娴佺▼鍗″灞�--->鐜荤拑娴佺▼鍗″崟灞�
         String tempGlassId = null;
         Boolean isNeedBind = Boolean.FALSE;
 
@@ -387,16 +463,17 @@
         loop:
         if (StringUtils.isBlank(tempGlassId)) {
             //鑾峰彇姝e湪钀芥灦鐨勭粦瀹氭祦绋嬪崱鐨勪俊鎭�(娴佺▼鍗°�佸眰鏁般�佽惤鏋舵暟閲�)
-            List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Boolean.TRUE);
+            //钀芥灦鐜荤拑鏁颁负0锛屽嵆浣跨粦瀹氫簡娴佺▼鍗★紝涔熸棤娉曟壘鍒板搴旂殑鏋跺瓙淇℃伅锛屽彧鑳介噸鏂扮粦瀹�
+            List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationFlowCard(workList);
             List<String> downGlassFlowList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList());
             if (CollectionUtils.isEmpty(downGlassFlowList)) {
                 //鏋跺瓙閮芥湭缁戝畾娴佺▼鍗★紝鍑虹鍐呭瓙鏁伴噺鏈�澶氬昂瀵告渶澶х殑鐜荤拑id,鏃�  鍒欒繑鍥炴壂鎻忔壂鍒扮殑鐜荤拑id杩涜鍑虹墖
                 tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId, offWorkStationList);
-
                 isNeedBind = Boolean.TRUE;
                 break loop;
             }
             //灏嗙瀛愬唴鐨勭幓鐠冭繘琛岃繃婊わ紝浠呰幏鍙栨棤娉曡惤鏋剁殑娴佺▼鍗$幓鐠�
+            //tao:褰撴湁绌烘灦鏃朵紭鍏堝绗煎唴鍙嚭鐗囦笖鏈粦鏋跺瓙鐨勭幓鐠冭繘鍑虹粦鏋跺苟鍑虹墖
             List<DownStorageCageDetails> noDownLoadList = list.stream().filter(item -> !downGlassFlowList.contains(item.getFlowCardId() + ":" + item.getLayer()))
                     .collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(noDownLoadList)) {
@@ -417,7 +494,7 @@
                 return Boolean.FALSE;
             }
             //灏嗙鍐呯幓鐠冪殑娴佺▼鍗�+灞傚彿 鍜岃惤鏋剁殑娴佺▼鍗� 鍘婚噸锛屽緱鍑哄睍绀烘棤娉曡惤鏋剁殑鐜荤拑锛屽垽鏂幓鐠冩暟鏄惁瓒呰繃闃堝��
-            //绗煎唴鐜荤拑鏄惁鍙惤鏋�:绗煎唴鏄惁鏈夐渶瑕佷腑绌虹殑
+            //绗煎唴鐜荤拑鏄惁鍙惤鏋�:绗煎唴鏄惁鏈夐渶瑕佷腑绌�
             List<DownStorageCageDetails> multiLayerList = list.stream().filter(item -> item.getTotalLayer() >= 2).collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(multiLayerList)) {
                 for (DownStorageCageDetails item : multiLayerList) {
@@ -434,7 +511,7 @@
                         break loop;
                     }
                     Integer sequence = downGlassInfoService.queryMaxSequence(item.getFlowCardId(), item.getLayer());
-                    log.info("鑾峰彇褰撳墠鐜荤拑闇�瑕佹斁鐨勬搴忥細绗煎唴鍚屾祦绋� 鍚屽眰鏁扮殑閫氳揪娆″簭+1:{}", sequence);
+                    log.info("鑾峰彇褰撳墠鐜荤拑闇�瑕佹斁鐨勬搴忥細绗煎唴鍚屾祦绋� 鍚屽眰鏁扮殑钀芥灦娆″簭+1:{}", sequence);
                     DownGlassInfo downGlassInfo = downGlassInfoService.getOne(new LambdaQueryWrapper<DownGlassInfo>()
                             .eq(DownGlassInfo::getFlowCardId, downGlassInfoDTO.getFlowCardId())
                             .eq(DownGlassInfo::getLayer, downGlassInfoDTO.getLayer()).eq(DownGlassInfo::getSequence, sequence));
@@ -456,6 +533,7 @@
                         if (CollectionUtils.isNotEmpty(downStorageCageDetails)) {
                             tempGlassId = downStorageCageDetails.get(0).getGlassId();
                             break;
+
                         }
                     }
                 }
@@ -527,6 +605,7 @@
         //钀芥灦鐗囧簭
         downGlassInfo.setSequence(downGlassInfoService.queryMaxSequence(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer()));
         downGlassInfo.setWorkStationId(endCell);
+        downGlassInfo.setGmtCreate(new Date());
         downGlassInfoService.save(downGlassInfo);
         //鐢熸垚浠诲姟淇℃伅
         GlassInfo glassInfo = new GlassInfo();
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
index 7a84902..8503db8 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
@@ -2,13 +2,21 @@
 
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.mes.common.config.Const;
+import com.mes.common.utils.RedisUtil;
 import com.mes.downglassinfo.entity.DownGlassInfo;
+import com.mes.downglassinfo.entity.DownGlassTask;
+import com.mes.downglassinfo.entity.request.DownGlassInfoRequest;
 import com.mes.downglassinfo.service.DownGlassInfoService;
+import com.mes.downglassinfo.service.DownGlassTaskService;
 import com.mes.downstorage.service.DownStorageCageService;
 import com.mes.downworkstation.entity.DownWorkstation;
 import com.mes.downworkstation.service.DownWorkstationService;
+import com.mes.tools.DateUtil;
 import com.mes.tools.WebSocketServer;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
@@ -28,19 +36,25 @@
     private DownStorageCageService downStorageCageService;
     @Autowired
     private DownGlassInfoService downGlassInfoService;
+    @Autowired
+    private DownGlassTaskService downGlassTaskService;
+
+
+    @Autowired
+    private RedisUtil redisUtil;
 
     @Scheduled(fixedDelay = 2000)
     public void sendDownWorkstations() {
         log.info("鍙戦�佸伐浣嶇幓鐠冧俊鎭�");
         JSONObject jsonObject = new JSONObject();
 
-        List<DownWorkstation> data = downWorkstationService.getoneDownWorkstations(1, 6);
+        List<DownWorkstation> data = downWorkstationService.list();
         jsonObject.append("params", data);
         log.info(jsonObject.toString());
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unloadglass");
         if (sendwServer != null) {
             for (WebSocketServer webserver : sendwServer) {
-                if (webserver != null&&webserver.session.isOpen()) {
+                if (webserver != null && webserver.session.isOpen()) {
                     log.info("宸插彂閫�");
                     webserver.sendMessage(jsonObject.toString());
                 }
@@ -52,13 +66,13 @@
     public void sendGlassInfoData() {
         log.info("鍙戦�佸伐浣嶆樉绀哄浘淇℃伅1");
         JSONObject jsonObject2 = new JSONObject();
-        List<Map<String, Object>> glassinfodata = downWorkstationService.getTotalGlassDimensionsByWorkstation(1,3);
-        jsonObject2.append("glassinfo",glassinfodata);
+        List<Map<String, Object>> glassinfodata = downWorkstationService.getTotalGlassDimensionsByWorkstation(1, 3);
+        jsonObject2.append("glassinfo", glassinfodata);
         log.info(jsonObject2.toString());
         ArrayList<WebSocketServer> sendwServer2 = WebSocketServer.sessionMap.get("unloadglass2");
         if (sendwServer2 != null) {
             for (WebSocketServer webserver : sendwServer2) {
-                if (webserver != null&&webserver.session.isOpen()) {
+                if (webserver != null && webserver.session.isOpen()) {
                     webserver.sendMessage(jsonObject2.toString());
                 }
             }
@@ -69,46 +83,27 @@
     public void sendGlassInfoData2() {
         log.info("鍙戦�佸伐浣嶆樉绀哄浘淇℃伅2");
         JSONObject jsonObject3 = new JSONObject();
-        List<Map<String, Object>> glassinfodata2 = downWorkstationService.getTotalGlassDimensionsByWorkstation(4,6);
-        jsonObject3.append("glassinfo2",glassinfodata2);
+        List<Map<String, Object>> glassinfodata2 = downWorkstationService.getTotalGlassDimensionsByWorkstation(4, 6);
+        jsonObject3.append("glassinfo2", glassinfodata2);
         log.info(jsonObject3.toString());
         ArrayList<WebSocketServer> sendwServer3 = WebSocketServer.sessionMap.get("unloadglass3");
         if (sendwServer3 != null) {
             for (WebSocketServer webserver : sendwServer3) {
-                if (webserver != null&&webserver.session.isOpen()) {
+                if (webserver != null && webserver.session.isOpen()) {
                     webserver.sendMessage(jsonObject3.toString());
                 }
             }
         }
     }
 
-   @Scheduled(fixedDelay = 2000)
+    @Scheduled(fixedDelay = 2000)
     public void sendDownStorageCages() {
         log.info("鍙戦�佺紦瀛樼幓鐠冧俊鎭�");
         JSONObject jsonObject4 = new JSONObject();
-        List<Map<String, Object>> list=downStorageCageService.selectDownStorageCages();
-        jsonObject4.append("params2",list);
-       log.info(jsonObject4.toString());
-       ArrayList<WebSocketServer> sendwServer4 = WebSocketServer.sessionMap.get("downcache");
-       if (sendwServer4 != null) {
-           for (WebSocketServer webserver : sendwServer4) {
-               if (webserver != null && webserver.session.isOpen()) {
-                   webserver.sendMessage(jsonObject4.toString());
-               }
-           }
-       }
-   }
-
-    @Scheduled(fixedDelay = 2000)
-    public void sendDownGlassInfo() {
-        log.info("鍙戦�佸綋鍓嶆鍦ㄦ墽琛屽伐绋嬪凡钀芥灦鐨勭幓鐠冧俊鎭�");
-        List<DownGlassInfo> downGlassInfos = downGlassInfoService.list(new LambdaQueryWrapper<DownGlassInfo>()
-                .inSql(DownGlassInfo::getEngineerId, "select engineer_id from engineering where state = 1"));
-        Map<Integer, List<DownGlassInfo>> listMap = downGlassInfos.stream().collect(Collectors.groupingBy(DownGlassInfo::getWorkStationId));
-        JSONObject jsonObject4 = new JSONObject();
         List<Map<String, Object>> list = downStorageCageService.selectDownStorageCages();
-        jsonObject4.append("params", listMap);
-        ArrayList<WebSocketServer> sendwServer4 = WebSocketServer.sessionMap.get("sendDownGlass");
+        jsonObject4.append("params2", list);
+        log.info(jsonObject4.toString());
+        ArrayList<WebSocketServer> sendwServer4 = WebSocketServer.sessionMap.get("downcache");
         if (sendwServer4 != null) {
             for (WebSocketServer webserver : sendwServer4) {
                 if (webserver != null && webserver.session.isOpen()) {
@@ -117,4 +112,80 @@
             }
         }
     }
+
+    @Scheduled(fixedDelay = 2000)
+    public void sendDownGlassInfo() {
+        DownGlassInfoRequest request = redisUtil.getCacheObject("downGlassRequest");
+        if (null == request) {
+            request = new DownGlassInfoRequest();
+        }
+        if (request.getBeginDate() == null) {
+            request.setBeginDate(DateUtil.getBeginDate());
+            request.setEndDate(DateUtil.getEndDate());
+        }
+        log.info("鍙戦�佸綋鍓嶆鍦ㄦ墽琛屽伐绋嬪凡钀芥灦鐨勭幓鐠冧俊鎭�");
+        LambdaQueryWrapper<DownGlassInfo> wrapper = new LambdaQueryWrapper<DownGlassInfo>()
+                .between(null != request.getBeginDate(), DownGlassInfo::getGmtCreate, request.getBeginDate(), request.getEndDate())
+                .eq(StringUtils.isNotBlank(request.getEngineerId()), DownGlassInfo::getEngineerId, request.getEngineerId());
+        if (null == request.getWorkStationId() || 0 == request.getWorkStationId()) {
+            wrapper.in(DownGlassInfo::getWorkStationId, Const.WORK_STATION_ALL);
+        } else {
+            wrapper.eq(DownGlassInfo::getWorkStationId, request.getWorkStationId());
+        }
+        List<DownGlassInfo> downGlassInfos = downGlassInfoService.list(wrapper);
+//        Map<Integer, List<DownGlassInfo>> listMap = downGlassInfos.stream().collect(Collectors.groupingBy(DownGlassInfo::getWorkStationId));
+        List<Object> engineerIdListTemp = downGlassInfoService.listObjs(new QueryWrapper<DownGlassInfo>().select("distinct engineer_id"));
+        List<String> engineerIdList = engineerIdListTemp.stream().map(String::valueOf).collect(Collectors.toList());
+        JSONObject jsonObject4 = new JSONObject();
+        jsonObject4.append("downGlassInfos", downGlassInfos);
+        jsonObject4.append("engineerIdList", engineerIdList);
+
+        //閽㈠寲寮�鍏�
+        boolean autoPrint = false;
+        if (redisUtil.getCacheObject("autoPrint") == null) {
+            redisUtil.setCacheObject("autoPrint", false);
+        } else {
+            autoPrint = redisUtil.getCacheObject("autoPrint");
+        }
+        jsonObject4.append("autoPrint", autoPrint);
+        //浜哄伐涓嬬墖浣嶇疆鏈�鍚庝竴鐗�
+        DownGlassTask takeGlass = downGlassTaskService.getOne(
+                new QueryWrapper<DownGlassTask>()
+                        .select("Top 1 *")
+                        .eq("end_cell", Const.G13_WORK_STATION)
+                        .orderByDesc("id")
+
+        );
+        jsonObject4.append("takeGlass", takeGlass);
+
+
+        ArrayList<WebSocketServer> sendwServer4 = WebSocketServer.sessionMap.get("unloadglass");
+        if (sendwServer4 != null) {
+            for (WebSocketServer webserver : sendwServer4) {
+                if (webserver != null && webserver.session.isOpen()) {
+                    webserver.sendMessage(jsonObject4.toString());
+                }
+            }
+        }
+    }
+
+    @Scheduled(fixedDelay = 1000)
+    public void isRun() {
+        JSONObject jsonObject = new JSONObject();
+        //姝e湪杩涜鐨勪换鍔�
+        List<DownWorkstation> downWorkstation = downWorkstationService.getoneDownWorkstations(1, 6);
+        jsonObject.append("downWorkstation", downWorkstation);
+        List<DownGlassTask> downGlassTask = downGlassTaskService.selectOutTaskCache();
+        jsonObject.append("downGlassTask", downGlassTask);
+        ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unLoadGlassIsRun");
+        if (sendwServer != null) {
+            for (WebSocketServer webserver : sendwServer) {
+                if (webserver != null) {
+                    webserver.sendMessage(jsonObject.toString());
+                } else {
+                    log.info("unLoadGlassIsRun is closed");
+                }
+            }
+        }
+    }
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
deleted file mode 100644
index e69de29..0000000
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
+++ /dev/null

--
Gitblit v1.8.0