From 3df859f5bf52a1e80c7dc2ac2a2e5386142ab2c3 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期四, 10 七月 2025 08:17:45 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/YiWuProject

---
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/config/S7Config.java                                         |   49 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/s7/entity/S7DataZKDLPTwo.java                               |  116 ++
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/config/S7Config.java                                          |   30 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java                             |  112 +
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-yw.yml                                      |    2 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowAllFlowCardVO.java                   |    4 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml                                             |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataWLExtra.java                                 |   18 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java                                   |   12 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/config/S7Config.java                                        |   37 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java |   37 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java                                 |  182 ++
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml                                                 |    2 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java                                     |   94 +
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/s7/entity/S7DataGHTwo.java                               |   28 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-yw.yml                                          |    2 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/s7/entity/S7DataSP.java                                       |   44 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/logback-spring.xml                                             |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataWL.java                                      |   58 +
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/config/S7Config.java                                       |   37 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml                                               |    2 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/s7/entity/S7DataZKExtra.java                                |   21 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-yw.yml                                            |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java                      |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/s7/entity/S7DataDLPOne.java                          |  118 ++
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-yw.yml                                               |    2 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowBigStorageDetailsQueryVO.java        |    8 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcHollowRemoveTask.java                                |  142 +
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java                    |  334 ++++-
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcEdgTask.java                                          |   58 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application-yw.yml                                             |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-yw.yml                                              |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/s7/entity/S7DataDLPTwo.java                          |  117 ++
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/config/ModbusConfig.java                                    |   32 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java                                |  296 +++--
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/s7/entity/S7DataCC.java                                    |   52 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml                                                  |    2 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java            |    2 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application.yml                                                |   12 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/s7/entity/S7DataZKDLPOne.java                               |  115 ++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/logback-spring.xml                                            |  169 ++
 hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml                                         |   12 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/config/S7Config.java                                 |   30 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/OpcNGTemperingTask.java                              |   82 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java                                      |  122 -
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatLayoutServiceImpl.java                       |    2 
 hangzhoumesParent/common/pom.xml                                                                                                    |    2 
 hangzhoumesParent/common/servicebase/src/main/resources/mapper/OrderMapper.xml                                                      |    6 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml                                         |    6 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java                    |    2 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/s7/entity/S7DataSP.java                                    |   44 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/PlcTemperingGlassTask.java                           |  134 +
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataMBExtra.java                                 |   58 +
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml                                             |    2 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataMB.java                                      |   52 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/config/ModbusConfig.java                                 |   19 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/config/S7Config.java                                     |   30 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml                                          |    2 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java                        |  379 ++++-
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/impl/TemperingGlassInfoServiceImpl.java           |    5 
 hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/s7/entity/S7DataGHOne.java                               |   40 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                 |    8 
 hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml                       |   14 
 63 files changed, 2,812 insertions(+), 597 deletions(-)

diff --git a/hangzhoumesParent/common/pom.xml b/hangzhoumesParent/common/pom.xml
index 939354a..2896170 100644
--- a/hangzhoumesParent/common/pom.xml
+++ b/hangzhoumesParent/common/pom.xml
@@ -163,7 +163,7 @@
         <dependency>
             <groupId>com.github.xingshuangs</groupId>
             <artifactId>iot-communication</artifactId>
-            <version>1.4.2</version>
+            <version>1.5.4</version>
         </dependency>
 
         <!--寮曞叆redis,鎺掗櫎lettuce鐨勫紩鐢�-->
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
index 419a29e..6d0a7cb 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -36,10 +36,10 @@
      * 蹇欑 1
      * 绂佺敤 2
      */
-    public static final String OUT_FREE = "0";
-    public static final String OUT_BUSY = "1";
-    public static final String OUT_DISABLE = "2";
-    public static final List<String> OUT_DISABLE_ALL = Arrays.asList("1", "2");
+    public static final Integer OUT_FREE = 0;
+    public static final Integer OUT_BUSY = 1;
+    public static final Integer OUT_DISABLE = 2;
+    public static final List<Integer> OUT_DISABLE_ALL = Arrays.asList(1, 2);
 
 
     /**
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatLayoutServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatLayoutServiceImpl.java
index 8d4c429..da526ee 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatLayoutServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeHeatLayoutServiceImpl.java
@@ -32,7 +32,7 @@
     public OptimizeHeatLayout selectHeatLayoutInfo(String engineerId, Integer temperingid) {
 
         QueryWrapper<OptimizeHeatLayout> wrapper = new QueryWrapper<>();
-        wrapper.select("Top 1 *").eq("project_no", engineerId)
+        wrapper.eq("project_no", engineerId)
                 .eq("layout_id", temperingid);
         return baseMapper.selectOne(wrapper);
     }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java
index aec9520..7d3b052 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/mapper/TemperingGlassInfoMapper.java
@@ -44,4 +44,6 @@
             "WHERE\n" +
             "\tCONVERT ( DATE, create_time ) = CONVERT ( DATE, getdate( ) )")
     List<PieChartVO> queryPieChart();
+
+    List<TemperingGlassInfo> queryEngineerAndLayoutId();
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
index a964b6d..11ee6cf 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/service/TemperingGlassInfoService.java
@@ -79,4 +79,6 @@
      * @return
      */
     List<PieChartVO> queryPieChart();
+
+    List<TemperingGlassInfo> queryEngineerAndLayoutId();
 }
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 e3408e9..58adcca 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
@@ -207,4 +207,9 @@
     public List<PieChartVO> queryPieChart() {
         return baseMapper.queryPieChart();
     }
+
+    @Override
+    public List<TemperingGlassInfo> queryEngineerAndLayoutId() {
+        return baseMapper.queryEngineerAndLayoutId();
+    }
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/OrderMapper.xml b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/OrderMapper.xml
index 521aeff..7eafcca 100644
--- a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/OrderMapper.xml
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/OrderMapper.xml
@@ -17,7 +17,8 @@
                a.area,
                a.quantity,
                a.create_time,
-               round(ifnull(d.finishNum, 0) / a.quantity * 100) as 'percent'
+               round(ifnull(d.finishNum, 0) / a.quantity * 100) as 'percent',
+                ifnull(d.finishNum, 0)
         from sd.`order` as a
                  LEFT JOIN (
             SELECT sum(c.reporting_work_num) as 'finishNum',order_id
@@ -28,6 +29,7 @@
             GROUP BY c.order_id
         ) as d
                            on a.order_id = d.order_id
-        where a.warehousing != 2 and a.warehousing > 0
+        where a.warehousing != 2 and a.warehousing >= 0
+        ORDER BY  a.order_id desc
     </select>
 </mapper>
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml
index 55b503b..a88f715 100644
--- a/hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/mapper/TemperingGlassInfoMapper.xml
@@ -1,6 +1,11 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.mes.temperingglass.mapper.TemperingGlassInfoMapper">
+
+    <resultMap id="baseMap" type="com.mes.temperingglass.entity.TemperingGlassInfo">
+        <result column="engineer_id" property="engineerId"/>
+        <result column="tempering_layout_id" property="temperingLayoutId"/>
+    </resultMap>
     <insert id="saveBatch">
         INSERT INTO tempering_glass_info (glass_id, flow_card_id, glass_type, width, height, thickness, films_id,
         ishorizontal, tempering_layout_id,
@@ -12,5 +17,12 @@
             #{item.angle}, #{item.state}, #{item.slot}, #{item.engineerId}, 0)
         </foreach>
     </insert>
+    <select id="queryEngineerAndLayoutId" resultMap="baseMap">
+        select top 3 engineer_id,tempering_layout_id
+        from tempering_glass_info
+        where state = 1 and deleted = 0
+        group by engineer_id, tempering_layout_id
+        order by min(id) desc
+    </select>
 
 </mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/config/S7Config.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/config/S7Config.java
new file mode 100644
index 0000000..eb566f4
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/config/S7Config.java
@@ -0,0 +1,49 @@
+package com.mes.config;
+
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
+import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 13:50
+ * @Description:
+ */
+@Configuration
+public class S7Config {
+    @Bean(name = "s7SerializerWLOne")
+    public S7Serializer s7SerializerWLOne() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.100");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+    @Bean(name = "s7SerializerWLTwo")
+    public S7Serializer s7SerializerWLTwo() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.130");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+    @Bean(name = "s7SerializerMBOne")
+    public S7Serializer s7SerializerMBOne() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.58");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+    @Bean(name = "s7SerializerMBTwo")
+    public S7Serializer s7SerializerMBTwo() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.18");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+    @Bean(name = "s7SerializerMBExtra")
+    public S7Serializer s7SerializerMBExtra() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "192.168.20.100");
+        return S7Serializer.newInstance(s7PLC);
+    }
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java
index ca8b290..c8717d1 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassNewTask.java
@@ -5,6 +5,7 @@
 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.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
 import com.kangaroohy.milo.model.ReadWriteEntity;
 import com.kangaroohy.milo.service.MiloService;
 import com.mes.common.config.Const;
@@ -18,20 +19,22 @@
 import com.mes.edgstoragecage.service.EdgStorageCageService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
-import com.mes.opctask.entity.EdgStorageDeviceTask;
 import com.mes.opctask.entity.EdgStorageDeviceTaskHistory;
 import com.mes.opctask.service.EdgStorageDeviceTaskHistoryService;
 import com.mes.opctask.service.EdgStorageDeviceTaskService;
+import com.mes.s7.entity.S7DataMB;
+import com.mes.s7.entity.S7DataWL;
+import com.mes.s7.entity.S7DataWLExtra;
 import com.mes.sysconfig.service.SysConfigService;
 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.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -68,32 +71,41 @@
     @Resource
     SysConfigService sysConfigService;
 
-    //    @Value("${mes.threshold}")
+    @Autowired
+    @Qualifier("s7SerializerWLOne")
+    private S7Serializer s7SerializerWLOne;
+
+    @Autowired
+    @Qualifier("s7SerializerWLTwo")
+    private S7Serializer s7SerializerWLTwo;
+
+    @Autowired
+    @Qualifier("s7SerializerMBOne")
+    private S7Serializer s7SerializerMBOne;
+
+    @Autowired
+    @Qualifier("s7SerializerMBTwo")
+    private S7Serializer s7SerializerMBTwo;
+
+
     private int threshold;
-    //    @Value("${mes.cellLength}")
+
     private int cellLength;
-    //    @Value("${mes.ratio}")
+
     private int ratio;
 
-    //    @Value("${mes.min.one.firstLength}")
     private int minOneFirstLength;
-    //
-//    @Value("${mes.min.one.secondLength}")
+
     private int minOneSecondLength;
-    //
-//    @Value("${mes.min.two.firstLength}")
+
     private int minTwoFirstLength;
-    //
-//    @Value("${mes.min.two.secondLength}")
+
     private int minTwoSecondLength;
-    //
-//    @Value("${mes.max.firstLength}")
+
     private int maxTwoFirstLength;
-    //
-//    @Value("${mes.max.secondLength}")
+
     private int maxTwoSecondLength;
-    //
-//    @Value("${mes.maxThickness}")
+
     private int maxThickness;
 
     private String glassInIdOne = "";
@@ -103,28 +115,36 @@
 
     @Scheduled(fixedDelay = 1000)
     public void startOneOpcTask() throws Exception {
+        S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class);
+        S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class);
+        S7DataWLExtra s7DataWLExtraTwo = s7SerializerWLTwo.read(S7DataWLExtra.class);
+        log.info("涓�绾垮崸鐞�: {}", s7DataWLOne);
         //鑾峰彇绗簩鏉$嚎璺殑鍗у紡鐞嗙墖绗肩姸鎬�
-        ReadWriteEntity twoInkageEntity = miloService.readFromOpcUa("WL2.WL2.deviceState");
+        Boolean twoInkageEntity = s7DataWLTwo.getDeviceState();
         //榛樿鍙窇涓�鍙板崸寮忕悊鐗�,涓ゆ潯绾胯矾閮藉彲浠ヨ蛋
         int cellFlag = 1;
         //濡傛灉涓ゆ潯绾块兘鍚姩鍒欏彧鑳借窇涓�鏉$嚎
-        if (twoInkageEntity != null && !Boolean.parseBoolean(twoInkageEntity.getValue() + "")) {
+        if (!twoInkageEntity && !Const.OUT_DISABLE.equals(s7DataWLExtraTwo.getD06SlotState())) {
             cellFlag = 2;
         }
-        startOneOpcTaskChild(EDG_STORAGE_DEVICE_ONE_TASK, 1, cellFlag);
+        startOneOpcTaskChild(s7DataWLOne, 1, cellFlag);
     }
 
     @Scheduled(fixedDelay = 1000)
     public void startTwoOpcTask() throws Exception {
-        ReadWriteEntity oneInkageEntity = miloService.readFromOpcUa("WL1.WL1.deviceState");
+        S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class);
+        S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class);
+        S7DataWLExtra s7DataWLExtraTwo = s7SerializerWLTwo.read(S7DataWLExtra.class);
+        log.info("浜岀嚎鍗х悊: {}", s7DataWLTwo);
+        Boolean oneInkageEntity = s7DataWLOne.getDeviceState();
         int cellFlag = 1;
-        if (oneInkageEntity != null && !Boolean.parseBoolean(oneInkageEntity.getValue() + "")) {
+        if (!oneInkageEntity  && !Const.OUT_DISABLE.equals(s7DataWLExtraTwo.getD06SlotState())) {
             cellFlag = 2;
         }
-        startOneOpcTaskChild(EDG_STORAGE_DEVICE_TWO_TASK, 2, cellFlag);
+        startOneOpcTaskChild(s7DataWLTwo, 2, cellFlag);
     }
 
-    private void startOneOpcTaskChild(String tableName, int device, int cellFlag) throws Exception {
+    private void startOneOpcTaskChild(S7DataWL task, int device, int cellFlag) throws Exception {
         threshold = sysConfigService.queryConfigValue(ConstSysConfig.CACHE_THRESHOLD);
         cellLength = sysConfigService.queryConfigValue(ConstSysConfig.CACHE_CELL_LENGTH);
         ratio = sysConfigService.queryConfigValue(ConstSysConfig.CACHE_RATIO);
@@ -136,7 +156,7 @@
         maxTwoSecondLength = sysConfigService.queryConfigValue(ConstSysConfig.CACHE_MAX_SECOND_LENGTH);
         maxThickness = sysConfigService.queryConfigValue(ConstSysConfig.CACHE_MAX_THICKNESS);
 
-        EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(tableName);
+
         if (task == null) {
             log.info("浠诲姟琛ㄥ熀纭�鏁版嵁褰曞叆澶辫触锛岃妫�鏌ユ暟鎹槸鍚﹀綍鍏ユ垚鍔�");
             return;
@@ -155,44 +175,43 @@
             //杩涚墖浠诲姟
             log.info("璁惧锛歿}鐘舵�侊細{}", device, request);
             log.info("杩涚墖浠诲姟锛氳繘鐗囩幓鐠僫d涓猴細{}", task.getGlassIdIn());
-            intoTask(task, tableName, device);
+            intoTask(task, device);
         } else if (request == 2 && taskRunning == 0) {
             //鍑虹墖浠诲姟
-            outTask(task, tableName, device, cellFlag);
+            outTask(task, device, cellFlag);
         } else if (request == 3 && taskRunning == 0) {
             //鐩撮�氫换鍔�
             log.info("璁惧锛歿}鐘舵�侊細{}", device, request);
-            if (!outTask(task, tableName, device, cellFlag)) {
-                intoTask(task, tableName, device);
+            if (!outTask(task, device, cellFlag)) {
+                intoTask(task, device);
             }
         } else if (request == 4) {
             log.info("璁惧锛歿}鐘舵�侊細{}", device, request);
             log.info("灏嗗惎鍔ㄥ瓙鏀逛负4");
-            task.setTaskRunning(Const.GLASS_CACHE_TYPE_RUNNING);
-            edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
+            if (device == 2) {
+                task.setTaskRunning(Const.GLASS_CACHE_TYPE_RUNNING);
+                s7SerializerWLTwo.write(S7DataWL.builder().taskRunning(Const.GLASS_CACHE_TYPE_RUNNING).build());
+            } else {
+                task.setTaskRunning(Const.GLASS_CACHE_TYPE_RUNNING);
+                s7SerializerWLOne.write(S7DataWL.builder().taskRunning(Const.GLASS_CACHE_TYPE_RUNNING).build());
+            }
+
         } else if (request == 5) {
             log.info("璁惧锛歿}鐘舵�侊細{}", device, request);
-            finishTask(task, tableName, device);
+            finishTask(task, "", device);
         } else {
             log.info("鐜荤拑寮傚父澶勭悊");
-            damageTask(task, tableName, device);
+            damageTask(task, "", device);
         }
-//    } catch(Exception e)
-//
-//    {
-//        log.info("鎵ц浠诲姟杩囩▼涓彂鐢熷紓甯革紝浠诲姟瀛梴}锛寋}", task.getTaskState(), e.getMessage());
-//        log.info("灏嗗惎鍔ㄥ瓧鏀逛负0");
-//        task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY);
-//        edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
-//    }
 
     }
 
 
     @Scheduled(fixedDelay = 1000)
     public void edgOneOpcTask() throws Exception {
-        EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(EDG_STORAGE_DEVICE_ONE_TASK);
-        String glassId = task.getGlassId();
+        S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class);
+        String glassId = s7DataWLOne.getGlassId();
+        log.info("1鍙风嚎鐜荤拑id{},鍘嗗彶id{}", glassId, glassIdOne);
         if (StringUtils.isBlank(glassId) || glassId.equals(glassIdOne)) {
             log.info("{}鍙风嚎纾ㄨ竟鍓嶇幓鐠冩湭灏变綅锛岀粨鏉熸湰娆′换鍔�", 1);
             return;
@@ -201,9 +220,10 @@
     }
 
     @Scheduled(fixedDelay = 1000)
-    public void edgTwoOpcTask() throws Exception {
-        EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(EDG_STORAGE_DEVICE_TWO_TASK);
-        String glassId = task.getGlassId();
+    public void edgTwoOpcTask() {
+        S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class);
+        String glassId = s7DataWLTwo.getGlassId();
+        log.info("2鍙风嚎鐜荤拑id{},鍘嗗彶id{}", glassId, glassIdTwo);
         if (StringUtils.isBlank(glassId) || glassId.equals(glassIdTwo)) {
             log.info("{}鍙风嚎纾ㄨ竟鍓嶇幓鐠冩湭灏变綅锛岀粨鏉熸湰娆′换鍔�", 2);
             return;
@@ -211,7 +231,7 @@
         edgTaskChild(glassId, 2);
     }
 
-    private void edgTaskChild(String glassId, int cell) throws Exception {
+    private void edgTaskChild(String glassId, int cell) {
         ratio = sysConfigService.queryConfigValue(ConstSysConfig.CACHE_RATIO);
         GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId).last("limit 1"));
         if (glassInfo == null) {
@@ -219,15 +239,25 @@
             return;
         }
         String toEndingId = glassInfo.getTemperingLayoutId() + "" + glassInfo.getTemperingFeedSequence();
-        List<ReadWriteEntity> list = new ArrayList<>();
-//        list.add(generateReadWriteEntity("MB" + cell + ".MB" + cell + ".mesControl", true));
-        list.add(generateReadWriteEntity("MB" + cell + ".MB" + cell + ".glassId", Integer.parseInt(toEndingId)));
-        list.add(generateReadWriteEntity("MB" + cell + ".MB" + cell + ".toEdingId", Integer.parseInt(toEndingId)));
-        list.add(generateReadWriteEntity("MB" + cell + ".MB" + cell + ".width", (int) Math.max(glassInfo.getWidth() * ratio, glassInfo.getHeight() * ratio)));
-        list.add(generateReadWriteEntity("MB" + cell + ".MB" + cell + ".height", (int) Math.min(glassInfo.getWidth() * ratio, glassInfo.getHeight() * ratio)));
-
-        miloService.writeToOpcUa(list);
-        miloService.writeToOpcWord(generateReadWriteEntity("MB" + cell + ".MB" + cell + ".thickness", (int) glassInfo.getThickness() * ratio));
+        S7DataMB s7DataMB = new S7DataMB();
+        s7DataMB.setToEdingId(Integer.parseInt(toEndingId));
+        s7DataMB.setGlassId(Integer.parseInt(toEndingId));
+        s7DataMB.setWidth((int) Math.max(glassInfo.getWidth() * ratio, glassInfo.getHeight() * ratio));
+        s7DataMB.setHeight((int) Math.min(glassInfo.getWidth() * ratio, glassInfo.getHeight() * ratio));
+        log.info("鐜荤拑id:{},{}绾垮悜PLC鍙戦�佸楂樻暟鎹畕}", glassId, cell, s7DataMB);
+        if (cell == 1) {
+            s7SerializerMBOne.write(s7DataMB);
+        } else {
+            s7SerializerMBTwo.write(s7DataMB);
+        }
+        s7DataMB = new S7DataMB();
+        s7DataMB.setThickness((int) (glassInfo.getThickness() * ratio));
+        log.info("{}绾垮悜PLC鍙戦�佸帤搴︽暟鎹畕}", cell, s7DataMB);
+        if (cell == 1) {
+            s7SerializerMBOne.write(s7DataMB);
+        } else {
+            s7SerializerMBTwo.write(s7DataMB);
+        }
         //淇敼纾ㄨ竟瀵瑰垪涓殑纾ㄨ竟绾胯矾鍙婄姸鎬�
         edgGlassTaskInfoService.update(new LambdaUpdateWrapper<EdgGlassTaskInfo>()
                 .set(EdgGlassTaskInfo::getLine, cell)
@@ -242,9 +272,9 @@
         }
     }
 
-    private boolean intoTask(EdgStorageDeviceTask task, String tableName, int deviceId) {
+    private boolean intoTask(S7DataWL task, int deviceId) {
         Date startDate = new Date();
-        log.info("寮�濮嬫墽琛岃繘鐗囦换鍔★紝浠诲姟淇℃伅涓猴細{},琛ㄥ悕涓猴細{},璁惧id:{},寮�濮嬫椂闂达細{}", task, tableName, deviceId, startDate);
+        log.info("寮�濮嬫墽琛岃繘鐗囦换鍔★紝浠诲姟淇℃伅涓猴細{},璁惧id:{},寮�濮嬫椂闂达細{}", task, deviceId, startDate);
         //鑾峰彇鐜荤拑鐨勫熀鏈俊鎭�
         GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, task.getGlassIdIn()));
         if (null == glassInfo) {
@@ -274,7 +304,7 @@
             log.info("缁撴潫杩涚墖浠诲姟璁惧涓簕}锛岀粨鏉熸椂闂翠负锛歿}锛屽叡鑰楁椂锛歿}ms", deviceId, endDate, endDate.getTime() - startDate.getTime());
             return Boolean.FALSE;
         }
-        EdgStorageCage edgStorageCage = edgStorageCageService.selectNearestEmpty(task.getCurrentCell(), deviceId, Boolean.FALSE);
+        EdgStorageCage edgStorageCage = edgStorageCageService.selectNearestEmpty(Integer.parseInt(task.getCurrentCell().toString()), deviceId, Boolean.FALSE);
         Assert.isTrue(null != edgStorageCage, "鏍煎瓙宸叉弧");
         log.info("4銆佸皢鐜荤拑淇℃伅鎻掑叆鍗у紡鐞嗙墖绗�,褰撳墠鐜荤拑淇℃伅:{}", glassInfo);
         EdgStorageCageDetails details = new EdgStorageCageDetails();
@@ -287,7 +317,17 @@
         //鏇存柊浠诲姟淇℃伅
         task.setStartCell(edgStorageCage.getSlot());
         task.setTaskRunning(Const.GLASS_CACHE_TYPE_IN);
-        edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
+        if (deviceId == 1) {
+            s7SerializerWLOne.write(
+                    S7DataWL.builder().startCell(edgStorageCage.getSlot())
+                            .taskRunning(Const.GLASS_CACHE_TYPE_IN).build()
+            );
+        } else {
+            s7SerializerWLTwo.write(
+                    S7DataWL.builder().startCell(edgStorageCage.getSlot())
+                            .taskRunning(Const.GLASS_CACHE_TYPE_IN).build()
+            );
+        }
         saveHistoryTask(task, deviceId);
         //璁板綍杩涚墖浠诲姟鐨勭幓鐠僫d鐢ㄤ簬涓嬫浠诲姟鐨勬瘮杈冿紝闃叉鍚屼竴鍧楃幓鐠冮噸澶嶆墽琛�
         if (deviceId == 1) {
@@ -300,29 +340,20 @@
         return Boolean.TRUE;
     }
 
-    private boolean outTask(EdgStorageDeviceTask task, String tableName, int deviceId, int cellFlag) throws Exception {
+    private boolean outTask(S7DataWL task, int deviceId, int cellFlag) {
         Date startDate = new Date();
         //鑾峰彇瀵瑰簲鐨勮澶囩姸鎬佷俊鎭�
-        ReadWriteEntity oneOutStateEntity = miloService.readFromOpcUa("WL1.WL1.slotState");
-        ReadWriteEntity twoOutStateEntity = miloService.readFromOpcUa("WL2.WL2.slotState");
-        ReadWriteEntity d06OutStateEntity = miloService.readFromOpcUa("WL2.WL2.d06SlotState");
+        S7DataWL s7DataWLOne = s7SerializerWLOne.read(S7DataWL.class);
+        S7DataWL s7DataWLTwo = s7SerializerWLTwo.read(S7DataWL.class);
+        S7DataWLExtra s7DataWLExtraTwo = s7SerializerWLTwo.read(S7DataWLExtra.class);
+        Integer oneOutState = s7DataWLOne.getSlotState();
+        Integer twoOutState = s7DataWLTwo.getSlotState();
+        Integer d06OutState = s7DataWLExtraTwo.getD06SlotState();
         //鐘舵�佹湁3涓儏鍐碉細0绌洪棽 1蹇欑 2绂佺敤
-        String oneOutState = Const.OUT_DISABLE;
-        String twoOutState = Const.OUT_DISABLE;
-        String d06OutState = Const.OUT_DISABLE;
-        if (null != oneOutStateEntity && null != oneOutStateEntity.getValue()) {
-            oneOutState = oneOutStateEntity.getValue().toString();
-        }
-        if (null != twoOutStateEntity && null != twoOutStateEntity.getValue()) {
-            twoOutState = twoOutStateEntity.getValue().toString();
-        }
         //涓ゆ潯绾块兘涓虹鐢ㄥ垯涓嶅嚭鐜荤拑
         if (Const.OUT_DISABLE.equals(oneOutState) && Const.OUT_DISABLE.equals(twoOutState)) {
             log.info("A09銆丄10涓簕},{}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖", oneOutState, oneOutState);
             return Boolean.FALSE;
-        }
-        if (null != d06OutStateEntity && null != d06OutStateEntity.getValue()) {
-            d06OutState = d06OutStateEntity.getValue().toString();
         }
         //鑾峰彇d06鐗囧彴鐘舵��
         // 1:涓�瀵逛竴鐨勬儏鍐典笅涓嶉渶瑕佸垽鏂璬06鐘舵��
@@ -330,18 +361,14 @@
         // 3:浜屽彿绾夸竴瀵瑰鐨勬儏鍐典笅锛岃幏鍙栦竴鍙风嚎纾ㄨ竟鍓嶇墖鍙癈08鐨勭姸鎬侊紝C08闈炵鐢ㄦ椂锛屼竴鍙风嚎灏嗘寜鐓06鐗囧彴鐘舵�佽寰楀嚭鐗�
         if (cellFlag == 2) {
             if (deviceId == 1) {
-                twoOutState = Const.OUT_DISABLE.equals(twoOutState) ? Const.OUT_DISABLE : d06OutState;
+                twoOutState = twoOutState & d06OutState;
             } else {
-                oneOutState = Const.OUT_DISABLE.equals(oneOutState) ? Const.OUT_DISABLE : d06OutState;
-            }
-            if (Const.OUT_BUSY.equals(oneOutState) && Const.OUT_BUSY.equals(twoOutState)) {
-                log.info("A09銆丄10涓簕},{}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖", oneOutState, oneOutState);
-                return Boolean.FALSE;
+                oneOutState = oneOutState & d06OutState;
             }
         }
 
-        log.info("寮�濮嬫墽琛屽嚭鐗�/鐩撮�氫换鍔★紝浠诲姟淇℃伅涓猴細{},琛ㄥ悕涓猴細{},璁惧id:{},寮�濮嬫椂闂达細{},涓�鍙风嚎鐘舵�侊細{}锛屼簩鍙风嚎鐘舵�侊細{}",
-                task, tableName, deviceId, startDate, oneOutState, twoOutState);
+        log.info("寮�濮嬫墽琛屽嚭鐗�/鐩撮�氫换鍔★紝浠诲姟淇℃伅涓猴細{},璁惧id:{},寮�濮嬫椂闂达細{},涓�鍙风嚎鐘舵�侊細{}锛屼簩鍙风嚎鐘舵�侊細{}",
+                task, deviceId, startDate, oneOutState, twoOutState);
         //鑾峰彇褰撳墠闇�瑕佽蛋閭f潯绾�
         int cell = 0;
         if (cellFlag == 1) {
@@ -352,25 +379,21 @@
             } else if (Const.OUT_FREE.equals(oneOutState)) {
                 cell = Const.ONE_OUT_TARGET_POSITION;
             } else {
-                return Boolean.FALSE;
+                cell = Const.TWO_OUT_TARGET_POSITION;
             }
         }
-        if (Const.OUT_FREE.equals(oneOutState) && Const.OUT_FREE.equals(twoOutState)) {
-            if (cellFlag == 2) {
-                if (!outChildTask(task, tableName, deviceId, cell, startDate)) {
-                    cell = cell == Const.ONE_OUT_TARGET_POSITION ? Const.TWO_OUT_TARGET_POSITION : Const.ONE_OUT_TARGET_POSITION;
-                    return outChildTask(task, tableName, deviceId, cell, startDate);
-                }
-            } else {
-                return outChildTask(task, tableName, deviceId, cell, startDate);
+        if (cellFlag == 2) {
+            if (!outChildTask(task, deviceId, cell, startDate)) {
+                cell = cell == Const.ONE_OUT_TARGET_POSITION ? Const.TWO_OUT_TARGET_POSITION : Const.ONE_OUT_TARGET_POSITION;
+                return outChildTask(task, deviceId, cell, startDate);
             }
         } else {
-            return outChildTask(task, tableName, deviceId, cell, startDate);
+            return outChildTask(task, deviceId, cell, startDate);
         }
         return Boolean.TRUE;
     }
 
-    private boolean outChildTask(EdgStorageDeviceTask task, String tableName, int deviceId, int cell, Date startDate) {
+    private boolean outChildTask(S7DataWL task, int deviceId, int cell, Date startDate) {
         EdgStorageCageDetails edgStorageCageDetails = null;
 
         //绗煎唴鏄増鍥剧浉宸槸鍚﹁秴杩囬槇鍊�
@@ -424,7 +447,7 @@
         }
         //鍓嶉潰宸茬粡灏哄闂澶勭悊瀹屾瘯锛屽紑濮嬭绠楁棤鐩稿悓灏哄鐨勬柊鐜荤拑灏忕墖
         if (null == edgStorageCageDetails) {
-            edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsByLimitSize(deviceId, task.getCurrentCell(), 0, 0,
+            edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsByLimitSize(deviceId, Integer.parseInt(task.getCurrentCell().toString()), 0, 0,
                     cell, minOneFirstLength, minOneSecondLength, maxTwoFirstLength, maxTwoSecondLength, maxThickness);
         }
         if (edgStorageCageDetails == null && StringUtils.isNotBlank(task.getGlassIdIn())) {
@@ -508,8 +531,25 @@
         task.setStartCell(edgStorageCageDetails.getSlot());
         task.setTaskRunning(taskType);
         task.setEndCell(cell);
-
-        edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
+        if (deviceId == 1) {
+            s7SerializerWLOne.write(
+                    S7DataWL.builder()
+                            .glassIdOut(edgStorageCageDetails.getGlassId())
+                            .startCell(edgStorageCageDetails.getSlot())
+                            .taskRunning(taskType)
+                            .endCell(cell)
+                            .build()
+            );
+        } else {
+            s7SerializerWLTwo.write(
+                    S7DataWL.builder()
+                            .glassIdOut(edgStorageCageDetails.getGlassId())
+                            .startCell(edgStorageCageDetails.getSlot())
+                            .taskRunning(taskType)
+                            .endCell(cell)
+                            .build()
+            );
+        }
         saveHistoryTask(task, deviceId);
         //璁板綍鐩撮�氫换鍔$殑鐜荤拑id鐢ㄤ簬涓嬫浠诲姟鐨勬瘮杈冿紝闃叉鍚屼竴鍧楃幓鐠冮噸澶嶆墽琛�
         if (3 == task.getTaskState()) {
@@ -530,17 +570,13 @@
         return Boolean.TRUE;
     }
 
-    private boolean finishTask(EdgStorageDeviceTask task, String tableName, int device) {
+    private boolean finishTask(S7DataWL task, String tableName, int device) {
         if (task.getTaskState() <= 4) {
             log.info("鏈夋鍦ㄦ墽琛岀殑浠诲姟鎴栬繖浠诲姟宸叉墽琛屼换鍔$姸鎬亄}锛屼换鍔″惎鍔ㄦ儏鍐祘}锛岀粨鏉�", task.getTaskState(), task.getTaskRunning());
             return Boolean.FALSE;
         }
         Date startDate = new Date();
         log.info("寮�濮嬫墽琛屽畬鎴愪换鍔″悗娓呴櫎鍔ㄤ綔锛屼换鍔′俊鎭负锛歿},琛ㄥ悕涓猴細{},寮�濮嬫椂闂达細{}", task, tableName, startDate);
-        task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY);
-        task.setGlassIdOut("");
-        task.setStartCell(0);
-        task.setEndCell(0);
         EdgStorageDeviceTaskHistory taskHistory = edgStorageDeviceTaskHistoryService.getOne(new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>()
                 .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
                 .eq(EdgStorageDeviceTaskHistory::getDeviceId, device)
@@ -558,13 +594,31 @@
             );
         }
         //鏈�鍚庢洿鏂颁换鍔★紝淇濊瘉浠诲姟鍓嶇殑鍔ㄤ綔閮藉仛瀹�
-        edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
+        if (device == 1) {
+            s7SerializerWLOne.write(
+                    S7DataWL.builder()
+                            .taskRunning(Const.GLASS_CACHE_TYPE_EMPTY)
+                            .glassIdOut("")
+                            .startCell(0)
+                            .endCell(0)
+                            .build()
+            );
+        } else {
+            s7SerializerWLTwo.write(
+                    S7DataWL.builder()
+                            .taskRunning(Const.GLASS_CACHE_TYPE_EMPTY)
+                            .glassIdOut("")
+                            .startCell(0)
+                            .endCell(0)
+                            .build()
+            );
+        }
         Date endDate = new Date();
         log.info("缁撴潫瀹屾垚浠诲姟鍚庢竻闄ゅ姩浣滐紝琛ㄥ悕涓猴細{},缁撴潫鏃堕棿涓猴細{}锛屽叡鑰楁椂锛歿}ms", tableName, endDate, endDate.getTime() - startDate.getTime());
         return Boolean.TRUE;
     }
 
-    private boolean damageTask(EdgStorageDeviceTask task, String tableName, int device) {
+    private boolean damageTask(S7DataWL task, String tableName, int device) {
         if (task.getTaskState() <= 5) {
             log.info("浠诲姟鏈彂鐢熷紓甯告竻绌猴紝浠诲姟缁撴潫锛岀數姘旂姸鎬亄},mes鐘舵�亄}", task.getTaskState(), task.getTaskRunning());
             return Boolean.FALSE;
@@ -599,12 +653,25 @@
                     .set(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_FAILURE)
             );
         }
-        //鏈�鍚庢洿鏂颁换鍔★紝淇濊瘉浠诲姟鍓嶇殑鍔ㄤ綔閮藉仛瀹�
-        task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY);
-        task.setGlassIdOut("");
-        task.setStartCell(0);
-        task.setEndCell(0);
-        edgStorageDeviceTaskService.updateTaskMessage(tableName, task);
+        if (device == 1) {
+            s7SerializerWLOne.write(
+                    S7DataWL.builder()
+                            .taskRunning(Const.GLASS_CACHE_TYPE_EMPTY)
+                            .glassIdOut("")
+                            .startCell(0)
+                            .endCell(0)
+                            .build()
+            );
+        } else {
+            s7SerializerWLTwo.write(
+                    S7DataWL.builder()
+                            .taskRunning(Const.GLASS_CACHE_TYPE_EMPTY)
+                            .glassIdOut("")
+                            .startCell(0)
+                            .endCell(0)
+                            .build()
+            );
+        }
         Date endDate = new Date();
         log.info("瀹屾垚鎵ц寮傚父澶勭悊浠诲姟鍚庢竻闄ゅ姩浣滐紝琛ㄥ悕涓猴細{},缁撴潫鏃堕棿涓猴細{}锛屽叡鑰楁椂锛歿}ms", tableName, endDate, endDate.getTime() - startDate.getTime());
         return Boolean.TRUE;
@@ -619,7 +686,6 @@
      */
     public String queryAndChangeGlass(String glassId) {
         GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
-//                .inSql(GlassInfo::getEngineerId, "select engineer_id from engineering where state = 1"));
         Assert.isFalse(null == glassInfo, "鐜荤拑淇℃伅涓嶅瓨鍦�");        //鎸夌収鐜荤拑灏哄
         LambdaQueryWrapper<GlassInfo> queryWrapper = new LambdaQueryWrapper<GlassInfo>()
                 .eq(GlassInfo::getWidth, glassInfo.getWidth())
@@ -744,9 +810,11 @@
         }
     }
 
-    public boolean saveHistoryTask(EdgStorageDeviceTask task, int deviceId) {
+    //    public boolean saveHistoryTask(EdgStorageDeviceTask task, int deviceId) {
+    public boolean saveHistoryTask(S7DataWL task, int deviceId) {
         EdgStorageDeviceTaskHistory taskHistory = new EdgStorageDeviceTaskHistory();
         BeanUtils.copyProperties(task, taskHistory);
+//        taskHistory.setTaskType(task.getTaskRunning());
         taskHistory.setTaskType(task.getTaskRunning());
         taskHistory.setCreateTime(new Date());
         taskHistory.setTaskState(Const.RAW_GLASS_TASK_NEW);
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
index 8cba008..0b6a729 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
@@ -64,25 +64,21 @@
     @Resource
     DamageService damageService;
 
-//    @Value("${mes.glassGap}")
+
     private int glassGap;
-    //    @Value("${mes.threshold}")
+
     private int threshold;
-    //    @Value("${mes.cellLength}")
+
     private int cellLength;
-    //    @Value("${mes.ratio}")
+
     private int ratio;
 
-    //    @Value("${mes.min.one.firstLength}")
     private int minOneFirstLength;
 
-    //    @Value("${mes.min.one.secondLength}")
     private int minOneSecondLength;
 
-    //    @Value("${mes.min.two.firstLength}")
     private int minTwoFirstLength;
 
-    //    @Value("${mes.min.two.secondLength}")
     private int minTwoSecondLength;
 
     private String glassInIdOne = "";
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcEdgTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcEdgTask.java
index ec3ade9..5e10814 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcEdgTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcEdgTask.java
@@ -1,12 +1,15 @@
 package com.mes.job;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
 import com.kangaroohy.milo.model.ReadWriteEntity;
 import com.kangaroohy.milo.service.MiloService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.s7.entity.S7DataMBExtra;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.util.StringUtils;
@@ -28,9 +31,12 @@
     @Autowired(required = false)
     MiloService miloService;
 
+    @Autowired
+    @Qualifier("s7SerializerMBExtra")
+    private S7Serializer s7SerializerMBExtra;
+
     @Resource
     GlassInfoService glassInfoService;
-
 
     @Scheduled(fixedDelay = 2000)
     public void startOneEdgTask() throws Exception {
@@ -43,27 +49,53 @@
     }
 
     private void startEdgTaskChild(String cell) throws Exception {
-        ReadWriteEntity request = miloService.readFromOpcUa("MB04.MB04.request" + cell);
-        if (null == request || "0".equals(request.getValue() + "")) {
+        S7DataMBExtra s7DataMBExtra = s7SerializerMBExtra.read(S7DataMBExtra.class);
+        log.info("MB04璇诲彇鏁版嵁{}", s7DataMBExtra);
+        String request = "";
+        String glassIdEntity = "";
+        if ("01".equals(cell)) {
+            request = s7DataMBExtra.getRequestOne().toString();
+            glassIdEntity = s7DataMBExtra.getPlcGlassIdOne();
+        } else {
+            request = s7DataMBExtra.getRequestTwo().toString();
+            glassIdEntity = s7DataMBExtra.getPlcGlassIdTwo();
+        }
+        if (null == request || "0".equals(request)) {
             log.info("鏈敹鍒扮幓鐠冭姹傦紝缁撴潫鏈浠诲姟");
             return;
         }
-        ReadWriteEntity glassIdEntity = miloService.readFromOpcUa("MB04.MB04.plc_glass_id_" + cell);
-
-        if (null == glassIdEntity || StringUtils.isEmpty(glassIdEntity.getValue() + "")) {
+        if (null == glassIdEntity || StringUtils.isEmpty(glassIdEntity)) {
             log.info("鏈夎姹備絾鐜荤拑id涓虹┖锛岀粨鏉熸湰娆′换鍔�");
             return;
         }
-        String glassId = glassIdEntity.getValue() + "";
+        String glassId = glassIdEntity;
         log.info("鑾峰彇鍒皗}绾跨殑鐜荤拑id:{}", cell, glassId);
         GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId).last("limit 1"));
 
-        List<ReadWriteEntity> ualist = new ArrayList<>();
-        ualist.add(generateReadWriteEntity("MB04.MB04.width" + cell, (int) Math.max(glassInfo.getWidth() * 10, glassInfo.getHeight() * 10)));
-        ualist.add(generateReadWriteEntity("MB04.MB04.height" + cell, (int) Math.min(glassInfo.getWidth() * 10, glassInfo.getHeight() * 10)));
-        ualist.add(generateReadWriteEntity("MB04.MB04.thickness" + cell, (int) glassInfo.getThickness() * 10));
-        miloService.writeToOpcWord(ualist);
-        miloService.writeToOpcUa(generateReadWriteEntity("MB04.MB04.mes_glass_Id_" + cell, glassId));
+        log.info("{}绾垮彂閫佸昂瀵镐俊鎭锛歿}锛岄珮锛歿}锛屽帤搴︼細{}", cell, Math.max(glassInfo.getWidth() * 10, glassInfo.getHeight() * 10), Math.min(glassInfo.getWidth() * 10, glassInfo.getHeight() * 10), glassInfo.getThickness() * 10);
+        if ("01".equals(cell)) {
+            s7SerializerMBExtra.write(
+                    S7DataMBExtra.builder()
+                            .widthOne((int) Math.max(glassInfo.getWidth() * 10, glassInfo.getHeight() * 10))
+                            .heightOne((int) Math.min(glassInfo.getWidth() * 10, glassInfo.getHeight() * 10))
+                            .thicknessOne((int) (glassInfo.getThickness() * 10))
+                            .build()
+            );
+            s7SerializerMBExtra.write(
+                    S7DataMBExtra.builder().mesGlassIdOne(glassId).build()
+            );
+        } else {
+            s7SerializerMBExtra.write(
+                    S7DataMBExtra.builder()
+                            .widthTwo((int) Math.max(glassInfo.getWidth() * 10, glassInfo.getHeight() * 10))
+                            .heightTwo((int) Math.min(glassInfo.getWidth() * 10, glassInfo.getHeight() * 10))
+                            .thicknessTwo((int) (glassInfo.getThickness() * 10))
+                            .build()
+            );
+            s7SerializerMBExtra.write(
+                    S7DataMBExtra.builder().mesglassIdTwo(glassId).build()
+            );
+        }
     }
 
     private ReadWriteEntity generateReadWriteEntity(String identifier, Object value) {
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataMB.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataMB.java
new file mode 100644
index 0000000..56c3b8c
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataMB.java
@@ -0,0 +1,52 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+public class S7DataMB {
+
+
+    @S7Variable(address = "DB323.6", type = EDataType.FLOAT32)
+    private Float speed;
+
+    @S7Variable(address = "DB324.2", type = EDataType.INT32)
+    private Integer toEdingId;
+
+    @S7Variable(address = "DB324.6", type = EDataType.INT32)
+    private Integer glassId;
+
+    @S7Variable(address = "DB324.10", type = EDataType.INT32)
+    private Integer width;
+
+    @S7Variable(address = "DB324.14", type = EDataType.INT32)
+    private Integer height;
+
+    @S7Variable(address = "DB324.18", type = EDataType.UINT16)
+    private Integer thickness;
+
+    @S7Variable(address = "DB324.0.3", type = EDataType.BOOL)
+    private Boolean mesControl;
+
+//    @S7Variable(address = "DB49.126", type = EDataType.INT32)
+//    private Integer toEdingId;
+//
+//    @S7Variable(address = "DB49.130", type = EDataType.INT32)
+//    private Integer glassId;
+//
+//    @S7Variable(address = "DB49.134", type = EDataType.INT32)
+//    private Integer width;
+//
+//    @S7Variable(address = "DB49.138", type = EDataType.INT32)
+//    private Integer height;
+//
+//    @S7Variable(address = "DB49.142", type = EDataType.UINT16)
+//    private Short thickness;
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataMBExtra.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataMBExtra.java
new file mode 100644
index 0000000..0178d45
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataMBExtra.java
@@ -0,0 +1,58 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class S7DataMBExtra {
+
+
+    @S7Variable(address = "DB49.0", type = EDataType.UINT16)
+    private Integer requestOne;
+
+    @S7Variable(address = "DB49.46", type = EDataType.UINT16)
+    private Integer widthOne;
+
+    @S7Variable(address = "DB49.48", type = EDataType.UINT16)
+    private Integer heightOne;
+
+    @S7Variable(address = "DB49.50", type = EDataType.UINT16)
+    private Integer thicknessOne;
+
+    @S7Variable(address = "DB49.52", type = EDataType.UINT16)
+    private Integer requestTwo;
+
+    @S7Variable(address = "DB49.98", type = EDataType.UINT16)
+    private Integer widthTwo;
+
+    @S7Variable(address = "DB49.100", type = EDataType.UINT16)
+    private Integer heightTwo;
+
+    @S7Variable(address = "DB49.102", type = EDataType.UINT16)
+    private Integer thicknessTwo;
+
+    @S7Variable(address = "DB49.2", type = EDataType.STRING, count = 14)
+    private String plcGlassIdOne;
+
+    @S7Variable(address = "DB49.24", type = EDataType.STRING, count = 14)
+    private String mesGlassIdOne;
+
+    @S7Variable(address = "DB49.54", type = EDataType.STRING, count = 14)
+    private String plcGlassIdTwo;
+
+    @S7Variable(address = "DB49.76", type = EDataType.STRING, count = 14)
+    private String mesglassIdTwo;
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataWL.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataWL.java
new file mode 100644
index 0000000..6c4412b
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataWL.java
@@ -0,0 +1,58 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class S7DataWL {
+
+
+    @S7Variable(address = "DB49.0", type = EDataType.UINT16)
+    private Integer taskRunning;
+
+    @S7Variable(address = "DB49.46", type = EDataType.UINT16)
+    private Integer currentCell;
+
+    @S7Variable(address = "DB49.48", type = EDataType.UINT16)
+    private Integer startCell;
+
+    @S7Variable(address = "DB49.50", type = EDataType.UINT16)
+    private Integer endCell;
+
+    @S7Variable(address = "DB49.52", type = EDataType.UINT16)
+    private Integer TaskState;
+
+    @S7Variable(address = "DB49.116", type = EDataType.UINT16)
+    private Integer inPlace;
+
+    @S7Variable(address = "DB49.124", type = EDataType.UINT16)
+    private Integer slotState;
+
+    @S7Variable(address = "DB49.118", type = EDataType.FLOAT32)
+    private Float speed;
+
+    @S7Variable(address = "DB49.2", type = EDataType.STRING, count = 14)
+    private String glassIdIn;
+
+    @S7Variable(address = "DB49.24", type = EDataType.STRING, count = 14)
+    private String glassIdOut;
+
+    @S7Variable(address = "DB49.94", type = EDataType.STRING, count = 14)
+    private String glassId;
+
+    @S7Variable(address = "DB49.112.0", type = EDataType.BOOL)
+    private Boolean deviceState;
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataWLExtra.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataWLExtra.java
new file mode 100644
index 0000000..c6204c5
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/s7/entity/S7DataWLExtra.java
@@ -0,0 +1,18 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+public class S7DataWLExtra {
+
+    @S7Variable(address = "DB49.126", type = EDataType.UINT16)
+    private Integer d06SlotState;
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-yw.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-yw.yml
index b299563..a66f915 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-yw.yml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application-yw.yml
@@ -32,7 +32,7 @@
     password: 123456
 kangaroohy:
   milo:
-    enabled: true
+    enabled: false
     primary: default
     config:
       default:
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/resources/application.yml
index 3d17dbf..e5cbbfb 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: dev
+    active: yw
   application:
     name: cacheGlass
   liquibase:
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/config/S7Config.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/config/S7Config.java
new file mode 100644
index 0000000..987b744
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/config/S7Config.java
@@ -0,0 +1,30 @@
+package com.mes.config;
+
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
+import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 13:50
+ * @Description:
+ */
+@Configuration
+public class S7Config {
+    @Bean(name = "s7SerializerDLPOne")
+    public S7Serializer s7SerializerDLPOne() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "192.168.20.140");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+    @Bean(name = "s7SerializerDLPTwo")
+    public S7Serializer s7SerializerDLPTwo() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "192.168.20.140");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java
index 0224a8d..3e82d5c 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OPCPlcSlicecage.java
@@ -2,6 +2,7 @@
 
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
 import com.kangaroohy.milo.model.ReadWriteEntity;
 import com.kangaroohy.milo.service.MiloService;
 import com.mes.bigstorage.entity.BigStorageCageDetails;
@@ -17,12 +18,16 @@
 import com.mes.glassinfo.service.GlassInfoService;
 import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.largenscreen.entity.RunTime;
+import com.mes.s7.entity.S7DataDLPOne;
+import com.mes.s7.entity.S7DataDLPTwo;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
 import com.mes.tools.WebSocketServer;
 import com.mes.utils.RedisUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -58,9 +63,19 @@
     @Autowired(required = false)
     MiloService miloService;
 
+    @Autowired
+    @Qualifier("s7SerializerDLPOne")
+    private S7Serializer s7SerializerDLPOne;
+
+    @Autowired
+    @Qualifier("s7SerializerDLPTwo")
+    private S7Serializer s7SerializerDLPTwo;
+
     private JSONObject jsonObject = new JSONObject();
 
     public void queryDataSource1() throws Exception {
+        S7DataDLPOne s7DataDLPOne = s7SerializerDLPOne.read(S7DataDLPOne.class);
+        S7DataDLPTwo s7DataWLTwo = s7SerializerDLPTwo.read(S7DataDLPTwo.class);
         List<Double> carPostion = new ArrayList<>();
         carPostion.add(0.25);
         carPostion.add(0.5);
@@ -71,14 +86,17 @@
         try {
             //杩涚墖浠诲姟鏁版嵁
             List<BigStorageTaskVO> inTaskList = new ArrayList();
-            ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP1A.DLP1A.FROM1");
+            String fromOpcUa = s7DataDLPOne.getFrom1().toString();
+            List<Integer> states = s7DataDLPOne.getStates();
+            List<Integer> tos = s7DataDLPOne.getTos();
+            List<String> ids = s7DataDLPOne.getIds();
             for (int i = 1; i <= 6; i++) {
-                ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP1A.DLP1A.DI" + i);
-                ReadWriteEntity targetSlotWord = miloService.readFromOpcUa("DLP1A.DLP1A.TO" + i);
-                ReadWriteEntity stateWord = miloService.readFromOpcUa("DLP1A.DLP1A.STATE" + i);
-                if (null != requestWord.getValue()) {
+                String requestWord = ids.get(i - 1);
+                String targetSlotWord = tos.get(i - 1).toString();
+                String stateWord = states.get(i - 1).toString();
+                if (StringUtils.isNotEmpty(requestWord)) {
                     BigStorageTaskVO task = new BigStorageTaskVO();
-                    task.setGlassId(requestWord.getValue() + "");
+                    task.setGlassId(requestWord);
                     int isExistCount = bigStorageCageDetailsService.count(new LambdaQueryWrapper<BigStorageCageDetails>().in(BigStorageCageDetails::getGlassId, task.getGlassId())
                             .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL));
                     if (isExistCount > 0) {
@@ -86,9 +104,9 @@
                     } else {
                         task.setIsSame(0);
                     }
-                    task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + ""));
-                    task.setTargetSlot(Integer.parseInt(targetSlotWord.getValue() + ""));
-                    task.setTaskState(Integer.parseInt(stateWord.getValue() + ""));
+                    task.setStartSlot(Integer.parseInt(fromOpcUa));
+                    task.setTargetSlot(Integer.parseInt(targetSlotWord));
+                    task.setTaskState(Integer.parseInt(stateWord));
                     inTaskList.add(task);
                     continue;
                 }
@@ -99,24 +117,78 @@
         }
         try {
             //杩涚墖鑱旀満
-            ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1A.DLP1A.mesControl");
-            jsonObject.append("inkageEntity", inkageEntity.getValue());
+            Boolean inkageEntity = s7DataDLPOne.getMesControl();
+            jsonObject.append("inkageEntity", inkageEntity);
             //杩涚墖璇锋眰
-            ReadWriteEntity requestEntity = miloService.readFromOpcUa("DLP1A.DLP1A.RequestMes");
-            jsonObject.append("requestEntity", requestEntity.getValue());
+            String requestEntity = s7DataDLPOne.getRequestMes().toString();
+            jsonObject.append("requestEntity", requestEntity);
             //鍚姩鍛戒护
-            ReadWriteEntity mesReplyEntity = miloService.readFromOpcUa("DLP1A.DLP1A.MesReply");
-            jsonObject.append("mesReplyEntity", mesReplyEntity.getValue());
+            String mesReplyEntity = s7DataDLPOne.getMesReply().toString();
+            jsonObject.append("mesReplyEntity", mesReplyEntity);
             //鍑虹墖鑱旀満
-            ReadWriteEntity outInkageEntity = miloService.readFromOpcUa("DLP1B.DLP1B.mesControl");
-            jsonObject.append("outInkageEntity", outInkageEntity.getValue());
+            Boolean outInkageEntity = s7DataWLTwo.getMesControl();
+            jsonObject.append("outInkageEntity", outInkageEntity);
             //鍑虹墖璇锋眰
-            ReadWriteEntity outRequestEntity = miloService.readFromOpcUa("DLP1B.DLP1B.RequestMes");
-            jsonObject.append("outRequestEntity", outRequestEntity.getValue());
+            String outRequestEntity = s7DataWLTwo.getRequestMes().toString();
+            jsonObject.append("outRequestEntity", outRequestEntity);
 
 
             //鍑虹墖浠诲姟鏁版嵁
-            List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_one_task");
+            List<BigStorageCageTask> outTaskList = new ArrayList<>();
+            for (int i = 0; i < 6; i++) {
+
+                BigStorageCageTask bigStorageCageTask = new BigStorageCageTask();
+                String glassId = "";
+                Integer startSlot = 0;
+                Integer targetSlot = 0;
+                Integer taskState = 0;
+                switch (i) {
+                    case 0:
+                        glassId = s7DataWLTwo.getId1();
+                        startSlot = s7DataWLTwo.getFrom1();
+                        targetSlot = s7DataWLTwo.getTo1();
+                        taskState = s7DataWLTwo.getState1();
+                        ;
+                        break;
+                    case 1:
+                        glassId = s7DataWLTwo.getId2();
+                        startSlot = s7DataWLTwo.getFrom2();
+                        targetSlot = s7DataWLTwo.getTo2();
+                        taskState = s7DataWLTwo.getState2();
+                        break;
+                    case 2:
+                        glassId = s7DataWLTwo.getId3();
+                        startSlot = s7DataWLTwo.getFrom3();
+                        targetSlot = s7DataWLTwo.getTo3();
+                        taskState = s7DataWLTwo.getState3();
+                        break;
+                    case 3:
+                        glassId = s7DataWLTwo.getId4();
+                        startSlot = s7DataWLTwo.getFrom4();
+                        targetSlot = s7DataWLTwo.getTo4();
+                        taskState = s7DataWLTwo.getState4();
+                        break;
+                    case 4:
+                        glassId = s7DataWLTwo.getId5();
+                        startSlot = s7DataWLTwo.getFrom5();
+                        targetSlot = s7DataWLTwo.getTo5();
+                        taskState = s7DataWLTwo.getState5();
+                        break;
+                    case 5:
+                        glassId = s7DataWLTwo.getId6();
+                        startSlot = s7DataWLTwo.getFrom6();
+                        targetSlot = s7DataWLTwo.getTo6();
+                        taskState = s7DataWLTwo.getState6();
+                        break;
+                }
+                if (StringUtils.isNotEmpty(glassId)) {
+                    bigStorageCageTask.setGlassId(glassId);
+                    bigStorageCageTask.setStartSlot(startSlot);
+                    bigStorageCageTask.setTargetSlot(targetSlot);
+                    bigStorageCageTask.setTaskState(taskState);
+                    outTaskList.add(bigStorageCageTask);
+                }
+            }
             jsonObject.append("bigStorageCageDetailsOutTask", outTaskList);
         } catch (Exception e) {
             //todo:涓嶅仛浠诲姟澶勭悊
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
index 77649b7..f8f60df 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageNewTask.java
@@ -4,6 +4,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.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.kangaroohy.milo.model.ReadWriteEntity;
 import com.kangaroohy.milo.service.MiloService;
@@ -31,6 +32,8 @@
 import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.s7.entity.S7DataDLPOne;
+import com.mes.s7.entity.S7DataDLPTwo;
 import com.mes.sysconfig.service.SysConfigService;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
@@ -39,6 +42,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -76,6 +80,14 @@
     @Autowired(required = false)
     MiloService miloService;
 
+    @Autowired
+    @Qualifier("s7SerializerDLPOne")
+    private S7Serializer s7SerializerDLPOne;
+
+    @Autowired
+    @Qualifier("s7SerializerDLPTwo")
+    private S7Serializer s7SerializerDLPTwo;
+
     @Resource
     SysConfigService sysConfigService;
 
@@ -89,33 +101,37 @@
 
     @Scheduled(fixedDelay = 1000)
     public void inBigStorageTask() throws Exception {
-        ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1A.DLP1A.mesControl");
-        if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) {
+        S7DataDLPOne s7DataDLPOne = s7SerializerDLPOne.read(S7DataDLPOne.class);
+        log.info("杩涚墖浠诲姟寮�濮媨}", s7DataDLPOne);
+        Boolean inkageEntity = s7DataDLPOne.getMesControl();
+        if (true != inkageEntity) {
             log.info("褰撳墠涓洪潪鑱旀満鐘舵�侊紝缁撴潫杩涚墖浠诲姟");
             return;
         }
-        ReadWriteEntity requestEntity = miloService.readFromOpcUa("DLP1A.DLP1A.RequestMes");
-        if (!"1".equals(requestEntity.getValue() + "")) {
+        String requestEntity = s7DataDLPOne.getRequestMes().toString();
+        if (!"1".equals(requestEntity)) {
             log.info("褰撳墠鏈敹鍒拌繘鐗囪姹傦紝缁撴潫杩涚墖浠诲姟");
             return;
         }
-        ReadWriteEntity mesReplyEntity = miloService.readFromOpcUa("DLP1A.DLP1A.MesReply");
-        if ("1".equals(mesReplyEntity.getValue() + "")) {
+        String mesReplyEntity = s7DataDLPOne.getMesReply().toString();
+        if ("1".equals(mesReplyEntity)) {
             log.info("鏈夋鍦ㄦ墽琛岀殑浠诲姟锛岀粨鏉熻繘鐗囦换鍔�");
             return;
         }
         //鑾峰彇杩涚墖浠诲姟淇℃伅
         List<BigStorageCageTask> inTaskList = new ArrayList();
-        ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP1A.DLP1A.FROM1");
+        String fromOpcUa = s7DataDLPOne.getFrom1().toString();
+
+        List<String> ids = s7DataDLPOne.getIds();
         List<String> glassIdList = new ArrayList<>();
-        for (int i = 1; i <= 6; i++) {
-            ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP1A.DLP1A.DI" + i);
-            if (null != requestWord.getValue()) {
+        for (int i = 0; i < 6; i++) {
+            String requestWord = ids.get(i);
+            if (null != requestWord && !requestWord.isEmpty()) {
                 BigStorageCageTask task = new BigStorageCageTask();
-                task.setGlassId(requestWord.getValue() + "");
-                task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + ""));
+                task.setGlassId(requestWord);
+                task.setStartSlot(Integer.parseInt(fromOpcUa));
                 inTaskList.add(task);
-                glassIdList.add(requestWord.getValue() + "");
+                glassIdList.add(requestWord);
                 continue;
             }
         }
@@ -124,11 +140,13 @@
             return;
         }
         log.info("鑾峰彇浠诲姟鐨勭幓鐠僫d锛歿}", glassIdList);
-        ReadWriteEntity countEntity = miloService.readFromOpcUa("DLP1A.DLP1A.glassCount");
-        if (null == countEntity.getValue() || Integer.parseInt(countEntity.getValue() + "") != glassIdList.size()) {
-            log.info("褰撳墠澶ц溅杩涚墖鐜荤拑鏁伴噺{}涓巑es璇诲彇鍒扮殑鏁伴噺{}涓嶅尮閰嶏紝缁撴潫杩涚墖浠诲姟", countEntity.getValue(), glassIdList.size());
+        String countEntity = s7DataDLPOne.getGlassCount().toString();
+        if (null == countEntity || Integer.parseInt(countEntity) != glassIdList.size()) {
+            log.info("褰撳墠澶ц溅杩涚墖鐜荤拑鏁伴噺{}涓巑es璇诲彇鍒扮殑鏁伴噺{}涓嶅尮閰嶏紝缁撴潫杩涚墖浠诲姟", countEntity, glassIdList.size());
             //鍚憄lc鍙戦�佹姤璀�:褰撳墠澶ц溅杩涚墖鐜荤拑鏁伴噺涓巑es璇诲彇鍒扮殑鏁伴噺涓嶅尮閰�
-            miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 1));
+            s7DataDLPOne = new S7DataDLPOne();
+            s7DataDLPOne.setAlarmSignal(1);
+            s7SerializerDLPOne.write(s7DataDLPOne);
             return;
         }
         Map<String, Long> glassCountMap = glassIdList.stream().collect(Collectors.groupingBy(e -> e, Collectors.counting()));
@@ -136,7 +154,9 @@
             if (entry.getValue() > 1) {
                 log.info("杩涚墖鐜荤拑{}瀛樺湪鐩稿悓锛岀粨鏉熸湰娆′换鍔�", entry.getKey());
                 //鍚憄lc鍙戦�佹姤璀�:鍚屼竴杞﹁繘鐗囩幓鐠冨瓨鍦ㄧ浉鍚�
-                miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 2));
+                s7DataDLPOne = new S7DataDLPOne();
+                s7DataDLPOne.setAlarmSignal(2);
+                s7SerializerDLPOne.write(s7DataDLPOne);
                 return;
             }
         }
@@ -145,7 +165,9 @@
         if (CollectionUtil.isNotEmpty(detailsList)) {
             log.info("鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑{}锛岀粨鏉熸湰娆′换鍔�", detailsList);
             //鍚憄lc鍙戦�佹姤璀�:鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑
-            miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 4));
+            s7DataDLPOne = new S7DataDLPOne();
+            s7DataDLPOne.setAlarmSignal(4);
+            s7SerializerDLPOne.write(s7DataDLPOne);
             return;
         }
         List<GlassInfo> glassInfoList = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIdList));
@@ -153,7 +175,9 @@
         if (glassInfoList.size() != inTaskList.size()) {
             log.info("杩涚墖浠诲姟鏁伴噺{}涓庣幓鐠冩暟閲弡}涓嶅尮閰嶏紝缁撴潫鏈杩涚墖", inTaskList.size(), glassInfoList.size());
             //鍚憄lc鍙戦�佹姤璀�:杩涚墖浠诲姟鏁伴噺涓庣郴缁熸煡璇㈠埌鐨勭幓鐠冩暟閲忎笉鍖归厤
-            miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 8));
+            s7DataDLPOne = new S7DataDLPOne();
+            s7DataDLPOne.setAlarmSignal(8);
+            s7SerializerDLPOne.write(s7DataDLPOne);
             return;
         }
         Integer glassGap = sysConfigService.queryConfigValue(ConstSysConfig.VERTICAL_GLASS_GAP);
@@ -171,7 +195,10 @@
                 if (count < entry.getValue()) {
                     log.info("绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻锛岀粨鏉熸湰娆¤繘鐗�");
                     //鍚憄lc鍙戦�佹姤璀�:绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻
-                    miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 16));
+//                    miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 16));
+                    s7DataDLPOne = new S7DataDLPOne();
+                    s7DataDLPOne.setAlarmSignal(16);
+                    s7SerializerDLPOne.write(s7DataDLPOne);
                     return;
                 }
             }
@@ -184,7 +211,10 @@
             if (count > 0) {
                 log.info("鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝缁撴潫鏈杩涚墖");
                 //鍚憄lc鍙戦�佹姤璀�:鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝鏃犳硶缁х画鐩撮��
-                miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 64));
+//                miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 64));
+                s7DataDLPOne = new S7DataDLPOne();
+                s7DataDLPOne.setAlarmSignal(64);
+                s7SerializerDLPOne.write(s7DataDLPOne);
                 return;
             }
         }
@@ -206,14 +236,13 @@
                 GlassInfo info = glassListMap.get(task.getGlassId()).get(0);
                 BigStorageDTO bigStorageDTO = bigStorageGlassInfoService.queryBigStorageTargetSlot(info.getEngineerId(), info.getTemperingLayoutId(), info.getTemperingFeedSequence());
                 //鑾峰彇鐩爣鏍煎瓙淇℃伅
-//            BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info);
 //            涓存椂鏇存柊鏍煎瓙鐨勫墿浣欏昂瀵革細闃叉鐩搁偦鐜荤拑杩涘悓涓�鏍煎瓙閫犳垚鍓╀綑灏哄涓嶈冻锛岀幓鐠冭秺鐣岀殑鎯呭喌锛屼换鍔″畬鎴愬悗鍐嶆鏇存柊澶х悊鐗囩琛ㄥ墿浣欏搴︼紙鎸夌収绗煎唴鐜荤拑鏁伴噺鏇存柊澶х悊鐗囩鍓╀綑灏哄锛�
                 bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>()
                         .set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - Math.max(info.getWidth(), info.getHeight()) - glassGap)
                         .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot()));
                 task.setTargetSlot(bigStorageDTO.getSlot());
                 task.setGlassId(info.getGlassId());
-                bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", task);
+//                bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", task);
                 //瀛樻斁鍘嗗彶浠诲姟
                 BigStorageCageHistoryTask historyTask = new BigStorageCageHistoryTask();
                 BeanUtils.copyProperties(task, historyTask);
@@ -236,7 +265,6 @@
         } else {
             BigStorageCageTask task = inTaskList.get(0);
             task.setTargetSlot(THROUGH_SLOT);
-            bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", task);
             //瀛樻斁鍘嗗彶浠诲姟
             BigStorageCageHistoryTask historyTask = new BigStorageCageHistoryTask();
             BeanUtils.copyProperties(task, historyTask);
@@ -260,29 +288,53 @@
         //鍘嗗彶鏁版嵁鍏ュ簱
         bigStorageCageHistoryTaskService.saveBatch(historyTasks);
         //鍚憃pc鍙戦�佸惎鍔ㄤ俊鍙�
-        List<ReadWriteEntity> list = new ArrayList<>();
-        for (int i = 1; i <= inTaskList.size(); i++) {
-            list.add(generateReadWriteEntity("DLP1A.DLP1A.TO" + i, inTaskList.get(i - 1).getTargetSlot()));
+        s7DataDLPOne = new S7DataDLPOne();
+        for (int i = 0; i < inTaskList.size(); i++) {
+            Integer value = Integer.parseInt(inTaskList.get(i).getTargetSlot().toString());
+            switch (i) {
+                case 0:
+                    s7DataDLPOne.setTo1(value);
+                    break;
+                case 1:
+                    s7DataDLPOne.setTo2(value);
+                    break;
+                case 2:
+                    s7DataDLPOne.setTo3(value);
+                    break;
+                case 3:
+                    s7DataDLPOne.setTo4(value);
+                    break;
+                case 4:
+                    s7DataDLPOne.setTo5(value);
+                    break;
+                case 5:
+                    s7DataDLPOne.setTo6(value);
+                    break;
+            }
         }
-        list.add(generateReadWriteEntity("DLP1A.DLP1A.MesReply", 1));
-        miloService.writeToOpcWord(list);
+        s7SerializerDLPOne.write(s7DataDLPOne);
+        s7DataDLPOne = new S7DataDLPOne();
+        s7DataDLPOne.setMesReply(1);
+        s7SerializerDLPOne.write(s7DataDLPOne);
     }
 
     @Scheduled(fixedDelay = 1000)
     public void outBigStorageTask() throws Exception {
         Date startDate = new Date();
-        ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1B.DLP1B.mesControl");
-        if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) {
+        S7DataDLPTwo s7DataWLTwo = s7SerializerDLPTwo.read(S7DataDLPTwo.class);
+        log.info("鍑虹墖浠诲姟寮�濮媨}", s7DataWLTwo);
+        Boolean inkageEntity = s7DataWLTwo.getMesControl();
+        if (true != inkageEntity) {
             log.info("褰撳墠涓洪潪鑱旀満鐘舵�侊紝缁撴潫杩涚墖浠诲姟");
             return;
         }
-        ReadWriteEntity requestEntity = miloService.readFromOpcUa("DLP1B.DLP1B.RequestMes");
-        if (!"1".equals(requestEntity.getValue() + "")) {
+        String requestEntity = s7DataWLTwo.getRequestMes().toString();
+        if (!"1".equals(requestEntity)) {
             log.info("褰撳墠鏈敹鍒板嚭鐗囪姹傦紝缁撴潫鍑虹墖浠诲姟");
             return;
         }
         //鑾峰彇鍑虹墖浠诲姟琛�
-        List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_one_task");
+        List<BigStorageCageTask> outTaskList = getOutTaskList(s7DataWLTwo);
         if (CollectionUtil.isNotEmpty(outTaskList)) {
             log.info("鏈夋鍦ㄦ墽琛岀殑鍑虹墖浠诲姟锛岀粨鏉熸湰娆″嚭鐗囦换鍔�");
             return;
@@ -397,35 +449,73 @@
 
     @Scheduled(fixedDelay = 1000)
     public void finishInBigStorageTask() throws Exception {
-        ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1A.DLP1A.mesControl");
-        if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) {
+        S7DataDLPOne s7DataDLPOne = s7SerializerDLPOne.read(S7DataDLPOne.class);
+        Boolean inkageEntity = s7DataDLPOne.getMesControl();
+        if (true != inkageEntity) {
             log.info("褰撳墠涓洪潪鑱旀満鐘舵�侊紝缁撴潫瀹屾垚杩涚墖浠诲姟");
             return;
         }
         //鑾峰彇杩涚墖浠诲姟琛�
-//        List<BigStorageCageTask> inTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_in_one_task");
         List<BigStorageCageTask> inTaskList = new ArrayList();
 
         List<String> glassIdList = new ArrayList<>();
-        ReadWriteEntity toWord = miloService.readFromOpcUa("DLP1A.DLP1A.TO1");
-        if ("0".equals(toWord.getValue() + "")) {
+        String toWord = s7DataDLPOne.getTo1().toString();
+        if ("0".equals(toWord)) {
             log.info("瀹屾垚浠诲姟宸叉墽琛岋紝缁撴潫鏈瀹屾垚杩涚墖浠诲姟");
             return;
         }
-        for (int i = 1; i <= 6; i++) {
-            ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP1A.DLP1A.DI" + i);
-            ReadWriteEntity statetWord = miloService.readFromOpcUa("DLP1A.DLP1A.STATE" + i);
-            ReadWriteEntity toOpcUa = miloService.readFromOpcUa("DLP1A.DLP1A.TO" + i);
-            ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP1A.DLP1A.FROM" + i);
+        for (int i = 0; i < 6; i++) {
+            String requestWord = "";
+            String statetWord = "";
+            String toOpcUa = "";
+            String fromOpcUa = "";
+            switch (i) {
+                case 0:
+                    requestWord = s7DataDLPOne.getId1();
+                    statetWord = s7DataDLPOne.getState1().toString();
+                    toOpcUa = s7DataDLPOne.getTo1().toString();
+                    fromOpcUa = s7DataDLPOne.getFrom1().toString();
+                    break;
+                case 1:
+                    requestWord = s7DataDLPOne.getId2();
+                    statetWord = s7DataDLPOne.getState2().toString();
+                    toOpcUa = s7DataDLPOne.getTo2().toString();
+                    fromOpcUa = s7DataDLPOne.getFrom2().toString();
+                    break;
+                case 2:
+                    requestWord = s7DataDLPOne.getId3();
+                    statetWord = s7DataDLPOne.getState3().toString();
+                    toOpcUa = s7DataDLPOne.getTo3().toString();
+                    fromOpcUa = s7DataDLPOne.getFrom3().toString();
+                    break;
+                case 3:
+                    requestWord = s7DataDLPOne.getId4();
+                    statetWord = s7DataDLPOne.getState4().toString();
+                    toOpcUa = s7DataDLPOne.getTo4().toString();
+                    fromOpcUa = s7DataDLPOne.getFrom4().toString();
+                    break;
+                case 4:
+                    requestWord = s7DataDLPOne.getId5();
+                    statetWord = s7DataDLPOne.getState5().toString();
+                    toOpcUa = s7DataDLPOne.getTo5().toString();
+                    fromOpcUa = s7DataDLPOne.getFrom5().toString();
+                    break;
+                case 5:
+                    requestWord = s7DataDLPOne.getId6();
+                    statetWord = s7DataDLPOne.getState6().toString();
+                    toOpcUa = s7DataDLPOne.getTo6().toString();
+                    fromOpcUa = s7DataDLPOne.getFrom6().toString();
+                    break;
+            }
 
-            if (null != requestWord.getValue()) {
+            if (!requestWord.isEmpty()) {
                 BigStorageCageTask task = new BigStorageCageTask();
-                task.setGlassId(requestWord.getValue() + "");
-                task.setTargetSlot(Integer.parseInt(toOpcUa.getValue() + ""));
-                task.setTaskState(Integer.parseInt(statetWord.getValue() + ""));
-                task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + ""));
+                task.setGlassId(requestWord);
+                task.setTargetSlot(Integer.parseInt(toOpcUa));
+                task.setTaskState(Integer.parseInt(statetWord));
+                task.setStartSlot(Integer.parseInt(fromOpcUa));
                 inTaskList.add(task);
-                glassIdList.add(requestWord.getValue() + "");
+                glassIdList.add(requestWord);
                 continue;
             }
         }
@@ -471,28 +561,30 @@
                     .eq(BigStorageCageHistoryTask::getGlassId, item.getGlassId()));
             item.setTargetSlot(0);
             //娓呯┖浠诲姟琛ㄦ暟鎹�
-            bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", item);
         }
         //娓呯┖鍚姩鐘舵��
         //鍚憃pc鍙戦�佸惎鍔ㄤ俊鍙�
-        //鍚憃pc鍙戦�佸惎鍔ㄤ俊鍙�
-        List<ReadWriteEntity> list = new ArrayList<>();
-        for (int i = 1; i <= 6; i++) {
-            list.add(generateReadWriteEntity("DLP1A.DLP1A.TO" + i, 0));
-        }
-        list.add(generateReadWriteEntity("DLP1A.DLP1A.MesReply", 0));
-        miloService.writeToOpcWord(list);
+        s7DataDLPOne = new S7DataDLPOne();
+        s7DataDLPOne.setTo1(0);
+        s7DataDLPOne.setTo2(0);
+        s7DataDLPOne.setTo3(0);
+        s7DataDLPOne.setTo4(0);
+        s7DataDLPOne.setTo5(0);
+        s7DataDLPOne.setTo6(0);
+        s7DataDLPOne.setMesReply(0);
+        s7SerializerDLPOne.write(s7DataDLPOne);
     }
 
     @Scheduled(fixedDelay = 1000)
     public void finishOutBigStorageTask() throws Exception {
-        ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1B.DLP1B.mesControl");
-        if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) {
+        S7DataDLPTwo s7DataWLTwo = s7SerializerDLPTwo.read(S7DataDLPTwo.class);
+        Boolean inkageEntity = s7DataWLTwo.getMesControl();
+        if (true != inkageEntity) {
             log.info("褰撳墠涓洪潪鑱旀満鐘舵�侊紝缁撴潫瀹屾垚鍑虹墖浠诲姟");
             return;
         }
-        //鑾峰彇杩涚墖浠诲姟琛�
-        List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_one_task");
+        //鑾峰彇鍑虹墖浠诲姟琛�
+        List<BigStorageCageTask> outTaskList = getOutTaskList(s7DataWLTwo);
         if (CollectionUtil.isEmpty(outTaskList)) {
             log.info("褰撳墠澶ц溅鏃犲嚭鐗囩幓鐠冿紝缁撴潫瀹屾垚鍑虹墖浠诲姟");
             return;
@@ -576,10 +668,12 @@
             }
         }
 //       閲嶇疆浠诲姟琛ㄦ暟鎹�
-        bigStorageCageTaskService.updateOutTaskMessage("big_storage_cage_out_one_task");
+        resetOutTask();
         //娓呯┖鍚姩鐘舵��
         //鍚憃pc鍙戦�佸惎鍔ㄤ俊鍙�
-        miloService.writeToOpcWord(generateReadWriteEntity("DLP1B.DLP1B.MesReply", 0));
+        S7DataDLPTwo s7DataDLPTwo = new S7DataDLPTwo();
+        s7DataDLPTwo.setMesReply(0);
+        s7SerializerDLPTwo.write(s7DataDLPTwo);
     }
 
     private void dealDamageInTask(List<BigStorageCageTask> damageTaskList) {
@@ -712,12 +806,52 @@
         List<String> glassIds = bigStorageCageTaskList.stream().map(BigStorageCageTask::getGlassId).collect(Collectors.toList());
         int glassCount = bigStorageCageTaskList.size();
         //鐢熸垚鍑虹墖浠诲姟鏉℃暟涓嶈冻6琛ュ叏
-        while (bigStorageCageTaskList.size() < 6) {
-            bigStorageCageTaskList.add(new BigStorageCageTask("", 0, 0, 0));
-        }
+//        while (bigStorageCageTaskList.size() < 6) {
+//            bigStorageCageTaskList.add(new BigStorageCageTask("", 0, 0, 0));
+//        }
         //娓呯┖浠诲姟琛ㄦ暟鎹�
-        bigStorageCageTaskService.removeAll("big_storage_cage_out_one_task");
-        bigStorageCageTaskService.saveTaskMessage(tableName, bigStorageCageTaskList);
+        resetOutTask();
+        S7DataDLPTwo s7DataDLPTwo = new S7DataDLPTwo();
+        for (int i = 0; i < bigStorageCageTaskList.size() && i < 6; i++) {
+            String glassId = bigStorageCageTaskList.get(i).getGlassId();
+            Integer startSlot = bigStorageCageTaskList.get(i).getStartSlot();
+            Integer target = bigStorageCageTaskList.get(i).getTargetSlot();
+            if (startSlot > 0) {
+                switch (i) {
+                    case 0:
+                        s7DataDLPTwo.setId1(glassId);
+                        s7DataDLPTwo.setFrom1(startSlot);
+                        s7DataDLPTwo.setTo1(target);
+                        break;
+                    case 1:
+                        s7DataDLPTwo.setId2(glassId);
+                        s7DataDLPTwo.setFrom2(startSlot);
+                        s7DataDLPTwo.setTo2(target);
+                        break;
+                    case 2:
+                        s7DataDLPTwo.setId3(glassId);
+                        s7DataDLPTwo.setFrom3(startSlot);
+                        s7DataDLPTwo.setTo3(target);
+                        break;
+                    case 3:
+                        s7DataDLPTwo.setId4(glassId);
+                        s7DataDLPTwo.setFrom4(startSlot);
+                        s7DataDLPTwo.setTo4(target);
+                        break;
+                    case 4:
+                        s7DataDLPTwo.setId5(glassId);
+                        s7DataDLPTwo.setFrom5(startSlot);
+                        s7DataDLPTwo.setTo5(target);
+                        break;
+                    case 5:
+                        s7DataDLPTwo.setId6(glassId);
+                        s7DataDLPTwo.setFrom6(startSlot);
+                        s7DataDLPTwo.setTo6(target);
+                        break;
+                }
+            }
+        }
+        s7SerializerDLPTwo.write(s7DataDLPTwo);
         List<BigStorageCageHistoryTask> historyList = bigStorageCageTaskList.stream().filter(e -> StringUtils.isNotBlank(e.getGlassId())).map(e -> {
             BigStorageCageHistoryTask history = new BigStorageCageHistoryTask();
             BeanUtils.copyProperties(e, history);
@@ -734,7 +868,10 @@
                 .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)
                 .in(BigStorageCageDetails::getGlassId, glassIds));
         try {
-            miloService.writeToOpcWord(generateReadWriteEntity("DLP1B.DLP1B.MesReply", 1));
+//            miloService.writeToOpcWord(generateReadWriteEntity("DLP1B.DLP1B.MesReply", 1));
+            s7DataDLPTwo = new S7DataDLPTwo();
+            s7DataDLPTwo.setMesReply(1);
+            s7SerializerDLPTwo.write(s7DataDLPTwo);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -791,7 +928,10 @@
                 .set(Const.GLASS_STATE_SCHEDULE_ING.equals(state), BigStorageCageBaseInfo::getSlot, targetSlot)
                 .in(BigStorageCageDetails::getGlassId, glassIds));
         try {
-            miloService.writeToOpcWord(generateReadWriteEntity("DLP1B.DLP1B.MesReply", 1));
+//            miloService.writeToOpcWord(generateReadWriteEntity("DLP1B.DLP1B.MesReply", 1));
+            S7DataDLPTwo s7DataDLPTwo = new S7DataDLPTwo();
+            s7DataDLPTwo.setMesReply(1);
+            s7SerializerDLPTwo.write(s7DataDLPTwo);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -833,4 +973,54 @@
                 .value(value)
                 .build();
     }
+
+    //閲嶇疆浠诲姟琛�
+    private void resetOutTask() {
+        S7DataDLPTwo s7DataDLPTwo = new S7DataDLPTwo();
+        s7DataDLPTwo.setId1("");
+        s7DataDLPTwo.setId2("");
+        s7DataDLPTwo.setId3("");
+        s7DataDLPTwo.setId4("");
+        s7DataDLPTwo.setId5("");
+        s7DataDLPTwo.setId6("");
+        s7DataDLPTwo.setFrom1(0);
+        s7DataDLPTwo.setFrom2(0);
+        s7DataDLPTwo.setFrom3(0);
+        s7DataDLPTwo.setFrom4(0);
+        s7DataDLPTwo.setFrom5(0);
+        s7DataDLPTwo.setFrom6(0);
+        s7DataDLPTwo.setTo1(0);
+        s7DataDLPTwo.setTo2(0);
+        s7DataDLPTwo.setTo3(0);
+        s7DataDLPTwo.setTo4(0);
+        s7DataDLPTwo.setTo5(0);
+        s7DataDLPTwo.setTo6(0);
+        s7DataDLPTwo.setState1(0);
+        s7DataDLPTwo.setState2(0);
+        s7DataDLPTwo.setState3(0);
+        s7DataDLPTwo.setState4(0);
+        s7DataDLPTwo.setState5(0);
+        s7DataDLPTwo.setState6(0);
+        s7SerializerDLPTwo.write(s7DataDLPTwo);
+    }
+
+    //璇诲彇鍑虹墖鍦板潃
+    private List<BigStorageCageTask> getOutTaskList(S7DataDLPTwo s7DataDLPTwo) {
+        List<BigStorageCageTask> outTaskList = new ArrayList<>();
+        List<String> glassIds = s7DataDLPTwo.getIds();
+        List<Integer> startSlots = s7DataDLPTwo.getFroms();
+        List<Integer> endSlots = s7DataDLPTwo.getTos();
+        List<Integer> states = s7DataDLPTwo.getStates();
+        for (int i = 0; i < 6; i++) {
+            if (glassIds.get(i) != null && !glassIds.get(i).isEmpty()) {
+                BigStorageCageTask bigStorageCageTask = new BigStorageCageTask();
+                bigStorageCageTask.setGlassId(glassIds.get(i));
+                bigStorageCageTask.setStartSlot(startSlots.get(i));
+                bigStorageCageTask.setTargetSlot(endSlots.get(i));
+                bigStorageCageTask.setTaskState(states.get(i));
+                outTaskList.add(bigStorageCageTask);
+            }
+        }
+        return outTaskList;
+    }
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/s7/entity/S7DataDLPOne.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/s7/entity/S7DataDLPOne.java
new file mode 100644
index 0000000..a99b348
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/s7/entity/S7DataDLPOne.java
@@ -0,0 +1,118 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.Data;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+public class S7DataDLPOne {
+
+
+    @S7Variable(address = "DB3.3118.0", type = EDataType.BOOL)
+    private Boolean mesControl;
+
+    @S7Variable(address = "DB7.0", type = EDataType.UINT16)
+    private Integer requestMes;
+
+    @S7Variable(address = "DB7.2", type = EDataType.UINT16)
+    private Integer mesReply;
+
+    @S7Variable(address = "DB7.140", type = EDataType.UINT16)
+    private Integer from1;
+
+    @S7Variable(address = "DB7.142", type = EDataType.UINT16)
+    private Integer from2;
+
+    @S7Variable(address = "DB7.144", type = EDataType.UINT16)
+    private Integer from3;
+
+    @S7Variable(address = "DB7.146", type = EDataType.UINT16)
+    private Integer from4;
+
+    @S7Variable(address = "DB7.148", type = EDataType.UINT16)
+    private Integer from5;
+
+    @S7Variable(address = "DB7.150", type = EDataType.UINT16)
+    private Integer from6;
+
+    @S7Variable(address = "DB7.152", type = EDataType.UINT16)
+    private Integer to1;
+
+    @S7Variable(address = "DB7.154", type = EDataType.UINT16)
+    private Integer to2;
+
+    @S7Variable(address = "DB7.156", type = EDataType.UINT16)
+    private Integer to3;
+
+    @S7Variable(address = "DB7.158", type = EDataType.UINT16)
+    private Integer to4;
+
+    @S7Variable(address = "DB7.160", type = EDataType.UINT16)
+    private Integer to5;
+
+    @S7Variable(address = "DB7.162", type = EDataType.UINT16)
+    private Integer to6;
+
+    @S7Variable(address = "DB7.164", type = EDataType.UINT16)
+    private Integer state1;
+
+    @S7Variable(address = "DB7.166", type = EDataType.UINT16)
+    private Integer state2;
+
+    @S7Variable(address = "DB7.168", type = EDataType.UINT16)
+    private Integer state3;
+
+    @S7Variable(address = "DB7.170", type = EDataType.UINT16)
+    private Integer state4;
+
+    @S7Variable(address = "DB7.172", type = EDataType.UINT16)
+    private Integer state5;
+
+    @S7Variable(address = "DB7.174", type = EDataType.UINT16)
+    private Integer state6;
+
+    @S7Variable(address = "DB7.1246", type = EDataType.UINT16)
+    private Integer glassCount;
+
+    @S7Variable(address = "DB7.8", type = EDataType.STRING, count = 14)
+    private String id1;
+
+    @S7Variable(address = "DB7.30", type = EDataType.STRING, count = 14)
+    private String id2;
+
+    @S7Variable(address = "DB7.52", type = EDataType.STRING, count = 14)
+    private String id3;
+
+    @S7Variable(address = "DB7.74", type = EDataType.STRING, count = 14)
+    private String id4;
+
+    @S7Variable(address = "DB7.96", type = EDataType.STRING, count = 14)
+    private String id5;
+
+    @S7Variable(address = "DB7.118", type = EDataType.STRING, count = 14)
+    private String id6;
+
+    @S7Variable(address = "MW1002", type = EDataType.UINT16)
+    private Integer alarmSignal;
+
+    public List<Integer> getStates() {
+        return Arrays.asList(state1, state2, state3, state4, state5, state6);
+    }
+
+    public List<String> getIds() {
+        return Arrays.asList(id1, id2, id3, id4, id5, id6);
+    }
+
+    public List<Integer> getTos() {
+        return Arrays.asList(to1, to2, to3, to4, to5, to6);
+    }
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/s7/entity/S7DataDLPTwo.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/s7/entity/S7DataDLPTwo.java
new file mode 100644
index 0000000..6953681
--- /dev/null
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/s7/entity/S7DataDLPTwo.java
@@ -0,0 +1,117 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import io.swagger.models.auth.In;
+import lombok.Data;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+public class S7DataDLPTwo {
+
+
+    @S7Variable(address = "DB3.3118.0", type = EDataType.BOOL)
+    private Boolean mesControl;
+
+    @S7Variable(address = "DB7.4", type = EDataType.UINT16)
+    private Integer requestMes;
+
+    @S7Variable(address = "DB7.6", type = EDataType.UINT16)
+    private Integer mesReply;
+
+    @S7Variable(address = "DB7.308", type = EDataType.UINT16)
+    private Integer from1;
+
+    @S7Variable(address = "DB7.310", type = EDataType.UINT16)
+    private Integer from2;
+
+    @S7Variable(address = "DB7.312", type = EDataType.UINT16)
+    private Integer from3;
+
+    @S7Variable(address = "DB7.314", type = EDataType.UINT16)
+    private Integer from4;
+
+    @S7Variable(address = "DB7.316", type = EDataType.UINT16)
+    private Integer from5;
+
+    @S7Variable(address = "DB7.318", type = EDataType.UINT16)
+    private Integer from6;
+
+    @S7Variable(address = "DB7.320", type = EDataType.UINT16)
+    private Integer to1;
+
+    @S7Variable(address = "DB7.322", type = EDataType.UINT16)
+    private Integer to2;
+
+    @S7Variable(address = "DB7.324", type = EDataType.UINT16)
+    private Integer to3;
+
+    @S7Variable(address = "DB7.326", type = EDataType.UINT16)
+    private Integer to4;
+
+    @S7Variable(address = "DB7.328", type = EDataType.UINT16)
+    private Integer to5;
+
+    @S7Variable(address = "DB7.330", type = EDataType.UINT16)
+    private Integer to6;
+
+    @S7Variable(address = "DB7.332", type = EDataType.UINT16)
+    private Integer state1;
+
+    @S7Variable(address = "DB7.334", type = EDataType.UINT16)
+    private Integer state2;
+
+    @S7Variable(address = "DB7.336", type = EDataType.UINT16)
+    private Integer state3;
+
+    @S7Variable(address = "DB7.338", type = EDataType.UINT16)
+    private Integer state4;
+
+    @S7Variable(address = "DB7.340", type = EDataType.UINT16)
+    private Integer state5;
+
+    @S7Variable(address = "DB7.342", type = EDataType.UINT16)
+    private Integer state6;
+
+    @S7Variable(address = "DB7.176", type = EDataType.STRING, count = 14)
+    private String id1;
+
+    @S7Variable(address = "DB7.198", type = EDataType.STRING, count = 14)
+    private String id2;
+
+    @S7Variable(address = "DB7.220", type = EDataType.STRING, count = 14)
+    private String id3;
+
+    @S7Variable(address = "DB7.242", type = EDataType.STRING, count = 14)
+    private String id4;
+
+    @S7Variable(address = "DB7.264", type = EDataType.STRING, count = 14)
+    private String id5;
+
+    @S7Variable(address = "DB7.286", type = EDataType.STRING, count = 14)
+    private String id6;
+
+    public List<Integer> getStates() {
+        return Arrays.asList(state1, state2, state3, state4, state5, state6);
+    }
+
+    public List<String> getIds() {
+        return Arrays.asList(id1, id2, id3, id4, id5, id6);
+    }
+
+    public List<Integer> getTos() {
+        return Arrays.asList(to1, to2, to3, to4, to5, to6);
+    }
+
+    public List<Integer> getFroms() {
+        return Arrays.asList(from1, from2, from3, from4, from5, from6);
+    }
+
+}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-yw.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-yw.yml
index 89e07f7..46671eb 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-yw.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-yw.yml
@@ -30,7 +30,7 @@
     password: 123456
 kangaroohy:
   milo:
-    enabled: true
+    enabled: false
     primary: default
     config:
       default:
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
index f6baa40..5520b25 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: yw
   application:
     name: cacheVerticalGlass
   liquibase:
@@ -15,8 +15,8 @@
       thread-name-prefix: task-cacheVertical
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
-  configuration:
-    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+#  configuration:
+#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
 mes:
   sequence:
     order: true
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/config/S7Config.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/config/S7Config.java
new file mode 100644
index 0000000..91999e3
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/config/S7Config.java
@@ -0,0 +1,37 @@
+package com.mes.config;
+
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
+import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 13:50
+ * @Description:
+ */
+@Configuration
+public class S7Config {
+
+    @Bean(name = "s7SerializerCC")
+    public S7Serializer s7SerializerCC() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.80");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+    @Bean(name = "s7SerializerSPOne")
+    public S7Serializer s7SerializerSPOne() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.15");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+    @Bean(name = "s7SerializerSPTwo")
+    public S7Serializer s7SerializerSPTwo() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.21");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+}
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
index fc39593..049549b 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
@@ -17,11 +17,14 @@
 import com.mes.rawglassstation.service.RawGlassStorageStationService;
 import com.mes.rawglasstask.entity.RawGlassStorageTask;
 import com.mes.rawglasstask.service.RawGlassStorageTaskService;
+import com.mes.s7.entity.S7DataCC;
+import com.mes.s7.entity.S7DataSP;
 import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.uppattenusage.entity.vo.UpPattenUsageVO;
 import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
@@ -58,8 +61,17 @@
     @Autowired(required = false)
     private MiloService miloService;
 
-    @Autowired(required = false)
-    S7Serializer s7Serializer;
+    @Autowired
+    @Qualifier("s7SerializerCC")
+    S7Serializer s7SerializerCC;
+
+    @Autowired
+    @Qualifier("s7SerializerSPOne")
+    private S7Serializer s7SerializerSPOne;
+
+    @Autowired
+    @Qualifier("s7SerializerSPTwo")
+    private S7Serializer s7SerializerSPTwo;
 
 
     private static final String LOAD_GLASS_DEVICE_ONE_TASK = "load_glass_device_one_task";
@@ -76,39 +88,25 @@
 
     @Scheduled(fixedDelay = 1000)
     public void rawStorageTask() throws Exception {
-//        S7Data S7DataWL1 = s7Serializer.read(S7Data.class);
-//        String requestWord = S7DataWL1.getRequest().toString();
-//        String confireWord = S7DataWL1.getConfirmation().toString();
-//        String reportWord = S7DataWL1.getReportWord().toString();
-//        String taskWord = S7DataWL1.getTaskWord().toString();
-//        String requestValue = requestWord;
-        ReadWriteEntity requestWord = miloService.readFromOpcUa("CC.CC.request");
-        ReadWriteEntity confireWord = miloService.readFromOpcUa("CC.CC.confirmation");
-        ReadWriteEntity reportWord = miloService.readFromOpcUa("CC.CC.reportWord");
-        ReadWriteEntity taskWord = miloService.readFromOpcUa("CC.CC.taskWord");
-        String requestValue = requestWord.getValue() + "";
+        S7DataCC S7DataCCOne = s7SerializerCC.read(S7DataCC.class);
+        log.info("浠撳偍閫氳璇诲彇{}", S7DataCCOne);
+        String requestWord = S7DataCCOne.getRequest().toString();
+        String confireWord = S7DataCCOne.getConfirmation().toString();
+        String reportWord = S7DataCCOne.getReportWord().toString();
+        String taskWord = S7DataCCOne.getTaskWord().toString();
+        String requestValue = requestWord;
         if ("0".equals(requestValue)) {
             if ("1".equals(confireWord) && "0".equals(reportWord)) {
-//            if ("1".equals(confireWord.getValue() + "") && "0".equals(reportWord.getValue() + "")) {
-//                S7Data s7Data = new S7Data();
-//                s7Data.setConfirmation((short) 0);
-//                s7Serializer.write(s7Data);
-                List<ReadWriteEntity> list = new ArrayList<>();
-                list.add(generateReadWriteEntity("CC.CC.confirmation", 0));
-                miloService.writeToOpcWord(list);
+                S7DataCC s7Data = new S7DataCC();
+                s7Data.setConfirmation(0);
+                s7SerializerCC.write(s7Data);
             }
-//            if ("1".equals(taskWord)) {
-          if ("1".equals(taskWord.getValue() + "")) {
-//                S7Data s7Data = new S7Data();
-//                s7Data.setTaskWord((short) 0);
-//                s7Data.setStartSlot((short) 0);
-//                s7Data.setEndSlot((short) 0);
-//                s7Serializer.write(s7Data);
-                List<ReadWriteEntity> list = new ArrayList<>();
-                list.add(generateReadWriteEntity("CC.CC.taskWord", 0));
-                list.add(generateReadWriteEntity("CC.CC.startSlot", 0));
-                list.add(generateReadWriteEntity("CC.CC.endSlot", 0));
-                miloService.writeToOpcWord(list);
+            if ("1".equals(taskWord)) {
+                S7DataCC s7Data = new S7DataCC();
+                s7Data.setTaskWord(0);
+                s7Data.setStartSlot(0);
+                s7Data.setEndSlot(0);
+                s7SerializerCC.write(s7Data);
             }
             return;
         }
@@ -148,10 +146,8 @@
 
     @Scheduled(fixedDelay = 1000)
     public void rawStorageInCar() throws Exception {
-//        S7Data S7DataWL1 = s7Serializer.read(S7Data.class);
-//        String value = S7DataWL1.getInCar().toString();
-        ReadWriteEntity entity = miloService.readFromOpcUa("CC.CC.inCar");
-        String value = entity.getValue() + "";
+        S7DataCC S7DataCCOne = s7SerializerCC.read(S7DataCC.class);
+        String value = S7DataCCOne.getInCar().toString();
         if (!"1".equals(value)) {
             log.info("澶ц溅涓婃病鏈夋灦瀛�");
             return;
@@ -169,10 +165,8 @@
 
     @Scheduled(fixedDelay = 1000)
     public void rawStorageFinish() throws Exception {
-//        S7Data S7DataWL1 = s7Serializer.read(S7Data.class);
-//        String value = S7DataWL1.getReportWord().toString();
-        ReadWriteEntity entity = miloService.readFromOpcUa("CC.CC.reportWord");
-        String value = entity.getValue() + "";
+        S7DataCC S7DataCCOne = s7SerializerCC.read(S7DataCC.class);
+        String value = S7DataCCOne.getReportWord().toString();
         if ("0".equals(value)) {
             log.info("褰撳墠浠诲姟鏈眹鎶ワ紝缁撴潫鏈浠诲姟");
             return;
@@ -235,12 +229,9 @@
                     .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_FAILURE));
 
         }
-//        S7Data s7Data = new S7Data();
-//        s7Data.setConfirmation((short) 1);
-//        s7Serializer.write(s7Data);
-        List<ReadWriteEntity> list = new ArrayList<>();
-        list.add(generateReadWriteEntity("CC.CC.confirmation", 1));
-        miloService.writeToOpcWord(list);
+        S7DataCC s7Data = new S7DataCC();
+        s7Data.setConfirmation(1);
+        s7SerializerCC.write(s7Data);
     }
 
     private boolean isHasRunningTask() {
@@ -297,13 +288,6 @@
         //鐢熸垚鍑哄簱浠诲姟
         rawGlassStorageDetailsService.generateTask(startSlot, lefting, startSlot, rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_OUT);
 
-//        List<ReadWriteEntity> list = new ArrayList<>();
-//        list.add(generateReadWriteEntity("CC.CC.taskWord", 1));
-//        list.add(generateReadWriteEntity("CC.CC.taskSending", 1));
-//        list.add(generateReadWriteEntity("CC.CC.startSlot", startSlot));
-//        list.add(generateReadWriteEntity("CC.CC.endSlot", lefting));
-//        miloService.writeToOpcWord(list);
-
         //淇敼鍑虹墖浠诲姟鐘舵��
         rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                 .eq(RawGlassStorageDetails::getSlot, rawGlassList.get(0).getSlot())
@@ -325,15 +309,6 @@
             return Boolean.FALSE;
         }
         //鐢熸垚澶嶄綅浠诲姟
-
-//        rawGlassStorageDetailsService.generatask(rawGlassList.get(0).getSlot(), rawGlassList.get(0).getShelf(), rawGlassList.get(0).getShelf(), rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);
-
-//        List<ReadWriteEntity> list = new ArrayList<>();
-//        list.add(generateReadWriteEntity("CC.CC.taskWord", 1));
-//        list.add(generateReadWriteEntity("CC.CC.taskSending", 1));
-//        list.add(generateReadWriteEntity("CC.CC.startSlot", startSlot));
-//        list.add(generateReadWriteEntity("CC.CC.endSlot", lefting));
-//        miloService.writeToOpcWord(list);
 
         //淇敼澶嶄綅浠诲姟鐘舵��
         rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
@@ -362,12 +337,6 @@
         RawGlassStorageDetails details = rawGlassList.get(0);
         rawGlassStorageDetailsService.generateTask(details.getSlot(), details.getShelf(), details.getShelf(),
                 details.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_IN);
-//        List<ReadWriteEntity> list = new ArrayList<>();
-//        list.add(generateReadWriteEntity("CC.CC.taskWord", 1));
-//        list.add(generateReadWriteEntity("CC.CC.taskSending", 1));
-//        list.add(generateReadWriteEntity("CC.CC.startSlot", details.getSlot()));
-//        list.add(generateReadWriteEntity("CC.CC.endSlot", details.getShelf()));
-//        miloService.writeToOpcWord(list);
         //鐢熸垚宸ヤ綅浠诲姟锛屽皢鍚婅浣嶇殑鐜荤拑鐘舵�佹敼浣嶈繘绗间腑
         //淇敼鍚婅浣嶇殑鍘熺墖鐘舵�佷负103 鍑虹墖涓�
         //淇敼鍑虹墖浠诲姟鐘舵��
@@ -433,7 +402,7 @@
         if (CollectionUtils.isEmpty(loadStationList)) {
             log.info("1鍙蜂笂鐗囦綅鐢熸垚璋冨害浠诲姟");
             RawGlassStorageDetails rawDetails = getRawGlassStorageDetailsBySize(usageVOS.get(0), usageVOS.size());
-            if (CollectionUtils.isEmpty(loadStationList)) {
+            if (rawDetails == null) {
                 log.info("浠撳簱鍐呮棤鍖归厤鐨勭幓鐠�");
                 return Boolean.FALSE;
             }
@@ -487,7 +456,12 @@
                     RawGlassStorageDetails twoLoadStation = loadStationList.stream().filter(e -> e.getSlot().equals(loadStation.get(1))).findFirst().orElse(null);
                     if (null == twoLoadStation) {
                         //鎸夌収灏哄鐢熸垚浜屽彿浣嶄笂鐗囦换鍔′俊鎭�
-                        LoadGlassDeviceTask loadTask = loadGlassDeviceTaskService.queryTaskMessage(tableName);
+                        S7DataSP loadTask = new S7DataSP();
+                        if (stationCell == 5) {
+                            loadTask = s7SerializerSPOne.read(S7DataSP.class);
+                        } else {
+                            loadTask = s7SerializerSPTwo.read(S7DataSP.class);
+                        }
                         RawGlassStorageDetails rawDetails = null;
                         if (oneLoadStation.getRemainQuantity() > (loadTask.getTotalCount() + loadTask.getDamageCount())) {
                             usageVOS = upListMap.get("2");
@@ -513,7 +487,12 @@
                     } else {
                         //todo:褰撲簩鍙蜂负鐨勫昂瀵稿ぇ浜�0鏃讹紝鏄惁鎵ц璋冨害浠诲姟锛屾洿鎹㈠綋鍓嶅師鐗囩殑灏哄锛岀瓑寰呬笅涓�娆′换鍔$殑鐩存帴鎵ц锛涜繕鏄户缁瓑寰咃紝褰撳昂瀵镐笉涓�鏍凤紝绛夊緟涓�鍙峰伐浣嶇殑杩涘嚭搴撹皟搴︿换鍔°��
                         if (twoLoadStation.getRemainQuantity() > 0) {
-                            LoadGlassDeviceTask loadTask = loadGlassDeviceTaskService.queryTaskMessage(tableName);
+                            S7DataSP loadTask = new S7DataSP();
+                            if (stationCell == 5) {
+                                loadTask = s7SerializerSPOne.read(S7DataSP.class);
+                            } else {
+                                loadTask = s7SerializerSPTwo.read(S7DataSP.class);
+                            }
                             if (oneLoadStation.getRemainQuantity() > (loadTask.getTotalCount() + loadTask.getDamageCount())) {
                                 usageVOS = upListMap.get("2");
                                 if (CollectionUtils.isEmpty(usageVOS)) {
@@ -545,7 +524,6 @@
                             return Boolean.TRUE;
                         }
                     }
-//                    return Boolean.FALSE;
                 } else {
                     log.info("2鍙蜂笂鐗囦綅浠呭墿绌烘灦瀛愶紝1鍙蜂笂鐗囦綅鐢熸垚鍑哄簱璋冨害浠诲姟");
                     rawGlassStorageDetailsService.generateTask(loadStation.get(0), oneLoadStation.getShelf(), oneLoadStation.getShelf(), oneLoadStation.getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH);
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/s7/entity/S7DataCC.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/s7/entity/S7DataCC.java
new file mode 100644
index 0000000..45e58f1
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/s7/entity/S7DataCC.java
@@ -0,0 +1,52 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+public class S7DataCC {
+
+    @S7Variable(address = "DB38.0", type = EDataType.UINT16)
+    private Integer request;
+
+    @S7Variable(address = "DB38.2", type = EDataType.UINT16)
+    private Integer requestId;
+
+    @S7Variable(address = "DB38.10", type = EDataType.UINT16)
+    private Integer reportWord;
+
+    @S7Variable(address = "DB38.12", type = EDataType.UINT16)
+    private Integer reportId;
+
+    @S7Variable(address = "DB38.18", type = EDataType.UINT16)
+    private Integer inCar;
+
+    @S7Variable(address = "DB38.20", type = EDataType.UINT16)
+    private Integer taskWord;
+
+    @S7Variable(address = "DB38.22", type = EDataType.UINT16)
+    private Integer taskId;
+
+    @S7Variable(address = "DB38.24", type = EDataType.UINT16)
+    private Integer startSlot;
+
+    @S7Variable(address = "DB38.26", type = EDataType.UINT16)
+    private Integer endSlot;
+
+    @S7Variable(address = "DB38.28", type = EDataType.UINT16)
+    private Integer taskSending;
+
+    @S7Variable(address = "DB38.40", type = EDataType.UINT16)
+    private Integer confirmation;
+
+    @S7Variable(address = "DB38.42", type = EDataType.UINT16)
+    private Integer confirmationId;
+
+
+}
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/s7/entity/S7DataSP.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/s7/entity/S7DataSP.java
new file mode 100644
index 0000000..75a6e09
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/s7/entity/S7DataSP.java
@@ -0,0 +1,44 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+public class S7DataSP {
+
+
+    @S7Variable(address = "DB19.14", type = EDataType.UINT16)
+    private Integer taskState;
+
+    @S7Variable(address = "DB19.18", type = EDataType.UINT16)
+    private Integer damageCount;
+
+    @S7Variable(address = "DB19.20", type = EDataType.UINT16)
+    private Integer rawGlassWidth;
+
+    @S7Variable(address = "DB19.22", type = EDataType.UINT16)
+    private Integer rawGlassHeight;
+
+    @S7Variable(address = "DB19.24", type = EDataType.UINT16)
+    private Integer slot;
+
+    @S7Variable(address = "DB19.26", type = EDataType.UINT16)
+    private Integer totalCount;
+
+    @S7Variable(address = "DB19.28", type = EDataType.UINT16)
+    private Integer finishCount;
+
+    @S7Variable(address = "DB19.16.0", type = EDataType.BOOL)
+    private Boolean taskRunning;
+
+    @S7Variable(address = "DB19.30", type = EDataType.UINT16)
+    private Integer inkageState;
+
+
+}
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml
index 0f04863..9aef028 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-prod.yml
@@ -5,7 +5,7 @@
       strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
       datasource:
         northGlassMes:
-          url: jdbc:mysql://10.153.19.150:3306/north_glass_mes?serverTimezone=GMT%2b8
+          url: jdbc:mysql://10.153.19.150:3306/north_glass_mes?serverTimezone=GMT%2b8&allowMultiQueries=true
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-yw.yml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-yw.yml
index aa31552..eb4b671 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-yw.yml
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application-yw.yml
@@ -23,7 +23,7 @@
     password: 123456
 kangaroohy:
   milo:
-    enabled: true
+    enabled: false
     primary: default
     config:
       default:
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml
index 3870eb2..d64339a 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
 
 spring:
   profiles:
-    active: dev
+    active: yw
   application:
     name: glassStorage
   liquibase:
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/logback-spring.xml b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..deccb2d
--- /dev/null
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/resources/logback-spring.xml
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration scan="true" scanPeriod="10 seconds">
+    <!-- logger涓婁笅鏂囧悕绉帮紙鏍规嵁涓氬姟淇敼锛� -->
+    <contextName>glassStorage</contextName>
+
+    <!-- 瀹氫箟浜嗕竴涓悕涓簊erverName鐨勫睘鎬э紝瀹冪殑鍊兼潵鑷簬logging.file.name锛屽鏋滄病鏈夋壘鍒拌灞炴�ч粯璁や负MyServerName锛堟牴鎹笟鍔′慨鏀癸級 -->
+    <springProperty name="serverName" source="logging.file.name" defaultValue="glassStorage"/>
+    <springProperty name="logging.path" source="logging.file.path" defaultValue="././logs/"/>
+
+    <!-- 褰╄壊鏃ュ織渚濊禆鐨勬覆鏌撶被 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓篶lr鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ColorConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗘棩蹇楄緭鍑轰腑鐨勬枃鏈潃鑹诧紝浠ヤ究鏇村鏄撳湴鍖哄垎涓嶅悓鐨勬棩蹇楃骇鍒垨鍏朵粬淇℃伅 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+    <!-- WhitespaceThrowableProxyConverter鍜孍xtendedWhitespaceThrowableProxyConverter閮芥槸鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず鐨勭被銆傚畠浠箣闂寸殑鍖哄埆鍦ㄤ簬锛孍xtendedWhitespaceThrowableProxyConverter鍦ㄨ緭鍑哄紓甯镐俊鎭椂浼氬寘鍚洿澶氱殑璇︾粏淇℃伅锛屼緥濡傚紓甯哥殑绫诲悕銆佹柟娉曞悕鍜岃鍙风瓑 -->
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wex"
+                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+    <!-- 瀹氫箟浜嗕竴涓悕涓簑Ex鐨勮浆鎹㈣鍒欙紝瀹冧娇鐢╫rg.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter绫昏繘琛岃浆鎹紝杩欎釜鍏冪礌閫氬父鐢ㄤ簬灏嗗紓甯镐俊鎭浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <conversionRule conversionWord="wEx"
+                    converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+
+    <!-- 褰╄壊鏃ュ織鏍煎紡 -->
+    <!-- value鍊兼槸鏃ュ織杈撳嚭妯℃澘锛� :-鏄睘鎬у悕鍜屽叾榛樿鍊间箣闂寸殑鍒嗛殧绗︼紝浣滅敤涓�:鐩稿悓 -->
+    <!-- 瀹氫箟鏃ュ織杈撳嚭鏍煎紡鐨勮浆鎹㈣鍒欙紝%d{yyyy-MM-dd HH:mm:ss.SSS}琛ㄧず鏃ユ湡鍜屾椂闂达紝%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{faint}琛ㄧず浣跨敤娣¤壊 -->
+    <!-- %5p琛ㄧず鏃ュ織绾у埆杈撳嚭鍙冲榻愶紝宸﹁竟浠ョ┖鏍煎~鍏� -->
+    <!-- ${PID:- }琛ㄧず杩涚▼ID锛�%clr琛ㄧず灏嗚緭鍑烘枃鏈潃鑹诧紝{magenta}琛ㄧず浣跨敤娲嬬孩鑹� -->
+    <!-- -琛ㄧず涓�涓垎闅旂 -->
+    <!-- %t锛氭樉绀轰骇鐢熻鏃ュ織鐨勭嚎绋嬪悕锛�%15锛氳嫢瀛楃闀垮害灏忎簬15锛屽垯宸﹁竟鐢ㄧ┖鏍煎~鍏咃紱%.15锛氳嫢瀛楃闀垮害瓒呰繃15锛屾埅鍘诲浣欏瓧绗� -->
+    <!-- %-40锛氳嫢瀛楃闀垮害灏忎簬40锛屽垯鍙宠竟鐢ㄧ┖鏍煎~鍏咃紱%.40锛氳嫢瀛楃闀垮害瓒呰繃40锛屾埅鍘诲浣欏瓧绗︼紱logger{39}瀵瑰簲鐨勬槸鈥渓ogging.WARNING鈥濈骇鍒�傚叿浣撴潵璇达紝Python鐨刲ogging妯″潡瀹氫箟浜嗕互涓嬪嚑涓骇鍒紙浠庝綆鍒伴珮锛夛細NOTSET銆丏EBUG銆両NFO銆乄ARNING銆丒RROR銆丆RITICAL銆傚洜姝わ紝logger{39}琛ㄧず鐨勬槸WARNING绾у埆锛屽嵆鏃ュ織璁板綍鍣ㄤ細璁板綍鎵�鏈塛ARNING绾у埆鍙婁互涓婄殑鏃ュ織淇℃伅 -->
+    <!-- %m琛ㄧず鏃ュ織娑堟伅锛�%n琛ㄧず鎹㈣绗︼紱${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}琛ㄧず寮傚父淇℃伅銆傚鏋滄棩蹇楄緭鍑轰腑鍖呭惈寮傚父淇℃伅锛岃繖涓鍒欏皢浼氬皢鍏惰浆鎹负瀛楃涓诧紝骞跺皢鍏朵腑鐨勬崲琛岀鏇挎崲涓虹┖鏍硷紝浠ヤ究鏇村鏄撳湴鍦ㄦ棩蹇楄緭鍑轰腑鏄剧ず -->
+    <property name="CONSOLE_LOG_PATTERN"
+              value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+    <!--1. 杈撳嚭鍒版帶鍒跺彴-->
+    <!-- 瀹氫箟鎺у埗鍙版棩蹇楄緭鍑虹殑appender锛宑lass="ch.qos.logback.core.ConsoleAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凜onsoleAppender绫绘潵杈撳嚭鏃ュ織鍒版帶鍒跺彴 -->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--姝ゆ棩蹇梐ppender鏄负寮�鍙戜娇鐢紝鍙厤缃渶搴曠骇鍒紝鎺у埗鍙拌緭鍑虹殑鏃ュ織绾у埆鏄ぇ浜庢垨绛変簬姝ょ骇鍒殑鏃ュ織淇℃伅-->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒锛宑lass="ch.qos.logback.classic.filter.ThresholdFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾hresholdFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>debug</level>
+        </filter>
+        <encoder>
+            <!-- ${CONSOLE_LOG_PATTERN}琛ㄧず鎺у埗鍙版棩蹇楄緭鍑烘牸寮忥紝UTF-8琛ㄧず缂栫爜鏍煎紡 -->
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 璁剧疆瀛楃闆� -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <!--2. 杈撳嚭鍒版枃妗�-->
+    <!-- 2.1 level涓� DEBUG 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <!-- 瀹氫箟鏂囦欢鏃ュ織杈撳嚭鐨刟ppender锛宑lass="ch.qos.logback.core.rolling.RollingFileAppender"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凴ollingFileAppender绫绘潵杈撳嚭鏃ュ織鍒版枃浠� -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_debug.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凾imeBasedRollingPolicy绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣� -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 鏃ュ織褰掓。 -->
+            <!-- 瀹氫箟鏃ュ織鏂囦欢鍚嶇殑妯″紡銆傚湪杩欎釜妯″紡涓紝${logging.path}琛ㄧず鏃ュ織鏂囦欢鐨勮矾寰勶紝%d{yyyy-MM-dd}琛ㄧず鏃ユ湡鏍煎紡锛�%i琛ㄧず鏂囦欢绱㈠紩 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <!-- 瀹氫箟鏃ュ織鏂囦欢婊氬姩绛栫暐鐨勬爣绛撅紝class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凷izeAndTimeBasedFNATP绫绘潵瀹氫箟鏃ュ織鏂囦欢鐨勬粴鍔ㄧ瓥鐣ワ紝<maxFileSize>100MB</maxFileSize>琛ㄧず鏃ュ織鏂囦欢鐨勬渶澶уぇ灏忎负100MB銆傝繖涓粴鍔ㄧ瓥鐣ラ�氬父鐢ㄤ簬鎸夌収鏃堕棿鍜屾枃浠跺ぇ灏忔粴鍔ㄦ棩蹇楁枃浠讹紝浠ヤ究鏇村ソ鍦扮鐞嗘棩蹇楁枃浠剁殑澶у皬鍜屾暟閲� -->
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>7</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍debug绾у埆鐨� -->
+        <!-- 瀹氫箟鏃ュ織杈撳嚭绾у埆鐨勮繃婊ゅ櫒銆傚湪杩欎釜杩囨护鍣ㄤ腑锛宑lass="ch.qos.logback.classic.filter.LevelFilter"琛ㄧず浣跨敤Logback妗嗘灦鎻愪緵鐨凩evelFilter绫绘潵杩囨护鏃ュ織杈撳嚭锛�<level>debug</level>琛ㄧず鍙緭鍑篸ebug绾у埆鍙婁互涓婄殑鏃ュ織 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <!-- <onMatch>ACCEPT</onMatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒鍖归厤锛屽垯鎺ュ彈璇ヤ簨浠讹紝<onMismatch>DENY</onMismatch>琛ㄧず濡傛灉鏃ュ織浜嬩欢涓庤繃婊ゅ櫒涓嶅尮閰嶏紝鍒欐嫆缁濊浜嬩欢 -->
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.2 level涓� INFO 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_info.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 澶╁ぉ鏃ュ織褰掓。璺緞浠ュ強鏍煎紡 -->
+            <fileNamePattern>${logging.path}/${serverName}/web-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>7</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍info绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.3 level涓� WARN 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_warn.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>7</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍warn绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!-- 2.4 level涓� ERROR 鏃ュ織锛屾椂闂存粴鍔ㄨ緭鍑�  -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 姝e湪璁板綍鐨勬棩蹇楁枃妗g殑璺緞鍙婃枃妗e悕 -->
+        <file>${logging.path}/${serverName}/web_error.log</file>
+        <!--鏃ュ織鏂囨。杈撳嚭鏍煎紡-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 姝ゅ璁剧疆瀛楃闆� -->
+        </encoder>
+        <!-- 鏃ュ織璁板綍鍣ㄧ殑婊氬姩绛栫暐锛屾寜鏃ユ湡锛屾寜澶у皬璁板綍 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${logging.path}/${serverName}/web-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--鏃ュ織鏂囨。淇濈暀澶╂暟-->
+            <maxHistory>7</maxHistory>
+        </rollingPolicy>
+        <!-- 姝ゆ棩蹇楁枃妗e彧璁板綍ERROR绾у埆鐨� -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+    <!--     4.1 寮�鍙戠幆澧�:鎵撳嵃鎺у埗鍙�-->
+    <!-- 鐢ㄤ簬鍦⊿pring Boot搴旂敤绋嬪簭涓厤缃棩蹇楄褰曠殑鏍囩銆傚湪杩欎釜鏍囩涓紝name="dev"琛ㄧず杩欎釜閰嶇疆鏂囦欢鍙湪dev鐜涓敓鏁堬紝<logger name="com.myClass.controller" level="debug"/>琛ㄧず涓篶om.myClass.controller锛堟牴鎹笟鍔′慨鏀癸級杩欎釜鍖呬笅鐨勭被閰嶇疆鏃ュ織杈撳嚭绾у埆涓篸ebug -->
+    <!--    <springProfile name="dev">-->
+    <!--        <logger name="com.myClass.controller" level="debug"/>-->
+    <!--    </springProfile>-->
+    <!-- 鐢ㄤ簬閰嶇疆鏃ュ織杈撳嚭鐨勬爣绛俱�傚湪杩欎釜鏍囩涓紝level="info"琛ㄧず鏃ュ織杈撳嚭绾у埆涓篿nfo锛�<appender-ref ref="CONSOLE"/>銆�<appender-ref ref="DEBUG_FILE"/>銆�<appender-ref ref="INFO_FILE"/>銆�<appender-ref ref="WARN_FILE"/>銆�<appender-ref ref="ERROR_FILE"/>琛ㄧず灏嗘棩蹇楄緭鍑哄埌涓嶅悓鐨刟ppender涓紝鍒嗗埆涓烘帶鍒跺彴銆乨ebug鏂囦欢銆乮nfo鏂囦欢銆亀arn鏂囦欢鍜宔rror鏂囦欢 -->
+    <root level="info">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="INFO_FILE"/>
+        <appender-ref ref="WARN_FILE"/>
+        <appender-ref ref="ERROR_FILE"/>
+    </root>
+</configuration>
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/config/S7Config.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/config/S7Config.java
new file mode 100644
index 0000000..7efc0fe
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/config/S7Config.java
@@ -0,0 +1,30 @@
+package com.mes.config;
+
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
+import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 13:50
+ * @Description:
+ */
+@Configuration
+public class S7Config {
+    @Bean(name = "s7SerializerSPOne")
+    public S7Serializer s7SerializerSPOne() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.15");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+    @Bean(name = "s7SerializerSPTwo")
+    public S7Serializer s7SerializerSPTwo() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1200, "192.168.10.21");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
index a18183a..dff3e77 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
 import com.mes.common.config.Const;
 import com.mes.engineering.entity.Engineering;
 import com.mes.engineering.mapper.EngineeringMapper;
@@ -14,11 +15,14 @@
 import com.mes.pp.service.OptimizeProjectService;
 import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
 import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
+import com.mes.s7.entity.S7DataSP;
 import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.uppattenusage.entity.vo.UpPattenUsageVO;
 import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
@@ -52,6 +56,14 @@
     private UpPattenUsageMapper upPattenUsageMapper;
     @Resource
     private OptimizeProjectService optimizeProjectService;
+
+    @Autowired
+    @Qualifier("s7SerializerSPOne")
+    private S7Serializer s7SerializerSPOne;
+
+    @Autowired
+    @Qualifier("s7SerializerSPTwo")
+    private S7Serializer s7SerializerSPTwo;
 
     private static final List<Integer> LOAD_STATION_01 = Arrays.asList(101, 102);
     private static final List<Integer> LOAD_STATION_02 = Arrays.asList(103, 104);
@@ -109,6 +121,13 @@
     }
 
     private void opcLoadGlassChild(String tableName, Integer deviceId) {
+        S7DataSP s7DataSP = new S7DataSP();
+        if (tableName.equals(LOAD_GLASS_DEVICE_ONE_TASK)) {
+            s7DataSP = s7SerializerSPOne.read(S7DataSP.class);
+        } else {
+            s7DataSP = s7SerializerSPTwo.read(S7DataSP.class);
+        }
+        log.info("{}涓婄墖绾匡紝褰撳墠涓婄墖浣嶄俊鎭細{}", deviceId, s7DataSP);
         Engineering engineering = engineeringMapper.selectOne(new LambdaQueryWrapper<Engineering>()
                 .eq(Engineering::getState, Const.ENGINEERING_RUNNING).eq(Engineering::getStationCell, deviceId));
         if (null == engineering) {
@@ -116,12 +135,12 @@
             return;
         }
         //浠诲姟鏆傚仠
-        LoadGlassDeviceTask task = loadGlassDeviceTaskService.queryTaskMessage(tableName);
-        if (0 == task.getInkageState()) {
-            log.info("{}涓婄墖绾匡紝澶勪簬绂荤嚎鐘舵�侊細{}锛岀粨鏉熸湰鍦颁笂鐗囪姹�", deviceId, task.getInkageState());
+        S7DataSP task = new S7DataSP();
+        if ("0".equals(s7DataSP.getInkageState().toString())) {
+            log.info("{}涓婄墖绾匡紝澶勪簬绂荤嚎鐘舵�侊細{}锛岀粨鏉熸湰鍦颁笂鐗囪姹�", deviceId, s7DataSP.getInkageState().toString());
             return;
         }
-        if (task.getTaskRunning().equals(Const.ENGINEERING_RUNNING)) {
+        if (s7DataSP.getTaskRunning()) {
             log.info("{}涓婄墖绾匡紝鏈夋鍦ㄦ墽琛岀殑浠诲姟锛岀粨鏉熸湰鍦颁笂鐗囪姹�", deviceId);
             return;
         }
@@ -156,11 +175,21 @@
             int number = Math.min(twoLoadStation.getRemainQuantity(), usageVOS.size());
             //鐢熸垚涓婄墖浠诲姟
             task.setTotalCount(number);
-            task.setTaskRunning(Const.ENGINEERING_RUNNING);
+            task.setTaskRunning(Boolean.TRUE);
             task.setRawGlassWidth((int) usageVOS.get(0).getWidth());
             task.setRawGlassHeight((int) usageVOS.get(0).getHeight());
             task.setSlot(loadStation.get(1));
-            loadGlassDeviceTaskService.updateTaskMessage(tableName, task);
+            S7DataSP s7DataSPWrite = new S7DataSP();
+            s7DataSPWrite.setTotalCount(number);
+            s7DataSPWrite.setTaskRunning(Boolean.TRUE);
+            s7DataSPWrite.setRawGlassWidth((int) usageVOS.get(0).getWidth());
+            s7DataSPWrite.setRawGlassHeight((int) usageVOS.get(0).getHeight());
+            s7DataSPWrite.setSlot(loadStation.get(1));
+            if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) {
+                s7SerializerSPOne.write(s7DataSPWrite);
+            } else {
+                s7SerializerSPTwo.write(s7DataSPWrite);
+            }
             saveHistoryTask(task, deviceId);
             return;
         }
@@ -172,33 +201,51 @@
         //鐢熸垚涓婄墖浠诲姟
         int number = Math.min(oneLoadStation.getRemainQuantity(), usageVOS.size());
         task.setTotalCount(number);
-        task.setTaskRunning(Const.ENGINEERING_RUNNING);
+        task.setTaskRunning(Boolean.TRUE);
         task.setRawGlassWidth((int) usageVOS.get(0).getWidth());
         task.setRawGlassHeight((int) usageVOS.get(0).getHeight());
         task.setSlot(loadStation.get(0));
-        loadGlassDeviceTaskService.updateTaskMessage(tableName, task);
+        S7DataSP s7DataSPWrite = new S7DataSP();
+        s7DataSPWrite.setTotalCount(number);
+        s7DataSPWrite.setTaskRunning(Boolean.TRUE);
+        s7DataSPWrite.setRawGlassWidth((int) usageVOS.get(0).getWidth());
+        s7DataSPWrite.setRawGlassHeight((int) usageVOS.get(0).getHeight());
+        s7DataSPWrite.setSlot(loadStation.get(0));
+        if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) {
+            s7SerializerSPOne.write(s7DataSPWrite);
+        } else {
+            s7SerializerSPTwo.write(s7DataSPWrite);
+        }
         saveHistoryTask(task, deviceId);
     }
 
     private void opcLoadGlassFinishChid(String tableName, Integer deviceId) {
-        LoadGlassDeviceTask task = loadGlassDeviceTaskService.queryTaskMessage(tableName);
-        if (task.getTaskRunning().equals(Const.ENGINEERING_NEW)) {
+        S7DataSP s7DataSP = new S7DataSP();
+        if (tableName.equals(LOAD_GLASS_DEVICE_ONE_TASK)) {
+            s7DataSP = s7SerializerSPOne.read(S7DataSP.class);
+        } else {
+            s7DataSP = s7SerializerSPTwo.read(S7DataSP.class);
+        }
+        log.info("{}涓婄墖绾匡紝褰撳墠涓婄墖浣嶄俊鎭細{}", deviceId, s7DataSP);
+        if (s7DataSP.getTaskRunning().toString().equals(Const.ENGINEERING_NEW)) {
             log.info("鏃犱换鍔�,缁撴潫");
             return;
         }
-        if (task.getTaskState() <= 1) {
+        if (Integer.parseInt(s7DataSP.getTaskState().toString()) <= 1) {
             log.info("浠诲姟姝e湪鎵ц,缁撴潫");
             return;
         }
         //鑾峰彇浠诲姟瀹屾垚鎯呭喌
 //         宸插畬鎴愭暟閲�  鐮存崯鏁伴噺
-        Integer finishCount = task.getFinishCount();
-        Integer damageCount = task.getDamageCount();
+        Integer finishCount = Integer.parseInt(s7DataSP.getFinishCount().toString());
+        Integer damageCount = Integer.parseInt(s7DataSP.getDamageCount().toString());
+        Integer slot = Integer.parseInt(s7DataSP.getSlot().toString());
 
         //鏇存柊褰撳墠鏋跺瓙涓婄殑鍘熺墖鍓╀綑鎯呭喌
         rawGlassStorageDetailsService.update(new UpdateWrapper<RawGlassStorageDetails>()
                 .inSql("slot", "select slot from raw_glass_storage_station where enable_state = 1")
-                .eq("slot", task.getSlot())
+//                .eq("slot", task.getSlot())
+                .eq("slot", slot)
                 .eq("state", Const.RAW_GLASS_STATE_IN)
                 .setSql("remain_quantity = remain_quantity - " + (finishCount + damageCount)));
         //鏇存柊宸ョ▼涓嬬殑鍘熺墖鏁伴噺 todo:sql寰呬紭鍖�
@@ -210,12 +257,17 @@
                     .set(UpPattenUsage::getState, Const.LOAD_RAW_GLASS_SUCCESS));
         }
         //浠诲姟琛ㄦ暟鎹儏鍐�
-        task.setTaskRunning(0);
-        task.setTotalCount(0);
-        task.setRawGlassWidth(0);
-        task.setRawGlassHeight(0);
-        task.setSlot(0);
-        loadGlassDeviceTaskService.updateTaskMessage(tableName, task);
+        S7DataSP s7DataSPWrite = new S7DataSP();
+        s7DataSPWrite.setTaskRunning(Boolean.FALSE);
+        s7DataSPWrite.setTotalCount(0);
+        s7DataSPWrite.setRawGlassWidth(0);
+        s7DataSPWrite.setRawGlassHeight(0);
+        s7DataSPWrite.setSlot(0);
+        if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) {
+            s7SerializerSPOne.write(s7DataSPWrite);
+        } else {
+            s7SerializerSPTwo.write(s7DataSPWrite);
+        }
         loadGlassDeviceTaskHistoryService.update(new LambdaUpdateWrapper<LoadGlassDeviceTaskHistory>()
                 .set(LoadGlassDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_SUCCESS)
                 .eq(LoadGlassDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW)
@@ -223,7 +275,7 @@
         );
     }
 
-    private boolean saveHistoryTask(LoadGlassDeviceTask task, Integer deviceId) {
+    private boolean saveHistoryTask(S7DataSP task, Integer deviceId) {
         LoadGlassDeviceTaskHistory taskHistory = new LoadGlassDeviceTaskHistory();
         BeanUtils.copyProperties(task, taskHistory);
         taskHistory.setStation(deviceId);
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/s7/entity/S7DataSP.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/s7/entity/S7DataSP.java
new file mode 100644
index 0000000..75a6e09
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/s7/entity/S7DataSP.java
@@ -0,0 +1,44 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+public class S7DataSP {
+
+
+    @S7Variable(address = "DB19.14", type = EDataType.UINT16)
+    private Integer taskState;
+
+    @S7Variable(address = "DB19.18", type = EDataType.UINT16)
+    private Integer damageCount;
+
+    @S7Variable(address = "DB19.20", type = EDataType.UINT16)
+    private Integer rawGlassWidth;
+
+    @S7Variable(address = "DB19.22", type = EDataType.UINT16)
+    private Integer rawGlassHeight;
+
+    @S7Variable(address = "DB19.24", type = EDataType.UINT16)
+    private Integer slot;
+
+    @S7Variable(address = "DB19.26", type = EDataType.UINT16)
+    private Integer totalCount;
+
+    @S7Variable(address = "DB19.28", type = EDataType.UINT16)
+    private Integer finishCount;
+
+    @S7Variable(address = "DB19.16.0", type = EDataType.BOOL)
+    private Boolean taskRunning;
+
+    @S7Variable(address = "DB19.30", type = EDataType.UINT16)
+    private Integer inkageState;
+
+
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml
index 972403f..e580d08 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-prod.yml
@@ -5,7 +5,7 @@
       strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
       datasource:
         northGlassMes:
-          url: jdbc:mysql://10.153.19.150:3306/north_glass_mes?serverTimezone=GMT%2b8
+          url: jdbc:mysql://10.153.19.150:3306/north_glass_mes?serverTimezone=GMT%2b8&allowMultiQueries=true
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-yw.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-yw.yml
index 58c369e..77aca0a 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-yw.yml
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application-yw.yml
@@ -33,7 +33,7 @@
     password: 123456
 kangaroohy:
   milo:
-    enabled: true
+    enabled: false
     primary: default
     config:
       default:
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
index 3352a84..5721532 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/application.yml
@@ -2,7 +2,7 @@
   port: 10015
 spring:
   profiles:
-    active: dev
+    active: yw
   application:
     name: loadGlass
   liquibase:
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/config/ModbusConfig.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/config/ModbusConfig.java
new file mode 100644
index 0000000..8d60fa7
--- /dev/null
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/config/ModbusConfig.java
@@ -0,0 +1,19 @@
+package com.mes.config;
+
+import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 13:50
+ * @Description:
+ */
+@Configuration
+public class ModbusConfig {
+    @Bean("tempModbusTcp")
+    public ModbusTcp modbusTcp() {
+//        return new ModbusTcp("127.0.0.1");
+        return new ModbusTcp("192.168.20.80");
+    }
+}
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/config/S7Config.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/config/S7Config.java
new file mode 100644
index 0000000..b9f5c17
--- /dev/null
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/config/S7Config.java
@@ -0,0 +1,30 @@
+package com.mes.config;
+
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
+import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 13:50
+ * @Description:
+ */
+@Configuration
+public class S7Config {
+    @Bean(name = "s7SerializerGHOne")
+    public S7Serializer s7SerializerGHOne() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "192.168.20.180");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+    @Bean(name = "s7SerializerGHTwo")
+    public S7Serializer s7SerializerGHTwo() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "192.168.20.180");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+}
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/OpcNGTemperingTask.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/OpcNGTemperingTask.java
index e1b9d7e..96a7d3f 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/OpcNGTemperingTask.java
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/job/OpcNGTemperingTask.java
@@ -2,6 +2,8 @@
 
 
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
 import com.kangaroohy.milo.model.ReadWriteEntity;
 import com.kangaroohy.milo.service.MiloService;
 import com.mes.common.config.Const;
@@ -9,11 +11,13 @@
 import com.mes.pp.entity.OptimizeHeatLayout;
 import com.mes.pp.service.OptimizeHeatDetailService;
 import com.mes.pp.service.OptimizeHeatLayoutService;
+import com.mes.s7.entity.S7DataGHOne;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -37,6 +41,15 @@
     @Autowired
     private OptimizeHeatDetailService optimizeHeatDetailService;
 
+    @Autowired
+    @Qualifier("s7SerializerGHOne")
+    private S7Serializer s7SerializerGHOne;
+
+    @Autowired
+    ModbusTcp tempModbusTcp;
+
+    private Integer offset = 40001;
+
     /**
      * 鎽嗙墖鍙拌姹傝繘鐗囬�昏緫澶勭悊
      * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
@@ -44,23 +57,29 @@
      */
     @Scheduled(fixedDelay = 1000)
     public void requestTemperingTask() throws Exception {
-        ReadWriteEntity requestInTempering = miloService.readFromOpcUa("GH1S7.GH1S7.requestInTempering");//璇锋眰杩涚墖
-        ReadWriteEntity requestTemperingId = miloService.readFromOpcUa("GH1S7.GH1S7.requestTemperingId");//璇锋眰杩涚墖 鐐夊彿ID
-        Integer request = Integer.parseInt(requestInTempering.getValue().toString());
-        Integer id = Integer.parseInt(requestTemperingId.getValue().toString());
+        S7DataGHOne s7DataGHOne = s7SerializerGHOne.read(S7DataGHOne.class);
+        log.info("璇诲彇鍒扮殑GH1S7.GH1S7鏁版嵁锛歿}", s7DataGHOne);
+        Integer request = (int) s7DataGHOne.getRequestInTempering();
+        Integer id = (int) s7DataGHOne.getRequestTemperingId();
         if (request == 0) {
-            miloService.writeToOpcUa(generateReadWriteEntity("GH1S7.GH1S7.responseInTempering", 0));//鍏佽閫佺墖娓呴浂
+            s7SerializerGHOne.write(
+                    S7DataGHOne.builder().responseInTempering(0).build()
+            );
         } else {
-            if (id == 0){
+            if (id == 0) {
                 log.info("鐐夊彿涓嶈兘涓�0");
                 return;
             }
-            ReadWriteEntity placedNumber = miloService.readFromOpcUa("GH1S7.GH1S7.placedNumber");//宸叉憜鐗囨暟閲�
+            String placedNumber = s7DataGHOne.getPlacedNumber().toString();//宸叉憜鐗囨暟閲�
             List<TemperingGlassInfo> glassList = temperingAgoService.selectGlassInfoById(id);
-            if (Integer.parseInt(placedNumber.getValue().toString()) == glassList.size()) {
-                miloService.writeToOpcUa(generateReadWriteEntity("GH1S7.GH1S7.responseInTempering", 1));//鍐欏叆鍏佽閫佺墖
+            if (Integer.parseInt(placedNumber) == glassList.size()) {
+                s7SerializerGHOne.write(
+                        S7DataGHOne.builder().responseInTempering(1).build()
+                );
             } else {
-                miloService.writeToOpcUa(generateReadWriteEntity("GH1S7.GH1S7.responseInTempering", 2));//涓嶆弧瓒宠繘鐐夋潯浠�
+                s7SerializerGHOne.write(
+                        S7DataGHOne.builder().responseInTempering(2).build()
+                );
             }
         }
     }
@@ -72,9 +91,12 @@
      */
     @Scheduled(fixedDelay = 1000)
     public void loadTemperingTask() throws Exception {
-        ReadWriteEntity loadTemperingId = miloService.readFromOpcUa("GH1S7.GH1S7.loadTemperingId");//杩涚墖瀹屾垚 鐐夊彿ID
-        getNewTemperingID(Integer.parseInt(loadTemperingId.getValue().toString()));//杩涚墖瀹屾垚 涓嬪彂鍙傛暟
+        S7DataGHOne s7DataGHOne = s7SerializerGHOne.read(S7DataGHOne.class);
+        log.info("璇诲彇鍒扮殑GH1S7.GH1S7鏁版嵁锛歿}", s7DataGHOne);
+        Integer loadTemperingId = s7DataGHOne.getLoadTemperingId();//杩涚墖瀹屾垚 鐐夊彿ID
+        getNewTemperingID(loadTemperingId);//杩涚墖瀹屾垚 涓嬪彂鍙傛暟
     }
+
     /**
      * 鏇存柊閽㈠寲灏忕墖琛ㄥ唴鐨勭幓鐠冪姸鎬�
      * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
@@ -82,11 +104,11 @@
      */
     @Scheduled(fixedDelay = 5000)
     public void updateTemperingTask() throws Exception {
-        ReadWriteEntity furanchiIdEntity = miloService.readFromOpcUa("GH1.GH1.Furanch1Id");//杩涚墖瀹屾垚 鐐夊彿ID
-        if (StringUtils.isNotBlank(furanchiIdEntity.getValue()+"")){
-            int temperingid = Integer.parseInt(furanchiIdEntity.getValue().toString());
+        int furanchiIdEntity = tempModbusTcp.readUInt16(40461 - offset);
+        if (StringUtils.isNotBlank(furanchiIdEntity + "")) {
+            int temperingid = furanchiIdEntity;
             temperingAgoService.update(new LambdaUpdateWrapper<TemperingGlassInfo>().set(TemperingGlassInfo::getState, Const.TEMPERING_START)
-                    .in(TemperingGlassInfo::getState, Const.TEMPERING_OUT, Const.TEMPERING_DROP).eq(TemperingGlassInfo::getTemperingLayoutId,temperingid));
+                    .in(TemperingGlassInfo::getState, Const.TEMPERING_OUT, Const.TEMPERING_DROP).eq(TemperingGlassInfo::getTemperingLayoutId, temperingid));
         }
 
 
@@ -94,14 +116,14 @@
 
     //鑾峰彇鍒扮倝鍙穒d鎵ц鍙傛暟涓嬪彂浠诲姟
     private void getNewTemperingID(Integer temperingid) throws Exception {
-        ReadWriteEntity autoStatus = miloService.readFromOpcUa("GH1.GH1.AutoStatus");
-        if (1 != Integer.parseInt(autoStatus.getValue().toString())) {
+        int autoStatus = tempModbusTcp.readUInt16(40451 - offset);
+        if (1 != autoStatus) {
             log.info("褰撳墠涓洪潪鑱旀満鐘舵�侊紝缁撴潫閽㈠寲涓嬪彂鍙傛暟浠诲姟");
             return;
         }
-        ReadWriteEntity QandA = miloService.readFromOpcUa("GH1.GH1.QandA");
-        ReadWriteEntity RecipeStatus = miloService.readFromOpcUa("GH1.GH1.RecipeStatus");
-        if (1 == Integer.parseInt(QandA.getValue().toString()) && 2 == Integer.parseInt(RecipeStatus.getValue().toString())) {
+        int QandA = tempModbusTcp.readUInt16(40422 - offset);
+        int RecipeStatus = tempModbusTcp.readUInt16(40456 - offset);
+        if (1 == QandA && 2 == RecipeStatus) {
             log.info("鐗堥潰淇℃伅宸茬粡涓嬪彂锛屽苟涓斿凡缁忓尮閰嶅弬鏁帮紝缁撴潫閽㈠寲涓嬪彂鍙傛暟浠诲姟");
             return;
         }
@@ -129,17 +151,17 @@
             shape = shape > 10000 ? 10000 : shape;
             int workmode = 0; //宸ヤ綅鏁�
             int furmode = 0; //鍙屽/鑱斿
+            tempModbusTcp.writeUInt16(40408 - offset, temperingid);
+            tempModbusTcp.writeUInt16(40409 - offset, glasstype);
+            tempModbusTcp.writeUInt16(40411 - offset, process);
+            tempModbusTcp.writeUInt16(40412 - offset, thiness);
+            tempModbusTcp.writeUInt16(40413 - offset, loadingRate);
+            tempModbusTcp.writeUInt16(40414 - offset, shape);
+            tempModbusTcp.writeUInt16(40415 - offset, workmode);
+            tempModbusTcp.writeUInt16(40416 - offset, furmode);
 
-            miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.TemperingId", temperingid));//鍐欏叆鐐夊彿
-            miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.GlassType", glasstype));//鍐欏叆鐜荤拑绫诲瀷
-            miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.Process", process));//鍐欏叆閽㈠寲绫诲瀷 鍏ㄩ挗 鍗婇挗 闃茬伀
-            miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.Thickness", thiness));//鍐欏叆鍘氬害
-            miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.LoadingRate", loadingRate));//鍐欏叆瑁呰浇鐜�
-            miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.Shape", shape));//鍐欏叆澶х墖姣斾緥
-            miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.WorkMode", workmode));//鍐欏叆宸ヤ綅鏁�
-            miloService.writeToOpcUa(generateReadWriteEntity("GH1.GH1.FurnaceMode", furmode));//鍐欏叆鐐変綋宸ヤ綔鏂瑰紡
             log.info("鐐夊彿" + temperingid + "鐗堥潰淇℃伅灏濊瘯涓嬪彂");
-       }
+        }
     }
 
 
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 52b49a6..ae81d1a 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
@@ -1,17 +1,20 @@
 package com.mes.job;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.json.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.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
 import com.mes.common.config.Const;
 import com.mes.damage.service.DamageService;
 import com.mes.largenscreen.entity.PieChartVO;
+import com.mes.s7.entity.S7DataGHTwo;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
 import com.mes.tools.WebSocketServer;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -20,6 +23,7 @@
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author SNG-010
@@ -29,46 +33,53 @@
 public class PlcTemperingGlassTask {
 
     @Autowired
-    private TemperingGlassInfoService temperingAgoService;
+    private TemperingGlassInfoService temperingGlassInfoService;
     @Autowired
     private DamageService damageService;
 
-    /**
-     * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
-     * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
-     */
+    @Autowired
+    @Qualifier("s7SerializerGHTwo")
+    private S7Serializer s7SerializerGHTwo;
+
 
     @Scheduled(fixedDelay = 1000)
     public void temperingGlassHome() {
         JSONObject jsonObject = new JSONObject();
         //姝e湪绛夊緟杩涚墖鐨勭幓鐠�
-        List<TemperingGlassInfo> waitingGlass = temperingAgoService.selectWaitingGlassByOpc();
-        if (waitingGlass != null) {
-            jsonObject.append("waitingGlass", waitingGlass);
-        }
-
-        //鑾峰彇鏁村湪鐐変腑鐨勪袱涓増鍥緄d
-        List<TemperingGlassInfo> layoutId = temperingAgoService.selectLayoutId();
-        //杩涚倝涓殑鐜荤拑
-        if (!layoutId.isEmpty()) {
-            List<TemperingGlassInfo> intoGlass = temperingAgoService.selectIntoGlass(layoutId.get(0));
-            jsonObject.append("intoGlass", intoGlass);
-            //杩涚倝涓殑绗簩涓増鍥�
-            if (layoutId.size() > 1) {
-                List<TemperingGlassInfo> intoGlass2 = temperingAgoService.selectIntoGlass(layoutId.get(1));
-                jsonObject.append("intoGlass2", intoGlass2);
+        List<TemperingGlassInfo> waitingGlass = new ArrayList<>();
+        try {
+            waitingGlass = selectWaitingGlassByOpc();
+            if (CollectionUtil.isNotEmpty(waitingGlass)) {
+                jsonObject.append("waitingGlass", waitingGlass);
             }
+        } catch (Exception e) {
+            log.info("閽㈠寲鍓嶈幏鍙栧紓甯革細{}", e.getMessage());
         }
-        //鍑虹倝鍚庣殑鐜荤拑
-        List<TemperingGlassInfo> outGlass = temperingAgoService.selectOutGlass();
-        if (outGlass != null) {
-            jsonObject.append("outGlass", outGlass);
-        }
+        try {
+            List<TemperingGlassInfo> intoGlass = selectIntoGlass(waitingGlass);
+            if (CollectionUtil.isNotEmpty(intoGlass)) {
+                for (int i = 0; i < intoGlass.size(); i++) {
+                    String jsonName = "intoGlass";
+                    if (i != 0) {
+                        jsonName = jsonName + i;
+                    }
+                    jsonObject.append(jsonName, temperingGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>()
+                            .eq(TemperingGlassInfo::getEngineerId, intoGlass.get(i).getEngineerId())
+                            .eq(TemperingGlassInfo::getTemperingLayoutId, intoGlass.get(i).getTemperingLayoutId())));
+                }
 
-        //杩囨棆杞彴閽㈠寲鍚庣殑鐜荤拑
-        List<TemperingGlassInfo> overGlass = temperingAgoService.selectOverGlass();
-        if (outGlass != null) {
-            jsonObject.append("overGlass", overGlass);
+            }
+        } catch (Exception e) {
+            log.info("閽㈠寲鍓嶈幏鍙栧紓甯革細{}", e.getMessage());
+        }
+        try {
+            //鍑虹倝鍚庣殑鐜荤拑
+            List<TemperingGlassInfo> outGlass = temperingGlassInfoService.selectOutGlass();
+            if (CollectionUtil.isNotEmpty(outGlass)) {
+                jsonObject.append("outGlass", outGlass);
+            }
+        } catch (Exception e) {
+            log.info("閽㈠寲鍓嶈幏鍙栧紓甯革細{}", e.getMessage());
         }
 
 
@@ -88,7 +99,7 @@
     public void temperingIsRun() {
         JSONObject jsonObject = new JSONObject();
         //姝e湪杩涜鐨勪换鍔�
-        List<TemperingGlassInfo> temperingTaskType = temperingAgoService.selectTaskType();
+        List<TemperingGlassInfo> temperingTaskType = temperingGlassInfoService.selectTaskType();
         jsonObject.append("temperingTaskType", temperingTaskType);
 
 
@@ -111,23 +122,23 @@
         //澶у睆閽㈠寲淇℃伅
         Date startOfToday = new Date(LocalDate.now().atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli());
 
-        Integer putGlass = temperingAgoService.count(
+        Integer putGlass = temperingGlassInfoService.count(
                 new QueryWrapper<TemperingGlassInfo>()
                         .eq("state", Const.TEMPERING_NEW)
                         .gt("create_time", startOfToday)
         );
         jsonObject.append("temperingTaskType", putGlass);
         //澶у睆閽㈠寲淇℃伅
-        List<TemperingGlassInfo> temperingGlassInfoList = temperingAgoService.list(
+        List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.list(
                 new QueryWrapper<TemperingGlassInfo>()
-                        .select("engineer_id" ,"tempering_layout_id")
+                        .select("engineer_id", "tempering_layout_id")
                         .eq("state", Const.TEMPERING_START)
                         .gt("create_time", startOfToday)
-                        .groupBy("engineer_id" ,"tempering_layout_id")
+                        .groupBy("engineer_id", "tempering_layout_id")
         );
         jsonObject.append("temperingGlassInfoList", temperingGlassInfoList.size());
         //澶у睆閽㈠寲淇℃伅
-        List<TemperingGlassInfo> temperingGlassInfoInList = temperingAgoService.list(
+        List<TemperingGlassInfo> temperingGlassInfoInList = temperingGlassInfoService.list(
                 new LambdaQueryWrapper<TemperingGlassInfo>()
                         .select(TemperingGlassInfo::getEngineerId, TemperingGlassInfo::getTemperingLayoutId) // 閫夋嫨瑕佸幓閲嶇殑瀛楁
                         .eq(TemperingGlassInfo::getState, Const.TEMPERING_DROP)
@@ -135,7 +146,7 @@
         );
         jsonObject.append("temperingGlassInfoInList", temperingGlassInfoInList.size());
         //閽㈠寲楗煎浘鏁版嵁
-        List<PieChartVO> pieChartVOS = temperingAgoService.queryPieChart();
+        List<PieChartVO> pieChartVOS = temperingGlassInfoService.queryPieChart();
         jsonObject.append("pieChartVOS", pieChartVOS);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreen");
         if (sendwServer != null) {
@@ -154,4 +165,53 @@
         }
     }
 
+
+    /**
+     * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
+     * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
+     */
+    private List<TemperingGlassInfo> selectWaitingGlassByOpc() {
+        //鑾峰彇绛夊緟杩涚倝涓殑鐜荤拑淇℃伅
+        try {
+            S7DataGHTwo s7DataGHTwo = s7SerializerGHTwo.read(S7DataGHTwo.class);
+            String engineerEntity = s7DataGHTwo.getF09EngineerId();
+            Integer temperingLayoutIdEntity = s7DataGHTwo.getF09TemperingLayoutId();
+            if (null == engineerEntity || null == temperingLayoutIdEntity) {
+                engineerEntity = s7DataGHTwo.getF08EngineerId();
+                temperingLayoutIdEntity = s7DataGHTwo.getF08TemperingLayoutId();
+                if (null == engineerEntity || null == temperingLayoutIdEntity) {
+                    log.info("鑾峰彇鍙傛暟寮傚父锛岀粨鏉熸湰娆′换鍔�");
+                    return new ArrayList<>();
+                }
+            }
+            return temperingGlassInfoService.list(new LambdaQueryWrapper<TemperingGlassInfo>()
+                    .eq(TemperingGlassInfo::getEngineerId, engineerEntity)
+                    .eq(TemperingGlassInfo::getTemperingLayoutId, temperingLayoutIdEntity));
+        } catch (Exception e) {
+            log.info("鑾峰彇閽㈠寲鍙傛暟寮傚父锛歿}", e);
+            return new ArrayList<>();
+        }
+    }
+
+    /**
+     * 鑾峰彇姝e湪閽㈠寲鐨勭増鍥句俊鎭細鑾峰彇3鐐夊凡缁忔憜濂界殑鐜荤拑灏忕墖锛屾帓闄ゆ鍦ㄦ憜鐨�
+     *
+     * @param list
+     * @return
+     */
+    private List<TemperingGlassInfo> selectIntoGlass(List<TemperingGlassInfo> list) {
+        List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.queryEngineerAndLayoutId();
+        log.info("閽㈠寲涓幏鍙栧埌鐨勬暟鎹负{}", temperingGlassInfoList);
+        if (CollectionUtil.isEmpty(temperingGlassInfoList)) {
+            return new ArrayList<>();
+        }
+        if (CollectionUtil.isEmpty(list)) {
+            return temperingGlassInfoList;
+        } else {
+            String engineerId = list.get(0).getEngineerId();
+            int temperingLayoutId = list.get(0).getTemperingLayoutId();
+            List<TemperingGlassInfo> tempList = temperingGlassInfoList.stream().filter(e -> !(e.getEngineerId().equals(engineerId) && temperingLayoutId == e.getTemperingLayoutId())).collect(Collectors.toList());
+            return tempList;
+        }
+    }
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/s7/entity/S7DataGHOne.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/s7/entity/S7DataGHOne.java
new file mode 100644
index 0000000..66ba975
--- /dev/null
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/s7/entity/S7DataGHOne.java
@@ -0,0 +1,40 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class S7DataGHOne {
+
+
+    @S7Variable(address = "DB99.0", type = EDataType.UINT16)
+    private Integer requestInTempering;
+
+    @S7Variable(address = "DB99.2", type = EDataType.UINT16)
+    private Integer requestTemperingId;
+
+    @S7Variable(address = "DB99.4", type = EDataType.UINT16)
+    private Integer placedNumber;
+
+    @S7Variable(address = "DB99.6", type = EDataType.UINT16)
+    private Integer responseInTempering;
+
+    @S7Variable(address = "DB99.8", type = EDataType.UINT16)
+    private Integer loadTemperingId;
+
+}
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/s7/entity/S7DataGHTwo.java b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/s7/entity/S7DataGHTwo.java
new file mode 100644
index 0000000..2afc86c
--- /dev/null
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/java/com/mes/s7/entity/S7DataGHTwo.java
@@ -0,0 +1,28 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+public class S7DataGHTwo {
+
+
+    @S7Variable(address = "DB110.32", type = EDataType.UINT16)
+    private Integer f08TemperingLayoutId;
+
+    @S7Variable(address = "DB110.80", type = EDataType.UINT16)
+    private Integer f09TemperingLayoutId;
+
+    @S7Variable(address = "DB110.34", type = EDataType.STRING,count = 10)
+    private String f08EngineerId;
+
+    @S7Variable(address = "DB110.82", type = EDataType.STRING,count = 10)
+    private String f09EngineerId;
+
+}
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-yw.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-yw.yml
index 0f8099a..fac016c 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-yw.yml
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application-yw.yml
@@ -37,7 +37,7 @@
     password: 123456
 kangaroohy:
   milo:
-    enabled: true
+    enabled: false
     primary: default
     config:
       default:
diff --git a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
index c71e71e..f69f8f4 100644
--- a/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/TemperingGlassModule/src/main/resources/application.yml
@@ -2,7 +2,7 @@
   port: 10016
 spring:
   profiles:
-    active: dev
+    active: yw
   application:
     name: temperingGlass
   liquibase:
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/config/ModbusConfig.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/config/ModbusConfig.java
new file mode 100644
index 0000000..47e1a4b
--- /dev/null
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/config/ModbusConfig.java
@@ -0,0 +1,32 @@
+package com.mes.config;
+
+import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 13:50
+ * @Description:
+ */
+@Configuration
+public class ModbusConfig {
+
+    @Bean(name = "CMJ1ModbusTcp")
+    public ModbusTcp CMJ1ModbusTcp() {
+//        ModbusTcp modbusTcp=new ModbusTcp("127.0.0.1");
+        ModbusTcp modbusTcp=new ModbusTcp("192.168.30.160");
+        modbusTcp.setConnectTimeout(3000);
+        return modbusTcp;
+
+    }
+
+    @Bean(name = "CMJ2ModbusTcp")
+    public ModbusTcp CMJ2ModbusTcp() {
+//        ModbusTcp modbusTcp=new ModbusTcp("127.0.0.1");
+        ModbusTcp modbusTcp=new ModbusTcp("192.168.30.162");
+        modbusTcp.setConnectTimeout(3000);
+        return modbusTcp;
+    }
+
+}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/config/S7Config.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/config/S7Config.java
new file mode 100644
index 0000000..dfeb362
--- /dev/null
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/config/S7Config.java
@@ -0,0 +1,37 @@
+package com.mes.config;
+
+import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
+import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 13:50
+ * @Description:
+ */
+@Configuration
+public class S7Config {
+    @Bean(name = "s7SerializerZKDLPOne")
+    public S7Serializer s7SerializerZKDLPOne() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "192.168.30.100");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+    @Bean(name = "s7SerializerZKDLPTwo")
+    public S7Serializer s7SerializerZKDLPTwo() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "192.168.30.100");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+    @Bean(name = "s7SerializerZKQ2")
+    public S7Serializer s7SerializerZKQ2() {
+        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "192.168.30.140");
+//        S7PLC s7PLC = new S7PLC(EPlcType.S1500, "10.153.19.191");
+        return S7Serializer.newInstance(s7PLC);
+    }
+
+}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowAllFlowCardVO.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowAllFlowCardVO.java
index 917eaff..f6f6ac3 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowAllFlowCardVO.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowAllFlowCardVO.java
@@ -28,6 +28,10 @@
      * 鏄惁鐩撮��
      */
     private Boolean isThroughSlot;
+    /**
+     * 宸查厤瀵规�绘暟閲�
+     */
+    private int pairTotalCount;
 
     /**
      * 娴佺▼鍗℃暟鎹�
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowBigStorageDetailsQueryVO.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowBigStorageDetailsQueryVO.java
index 5685241..90de67e 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowBigStorageDetailsQueryVO.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/entity/vo/HollowBigStorageDetailsQueryVO.java
@@ -25,5 +25,13 @@
      * 鍘氬害
      */
     private int thickness;
+    /**
+     * 瀹㈡埛鍚嶇О
+     */
+    private String customerName;
+    /**
+     * 浜у搧鍚嶇О
+     */
+    private String productName;
 
 }
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java
index 44f7fc8..7a198ef 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/mapper/HollowGlassRelationInfoMapper.java
@@ -35,6 +35,6 @@
      * @param flowCardId
      * @return
      */
-    OrderDetailsDTO queryProductNameByFlowCardId(@Param("flowCardId") String flowCardId);
+    OrderDetailsDTO queryProductNameByFlowCardId(@Param("flowCardId") String flowCardId,@Param("productName") String productName,@Param("customerName") String customerName);
 }
 
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
index a26d6b8..9c78f1c 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
@@ -32,6 +32,7 @@
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -251,7 +252,7 @@
 
         Integer slotWidth = sysConfigService.queryConfigValue(ConstSysConfig.HOLLOW_SLOT_WIDTH);
 //        Integer glassGap = sysConfigService.queryConfigValue(ConstSysConfig.HOLLOW_GLASS_GAP);
-        Integer glassGap = getGlassGapByThickness(tempGlassList.get(0).getThickness());
+        Integer glassGap = getGlassGapByThickness(glassInfo.getThickness());
         Integer outCarMaxSize = sysConfigService.queryConfigValue(ConstSysConfig.HOLLOW_OUT_CAR_SIZE);
         List<HollowGlassRelationInfo> relationInfoList = new ArrayList();
         List<List<HollowGlassRelationInfo>> tempHollowList = new ArrayList<>();
@@ -313,25 +314,34 @@
         }
         Map<String, List<HollowBigStorageCageDetails>> listMap = detailsList.stream().collect(Collectors.groupingBy(HollowBigStorageCageDetails::getFlowCardId));
         List<HollowAllFlowCardVO> resultList = new ArrayList<>();
+        AtomicInteger pairTotalCount = new AtomicInteger();
         listMap.forEach((e, v) -> {
             HollowAllFlowCardVO hollowAllFlowCardVO = new HollowAllFlowCardVO();
             HollowBigStorageCageDetails cageDetails = v.get(0);
             //鎸夌収娴佺▼鍗¤幏鍙栧搴旂殑浜у搧鍚嶇О
-            OrderDetailsDTO orderDetails = baseMapper.queryProductNameByFlowCardId(cageDetails.getFlowCardId());
+            OrderDetailsDTO orderDetails = baseMapper.queryProductNameByFlowCardId(cageDetails.getFlowCardId(), query.getProductName(), query.getCustomerName());
             if (null != orderDetails) {
                 BeanUtils.copyProperties(orderDetails, hollowAllFlowCardVO);
+                hollowAllFlowCardVO.setFlowCardId(e);
+                if (cageDetails.getHollowSequence() == 0) {
+                    hollowAllFlowCardVO.setIsThroughSlot(Boolean.TRUE);
+                } else {
+                    hollowAllFlowCardVO.setIsThroughSlot(Boolean.FALSE);
+                }
+                List<FlowCardGlassInfoDTO> flowCardInfoList = hollowBigStorageCageDetailsService.hollowIsAll(e, cageDetails.getTotalLayer(), Boolean.FALSE);
+                log.info("鑾峰彇鍒扮殑娴佺▼鍗′俊鎭负:{}", flowCardInfoList);
+                if(CollectionUtil.isNotEmpty(flowCardInfoList)){
+                    hollowAllFlowCardVO.setFlowCardGlassInfoDTOList(flowCardInfoList);
+                    pairTotalCount.addAndGet(flowCardInfoList.get(0).getPairCount());
+                }
+                resultList.add(hollowAllFlowCardVO);
             }
-            hollowAllFlowCardVO.setFlowCardId(e);
-            if (cageDetails.getHollowSequence() == 0) {
-                hollowAllFlowCardVO.setIsThroughSlot(Boolean.TRUE);
-            } else {
-                hollowAllFlowCardVO.setIsThroughSlot(Boolean.FALSE);
-            }
-            List<FlowCardGlassInfoDTO> flowCardInfoList = hollowBigStorageCageDetailsService.hollowIsAll(e, cageDetails.getTotalLayer(), Boolean.FALSE);
-            hollowAllFlowCardVO.setFlowCardGlassInfoDTOList(flowCardInfoList);
-            resultList.add(hollowAllFlowCardVO);
         });
+        if (CollectionUtil.isEmpty(resultList)) {
+            return new ArrayList<>();
+        }
         sortFlowCardIdList(resultList);
+        resultList.get(0).setPairTotalCount(pairTotalCount.get());
         return resultList;
     }
 
@@ -408,11 +418,6 @@
         }
         return sysConfigService.queryConfigValue(sysKey);
     }
-    //    @Override
-//    public List<LackDetailsDTO> queryLackByFlowCard(String flowCardId) {
-//        List<LackDetailsDTO> lackDetailsList = this.baseMapper.queryLackByFlowCard(flowCardId);
-//        return lackDetailsList;
-//    }
 
     private void sortFlowCardIdList(List<HollowAllFlowCardVO> list) {
         Pattern pattern = Pattern.compile("^NG(\\d+)([A-Za-z]+)(\\d+)$");
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcHollowRemoveTask.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcHollowRemoveTask.java
index 3002c7e..78e634c 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcHollowRemoveTask.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcHollowRemoveTask.java
@@ -1,5 +1,9 @@
 package com.mes.job;
 
+import com.github.xingshuangs.iot.common.buff.ByteReadBuff;
+import com.github.xingshuangs.iot.common.buff.EByteBuffFormat;
+import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
+import com.github.xingshuangs.iot.utils.ByteUtil;
 import com.kangaroohy.milo.model.ReadWriteEntity;
 import com.kangaroohy.milo.service.MiloService;
 import com.mes.hollow.entity.vo.HollowGlassFormulaVO;
@@ -7,10 +11,12 @@
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.nio.charset.Charset;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -28,6 +34,43 @@
     @Autowired(required = false)
     MiloService miloService;
 
+    @Autowired
+    @Qualifier("CMJ1ModbusTcp")
+    ModbusTcp CMJ1ModbusTcp;
+
+    @Autowired
+    @Qualifier("CMJ2ModbusTcp")
+    ModbusTcp CMJ2ModbusTcp;
+
+    private Integer offset = 40001;
+
+    /**
+     * 闄よ啘鏈鸿仈鏈虹姸鎬�
+     *
+     * @throws Exception
+     */
+    @Scheduled(fixedDelay = 3000)
+    public void filmRemoveStateOne() throws Exception {
+        ModbusTcp modbusTcp = CMJ1ModbusTcp;
+        try {
+            modbusTcp.readUInt16(42001 - offset);
+            log.info("闄よ啘鏈�1鑱旀満鐘舵�佹甯�");
+        } catch (Exception e) {
+            log.error("闄よ啘鏈�1鑱旀満鐘舵�佸紓甯�", e);
+        }
+    }
+
+    @Scheduled(fixedDelay = 3000)
+    public void filmRemoveStateTwo() throws Exception {
+        ModbusTcp modbusTcp = CMJ2ModbusTcp;
+        try {
+            modbusTcp.readUInt16(42001 - offset);
+            log.info("闄よ啘鏈�2鑱旀満鐘舵�佹甯�");
+        } catch (Exception e) {
+            log.error("闄よ啘鏈�2鑱旀満鐘舵�佸紓甯�", e);
+        }
+    }
+
     /**
      * 鏀跺埌闄よ啘鏈鸿姹傚強鐜荤拑id
      *
@@ -43,58 +86,86 @@
         hollowRemoveChildTask("CMJ2.CMJ2.");
     }
 
+    public String readString(ModbusTcp modbusTcp, int address) {
+        //
+        byte[] bytes = new byte[20];
+        for (int i = 0; i < 10; i++) {
+            int res = modbusTcp.readUInt16(address + i);
+
+            bytes[i * 2 + 1] = (byte) ((res >> 8) & 0xFF);
+            bytes[i * 2] = (byte) (res & 0xFF);
+        }
+        int endIndex = 0;
+        while (endIndex < bytes.length) {
+            if (bytes[endIndex] == 0) {
+                break;
+            }
+            endIndex++;
+        }
+        // 鎴彇鏈夋晥閮ㄥ垎
+        return new String(bytes, 0, endIndex);
+    }
+
     private void hollowRemoveChildTask(String cell) throws Exception {
-        ReadWriteEntity requestEntity = miloService.readFromOpcUa(cell + "mesControl");
-        if ("0".equals(requestEntity.getValue() + "")) {
+        ModbusTcp modbusTcp = null;
+        if ("CMJ1.CMJ1.".equals(cell)) {
+            modbusTcp = CMJ1ModbusTcp;
+        } else {
+            modbusTcp = CMJ2ModbusTcp;
+        }
+        if (!modbusTcp.checkConnected()) {
+            log.info("闄よ啘鏈簕}鏈繛鎺�", cell);
+            return;
+        }
+        String glassIdEntitys = readString(modbusTcp, 42003 - offset);
+        log.info("闄よ啘{}鑾峰彇褰撳墠鐨勭幓鐠僫d锛歿}", cell, glassIdEntitys);
+        Integer requestEntity = modbusTcp.readUInt16(42001 - offset);
+        if (0 == requestEntity) {
             log.info("褰撳墠闄よ啘鏈轰负鍗曟満鐘舵��");
             return;
         }
-        int request = Integer.parseInt(requestEntity.getValue() + "");
+        int request = requestEntity;
         int flagRequest = request & 3;
-        ReadWriteEntity glassIdEntity = miloService.readFromOpcUa(cell + "glassId");
-        log.info("闄よ啘{}鑾峰彇褰撳墠鐨勪俊鍙蜂负锛歿},鐜荤拑id:{}", cell, flagRequest, glassIdEntity);
         if (flagRequest != 3) {
             log.info("褰撳墠鏈敹鍒拌姹傜幓鐠僫d鏁版嵁锛岀粨鏉熶换鍔�");
             return;
         }
 
-        log.info("闄よ啘{}鑾峰彇褰撳墠鐨勭幓鐠僫d锛歿}", cell, glassIdEntity);
-        if (null == glassIdEntity.getValue() || StringUtils.isBlank(glassIdEntity.getValue() + "")) {
+        String glassIdEntity = readString(modbusTcp, 42003 - offset);
+        log.info("闄よ啘{}鑾峰彇褰撳墠鐨勪俊鍙蜂负锛歿},鐜荤拑id:{}", cell, flagRequest, glassIdEntity);
+        if (null == glassIdEntity || StringUtils.isBlank(glassIdEntity)) {
             log.info("褰撳墠鏈敹鍒扮幓鐠僫d鏁版嵁锛岀粨鏉熶换鍔�");
             return;
         }
-        log.info("褰撳墠闇�瑕侀櫎鑶滅殑鐜荤拑id涓猴細{}", glassIdEntity.getValue() + "");
+        log.info("褰撳墠闇�瑕侀櫎鑶滅殑鐜荤拑id涓猴細{}", glassIdEntity);
         //鎸夌収鐜荤拑id鑾峰彇瀵瑰簲鐨勪换鍔d
-        HollowGlassFormulaVO detailsVO = hollowFormulaDetailsService.queryFormulaDetailsByGlassId(glassIdEntity.getValue() + "", null, null);
+        HollowGlassFormulaVO detailsVO = hollowFormulaDetailsService.queryFormulaDetailsByGlassId(glassIdEntity, null, null);
         if (null == detailsVO) {
             log.info("鐜荤拑id涓嶅瓨鍦紝璇锋鏌ユ暟鎹�");
             return;
         }
         //鎸夌収浠诲姟id鑾峰彇瀵瑰簲鐨勯厤鏂逛俊鎭�
-
-        List<ReadWriteEntity> ualist = new ArrayList<>();
-        List<ReadWriteEntity> wordlist = new ArrayList<>();
-        log.info("闄よ啘{}鑾峰彇鐜荤拑{},鏄惁闄よ啘锛歿}", cell, glassIdEntity.getValue(), detailsVO.getFilmRemove());
+        int Id = 0;
+        log.info("闄よ啘{}鑾峰彇鐜荤拑{},鏄惁闄よ啘锛歿}", cell, requestEntity, detailsVO.getFilmRemove());
         if (detailsVO.getFilmRemove() == 0) {
             // 10111011
             int sendId = request & 63;
-            sendId = sendId + 4;
-            wordlist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "mesControl", sendId));
+            Id = sendId + 4;
+            modbusTcp.writeUInt16(42001 - offset, sendId);
         } else {
             // 鍏堝皢瀵瑰簲鐨勪綅缃负0锛岃幏寰楄姹傜殑鐜荤拑鏁版嵁锛� 鐒跺悗灏嗗搴斾綅鍊�     110111011
             int sendId = request & 63;
-            sendId = sendId + 4 + 64;
-            wordlist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "mesControl", sendId));
-            ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "glassTop", detailsVO.getTopRemove()));
-            ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "glassBottom", detailsVO.getBottomRemove()));
-            ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "glassLeft", detailsVO.getLeftRemove()));
-            ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "glassRight", detailsVO.getRightRemove()));
+            Id = sendId + 4 + 64;
+
+            modbusTcp.writeUInt32(42019 - offset, detailsVO.getTopRemove());
+            modbusTcp.writeUInt32(42021 - offset, detailsVO.getTopRemove());
+            modbusTcp.writeUInt32(42023 - offset, detailsVO.getTopRemove());
+            modbusTcp.writeUInt32(42025 - offset, detailsVO.getTopRemove());
         }
-        ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "thickness", (int) (detailsVO.getThickness() * 10)));
-        ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "firstLength", (int) (Math.max(detailsVO.getWidth(), detailsVO.getHeight())) * 10));
-        ualist.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "secondLength", (int) (Math.min(detailsVO.getWidth(), detailsVO.getHeight())) * 10));
-        miloService.writeToOpcWord(wordlist);
-        miloService.writeToOpcUa(ualist);
+        modbusTcp.writeUInt32(42013 - offset, (int) (detailsVO.getThickness() * 10));
+        modbusTcp.writeUInt32(42015 - offset, (int) (Math.max(detailsVO.getWidth(), detailsVO.getHeight())) * 10);
+        modbusTcp.writeUInt32(42017 - offset, (int) (Math.min(detailsVO.getWidth(), detailsVO.getHeight())) * 10);
+        modbusTcp.writeUInt16(42001 - offset, Id);
         return;
     }
 
@@ -114,8 +185,19 @@
     }
 
     public void finishHollowRemoveChildTask(String cell) throws Exception {
-        ReadWriteEntity requestEntity = miloService.readFromOpcUa(cell + "mesControl");
-        int request = Integer.parseInt(requestEntity.getValue() + "");
+//        ReadWriteEntity requestEntity = miloService.readFromOpcUa(cell + "mesControl");
+        ModbusTcp modbusTcp = null;
+        if ("CMJ1.CMJ1.".equals(cell)) {
+            modbusTcp = CMJ1ModbusTcp;
+        } else {
+            modbusTcp = CMJ2ModbusTcp;
+        }
+        if (!modbusTcp.checkConnected()) {
+            log.info("闄よ啘鏈簕}鏈繛鎺�", cell);
+            return;
+        }
+        int requestEntity = modbusTcp.readUInt16(42001 - offset);
+        int request = requestEntity;
         int flagRequest = request & 9;
         if (flagRequest != 9) {
             log.info("褰撳墠鏈敹鍒伴櫎鑶滄満ID鎺ユ敹瀹屾垚淇″彿锛岀粨鏉熶换鍔�");
@@ -124,9 +206,7 @@
         //鍚戠數姘斿彂閫佹竻妤氫俊鍙�
         int sendId = request & 251;
         log.info("{}鏀跺埌闄よ啘鏈篒D鎺ユ敹瀹屾垚淇″彿锛屽皢鍐欏叆鏁版嵁瀹屾垚缃�0,鍙戦�佹暟鎹负锛歿}", cell, sendId);
-        List<ReadWriteEntity> list = new ArrayList<>();
-        list.add(opcPlcStorageCageHollowTask.generateReadWriteEntity(cell + "mesControl", sendId));
-        miloService.writeToOpcWord(list);
+        modbusTcp.writeUInt16(42001 - offset, sendId);
     }
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
index 4393451..a9713dd 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
@@ -6,6 +6,8 @@
 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.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
 import com.kangaroohy.milo.model.ReadWriteEntity;
 import com.kangaroohy.milo.service.MiloService;
 import com.mes.base.entity.HollowBigStorageCageBaseInfo;
@@ -33,6 +35,9 @@
 import com.mes.hollowqueue.service.HollowGlassQueueInfoService;
 import com.mes.hollowtask.entity.HollowBigStorageCageHistoryTask;
 import com.mes.hollowtask.service.HollowBigStorageCageHistoryTaskService;
+import com.mes.s7.entity.S7DataZKDLPOne;
+import com.mes.s7.entity.S7DataZKDLPTwo;
+import com.mes.s7.entity.S7DataZKExtra;
 import com.mes.sysconfig.service.SysConfigService;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
@@ -41,6 +46,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -79,6 +85,22 @@
     @Resource
     private SysConfigService sysConfigService;
 
+    @Autowired
+    @Qualifier("s7SerializerZKDLPOne")
+    private S7Serializer s7SerializerZKDLPOne;
+
+    @Autowired
+    @Qualifier("s7SerializerZKDLPTwo")
+    private S7Serializer s7SerializerZKDLPTwo;
+
+    @Autowired
+    @Qualifier("s7SerializerZKQ2")
+    private S7Serializer s7SerializerZKQ2;
+
+    @Autowired
+    @Qualifier("CMJ1ModbusTcp")
+    ModbusTcp CMJ1ModbusTcp;
+
     private static final String BIG_STORAGE_CAGE_IN_TWO_TASK = "big_storage_cage_in_two_task";
     private static final String BIG_STORAGE_CAGE_OUT_TWO_TASK = "big_storage_cage_out_two_task";
     /**
@@ -90,52 +112,38 @@
     @Resource
     private RedisUtil redisUtil;
 
-//    @Value("${mes.slotWidth}")
-//    private Integer slotWidth;
-//
-//    @Value("${mes.glassGap}")
-//    private Integer glassGap;
-//
-//    @Value("${mes.carWidth}")
-//    private Integer carWidth;
-//
-//    @Value("${mes.outCarMaxSize}")
-//    private Integer outCarMaxSize;
-//
-//    @Value("${mes.slotMaxHeight}")
-//    private Integer slotMaxHeight;
-//    @Value("${mes.slotMaxthickness}")
-//    private Integer slotMaxthickness;
-
     @Scheduled(fixedDelay = 1000)
     public void inBigStorageTask() throws Exception {
-        ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP2A.DLP2A.mesControl");
-        if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) {
+        S7DataZKDLPOne s7DataZKDLPOne = s7SerializerZKDLPOne.read(S7DataZKDLPOne.class);
+        log.info("杩涚墖浠诲姟璇诲彇s7DataZKDLPOne:{}", s7DataZKDLPOne);
+        Boolean inkageEntity = s7DataZKDLPOne.getMesControl();
+        if (true != inkageEntity) {
             log.info("褰撳墠涓洪潪鑱旀満鐘舵�侊紝缁撴潫杩涚墖浠诲姟");
             return;
         }
-        ReadWriteEntity requestEntity = miloService.readFromOpcUa("DLP2A.DLP2A.RequestMes");
-        if (!"1".equals(requestEntity.getValue() + "")) {
+        String requestEntity = s7DataZKDLPOne.getRequestMes().toString();
+        if (!"1".equals(requestEntity)) {
             log.info("褰撳墠鏈敹鍒拌繘鐗囪姹傦紝缁撴潫杩涚墖浠诲姟");
             return;
         }
-        ReadWriteEntity mesReplyEntity = miloService.readFromOpcUa("DLP2A.DLP2A.MesReply");
-        if ("1".equals(mesReplyEntity.getValue() + "")) {
+        String mesReplyEntity = s7DataZKDLPOne.getMesReply().toString();
+        if ("1".equals(mesReplyEntity)) {
             log.info("鏈夋鍦ㄦ墽琛岀殑浠诲姟锛岀粨鏉熻繘鐗囦换鍔�");
             return;
         }
 
         List<BigStorageCageTask> inTaskList = new ArrayList();
-        ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP2A.DLP2A.FROM1");
+        String fromOpcUa = s7DataZKDLPOne.getFrom1().toString();
         List<String> glassIdList = new ArrayList<>();
+        List<String> requestWords = s7DataZKDLPOne.getIds();
         for (int i = 1; i <= 6; i++) {
-            ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP2A.DLP2A.DI" + i);
-            if (null != requestWord.getValue()) {
+            String requestWord = requestWords.get(i - 1);
+            if (null != requestWord && !requestWord.isEmpty()) {
                 BigStorageCageTask task = new BigStorageCageTask();
-                task.setGlassId(requestWord.getValue() + "");
-                task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + ""));
+                task.setGlassId(requestWord);
+                task.setStartSlot(Integer.parseInt(fromOpcUa));
                 inTaskList.add(task);
-                glassIdList.add(requestWord.getValue() + "");
+                glassIdList.add(requestWord);
                 continue;
             }
         }
@@ -149,7 +157,9 @@
             if (entry.getValue() > 1) {
                 log.info("杩涚墖鐜荤拑{}瀛樺湪鐩稿悓锛岀粨鏉熸湰娆′换鍔�", entry.getKey());
                 //鍚憄lc鍙戦�佹姤璀�:鍚屼竴杞﹁繘鐗囩幓鐠冨瓨鍦ㄧ浉鍚�
-                miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 2));
+                s7DataZKDLPOne = new S7DataZKDLPOne();
+                s7DataZKDLPOne.setAlramSignal(2);
+                s7SerializerZKDLPOne.write(s7DataZKDLPOne);
                 return;
             }
         }
@@ -158,7 +168,9 @@
         if (CollectionUtil.isNotEmpty(detailsList)) {
             log.info("鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑{}锛岀粨鏉熸湰娆′换鍔�", detailsList);
             //鍚憄lc鍙戦�佹姤璀�:鐞嗙墖绗煎瓨鍦ㄧ浉鍚岀殑杩涚墖鐜荤拑
-            miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 4));
+            s7DataZKDLPOne = new S7DataZKDLPOne();
+            s7DataZKDLPOne.setAlramSignal(4);
+            s7SerializerZKDLPOne.write(s7DataZKDLPOne);
             return;
         }
         List<GlassInfo> glassInfoList = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIdList));
@@ -166,7 +178,9 @@
         if (glassInfoList.size() != inTaskList.size()) {
             log.info("杩涚墖浠诲姟鏁伴噺{}涓庣幓鐠冩暟閲弡}涓嶅尮閰嶏紝缁撴潫鏈杩涚墖", inTaskList.size(), glassInfoList.size());
             //鍚憄lc鍙戦�佹姤璀�:杩涚墖浠诲姟鏁伴噺涓庣郴缁熸煡璇㈠埌鐨勭幓鐠冩暟閲忎笉鍖归厤
-            miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 8));
+            s7DataZKDLPOne = new S7DataZKDLPOne();
+            s7DataZKDLPOne.setAlramSignal(8);
+            s7SerializerZKDLPOne.write(s7DataZKDLPOne);
             return;
         }
 
@@ -181,7 +195,9 @@
             if (count < entry.getValue()) {
                 log.info("绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻锛岀粨鏉熸湰娆¤繘鐗�");
                 //鍚憄lc鍙戦�佹姤璀�:绗煎唴鏍煎瓙鍓╀綑鏁伴噺涓嶈冻
-                miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 16));
+                s7DataZKDLPOne = new S7DataZKDLPOne();
+                s7DataZKDLPOne.setAlramSignal(16);
+                s7SerializerZKDLPOne.write(s7DataZKDLPOne);
                 return;
             }
         }
@@ -195,7 +211,9 @@
             if (count > 0) {
                 log.info("鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝缁撴潫鏈杩涚墖");
                 //鍚憄lc鍙戦�佹姤璀�:鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝鏃犳硶缁х画鐩撮��
-                miloService.writeToOpcWord(generateReadWriteEntity("DLP2A.DLP2A.alarmSignal", 64));
+                s7DataZKDLPOne = new S7DataZKDLPOne();
+                s7DataZKDLPOne.setAlramSignal(64);
+                s7SerializerZKDLPOne.write(s7DataZKDLPOne);
                 return;
             }
         }
@@ -216,6 +234,7 @@
 
         Integer glassGap = sysConfigService.queryConfigValue(ConstSysConfig.HOLLOW_GLASS_GAP);
         try {
+            log.info("寮�濮嬭绠楃洰鏍囨牸瀛�,鐜荤拑id鏈夛細{}", inTaskList);
             if (slotMaxHeight > Math.min(glassInfoList.get(0).getWidth(), glassInfoList.get(0).getHeight()) && glassInfoList.get(0).getThickness() < slotMaxthickness) {
                 for (BigStorageCageTask task : inTaskList) {
                     GlassInfo info = glassListMap.get(task.getGlassId()).get(0);
@@ -227,7 +246,6 @@
                             .eq(HollowBigStorageCage::getSlot, bigStorageDTO.getSlot()));
                     task.setTargetSlot(bigStorageDTO.getSlot());
                     task.setGlassId(info.getGlassId());
-                    bigStorageCageTaskService.updateTaskMessage(BIG_STORAGE_CAGE_IN_TWO_TASK, task);
                     //瀛樻斁鍘嗗彶浠诲姟
                     HollowBigStorageCageHistoryTask historyTask = new HollowBigStorageCageHistoryTask();
                     BeanUtils.copyProperties(task, historyTask);
@@ -260,7 +278,6 @@
             } else {
                 BigStorageCageTask task = inTaskList.get(0);
                 task.setTargetSlot(THROUGH_SLOT);
-                bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_two_task", task);
                 //瀛樻斁鍘嗗彶浠诲姟
                 HollowBigStorageCageHistoryTask historyTask = new HollowBigStorageCageHistoryTask();
                 BeanUtils.copyProperties(task, historyTask);
@@ -295,45 +312,78 @@
         //鍘嗗彶鏁版嵁鍏ュ簱
         hollowBigStorageCageHistoryTaskService.saveBatch(historyTasks);
         //鍚憃pc鍙戦�佸惎鍔ㄤ俊鍙�
-        List<ReadWriteEntity> list = new ArrayList<>();
-        for (int i = 1; i <= inTaskList.size(); i++) {
-            list.add(generateReadWriteEntity("DLP2A.DLP2A.TO" + i, inTaskList.get(i - 1).getTargetSlot()));
+        s7DataZKDLPOne = new S7DataZKDLPOne();
+        for (int i = 0; i < inTaskList.size() && i < 6; i++) {
+            Integer value = inTaskList.get(i).getTargetSlot();
+            switch (i) {
+                case 0:
+                    s7DataZKDLPOne.setTo1(value);
+                    break;
+                case 1:
+                    s7DataZKDLPOne.setTo2(value);
+                    break;
+                case 2:
+                    s7DataZKDLPOne.setTo3(value);
+                    break;
+                case 3:
+                    s7DataZKDLPOne.setTo4(value);
+                    break;
+                case 4:
+                    s7DataZKDLPOne.setTo5(value);
+                    break;
+                case 5:
+                    s7DataZKDLPOne.setTo6(value);
+                    break;
+            }
         }
-        list.add(generateReadWriteEntity("DLP2A.DLP2A.MesReply", 1));
-        miloService.writeToOpcWord(list);
+        s7SerializerZKDLPOne.write(s7DataZKDLPOne);
+        s7DataZKDLPOne = new S7DataZKDLPOne();
+        s7DataZKDLPOne.setMesReply(1);
+        s7SerializerZKDLPOne.write(s7DataZKDLPOne);
     }
 
     @Scheduled(fixedDelay = 1000)
     public void outBigStorageTask() throws Exception {
         Date startDate = new Date();
-        ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP2B.DLP2B.mesControl");
-        if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) {
+        S7DataZKDLPTwo s7DataZKDLPTwo = s7SerializerZKDLPTwo.read(S7DataZKDLPTwo.class);
+        log.info("鍑虹墖浠诲姟璇诲彇s7DataZKDLPTwo:{}", s7DataZKDLPTwo);
+        Boolean inkageEntity = s7DataZKDLPTwo.getMesControl();
+        if (true != inkageEntity) {
             log.info("褰撳墠涓洪潪鑱旀満鐘舵�侊紝缁撴潫杩涚墖浠诲姟");
             return;
         }
-        ReadWriteEntity requestEntity = miloService.readFromOpcUa("DLP2B.DLP2B.RequestMes");
-        if (!"1".equals(requestEntity.getValue() + "")) {
+        String requestEntity = s7DataZKDLPTwo.getRequestMes().toString();
+        if (!"1".equals(requestEntity)) {
             log.info("褰撳墠鏈敹鍒板嚭鐗囪姹傦紝缁撴潫鍑虹墖浠诲姟");
             return;
         }
         //鑾峰彇鍑虹墖浠诲姟琛�
-        List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage(BIG_STORAGE_CAGE_OUT_TWO_TASK);
+        List<BigStorageCageTask> outTaskList = getOutTaskList(s7DataZKDLPTwo);
+
         if (CollectionUtil.isNotEmpty(outTaskList)) {
             log.info("鏈夋鍦ㄦ墽琛岀殑鍑虹墖浠诲姟锛岀粨鏉熸湰娆″嚭鐗囦换鍔�");
             return;
         }
 
         //鑾峰彇绌洪棽涓旈鍙栦换鍔$殑鏁版嵁淇℃伅锛屾病鏈変换鍔$洿鎺ヨ蛋鐜荤拑璋冨害
-        HashMap<Integer, ReadWriteEntity> map = new HashMap<>();
+        HashMap<Integer, Boolean> map = new HashMap<>();
         try {
-            map.put(930, miloService.readFromOpcUa("CMJ1.CMJ1.isFree"));
+            if (CMJ1ModbusTcp.checkConnected()) {
+                Boolean oneEntity = CMJ1ModbusTcp.readUInt16(42027 - 40001) != 0;
+                map.put(930, oneEntity);
+            } else {
+                map.put(930, Boolean.FALSE);
+            }
+
         } catch (Exception e) {
             //nothing
             log.info("涓�绾跨┖闂茬姸鎬佽幏鍙栧紓甯�");
         }
         try {
-            map.put(931, miloService.readFromOpcUa("ZKQ2.ZKQ2.isFree"));
-            map.put(932, miloService.readFromOpcUa("ZKQ2.ZKQ2.isFree03"));
+            S7DataZKExtra s7DataZKExtra = s7SerializerZKQ2.read(S7DataZKExtra.class);
+            log.info("涓┖棰濆璇诲彇{}", s7DataZKExtra);
+            map.put(931, s7DataZKExtra.getIsFree());
+            map.put(932, s7DataZKExtra.getIsFree03());
         } catch (Exception e) {
             //nothing
             log.info("浜�/涓夌嚎绾跨┖闂茬姸鎬佽幏鍙栧紓甯�");
@@ -342,9 +392,9 @@
         int cell = -1;
         for (int i = 930; i <= 932; i++) {
             if (null == hollowGlassOutRelationInfo) {
-                ReadWriteEntity entity = map.get(i);
+                Boolean entity = map.get(i);
                 cell = i;
-                if (null != entity.getValue() && ("1".equals(entity.getValue() + "") || Boolean.parseBoolean(entity.getValue() + ""))) {
+                if (null != entity && entity) {
                     hollowGlassOutRelationInfo = hollowGlassOutRelationInfoService
                             .getOne(new LambdaQueryWrapper<HollowGlassOutRelationInfo>()
                                     .eq(HollowGlassOutRelationInfo::getCell, cell)
@@ -392,7 +442,6 @@
                         .set(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_SUCCESS));
             }
         }
-//        redisUtil.setCacheObject("dispatchHollowSwitch",true);
         //鏄惁瀛樺湪闇�瑕佸唴閮ㄨ皟搴︾殑鏍煎瓙:鎵ц鍐呴儴璋冨害浠诲姟
         if (redisUtil.getCacheObject("dispatchHollowSwitch")) {
             //todo:鑾峰彇绗煎唴鍗曟牸宸茬粡鍒伴綈鐨勭幓鐠冩牸瀛愪俊鎭�
@@ -434,33 +483,73 @@
 
     @Scheduled(fixedDelay = 1000)
     public void finishInBigStorageTask() throws Exception {
-        ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP2A.DLP2A.mesControl");
-        if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) {
+        S7DataZKDLPOne s7DataZKDLPOne = s7SerializerZKDLPOne.read(S7DataZKDLPOne.class);
+        Boolean inkageEntity = s7DataZKDLPOne.getMesControl();
+        if (true != inkageEntity) {
             log.info("褰撳墠涓洪潪鑱旀満鐘舵�侊紝缁撴潫瀹屾垚杩涚墖浠诲姟");
             return;
         }
         //鑾峰彇杩涚墖浠诲姟琛�
         List<BigStorageCageTask> inTaskList = new ArrayList();
         List<String> glassIdList = new ArrayList<>();
-        ReadWriteEntity toWord = miloService.readFromOpcUa("DLP2A.DLP2A.TO1");
-        if ("0".equals(toWord.getValue() + "")) {
+        String toWord = s7DataZKDLPOne.getTo1().toString();
+        if ("0".equals(toWord)) {
             log.info("瀹屾垚浠诲姟宸叉墽琛岋紝缁撴潫鏈瀹屾垚杩涚墖浠诲姟");
             return;
         }
         for (int i = 1; i <= 6; i++) {
-            ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP2A.DLP2A.DI" + i);
-            ReadWriteEntity statetWord = miloService.readFromOpcUa("DLP2A.DLP2A.STATE" + i);
-            ReadWriteEntity toOpcUa = miloService.readFromOpcUa("DLP2A.DLP2A.TO" + i);
-            ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP2A.DLP2A.FROM" + i);
+            String requestWord = "";
+            String statetWord = "";
+            String toOpcUa = "";
+            String fromOpcUa = "";
+            switch (i) {
+                case 1:
+                    requestWord = s7DataZKDLPOne.getId1();
+                    statetWord = s7DataZKDLPOne.getState1().toString();
+                    toOpcUa = s7DataZKDLPOne.getTo1().toString();
+                    fromOpcUa = s7DataZKDLPOne.getFrom1().toString();
+                    break;
+                case 2:
+                    requestWord = s7DataZKDLPOne.getId2();
+                    statetWord = s7DataZKDLPOne.getState2().toString();
+                    toOpcUa = s7DataZKDLPOne.getTo2().toString();
+                    fromOpcUa = s7DataZKDLPOne.getFrom2().toString();
+                    break;
+                case 3:
+                    requestWord = s7DataZKDLPOne.getId3();
+                    statetWord = s7DataZKDLPOne.getState3().toString();
+                    toOpcUa = s7DataZKDLPOne.getTo3().toString();
+                    fromOpcUa = s7DataZKDLPOne.getFrom3().toString();
+                    break;
+                case 4:
+                    requestWord = s7DataZKDLPOne.getId4();
+                    statetWord = s7DataZKDLPOne.getState4().toString();
+                    toOpcUa = s7DataZKDLPOne.getTo4().toString();
+                    fromOpcUa = s7DataZKDLPOne.getFrom4().toString();
+                    break;
+                case 5:
+                    requestWord = s7DataZKDLPOne.getId5();
+                    statetWord = s7DataZKDLPOne.getState5().toString();
+                    toOpcUa = s7DataZKDLPOne.getTo5().toString();
+                    fromOpcUa = s7DataZKDLPOne.getFrom5().toString();
+                    break;
+                case 6:
+                    requestWord = s7DataZKDLPOne.getId6();
+                    statetWord = s7DataZKDLPOne.getState6().toString();
+                    toOpcUa = s7DataZKDLPOne.getTo6().toString();
+                    fromOpcUa = s7DataZKDLPOne.getFrom6().toString();
+                    break;
+            }
 
-            if (null != requestWord.getValue()) {
+//            if (null != requestWord.getValue()) {
+            if (null != requestWord && !requestWord.isEmpty()) {
                 BigStorageCageTask task = new BigStorageCageTask();
-                task.setGlassId(requestWord.getValue() + "");
-                task.setTargetSlot(Integer.parseInt(toOpcUa.getValue() + ""));
-                task.setTaskState(Integer.parseInt(statetWord.getValue() + ""));
-                task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + ""));
+                task.setGlassId(requestWord);
+                task.setTargetSlot(Integer.parseInt(toOpcUa));
+                task.setTaskState(Integer.parseInt(statetWord));
+                task.setStartSlot(Integer.parseInt(fromOpcUa));
                 inTaskList.add(task);
-                glassIdList.add(requestWord.getValue() + "");
+                glassIdList.add(requestWord);
                 continue;
             }
         }
@@ -532,30 +621,35 @@
                     .eq(HollowBigStorageCageHistoryTask::getGlassId, item.getGlassId()));
             item.setTargetSlot(0);
             //娓呯┖浠诲姟琛ㄦ暟鎹�
-            bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", item);
+//            bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_one_task", item);
         }
         //娓呯┖鍚姩鐘舵��
         //鍚憃pc鍙戦�佸惎鍔ㄤ俊鍙�
-        //鍚憃pc鍙戦�佸惎鍔ㄤ俊鍙�
-        List<ReadWriteEntity> list = new ArrayList<>();
-        for (int i = 1; i <= 6; i++) {
-            list.add(generateReadWriteEntity("DLP2A.DLP2A.TO" + i, 0));
-        }
-        list.add(generateReadWriteEntity("DLP2A.DLP2A.MesReply", 0));
-        miloService.writeToOpcWord(list);
+        s7DataZKDLPOne = new S7DataZKDLPOne();
+        s7DataZKDLPOne.setTo1(0);
+        s7DataZKDLPOne.setTo2(0);
+        s7DataZKDLPOne.setTo3(0);
+        s7DataZKDLPOne.setTo4(0);
+        s7DataZKDLPOne.setTo5(0);
+        s7DataZKDLPOne.setTo6(0);
+        s7SerializerZKDLPOne.write(s7DataZKDLPOne);
+        s7DataZKDLPOne = new S7DataZKDLPOne();
+        s7DataZKDLPOne.setMesReply(0);
+        s7SerializerZKDLPOne.write(s7DataZKDLPOne);
     }
 
     @Scheduled(fixedDelay = 1000)
     public void finishOutBigStorageTask() throws Exception {
-        ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP2B.DLP2B.mesControl");
-        if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) {
+        S7DataZKDLPTwo s7DataZKDLPTwo = s7SerializerZKDLPTwo.read(S7DataZKDLPTwo.class);
+        Boolean inkageEntity = s7DataZKDLPTwo.getMesControl();
+        if (true != inkageEntity) {
             log.info("褰撳墠涓洪潪鑱旀満鐘舵�侊紝缁撴潫瀹屾垚鍑虹墖浠诲姟");
             return;
         }
-        //鑾峰彇杩涚墖浠诲姟琛�
-        List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage(BIG_STORAGE_CAGE_OUT_TWO_TASK);
+        //鑾峰彇鍑虹墖浠诲姟琛�
+        List<BigStorageCageTask> outTaskList = getOutTaskList(s7DataZKDLPTwo);
         if (CollectionUtil.isEmpty(outTaskList)) {
-            log.info("褰撳墠澶ц溅鏃犺繘鐗囩幓鐠冿紝缁撴潫瀹屾垚杩涚墖浠诲姟");
+            log.info("褰撳墠澶ц溅鏃犲嚭鐗囩幓鐠冿紝缁撴潫瀹屾垚鍑虹墖浠诲姟");
             return;
         }
         List<BigStorageCageTask> unFinishTaskList = outTaskList.stream().filter(e -> e.getTaskState() <= 1 || e.getStartSlot() == 0).collect(Collectors.toList());
@@ -576,7 +670,7 @@
         taskMap.forEach((e1, v) -> {
             if (e1 == 2) {
                 //杩涚墖瀹屾垚
-                log.info("3銆佽幏鍙栬繘鐗囧凡瀹屾垚鐨勭幓鐠冧俊鎭痠d:{}", v);
+                log.info("3銆佽幏鍙栧嚭鐗囧凡瀹屾垚鐨勭幓鐠冧俊鎭痠d:{}", v);
                 List<Integer> outSuccessGlassSlot = new ArrayList<>();
                 if (finalTaskType.equals(Const.BIG_STORAGE_AFTER_OUT)) {
                     outSuccessGlassSlot = v.stream().map(BigStorageCageTask::getStartSlot).collect(Collectors.toList());
@@ -604,7 +698,7 @@
                     List<Integer> slotList = storageCageDTOList.stream().map(UpdateHollowBigStorageCageDTO::getTargetSlot).distinct().collect(Collectors.toList());
                     hollowBigStorageCageDetailsService.updateDeviceIdBySlot(slotList);
                 }
-                log.info("4銆佸ぇ鐞嗙墖绗艰繘鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", v);
+                log.info("4銆佸ぇ鐞嗙墖绗煎嚭鐗囩姸鎬佸凡瀹屾垚宸插畬鎴愮殑鐜荤拑淇℃伅id:{}", v);
                 updateSlotRemainBySlots(outSuccessGlassSlot);
             } else if (e1 == 3) {
                 //鐮存崯澶勭悊
@@ -671,11 +765,12 @@
         }
 
 //       閲嶇疆浠诲姟琛ㄦ暟鎹�
-        bigStorageCageTaskService.updateOutTaskMessage(BIG_STORAGE_CAGE_OUT_TWO_TASK);
-
+        resetOutTask();
         //娓呯┖鍚姩鐘舵��
         //鍚憃pc鍙戦�佸惎鍔ㄤ俊鍙�
-        miloService.writeToOpcWord(generateReadWriteEntity("DLP2B.DLP2B.MesReply", 0));
+        s7DataZKDLPTwo = new S7DataZKDLPTwo();
+        s7DataZKDLPTwo.setMesReply(0);
+        s7SerializerZKDLPTwo.write(s7DataZKDLPTwo);
     }
 
     private void dealDamageInTask(List<BigStorageCageTask> damageTaskList) {
@@ -811,7 +906,10 @@
 
                 if (null == storageCage) {
                     //鍚憄lc鍙戦�佹姤璀�:鐩撮�氱墖鍙板瓨鍦ㄧ幓鐠冿紝鏃犳硶缁х画鐩撮��
-                    miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 16));
+//                    miloService.writeToOpcWord(generateReadWriteEntity("DLP1A.DLP1A.alarmSignal", 16));
+                    S7DataZKDLPOne s7DataZKDLPOne = new S7DataZKDLPOne();
+                    s7DataZKDLPOne.setAlramSignal(16);
+                    s7SerializerZKDLPOne.write(s7DataZKDLPOne);
                     Assert.isFalse(storageCage == null, "浠诲姟璋冨害娌℃湁澶氫綑鏍煎瓙锛岀粨鏉熻皟搴︿换鍔�");
                 }
 
@@ -888,12 +986,53 @@
         for (T t : baseInfoList) {
             bigStorageCageTaskList.add(new BigStorageCageTask(t.getGlassId(), t.getSlot(), targetSlot, 0));
         }
-        while (bigStorageCageTaskList.size() < 6) {
-            bigStorageCageTaskList.add(new BigStorageCageTask("", 0, 0, 0));
-        }
         //娓呯┖浠诲姟琛ㄦ暟鎹�
-        bigStorageCageTaskService.removeAll(tableName);
-        bigStorageCageTaskService.saveTaskMessage(tableName, bigStorageCageTaskList);
+        resetOutTask();
+        log.info("鐢熸垚鍑虹墖浠诲姟鏁版嵁{}", bigStorageCageTaskList);
+        S7DataZKDLPTwo s7DataZKDLPTwo = new S7DataZKDLPTwo();
+        for (int i = 0; i < bigStorageCageTaskList.size() && i < 6; i++) {
+            String glassId = bigStorageCageTaskList.get(i).getGlassId();
+            Integer startSlot = bigStorageCageTaskList.get(i).getStartSlot();
+            Integer target = bigStorageCageTaskList.get(i).getTargetSlot();
+            if (startSlot > 0) {
+                switch (i) {
+                    case 0:
+                        s7DataZKDLPTwo.setId1(glassId);
+                        s7DataZKDLPTwo.setFrom1(startSlot);
+                        s7DataZKDLPTwo.setTo1(target);
+                        break;
+                    case 1:
+                        s7DataZKDLPTwo.setId2(glassId);
+                        s7DataZKDLPTwo.setFrom2(startSlot);
+                        s7DataZKDLPTwo.setTo2(target);
+                        break;
+                    case 2:
+                        s7DataZKDLPTwo.setId3(glassId);
+                        s7DataZKDLPTwo.setFrom3(startSlot);
+                        s7DataZKDLPTwo.setTo3(target);
+                        break;
+                    case 3:
+                        s7DataZKDLPTwo.setId4(glassId);
+                        s7DataZKDLPTwo.setFrom4(startSlot);
+                        s7DataZKDLPTwo.setTo4(target);
+                        break;
+                    case 4:
+                        s7DataZKDLPTwo.setId5(glassId);
+                        s7DataZKDLPTwo.setFrom5(startSlot);
+                        s7DataZKDLPTwo.setTo5(target);
+                        break;
+                    case 5:
+                        s7DataZKDLPTwo.setId6(glassId);
+                        s7DataZKDLPTwo.setFrom6(startSlot);
+                        s7DataZKDLPTwo.setTo6(target);
+                        break;
+                }
+            }
+        }
+        s7SerializerZKDLPTwo.write(s7DataZKDLPTwo);
+        log.info("鍑虹墖浠诲姟鍐欏叆鏁版嵁{}", s7DataZKDLPTwo);
+        S7DataZKDLPTwo s7DataZKDLPTwo1 = s7SerializerZKDLPTwo.read(S7DataZKDLPTwo.class);
+        log.info("鍐欏叆鍑虹墖浠诲姟鍚庤鍙栨暟鎹畕}", s7DataZKDLPTwo1);
         List<HollowBigStorageCageHistoryTask> historyList = bigStorageCageTaskList.stream().filter(e -> StringUtils.isNotBlank(e.getGlassId())).map(e -> {
             HollowBigStorageCageHistoryTask history = new HollowBigStorageCageHistoryTask();
             BeanUtils.copyProperties(e, history);
@@ -901,6 +1040,7 @@
             history.setTaskType(taskType);
             return history;
         }).collect(Collectors.toList());
+        log.info("鍘嗗彶浠诲姟淇濆瓨{}", historyList);
         hollowBigStorageCageHistoryTaskService.saveBatch(historyList);
         log.info("灏嗗嚭鐗囩幓鐠儃}鐜荤拑鐘舵�佹敼涓哄嚭鐗囦腑", glassIds);
         hollowBigStorageCageDetailsService.update(new LambdaUpdateWrapper<HollowBigStorageCageDetails>()
@@ -909,7 +1049,9 @@
                 .ne(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_OUT)
                 .in(HollowBigStorageCageDetails::getGlassId, glassIds));
         try {
-            miloService.writeToOpcWord(generateReadWriteEntity("DLP2B.DLP2B.MesReply", 1));
+            s7DataZKDLPTwo = new S7DataZKDLPTwo();
+            s7DataZKDLPTwo.setMesReply(1);
+            s7SerializerZKDLPTwo.write(s7DataZKDLPTwo);
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -926,9 +1068,6 @@
         Integer slotWidth = sysConfigService.queryConfigValue(ConstSysConfig.HOLLOW_SLOT_WIDTH);
         if (CollectionUtils.isNotEmpty(inSlotGlassList)) {
             //瀛樺湪  灏嗘牸瀛愬唴鐨勭幓鐠冨垎鍒繘琛屾洿鏂�
-//            List<HollowBigStorageCage> hollowBigStorageCageList = hollowBigStorageCageService.list(new LambdaQueryWrapper<HollowBigStorageCage>()
-//                    .lt(HollowBigStorageCage::getRemainWidth, 0).in(HollowBigStorageCage::getSlot, slotList));
-//            List<Integer> resultSlotList = hollowBigStorageCageList.stream().map(HollowBigStorageCage::getSlot).collect(Collectors.toList());
             slotRemainMap = inSlotGlassList.stream()
                     .collect(Collectors.groupingBy(HollowBigStorageCageDetails::getSlot, Collectors.summingDouble(item -> Math.max(item.getWidth(), item.getHeight()) + glassGap)));
             slotRemainMap.forEach((e, v) -> {
@@ -953,4 +1092,54 @@
                 .value(value)
                 .build();
     }
+
+    //璇诲彇鍑虹墖鍦板潃
+    private List<BigStorageCageTask> getOutTaskList(S7DataZKDLPTwo s7DataZKDLPTwo) {
+        List<BigStorageCageTask> outTaskList = new ArrayList<>();
+        List<String> glassIds = s7DataZKDLPTwo.getIds();
+        List<Integer> startSlots = s7DataZKDLPTwo.getFroms();
+        List<Integer> endSlots = s7DataZKDLPTwo.getTos();
+        List<Integer> states = s7DataZKDLPTwo.getStates();
+        for (int i = 0; i < 6; i++) {
+            if (glassIds.get(i) != null && !glassIds.get(i).isEmpty()) {
+                BigStorageCageTask bigStorageCageTask = new BigStorageCageTask();
+                bigStorageCageTask.setGlassId(glassIds.get(i));
+                bigStorageCageTask.setStartSlot(startSlots.get(i));
+                bigStorageCageTask.setTargetSlot(endSlots.get(i));
+                bigStorageCageTask.setTaskState(states.get(i));
+                outTaskList.add(bigStorageCageTask);
+            }
+        }
+        return outTaskList;
+    }
+
+    //閲嶇疆浠诲姟琛�
+    private void resetOutTask() {
+        S7DataZKDLPTwo s7DataZKDLPTwo = new S7DataZKDLPTwo();
+        s7DataZKDLPTwo.setId1("");
+        s7DataZKDLPTwo.setId2("");
+        s7DataZKDLPTwo.setId3("");
+        s7DataZKDLPTwo.setId4("");
+        s7DataZKDLPTwo.setId5("");
+        s7DataZKDLPTwo.setId6("");
+        s7DataZKDLPTwo.setFrom1(0);
+        s7DataZKDLPTwo.setFrom2(0);
+        s7DataZKDLPTwo.setFrom3(0);
+        s7DataZKDLPTwo.setFrom4(0);
+        s7DataZKDLPTwo.setFrom5(0);
+        s7DataZKDLPTwo.setFrom6(0);
+        s7DataZKDLPTwo.setTo1(0);
+        s7DataZKDLPTwo.setTo2(0);
+        s7DataZKDLPTwo.setTo3(0);
+        s7DataZKDLPTwo.setTo4(0);
+        s7DataZKDLPTwo.setTo5(0);
+        s7DataZKDLPTwo.setTo6(0);
+        s7DataZKDLPTwo.setState1(0);
+        s7DataZKDLPTwo.setState2(0);
+        s7DataZKDLPTwo.setState3(0);
+        s7DataZKDLPTwo.setState4(0);
+        s7DataZKDLPTwo.setState5(0);
+        s7DataZKDLPTwo.setState6(0);
+        s7SerializerZKDLPTwo.write(s7DataZKDLPTwo);
+    }
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
index 56f4244..ba1d20e 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/job/PushMessageToIndex.java
@@ -3,6 +3,8 @@
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.github.xingshuangs.iot.protocol.modbus.service.ModbusTcp;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Serializer;
 import com.kangaroohy.milo.model.ReadWriteEntity;
 import com.kangaroohy.milo.service.MiloService;
 import com.mes.bigstoragecagetask.entity.BigStorageCageTask;
@@ -22,10 +24,15 @@
 import com.mes.hollowtask.service.HollowBigStorageCageHistoryTaskService;
 import com.mes.largenscreen.entity.PieChartVO;
 import com.mes.largenscreen.entity.RunTime;
+import com.mes.s7.entity.S7DataZKDLPOne;
+import com.mes.s7.entity.S7DataZKDLPTwo;
+import com.mes.s7.entity.S7DataZKExtra;
 import com.mes.tools.WebSocketServer;
 import com.mes.utils.RedisUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
@@ -64,23 +71,47 @@
     @Autowired(required = false)
     MiloService miloService;
 
+    @Autowired
+    @Qualifier("s7SerializerZKDLPOne")
+    private S7Serializer s7SerializerZKDLPOne;
+
+    @Autowired
+    @Qualifier("s7SerializerZKDLPTwo")
+    private S7Serializer s7SerializerZKDLPTwo;
+
+    @Autowired
+    @Qualifier("s7SerializerZKQ2")
+    private S7Serializer s7SerializerZKQ2;
+
+    @Autowired
+    @Qualifier("CMJ1ModbusTcp")
+    ModbusTcp CMJ1ModbusTcp;
+
+    @Autowired
+    @Qualifier("CMJ2ModbusTcp")
+    ModbusTcp CMJ2ModbusTcp;
+
+    private Integer offset = 40001;
+
     @Resource
     RedisUtil redisUtil;
 
     @Scheduled(fixedDelay = 5000)
     public void hollowGlassTaskOne() {
-        hollowGlassTaskChild(930, "CMJ1.CMJ1.isFree", "HollowGlassOne");
+        hollowGlassTaskChild(930, CMJ1ModbusTcp.readUInt16(42027 - offset) + "", "HollowGlassOne");
     }
 
     @Scheduled(fixedDelay = 5000)
     public void hollowGlassTaskTwo() {
-        hollowGlassTaskChild(931, "ZKQ2.ZKQ2.isFree", "HollowGlassTwo");
+        S7DataZKExtra s7DataZKExtra = s7SerializerZKQ2.read(S7DataZKExtra.class);
+        hollowGlassTaskChild(931, (s7DataZKExtra.getIsFree() ? 1 : 0) + "", "HollowGlassTwo");
     }
 
     @Scheduled(fixedDelay = 5000)
     public void hollowGlassTaskThree() {
+        S7DataZKExtra s7DataZKExtra = s7SerializerZKQ2.read(S7DataZKExtra.class);
         //todo:鏆傛棤涓夌嚎鐨勭┖闂茬姸鎬佷俊鍙凤紝涓存椂鏍囩绌洪棽鐘舵��
-        hollowGlassTaskChild(932, "ZKQ3.ZKQ3.isFree", "HollowGlassThree");
+        hollowGlassTaskChild(932, (s7DataZKExtra.getIsFree03() ? 1 : 0) + "", "HollowGlassThree");
     }
 
     public void hollowGlassTaskChild(int cell, String isFreeTag, String websocketName) {
@@ -92,10 +123,9 @@
             List<HollowGlassQueueInfo> list = hollowGlassQueueInfoService.list(new LambdaQueryWrapper<HollowGlassQueueInfo>().in(HollowGlassQueueInfo::getRelationId, taskIdList));
             jsonObject.append("queueInfo", list);
         }
+
         try {
-            //930绌洪棽淇″彿
-            ReadWriteEntity freeOneRequestEntity = miloService.readFromOpcUa(isFreeTag);
-            jsonObject.append("freeRequest", freeOneRequestEntity.getValue());
+            jsonObject.append("freeRequest", isFreeTag);
         } catch (Exception e) {
             log.error("opc瀛樺湪寮傚父", e);
         }
@@ -139,6 +169,9 @@
 
 
     public void queryDataSource1(JSONObject jsonObject) throws Exception {
+        S7DataZKDLPOne s7DataZKDLPOne = s7SerializerZKDLPOne.read(S7DataZKDLPOne.class);
+        S7DataZKDLPTwo s7DataZKDLPTwo = s7SerializerZKDLPTwo.read(S7DataZKDLPTwo.class);
+        S7DataZKExtra s7DataZKExtra = s7SerializerZKQ2.read(S7DataZKExtra.class);
         List<Double> carPostion = new ArrayList<>();
         carPostion.add(0.25);
         carPostion.add(0.5);
@@ -149,14 +182,46 @@
         try {
             //杩涚墖浠诲姟鏁版嵁
             List<BigStorageTaskVO> inTaskList = new ArrayList();
-            ReadWriteEntity fromOpcUa = miloService.readFromOpcUa("DLP2A.DLP2A.FROM1");
-            for (int i = 1; i <= 6; i++) {
-                ReadWriteEntity requestWord = miloService.readFromOpcUa("DLP2A.DLP2A.DI" + i);
-                ReadWriteEntity targetSlotWord = miloService.readFromOpcUa("DLP2A.DLP2A.TO" + i);
-                ReadWriteEntity stateWord = miloService.readFromOpcUa("DLP2A.DLP2A.STATE" + i);
-                if (null != requestWord.getValue()) {
+            String fromOpcUa = s7DataZKDLPOne.getFrom1().toString();
+            for (int i = 0; i < 6; i++) {
+                String requestWord = "";
+                String stateWord = "";
+                String targetSlotWord = "";
+                switch (i) {
+                    case 0:
+                        requestWord = s7DataZKDLPOne.getId1();
+                        stateWord = s7DataZKDLPOne.getState1().toString();
+                        targetSlotWord = s7DataZKDLPOne.getTo1().toString();
+                        break;
+                    case 1:
+                        requestWord = s7DataZKDLPOne.getId2();
+                        stateWord = s7DataZKDLPOne.getState2().toString();
+                        targetSlotWord = s7DataZKDLPOne.getTo2().toString();
+                        break;
+                    case 2:
+                        requestWord = s7DataZKDLPOne.getId3();
+                        stateWord = s7DataZKDLPOne.getState3().toString();
+                        targetSlotWord = s7DataZKDLPOne.getTo3().toString();
+                        break;
+                    case 3:
+                        requestWord = s7DataZKDLPOne.getId4();
+                        stateWord = s7DataZKDLPOne.getState4().toString();
+                        targetSlotWord = s7DataZKDLPOne.getTo4().toString();
+                        break;
+                    case 4:
+                        requestWord = s7DataZKDLPOne.getId5();
+                        stateWord = s7DataZKDLPOne.getState5().toString();
+                        targetSlotWord = s7DataZKDLPOne.getTo5().toString();
+                        break;
+                    case 5:
+                        requestWord = s7DataZKDLPOne.getId6();
+                        stateWord = s7DataZKDLPOne.getState6().toString();
+                        targetSlotWord = s7DataZKDLPOne.getTo6().toString();
+                        break;
+                }
+                if (StringUtils.isNotEmpty(requestWord)) {
                     BigStorageTaskVO task = new BigStorageTaskVO();
-                    task.setGlassId(requestWord.getValue() + "");
+                    task.setGlassId(requestWord);
                     int isExistCount = hollowBigStorageCageDetailsService.count(new LambdaQueryWrapper<HollowBigStorageCageDetails>().in(HollowBigStorageCageDetails::getGlassId, task.getGlassId())
                             .in(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL));
                     if (isExistCount > 0) {
@@ -164,9 +229,9 @@
                     } else {
                         task.setIsSame(0);
                     }
-                    task.setStartSlot(Integer.parseInt(fromOpcUa.getValue() + ""));
-                    task.setTargetSlot(Integer.parseInt(targetSlotWord.getValue() + ""));
-                    task.setTaskState(Integer.parseInt(stateWord.getValue() + ""));
+                    task.setStartSlot(Integer.parseInt(fromOpcUa));
+                    task.setTargetSlot(Integer.parseInt(targetSlotWord));
+                    task.setTaskState(Integer.parseInt(stateWord));
                     inTaskList.add(task);
                     continue;
                 }
@@ -177,35 +242,86 @@
         }
         try {
             //杩涚墖鑱旀満
-            ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP2A.DLP2A.mesControl");
-            jsonObject.append("inkageEntity", inkageEntity.getValue());
+            Boolean inkageEntity = s7DataZKDLPOne.getMesControl();
+            jsonObject.append("inkageEntity", inkageEntity);
             //杩涚墖璇锋眰
-            ReadWriteEntity requestEntity = miloService.readFromOpcUa("DLP2A.DLP2A.RequestMes");
-            jsonObject.append("requestEntity", requestEntity.getValue());
+            String requestEntity = s7DataZKDLPOne.getRequestMes().toString();
+            jsonObject.append("requestEntity", requestEntity);
             //鍚姩鍛戒护
-            ReadWriteEntity mesReplyEntity = miloService.readFromOpcUa("DLP2A.DLP2A.MesReply");
-            jsonObject.append("mesReplyEntity", mesReplyEntity.getValue());
+            String mesReplyEntity = s7DataZKDLPOne.getMesReply().toString();
+            jsonObject.append("mesReplyEntity", mesReplyEntity);
             //鍑虹墖鑱旀満
-            ReadWriteEntity outInkageEntity = miloService.readFromOpcUa("DLP2B.DLP2B.mesControl");
-            jsonObject.append("outInkageEntity", outInkageEntity.getValue());
+            String outInkageEntity = s7DataZKDLPTwo.getMesControl().toString();
+            jsonObject.append("outInkageEntity", outInkageEntity);
             //鍑虹墖璇锋眰
-            ReadWriteEntity outRequestEntity = miloService.readFromOpcUa("DLP2B.DLP2B.RequestMes");
-            jsonObject.append("outRequestEntity", outRequestEntity.getValue());
+            String outRequestEntity = s7DataZKDLPTwo.getRequestMes().toString();
+            jsonObject.append("outInkageEntity", outInkageEntity);
             //930绌洪棽淇″彿
-            ReadWriteEntity freeOneRequestEntity = miloService.readFromOpcUa("CMJ1.CMJ1.isFree");
-            jsonObject.append("freeOneRequestEntity", freeOneRequestEntity.getValue());
+            jsonObject.append("freeOneRequestEntity", CMJ1ModbusTcp.readUInt16(42027 - offset));
             //931绌洪棽淇″彿
-            ReadWriteEntity freeTwoRequestEntity = miloService.readFromOpcUa("ZKQ2.ZKQ2.isFree");
-            jsonObject.append("freeTwoRequestEntity", freeTwoRequestEntity.getValue());
+            jsonObject.append("freeTwoRequestEntity", s7DataZKExtra.getIsFree());
             //932绌洪棽淇″彿
-            ReadWriteEntity freeThreeRequestEntity = miloService.readFromOpcUa("ZKQ3.ZKQ3.isFree");
-            jsonObject.append("freeThreeRequestEntity", freeThreeRequestEntity.getValue());
+            jsonObject.append("freeThreeRequestEntity", s7DataZKExtra.getIsFree());
         } catch (Exception e) {
             //todo:涓嶅仛浠诲姟澶勭悊
         }
 
         //鍑虹墖浠诲姟鏁版嵁
-        List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_two_task");
+        List<BigStorageCageTask> outTaskList = new ArrayList<>();
+        for (int i = 0; i < 6; i++) {
+
+            BigStorageCageTask bigStorageCageTask = new BigStorageCageTask();
+            String glassId = "";
+            Integer startSlot = 0;
+            Integer targetSlot = 0;
+            Integer taskState = 0;
+            switch (i) {
+                case 0:
+                    glassId = s7DataZKDLPTwo.getId1();
+                    startSlot = s7DataZKDLPTwo.getFrom1();
+                    targetSlot = s7DataZKDLPTwo.getTo1();
+                    taskState = s7DataZKDLPTwo.getState1();
+                    ;
+                    break;
+                case 1:
+                    glassId = s7DataZKDLPTwo.getId2();
+                    startSlot = s7DataZKDLPTwo.getFrom2();
+                    targetSlot = s7DataZKDLPTwo.getTo2();
+                    taskState = s7DataZKDLPTwo.getState2();
+                    break;
+                case 2:
+                    glassId = s7DataZKDLPTwo.getId3();
+                    startSlot = s7DataZKDLPTwo.getFrom3();
+                    targetSlot = s7DataZKDLPTwo.getTo3();
+                    taskState = s7DataZKDLPTwo.getState3();
+                    break;
+                case 3:
+                    glassId = s7DataZKDLPTwo.getId4();
+                    startSlot = s7DataZKDLPTwo.getFrom4();
+                    targetSlot = s7DataZKDLPTwo.getTo4();
+                    taskState = s7DataZKDLPTwo.getState4();
+                    break;
+                case 4:
+                    glassId = s7DataZKDLPTwo.getId5();
+                    startSlot = s7DataZKDLPTwo.getFrom5();
+                    targetSlot = s7DataZKDLPTwo.getTo5();
+                    taskState = s7DataZKDLPTwo.getState5();
+                    break;
+                case 5:
+                    glassId = s7DataZKDLPTwo.getId6();
+                    startSlot = s7DataZKDLPTwo.getFrom6();
+                    targetSlot = s7DataZKDLPTwo.getTo6();
+                    taskState = s7DataZKDLPTwo.getState6();
+                    break;
+            }
+            if (StringUtils.isNotEmpty(glassId)) {
+                bigStorageCageTask.setGlassId(glassId);
+                bigStorageCageTask.setStartSlot(startSlot);
+                bigStorageCageTask.setTargetSlot(targetSlot);
+                bigStorageCageTask.setTaskState(taskState);
+                outTaskList.add(bigStorageCageTask);
+            }
+        }
         jsonObject.append("bigStorageCageDetailsOutTask", outTaskList);
 
         //璋冨害寮�鍏�
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/s7/entity/S7DataZKDLPOne.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/s7/entity/S7DataZKDLPOne.java
new file mode 100644
index 0000000..acea6fd
--- /dev/null
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/s7/entity/S7DataZKDLPOne.java
@@ -0,0 +1,115 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.Data;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+public class S7DataZKDLPOne {
+
+
+    @S7Variable(address = "DB3.2992.0", type = EDataType.BOOL)
+    private Boolean mesControl;
+
+    @S7Variable(address = "DB7.0", type = EDataType.UINT16)
+    private Integer requestMes;
+
+    @S7Variable(address = "DB7.2", type = EDataType.UINT16)
+    private Integer mesReply;
+
+    @S7Variable(address = "DB7.140", type = EDataType.UINT16)
+    private Integer from1;
+
+    @S7Variable(address = "DB7.142", type = EDataType.UINT16)
+    private Integer from2;
+
+    @S7Variable(address = "DB7.144", type = EDataType.UINT16)
+    private Integer from3;
+
+    @S7Variable(address = "DB7.146", type = EDataType.UINT16)
+    private Integer from4;
+
+    @S7Variable(address = "DB7.148", type = EDataType.UINT16)
+    private Integer from5;
+
+    @S7Variable(address = "DB7.150", type = EDataType.UINT16)
+    private Integer from6;
+
+    @S7Variable(address = "DB7.152", type = EDataType.UINT16)
+    private Integer to1;
+
+    @S7Variable(address = "DB7.154", type = EDataType.UINT16)
+    private Integer to2;
+
+    @S7Variable(address = "DB7.156", type = EDataType.UINT16)
+    private Integer to3;
+
+    @S7Variable(address = "DB7.158", type = EDataType.UINT16)
+    private Integer to4;
+
+    @S7Variable(address = "DB7.160", type = EDataType.UINT16)
+    private Integer to5;
+
+    @S7Variable(address = "DB7.162", type = EDataType.UINT16)
+    private Integer to6;
+
+    @S7Variable(address = "DB7.164", type = EDataType.UINT16)
+    private Integer state1;
+
+    @S7Variable(address = "DB7.166", type = EDataType.UINT16)
+    private Integer state2;
+
+    @S7Variable(address = "DB7.168", type = EDataType.UINT16)
+    private Integer state3;
+
+    @S7Variable(address = "DB7.170", type = EDataType.UINT16)
+    private Integer state4;
+
+    @S7Variable(address = "DB7.172", type = EDataType.UINT16)
+    private Integer state5;
+
+    @S7Variable(address = "DB7.174", type = EDataType.UINT16)
+    private Integer state6;
+
+    @S7Variable(address = "DB7.8", type = EDataType.STRING, count = 14)
+    private String id1;
+
+    @S7Variable(address = "DB7.30", type = EDataType.STRING, count = 14)
+    private String id2;
+
+    @S7Variable(address = "DB7.52", type = EDataType.STRING, count = 14)
+    private String id3;
+
+    @S7Variable(address = "DB7.74", type = EDataType.STRING, count = 14)
+    private String id4;
+
+    @S7Variable(address = "DB7.96", type = EDataType.STRING, count = 14)
+    private String id5;
+
+    @S7Variable(address = "DB7.118", type = EDataType.STRING, count = 14)
+    private String id6;
+
+    @S7Variable(address = "MW1002", type = EDataType.UINT16)
+    private Integer alramSignal;
+
+    public List<Integer> getStates() {
+        return Arrays.asList(state1, state2, state3, state4, state5, state6);
+    }
+
+    public List<String> getIds() {
+        return Arrays.asList(id1, id2, id3, id4, id5, id6);
+    }
+
+    public List<Integer> getTos() {
+        return Arrays.asList(to1, to2, to3, to4, to5, to6);
+    }
+
+}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/s7/entity/S7DataZKDLPTwo.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/s7/entity/S7DataZKDLPTwo.java
new file mode 100644
index 0000000..48c501e
--- /dev/null
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/s7/entity/S7DataZKDLPTwo.java
@@ -0,0 +1,116 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.Data;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+public class S7DataZKDLPTwo {
+
+
+    @S7Variable(address = "DB3.2992.0", type = EDataType.BOOL)
+    private Boolean mesControl;
+
+    @S7Variable(address = "DB7.4", type = EDataType.UINT16)
+    private Integer requestMes;
+
+    @S7Variable(address = "DB7.6", type = EDataType.UINT16)
+    private Integer mesReply;
+
+    @S7Variable(address = "DB7.308", type = EDataType.UINT16)
+    private Integer from1;
+
+    @S7Variable(address = "DB7.310", type = EDataType.UINT16)
+    private Integer from2;
+
+    @S7Variable(address = "DB7.312", type = EDataType.UINT16)
+    private Integer from3;
+
+    @S7Variable(address = "DB7.314", type = EDataType.UINT16)
+    private Integer from4;
+
+    @S7Variable(address = "DB7.316", type = EDataType.UINT16)
+    private Integer from5;
+
+    @S7Variable(address = "DB7.318", type = EDataType.UINT16)
+    private Integer from6;
+
+    @S7Variable(address = "DB7.320", type = EDataType.UINT16)
+    private Integer to1;
+
+    @S7Variable(address = "DB7.322", type = EDataType.UINT16)
+    private Integer to2;
+
+    @S7Variable(address = "DB7.324", type = EDataType.UINT16)
+    private Integer to3;
+
+    @S7Variable(address = "DB7.326", type = EDataType.UINT16)
+    private Integer to4;
+
+    @S7Variable(address = "DB7.328", type = EDataType.UINT16)
+    private Integer to5;
+
+    @S7Variable(address = "DB7.330", type = EDataType.UINT16)
+    private Integer to6;
+
+    @S7Variable(address = "DB7.332", type = EDataType.UINT16)
+    private Integer state1;
+
+    @S7Variable(address = "DB7.334", type = EDataType.UINT16)
+    private Integer state2;
+
+    @S7Variable(address = "DB7.336", type = EDataType.UINT16)
+    private Integer state3;
+
+    @S7Variable(address = "DB7.338", type = EDataType.UINT16)
+    private Integer state4;
+
+    @S7Variable(address = "DB7.340", type = EDataType.UINT16)
+    private Integer state5;
+
+    @S7Variable(address = "DB7.342", type = EDataType.UINT16)
+    private Integer state6;
+
+    @S7Variable(address = "DB7.176", type = EDataType.STRING, count = 14)
+    private String id1;
+
+    @S7Variable(address = "DB7.198", type = EDataType.STRING, count = 14)
+    private String id2;
+
+    @S7Variable(address = "DB7.220", type = EDataType.STRING, count = 14)
+    private String id3;
+
+    @S7Variable(address = "DB7.242", type = EDataType.STRING, count = 14)
+    private String id4;
+
+    @S7Variable(address = "DB7.264", type = EDataType.STRING, count = 14)
+    private String id5;
+
+    @S7Variable(address = "DB7.286", type = EDataType.STRING, count = 14)
+    private String id6;
+
+    public List<Integer> getStates() {
+        return Arrays.asList(state1, state2, state3, state4, state5, state6);
+    }
+
+    public List<String> getIds() {
+        return Arrays.asList(id1, id2, id3, id4, id5, id6);
+    }
+
+    public List<Integer> getTos() {
+        return Arrays.asList(to1, to2, to3, to4, to5, to6);
+    }
+
+    public List<Integer> getFroms() {
+        return Arrays.asList(from1, from2, from3, from4, from5, from6);
+    }
+
+}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/s7/entity/S7DataZKExtra.java b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/s7/entity/S7DataZKExtra.java
new file mode 100644
index 0000000..fc46ca3
--- /dev/null
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/java/com/mes/s7/entity/S7DataZKExtra.java
@@ -0,0 +1,21 @@
+package com.mes.s7.entity;
+
+import com.github.xingshuangs.iot.common.enums.EDataType;
+import com.github.xingshuangs.iot.protocol.s7.serializer.S7Variable;
+import lombok.Data;
+
+/**
+ * @Author : zhoush
+ * @Date: 2025/4/30 14:19
+ * @Description:
+ */
+@Data
+public class S7DataZKExtra {
+
+    @S7Variable(address = "DB20.0.0", type = EDataType.BOOL)
+    private Boolean isFree;
+
+    @S7Variable(address = "DB20.0.1", type = EDataType.BOOL)
+    private Boolean isFree03;
+
+}
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application-yw.yml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application-yw.yml
index 89e07f7..46671eb 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application-yw.yml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application-yw.yml
@@ -30,7 +30,7 @@
     password: 123456
 kangaroohy:
   milo:
-    enabled: true
+    enabled: false
     primary: default
     config:
       default:
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application.yml
index b22d666..c0085a8 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/application.yml
@@ -3,16 +3,16 @@
 
 spring:
   profiles:
-    active: dev
+    active: yw
   application:
     name: hollowGlass
   liquibase:
     enabled: false
-#  task:
-#    scheduling:
-#      pool:
-#        size: 10
-#      thread-name-prefix: task-hollowGlass
+  task:
+    scheduling:
+      pool:
+        size: 3
+      thread-name-prefix: task-hollowGlass
 mybatis-plus:
   mapper-locations: classpath*:mapper/*.xml
 #  configuration:
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/logback-spring.xml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/logback-spring.xml
index cd91511..7b05023 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/logback-spring.xml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/logback-spring.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration scan="true" scanPeriod="10 seconds">
     <!-- logger涓婁笅鏂囧悕绉帮紙鏍规嵁涓氬姟淇敼锛� -->
-    <contextName>cacheVerticalGlass</contextName>
+    <contextName>hollowGlass</contextName>
 
     <!-- 瀹氫箟浜嗕竴涓悕涓簊erverName鐨勫睘鎬э紝瀹冪殑鍊兼潵鑷簬logging.file.name锛屽鏋滄病鏈夋壘鍒拌灞炴�ч粯璁や负MyServerName锛堟牴鎹笟鍔′慨鏀癸級 -->
     <springProperty name="serverName" source="logging.file.name" defaultValue="hollowGlass"/>
diff --git a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
index df09271..286e3ff 100644
--- a/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
+++ b/hangzhoumesParent/moduleService/hollowGlassModule/src/main/resources/mapper/HollowGlassRelationInfoMapper.xml
@@ -132,11 +132,17 @@
     <select id="queryProductNameByFlowCardId" resultType="com.mes.hollow.entity.dto.OrderDetailsDTO">
         select t.product_name, t1.customer_name
         from sd.order_detail t
-                 inner join sd.order t1 on t.order_id = t1.order_id
+        inner join sd.order t1 on t.order_id = t1.order_id
         where (t.order_id, t.order_number) = (
-            select min(order_id) as order_id, min(order_number) as order_number
-            from pp.flow_card
-            where process_id = #{flowCardId}
+        select min(order_id) as order_id, min(order_number) as order_number
+        from pp.flow_card
+        where process_id = #{flowCardId}
+        <if test="productName != null and productName != ''">
+            and t.product_name like concat('%', #{productName}, '%')
+        </if>
+        <if test="customerName != null and customerName != ''">
+            and t1.customer_name like concat('%', #{customerName}, '%')
+        </if>
         )
         limit 1
     </select>

--
Gitblit v1.8.0