From 4f5d1a4c178231bf0eb5db2f8e6f158fffbf5635 Mon Sep 17 00:00:00 2001
From: wangfei <3597712270@qq.com>
Date: 星期一, 01 七月 2024 17:57:07 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java                |   16 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java        |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java          |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java                              |   17 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java                      |   16 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java                                                         |   89 +
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java                                         |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orderdetail.java                                                     |    2 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml                                          |   75 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java                                           |   18 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java                                   |  201 ++-
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java                 |    8 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java                  |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java                      |    6 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeLayout.java                                                     |    8 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java                       |   14 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/UpPattenUsage.java                                           |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml                                                         |    9 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java                        |   12 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/dto/DownGlassInfoDTO.java                     |   32 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java        |    1 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java    |   27 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java                                                 |    8 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java   |   10 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/AwaitingRepair.java                                             |    7 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java                                                    |   22 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java                                                 |    7 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java             |   51 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java                                           |   34 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassTask.java                              |   28 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java                                          |   27 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java                                        |   46 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java                                     |    4 
 hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml                                                                                    |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java            |   12 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java                     |    1 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java      |    7 
 hangzhoumesParent/moduleService/CacheGlassModule/pom.xml                                                                                     |    6 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orders.java                                                          |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java                                      |  518 ++++++++
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageFeedTask.java             |    4 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java       |    5 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java           |    3 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java                      |   24 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java                                                   |   16 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java                                                 |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml                                               |    4 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java                            |   14 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java                                    |   12 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java             |   60 
 hangzhoumesParent/common/servicebase/pom.xml                                                                                                 |    4 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/JsonFile/PlcCacheVerticalGlass.json                              |  422 +++++-
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml                                 |   41 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java                                               |   51 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml                           |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java                  |    8 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java |   37 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java                                           |    2 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml                                                  |    5 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java                          |    5 
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java                                          |    9 
 /dev/null                                                                                                                                    |   29 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json                                              |  502 ++-----
 hangzhoumesParent/moduleService/CacheVerticalGlassModule/pom.xml                                                                             |    5 
 JsonFile/PlcdownGlass.json                                                                                                                   |  502 ++-----
 hangzhoumesParent/JsonFile/PlcdownGlass.json                                                                                                 |  502 ++-----
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java                                  |    6 
 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java               |    3 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeDetail.java                                                     |   12 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java                                                          |   36 
 hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java                      |   10 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java                        |    6 
 72 files changed, 2,152 insertions(+), 1,558 deletions(-)

diff --git a/JsonFile/PlcdownGlass.json b/JsonFile/PlcdownGlass.json
index c813b1d..98366a9 100644
--- a/JsonFile/PlcdownGlass.json
+++ b/JsonFile/PlcdownGlass.json
@@ -1,362 +1,144 @@
 {
-  "plcAddressBegin": "DB100.0",
-  "plcAddressLenght": "142",
-  "dataType": "word",
-  "parameteInfor": [
-    {
-      "codeId": "RequestWord",
-      "addressIndex": "0",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G04ID",
-      "addressIndex": "2",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06RobotTaskRequestWord",
-      "addressIndex": "4",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06ID",
-      "addressIndex": "6",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11RobotTaskRequestWord",
-      "addressIndex": "8",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G011ID",
-      "addressIndex": "10",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "12",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "14",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "16",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "18",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "MESSendingWord",
-      "addressIndex": "20",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InputGrid",
-      "addressIndex": "22",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "OutputGrid",
-      "addressIndex": "24",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "OutputID",
-      "addressIndex": "26",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "FrontOrRearLowerSlice",
-      "addressIndex": "28",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "30",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06RobotTaskReply",
-      "addressIndex": "32",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06Rack",
-      "addressIndex": "34",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11RobotTaskReply",
-      "addressIndex": "36",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11Rack",
-      "addressIndex": "38",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "40",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "42",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "44",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "46",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "48",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "50",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "52",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "54",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "MESTaskState",
-      "addressIndex": "56",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "58",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "AlarmState",
-      "addressIndex": "60",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "Alarm1",
-      "addressIndex": "62",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "Alarm2",
-      "addressIndex": "64",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "Alarm3",
-      "addressIndex": "66",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "Alarm4",
-      "addressIndex": "68",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "neirong",
-      "addressIndex": "70",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "device",
-      "addressIndex": "72",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "74",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "76",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut1",
-      "addressIndex": "78",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut2",
-      "addressIndex": "80",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut3",
-      "addressIndex": "82",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut4",
-      "addressIndex": "84",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut5",
-      "addressIndex": "86",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut6",
-      "addressIndex": "88",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut7",
-      "addressIndex": "90",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "92",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "94",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "96",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "98",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "100",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G04ActionState",
-      "addressIndex": "102",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G05ActionState",
-      "addressIndex": "104",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06ActionState",
-      "addressIndex": "106",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G07ActionState",
-      "addressIndex": "108",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G08ActionState",
-      "addressIndex": "110",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G09ActionState",
-      "addressIndex": "112",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G10ActionState",
-      "addressIndex": "114",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11ActionState",
-      "addressIndex": "116",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G12ActionState",
-      "addressIndex": "118",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G13ActionState",
-      "addressIndex": "120",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G04IDS",
-      "addressIndex": "122",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G05IDS",
-      "addressIndex": "124",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06IDS",
-      "addressIndex": "126",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G07IDS",
-      "addressIndex": "128",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G08IDS",
-      "addressIndex": "130",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G09IDS",
-      "addressIndex": "132",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G10IDS",
-      "addressIndex": "134",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11IDS",
-      "addressIndex": "136",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G12IDS",
-      "addressIndex": "138",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G13ID",
-      "addressIndex": "140",
-      "addressLenght": "2"
-    }
-  ]
+	"plcAddressBegin": "DB11.0",
+	"plcAddressLenght": "92",
+	"dataType": "word",
+	"parameteInfor": [
+
+		{
+			"codeId": "requestWord",
+			"addressIndex": "0",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "requestID",
+			"addressIndex": "2",
+			"addressLenght": "30"
+		},
+		{
+			"codeId": "currentCell",
+			"addressIndex": "32",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "glassStatus08",
+			"addressIndex": "36",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "glassStatus06",
+			"addressIndex": "40",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "glassStatus11",
+			"addressIndex": "42",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "glassStatus13",
+			"addressIndex": "44",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G04_error_status",
+			"addressIndex": "48",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G05_error_status",
+			"addressIndex": "50",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_error_status",
+			"addressIndex": "52",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "robot_error_status",
+			"addressIndex": "54",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G08_error_status",
+			"addressIndex": "56",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G09_error_status",
+			"addressIndex": "58",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G10_error_status",
+			"addressIndex": "60",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_error_status",
+			"addressIndex": "62",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "robot_error_status",
+			"addressIndex": "64",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_error_status",
+			"addressIndex": "66",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "confirmationWord",
+			"addressIndex": "72",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_prohibit_film_production",
+			"addressIndex": "74",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_prohibit_film_production",
+			"addressIndex": "76",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_prohibit_film_production",
+			"addressIndex": "78",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "Glass_width",
+			"addressIndex": "80",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "Glass_height",
+			"addressIndex": "82",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "Glass_thickness",
+			"addressIndex": "84",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "Start_cell",
+			"addressIndex": "86",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "End_cell",
+			"addressIndex": "88",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "task_type",
+			"addressIndex": "90",
+			"addressLenght": "2"
+		}
+
+	]
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/JsonFile/PlcdownGlass.json b/hangzhoumesParent/JsonFile/PlcdownGlass.json
index c813b1d..979dc66 100644
--- a/hangzhoumesParent/JsonFile/PlcdownGlass.json
+++ b/hangzhoumesParent/JsonFile/PlcdownGlass.json
@@ -1,362 +1,144 @@
 {
-  "plcAddressBegin": "DB100.0",
-  "plcAddressLenght": "142",
-  "dataType": "word",
-  "parameteInfor": [
-    {
-      "codeId": "RequestWord",
-      "addressIndex": "0",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G04ID",
-      "addressIndex": "2",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06RobotTaskRequestWord",
-      "addressIndex": "4",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06ID",
-      "addressIndex": "6",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11RobotTaskRequestWord",
-      "addressIndex": "8",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G011ID",
-      "addressIndex": "10",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "12",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "14",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "16",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "18",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "MESSendingWord",
-      "addressIndex": "20",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InputGrid",
-      "addressIndex": "22",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "OutputGrid",
-      "addressIndex": "24",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "OutputID",
-      "addressIndex": "26",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "FrontOrRearLowerSlice",
-      "addressIndex": "28",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "30",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06RobotTaskReply",
-      "addressIndex": "32",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06Rack",
-      "addressIndex": "34",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11RobotTaskReply",
-      "addressIndex": "36",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11Rack",
-      "addressIndex": "38",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "40",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "42",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "44",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "46",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "48",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "50",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "52",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "54",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "MESTaskState",
-      "addressIndex": "56",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "58",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "AlarmState",
-      "addressIndex": "60",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "Alarm1",
-      "addressIndex": "62",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "Alarm2",
-      "addressIndex": "64",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "Alarm3",
-      "addressIndex": "66",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "Alarm4",
-      "addressIndex": "68",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "neirong",
-      "addressIndex": "70",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "device",
-      "addressIndex": "72",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "74",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "76",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut1",
-      "addressIndex": "78",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut2",
-      "addressIndex": "80",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut3",
-      "addressIndex": "82",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut4",
-      "addressIndex": "84",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut5",
-      "addressIndex": "86",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut6",
-      "addressIndex": "88",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut7",
-      "addressIndex": "90",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "92",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "94",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "96",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "98",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "100",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G04ActionState",
-      "addressIndex": "102",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G05ActionState",
-      "addressIndex": "104",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06ActionState",
-      "addressIndex": "106",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G07ActionState",
-      "addressIndex": "108",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G08ActionState",
-      "addressIndex": "110",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G09ActionState",
-      "addressIndex": "112",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G10ActionState",
-      "addressIndex": "114",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11ActionState",
-      "addressIndex": "116",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G12ActionState",
-      "addressIndex": "118",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G13ActionState",
-      "addressIndex": "120",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G04IDS",
-      "addressIndex": "122",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G05IDS",
-      "addressIndex": "124",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06IDS",
-      "addressIndex": "126",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G07IDS",
-      "addressIndex": "128",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G08IDS",
-      "addressIndex": "130",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G09IDS",
-      "addressIndex": "132",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G10IDS",
-      "addressIndex": "134",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11IDS",
-      "addressIndex": "136",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G12IDS",
-      "addressIndex": "138",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G13ID",
-      "addressIndex": "140",
-      "addressLenght": "2"
-    }
-  ]
+	"plcAddressBegin": "DB11.0",
+	"plcAddressLenght": "100",
+	"dataType": "word",
+	"parameteInfor": [
+
+		{
+			"codeId": "requestWord",
+			"addressIndex": "0",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "requestID",
+			"addressIndex": "2",
+			"addressLenght": "30"
+		},
+		{
+			"codeId": "currentCell",
+			"addressIndex": "32",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "glassStatus08",
+			"addressIndex": "36",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_glass_status",
+			"addressIndex": "40",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_glass_status",
+			"addressIndex": "42",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_glass_status",
+			"addressIndex": "44",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G04_error_status",
+			"addressIndex": "48",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G05_error_status",
+			"addressIndex": "50",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_error_status",
+			"addressIndex": "52",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "robot_error_status",
+			"addressIndex": "54",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G08_error_status",
+			"addressIndex": "56",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G09_error_status",
+			"addressIndex": "58",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G10_error_status",
+			"addressIndex": "60",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_error_status",
+			"addressIndex": "62",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "robot_error_status",
+			"addressIndex": "64",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_error_status",
+			"addressIndex": "66",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "confirmationWord",
+			"addressIndex": "72",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_prohibit_film_production",
+			"addressIndex": "74",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_prohibit_film_production",
+			"addressIndex": "76",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_prohibit_film_production",
+			"addressIndex": "78",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "Glass_width",
+			"addressIndex": "82",
+			"addressLenght": "4"
+		},
+		{
+			"codeId": "Glass_height",
+			"addressIndex": "86",
+			"addressLenght": "4"
+		},
+		{
+			"codeId": "Glass_thickness",
+			"addressIndex": "90",
+			"addressLenght": "4"
+		},
+		{
+			"codeId": "Start_cell",
+			"addressIndex": "94",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "End_cell",
+			"addressIndex": "96",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "task_type",
+			"addressIndex": "98",
+			"addressLenght": "2"
+		}
+
+	]
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/common/servicebase/pom.xml b/hangzhoumesParent/common/servicebase/pom.xml
index 07e9a43..4f1f015 100644
--- a/hangzhoumesParent/common/servicebase/pom.xml
+++ b/hangzhoumesParent/common/servicebase/pom.xml
@@ -19,8 +19,8 @@
     <dependencies>
         <dependency>
             <groupId>com.microsoft.sqlserver</groupId>
-            <artifactId>sqljdbc4</artifactId>
-            <version>4.0</version>
+            <artifactId>mssql-jdbc</artifactId>
+            <version>6.4.0.jre8</version>
         </dependency>
     </dependencies>
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java
index c427061..97eba6b 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/base/entity/BigStorageCageBaseInfo.java
@@ -21,7 +21,7 @@
      * 瀹�
      */
     @ApiModelProperty(value = "瀹�")
-    private Double width;
+    private double width;
 
     /**
      * 鏍煎瓙鍙�
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 b18d95d..b057bd4 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
@@ -28,7 +28,7 @@
      * 鍗у紡鐞嗙墖绗艰鎯呰〃鐜荤拑鐘舵��
      * 璇嗗埆鍚庢垚鍔熺姸鎬�100
      * 鍑虹墖浠诲姟101
-     * 浜哄伐涓嬬墖101
+     * 浜哄伐涓嬬墖102
      * 鎷胯蛋200
      * 鐮存崯201
      */
@@ -41,7 +41,6 @@
     /**
      * 鍗у紡鐞嗙墖绗艰鎯呰〃鐜荤拑鐘舵��
      * 杩涚墖浠诲姟1
-     * 鍑虹墖浠诲姟2
      * 鍑虹墖浠诲姟2
      */
     public static final Integer GLASS_CACHE_TYPE_IN = 1;
@@ -132,13 +131,30 @@
      * 6  鎷胯蛋
      */
 
-    public static final Integer TEMPERING_NEW =-1;
-    public static final Integer TEMPERING_OUT =0;
-    public static final Integer TEMPERING_DROP =1;
-    public static final Integer TEMPERING_START =2;
-    public static final Integer TEMPERING_SUCCESS =3;
-    public static final Integer TEMPERING_END =4;
-    public static final Integer TEMPERING_DAMAGE =5;
-    public static final Integer TEMPERING_TAKE =6;
+    public static final Integer TEMPERING_NEW = -1;
+    public static final Integer TEMPERING_OUT = 0;
+    public static final Integer TEMPERING_DROP = 1;
+    public static final Integer TEMPERING_START = 2;
+    public static final Integer TEMPERING_SUCCESS = 3;
+    public static final Integer TEMPERING_END = 4;
+    public static final Integer TEMPERING_DAMAGE = 5;
+    public static final Integer TEMPERING_TAKE = 6;
+
+    /**
+     * 涓嬬墖
+     */
+    /**
+     * 鎵ц绾胯矾鏍煎瓙淇℃伅
+     */
+    public static final List<Integer> G06_WORK_STATION = Arrays.asList(1, 2, 3);
+    public static final List<Integer> G11_WORK_STATION = Arrays.asList(4, 5, 6);
+    public static final List<Integer> G13_WORK_STATION = Arrays.asList(7);
+
+    /**
+     * 鍚敤 1
+     * 绂佺敤 0
+     */
+    public static final Integer SLOT_ON = 1;
+    public static final Integer SLOT_OFF = 0;
 
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
index 29a1038..b821404 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/controller/DamageController.java
@@ -1,9 +1,18 @@
 package com.mes.damage.controller;
 
 
+import cn.hutool.core.date.DateTime;
+import com.mes.damage.entity.Damage;
+import com.mes.damage.service.DamageService;
+import com.mes.utils.Result;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
 
 /**
  * <p>
@@ -11,11 +20,32 @@
  * </p>
  *
  * @author wu
- * @since 2024-06-13
+ * @since 2024-06-25
  */
 @RestController
-@RequestMapping("/glassinfo/damage")
+@RequestMapping("/damage")
 public class DamageController {
 
+    @Autowired
+    private DamageService damageService;
+    @ApiOperation("鎶ュ伐鏁版嵁鏌ヨ")
+    @GetMapping("/selectDamage")
+    public Result selectDamage(DateTime startTime , DateTime endTime,int type,int status,int workingProcedureId) {
+        return Result.build(200,"鏌ヨ鎴愬姛",damageService.selectDamage(startTime,endTime,type,status,workingProcedureId));
+    }
+
+    @ApiOperation("鎶ュ伐")
+    @GetMapping("/submitDamage")
+    public Result submitDamage(DateTime startTime , DateTime endTime,int type,int status,int workingProcedureId) {
+        damageService.submitDamage(startTime,endTime,type,status,workingProcedureId);
+        return Result.build(200,"鎶ュ伐鎴愬姛",1);
+    }
+
+    @ApiOperation("鎶ュ伐鏁版嵁淇敼")
+    @GetMapping("/updateDamage")
+    public Result updateDamage(List<Damage> damageList) {
+        damageService.updateBatchById(damageList);
+        return Result.build(200,"淇敼鎴愬姛",1);
+    }
 }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java
index 0467855..5b24168 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/entity/Damage.java
@@ -9,11 +9,11 @@
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author wu
- * @since 2024-06-13
+ * @since 2024-06-25
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -21,24 +21,103 @@
 
     private static final long serialVersionUID = 1L;
 
-      @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
+    /**
+     * 宸ュ簭
+     */
+    private Integer workingProcedureId;
+
+    /**
+     * 鐜荤拑id
+     */
     private String glassId;
 
-    private Integer deviceId;
-
+    /**
+     * 宸ョ▼鍙�
+     */
     private String engineerId;
 
+    /**
+     * 閽㈠寲鐗堝浘id
+     */
     private Integer temperingLayoutId;
 
+    /**
+     * 鐢熶骇鏃堕棿
+     */
     private LocalDateTime damageTime;
 
+    /**
+     * 澶囨敞
+     */
     private String remark;
 
+    /**
+     * 绫诲瀷锛�0锛氭姤宸� 1锛氱牬鎹� 2锛氭嬁璧�
+     */
     private Integer type;
 
+    /**
+     * 鐘舵�侊細0锛氭湭鎶ュ伐 1锛氬凡鎶ュ伐
+     */
     private Integer status;
 
+    /**
+     * 娴佺▼鍗�
+     */
+    private Integer processId;
+
+    /**
+     * 搴忓彿
+     */
+    private Integer orderNumber;
+
+    /**
+     * 宸ヨ壓纭搴忓彿
+     */
+    private Integer technologyNumber;
+
+    /**
+     * 鐮存崯绫诲瀷
+     */
+    private String breakageType;
+
+    /**
+     * 鐮存崯鍘熷洜
+     */
+    private String breakageReason;
+
+    /**
+     * 璐d换宸ュ簭
+     */
+    private String responsibleProcess;
+
+    /**
+     * 璐d换浜哄憳
+     */
+    private String responsiblePersonnel;
+
+    /**
+     * 璐d换鐝粍
+     */
+    private String responsibleTeam;
+
+    /**
+     * 璐d换璁惧
+     */
+    private String responsibleEquipment;
+
+    /**
+     * 鎶ュ伐鐝粍鍚嶇О
+     */
+    private String teamsGroupsName;
+
+    /**
+     * 鎶ュ伐璁惧鍚嶇О
+     */
+    private String deviceName;
+
 
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
index ae90667..80f141d 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
@@ -1,7 +1,10 @@
 package com.mes.damage.service;
 
+import cn.hutool.core.date.DateTime;
 import com.mes.damage.entity.Damage;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +16,9 @@
  */
 public interface DamageService extends IService<Damage> {
 
+    List<Damage> selectDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId);
+
+    void submitDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId);
+
+    void insertDamage(String glassId);
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
index 130e515..ab5a1c7 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
@@ -1,10 +1,17 @@
 package com.mes.damage.service.impl;
 
+import cn.hutool.core.date.DateTime;
+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.mes.damage.entity.Damage;
 import com.mes.damage.mapper.DamageMapper;
 import com.mes.damage.service.DamageService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.glassinfo.entity.GlassInfo;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * <p>
@@ -17,4 +24,43 @@
 @Service
 public class DamageServiceImpl extends ServiceImpl<DamageMapper, Damage> implements DamageService {
 
+    @Override
+    public List<Damage> selectDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId){
+        LambdaQueryWrapper<Damage> damageSelectWrapper =new LambdaQueryWrapper<>();
+        damageSelectWrapper.between(Damage::getDamageTime,startTime,endTime);
+        if (type!=0){
+            damageSelectWrapper.eq(Damage::getType,type);
+        }
+        if (status!=0){
+            damageSelectWrapper.eq(Damage::getStatus,status);
+        }
+        if(workingProcedureId!=0){
+            damageSelectWrapper.eq(Damage::getWorkingProcedureId,workingProcedureId);
+        }
+        return baseMapper.selectList(damageSelectWrapper);
+    }
+
+    @Override
+    public void submitDamage(DateTime startTime, DateTime endTime, int type, int status, int workingProcedureId){
+        LambdaUpdateWrapper<Damage> damageUpdateWrapper=new LambdaUpdateWrapper<>();
+        damageUpdateWrapper.between(Damage::getDamageTime,startTime,endTime);
+        if (type!=0){
+            damageUpdateWrapper.eq(Damage::getType,type);
+        }
+        if (status!=0){
+            damageUpdateWrapper.eq(Damage::getStatus,status);
+        }
+        if(workingProcedureId!=0){
+            damageUpdateWrapper.eq(Damage::getWorkingProcedureId,workingProcedureId);
+        }
+        Damage damage=new Damage();
+        damage.setStatus(2);
+        baseMapper.update(damage,damageUpdateWrapper);
+    }
+
+    @Override
+    public void insertDamage(String glassId){
+        LambdaQueryWrapper<GlassInfo> glassInfoSelectWrapper=new LambdaQueryWrapper<>();
+        GlassInfo glassInfo=new GlassInfo();
+    }
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
index 5fe46f1..66912e6 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
@@ -40,17 +40,17 @@
     /**
      * 瀹�
      */
-    private Double width;
+    private double width;
 
     /**
      * 楂�
      */
-    private Double height;
+    private double height;
 
     /**
      * 鍘氬害
      */
-    private Double thickness;
+    private double thickness;
 
     /**
      * 鑶滅郴
@@ -70,12 +70,12 @@
     /**
      * 纾ㄥ墠瀹�
      */
-    private Double edgWidth;
+    private double edgWidth;
 
     /**
      * 纾ㄥ墠楂�
      */
-    private Double edgHeight;
+    private double edgHeight;
 
     /**
      * 鏄惁閰嶇墖
@@ -85,12 +85,12 @@
     /**
      * 閰嶇墖鏈�澶у
      */
-    private Double maxWidth;
+    private double maxWidth;
 
     /**
      * 閰嶇墖鏈�澶ч珮
      */
-    private Double maxHeight;
+    private double maxHeight;
 
     /**
      * 閽㈠寲鏄惁鎺ュ彈妯斁
@@ -125,7 +125,7 @@
     /**
      * 鏃嬭浆瑙掑害锛堥�嗘椂閽堬級
      */
-    private Double angle;
+    private double angle;
 
     /**
      * 宸ョ▼鍙�
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java
index c83bc33..5fd3c47 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java
@@ -25,28 +25,28 @@
     /**
      * 瀹�
      */
-    private Double width;
+    private double width;
 
     /**
      * 楂�
      */
-    private Double height;
+    private double height;
 
     /**
      * 瀹�
      */
-    private Double oHeight;
+    private double oHeight;
 
     /**
      * 楂�
      */
-    private Double oWidth;
+    private double oWidth;
 
 
     /**
      * 鍘氬害
      */
-    private Double glassThickness;
+    private double glassThickness;
 
     /**
      * 鐜荤拑鑶滅郴
@@ -66,11 +66,11 @@
     /**
      * 灏忕墖瀹斤紙鍔犵(閲忥級
      */
-    private Double pWidth;
+    private double pWidth;
     /**
      * 灏忕墖楂橈紙鍔犵(閲忥級
      */
-    private Double pHeight;
+    private double pHeight;
     /**
      * 鐗堝浘id
      */
@@ -102,10 +102,10 @@
     /**
      * 璁㈠崟搴忓彿
      */
-    private  String orderSort;
+    private String orderSort;
     /**
      * 鏃嬭浆瑙掑害
      */
-    private  Double rotateAngle;
+    private double rotateAngle;
 
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orderdetail.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orderdetail.java
index 0d667e2..01258d3 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orderdetail.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orderdetail.java
@@ -44,7 +44,7 @@
     /**
      * 闈㈢Н
      */
-    private Double area;
+    private double area;
 
 
     /**
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orders.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orders.java
index 62ccec2..d41e4df 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orders.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/order/entity/Orders.java
@@ -1,13 +1,9 @@
 package com.mes.order.entity;
 
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -45,7 +41,7 @@
     /**
      * 闈㈢Н
      */
-    private Double area;
+    private double area;
 
 
     /**
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeDetail.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeDetail.java
index ba5ea47..9d75bd7 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeDetail.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeDetail.java
@@ -73,32 +73,32 @@
     /**
      * 灏忕墖瀹斤紙鍔犵(閲忥級
      */
-    private Double pWidth;
+    private double pWidth;
 
     /**
      * 灏忕墖楂橈紙鍔犵(閲忥級
      */
-    private Double pHeight;
+    private double pHeight;
 
     /**
      * 灏忕墖瀹�
      */
-    private Double width;
+    private double width;
 
     /**
      * 灏忕墖楂�
      */
-    private Double height;
+    private double height;
 
     /**
      * x鍧愭爣
      */
-    private Double xAxis;
+    private double xAxis;
 
     /**
      * y鍧愭爣
      */
-    private Double yAxis;
+    private double yAxis;
 
     /**
      * 閽㈠寲鐗堝浘缂栧彿(鏋跺彿)
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeLayout.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeLayout.java
index 75e4d99..1d59674 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeLayout.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeLayout.java
@@ -36,13 +36,13 @@
      */
     private Integer stockId;
 
-    private Double width;
+    private double width;
 
-    private Double height;
+    private double height;
 
-    private Double realwidth;
+    private double realwidth;
 
-    private Double realheight;
+    private double realheight;
 
     /**
      * 鍒囪鐜�
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java
index 032b7c5..ddc80fe 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java
@@ -67,7 +67,7 @@
     /**
      * 鎬婚潰绉�
      */
-    private Double glassTotalArea;
+    private double glassTotalArea;
 
     /**
      * 娴佺▼鍗℃暟閲�
@@ -87,7 +87,7 @@
     /**
      * 绗竴娆″钩鍧囧垏瑁佺巼
      */
-    private Double fristCutPct;
+    private double fristCutPct;
 
     /**
      * 浣跨敤鐨勫師鏂欐暟
@@ -97,22 +97,22 @@
     /**
      * 浣跨敤鐨勫師鏂欓潰绉�
      */
-    private Double rawStockArea;
+    private double rawStockArea;
 
     /**
      * 骞冲潎鍒囪鐜�
      */
-    private Double avgCutPct;
+    private double avgCutPct;
 
     /**
      * 鏈夋晥鍒囪鐜�
      */
-    private Double validCutPct;
+    private double validCutPct;
 
     /**
      * 灏剧墖鍒囪鐜�
      */
-    private Double lastCutPct;
+    private double lastCutPct;
 
     /**
      * g娣锋帓绋嬪害
@@ -137,27 +137,27 @@
     /**
      * g涓婄墖瀹�
      */
-    private Double loadWidth;
+    private double loadWidth;
 
     /**
      * g涓婄墖闀�
      */
-    private Double loadLength;
+    private double loadLength;
 
     /**
      * x闂撮殧
      */
-    private Double xSpace;
+    private double xSpace;
 
     /**
      * y闂撮殧
      */
-    private Double ySpace;
+    private double ySpace;
 
     /**
      * g骞冲潎瑁呰浇鐜�
      */
-    private Double loadRate;
+    private double loadRate;
 
     /**
      * 娴佺▼鍗¢泦鍚�
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/AwaitingRepair.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/AwaitingRepair.java
index deb797b..5d08d26 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/AwaitingRepair.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/request/AwaitingRepair.java
@@ -4,7 +4,6 @@
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
-import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -90,12 +89,12 @@
     /**
      * 瀹�
      */
-    private Double width;
+    private double width;
 
     /**
      * 楂�
      */
-    private Double height;
+    private double height;
 
     /**
      * 褰㈢姸
@@ -150,7 +149,7 @@
     /**
      * 娆$牬闈㈢Н
      */
-    private Double patchArea;
+    private double patchArea;
 
     /**
      * 璐ㄦ鍛�
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
index 2ebf5a8..63b0c45 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
@@ -48,13 +48,13 @@
      * 楂�
      */
     @ApiModelProperty(value = "楂�", position = 7)
-    private Double height;
+    private double height;
 
     /**
      * 鍘氬害
      */
     @ApiModelProperty(value = "鍘氬害", position = 8)
-    private Double thickness;
+    private double thickness;
 
     /**
      * 鑶滅郴
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/UpPattenUsage.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/UpPattenUsage.java
index a92188d..d0beeb5 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/UpPattenUsage.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/UpPattenUsage.java
@@ -40,17 +40,17 @@
     /**
      * 瀹�
      */
-    private Double width;
+    private double width;
 
     /**
      * 楂�
      */
-    private Double height;
+    private double height;
 
     /**
      * 鍘氬害
      */
-    private Double thickness;
+    private double thickness;
 
     /**
      * 鍘熺墖鐗堝浘鐗囧簭
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/pom.xml b/hangzhoumesParent/moduleService/CacheGlassModule/pom.xml
index 568e912..974c18f 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/pom.xml
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/pom.xml
@@ -17,11 +17,7 @@
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>com.microsoft.sqlserver</groupId>
-            <artifactId>sqljdbc4</artifactId>
-            <version>4.0</version>
-        </dependency>
+
         <dependency>
             <groupId>org.samba.jcifs</groupId>
             <artifactId>jcifs</artifactId>
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java
index 9fa339a..6524403 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/entity/EdgStorageCageDetails.java
@@ -66,27 +66,27 @@
     /**
      * 瀹�
      */
-    private Double width;
+    private double width;
 
     /**
      * 楂�
      */
-    private Double height;
+    private double height;
 
     /**
      * 鍘氬害
      */
-    private Double thickness;
+    private double thickness;
 
     /**
      * 纾ㄥ墠瀹�
      */
-    private Double edgWidth;
+    private double edgWidth;
 
     /**
      * 纾ㄥ墠楂�
      */
-    private Double edgHeight;
+    private double edgHeight;
 
     /**
      * 閽㈠寲鐗堝浘id
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
index 81047b7..f52662f 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/EdgStorageCageService.java
@@ -19,6 +19,7 @@
 
     /**
      * 鏌ヨ绗煎唴绂绘寚瀹氭牸瀛愭渶杩戠┖鏍�
+     * flag :鏄惁涓虹洿閫�
      *
      * @return
      */
diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
index a63c890..62186a5 100644
--- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -182,8 +182,8 @@
      * @return
      */
     public GlassInfo 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"));
+        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>()
@@ -277,8 +277,8 @@
                     List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(wrapper);
                     if (CollectionUtil.isEmpty(list)) {
                         MPJQueryWrapper<GlassInfo> queryWrapper = new MPJQueryWrapper<GlassInfo>()
-                                .selectAll(GlassInfo.class).eq("t.glass_id", glassId)
-                                .inSql("t.engineer_id", "select engineer_id from engineering where state = 1");
+                                .selectAll(GlassInfo.class).eq("t.glass_id", glassId);
+//                                .inSql("t.engineer_id", "select engineer_id from engineering where state = 1");
                         if (endcell == Const.A10_OUT_TARGET_POSITION) {
                             queryWrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " +
                                     "case when width < height then width else height end as second_length from glass_info) t1 " +
@@ -347,8 +347,8 @@
         //todo: 鑾峰彇姝e湪鎵ц鐨勫伐绋嬩俊鎭�
         if (StringUtils.isNotBlank(glassId)) {
             GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
-                    .eq(GlassInfo::getGlassId, glassId)
-                    .inSql(GlassInfo::getEngineerId, "select engineer_id from engineering where state = 1"));
+                    .eq(GlassInfo::getGlassId, glassId));
+//                    .inSql(GlassInfo::getEngineerId, "select engineer_id from engineering where state = 1"));
             EdgStorageCageDetails resultDetails = new EdgStorageCageDetails();
             BeanUtils.copyProperties(one, resultDetails);
             glassList.add(resultDetails);
@@ -387,7 +387,7 @@
      * @param width
      * @param height
      */
-    private EdgStorageCageDetails queryMinGlass(Double width, Double height, String glassId) {
+    private EdgStorageCageDetails queryMinGlass(double width, double height, String glassId) {
         //鑾峰彇琛ㄥ唴鐗堝浘id鏈�灏忕殑鐜荤拑淇℃伅
         EdgStorageCageDetails glassDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
                 .eq(EdgStorageCageDetails::getState, 100)
@@ -400,8 +400,8 @@
             return glassDetails;
         }
         GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>()
-                .eq(GlassInfo::getGlassId, glassId)
-                .inSql(GlassInfo::getEngineerId, "select engineer_id from engineering where state = 1")
+                        .eq(GlassInfo::getGlassId, glassId)
+//                .inSql(GlassInfo::getEngineerId, "select engineer_id from engineering where state = 1")
         );
         EdgStorageCageDetails resultDetails = new EdgStorageCageDetails();
         BeanUtils.copyProperties(one, resultDetails);
@@ -451,7 +451,8 @@
             return null;
         }
         return edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getGlassId, taskCache.getGlassId())
-                .inSql(EdgStorageCageDetails::getEngineerId, "select engineer_id from engineering where state = 1").last(" limit 1 "));
+//                .inSql(EdgStorageCageDetails::getEngineerId, "select engineer_id from engineering where state = 1")
+                .last(" limit 1 "));
     }
 
     /**
@@ -466,10 +467,10 @@
      */
     private Integer queryLineByGlassInfo(EdgStorageCageDetails a08EdgStorageCageDetails, EdgStorageCageDetails a10EdgStorageCageDetails,
                                          EdgStorageCageDetails glassInfo, int out08Glassstate, int out10Glassstate) {
-        boolean b08 = a08EdgStorageCageDetails != null && a08EdgStorageCageDetails.getHeight().equals(glassInfo.getHeight())
-                && a08EdgStorageCageDetails.getWidth().equals(glassInfo.getWidth());
-        boolean b10 = a10EdgStorageCageDetails != null && a10EdgStorageCageDetails.getHeight().equals(glassInfo.getHeight())
-                && a10EdgStorageCageDetails.getWidth().equals(glassInfo.getWidth());
+        boolean b08 = a08EdgStorageCageDetails != null && a08EdgStorageCageDetails.getHeight() == glassInfo.getHeight()
+                && a08EdgStorageCageDetails.getWidth() == glassInfo.getWidth();
+        boolean b10 = a10EdgStorageCageDetails != null && a10EdgStorageCageDetails.getHeight() == glassInfo.getHeight()
+                && a10EdgStorageCageDetails.getWidth() == glassInfo.getWidth();
         //瀛樺湪鍑虹墖浠诲姟 07涓虹┖
         if (b10) {
             return out10Glassstate == 2 ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
@@ -507,16 +508,16 @@
         //鑾峰彇瀹介珮鎷嶇涓�鐨勭幓鐠冧俊鎭�
         EdgStorageCageDetails firstSize = list.get(0);
         Integer firstCount = firstSize.getCount();
-        Double firstWidth = firstSize.getWidth();
-        Double firstHeight = firstSize.getHeight();
+        double firstWidth = firstSize.getWidth();
+        double firstHeight = firstSize.getHeight();
         if (list.size() == 1) {
             return queryMinGlass(firstWidth, firstHeight, glassId);
         }
         //鑾峰彇瀹介珮鎷嶇浜岀殑鐜荤拑淇℃伅
         EdgStorageCageDetails secondSize = list.get(1);
         Integer secondCount = secondSize.getCount();
-        Double secondWidth = secondSize.getWidth();
-        Double secondHeight = secondSize.getHeight();
+        double secondWidth = secondSize.getWidth();
+        double secondHeight = secondSize.getHeight();
         //鑾峰彇鏁伴噺鍓�2鐨勭幓鐠冩暟閲忔瘮渚�
         Integer mix = firstCount / secondCount;
         log.info("鑾峰彇鐜荤拑鏁伴噺鍓�2鐨勭幓鐠冨崰姣斾负锛歿}", mix);
@@ -536,7 +537,7 @@
             EdgStorageCageDetails outGlassInfo = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>()
                     .eq(EdgStorageCageDetails::getGlassId, taskCache.getGlassId()));
             log.info("{}绾挎湁鍑虹墖浠诲姟淇℃伅,浠诲姟淇℃伅涓簕}锛岀幓鐠冧俊鎭负{}", endcell, taskCache, outGlassInfo);
-            if (outGlassInfo.getWidth().equals(firstWidth) && outGlassInfo.getHeight().equals(firstHeight)) {
+            if (outGlassInfo.getWidth() == firstWidth && outGlassInfo.getHeight() == firstHeight) {
                 log.info("鏁伴噺鏈�澶氱殑瀹絳}楂榹}鍜寋}绾夸换鍔$殑瀹絳}楂榹}鐩稿悓锛屽嚭鏁伴噺鎺掔浜岀殑鐜荤拑锛屽{}楂榹}",
                         firstWidth, firstHeight, endcell, outGlassInfo.getWidth(), outGlassInfo.getHeight(), secondWidth, secondHeight);
                 return queryMinGlass(secondWidth, secondHeight, glassId);
@@ -638,7 +639,7 @@
      * @return
      */
     @Scheduled(fixedDelay = 1000)
-    public void currentCutTerritory(){
+    public void currentCutTerritory() {
         JSONObject jsonObject = new JSONObject();
         List<Map<String, Object>> currentCutTerritorys = edgStorageCageDetailsService.selectCutTerritory();
         jsonObject.append("currentCutTerritory", currentCutTerritorys);
@@ -666,10 +667,10 @@
      * @return
      */
     @Scheduled(fixedDelay = 1000)
-    public void selectEdgTask(){
+    public void selectEdgTask() {
         JSONObject jsonObject = new JSONObject();
-        List<Map<String,Object>> EdgTasks1 = taskCacheService.selectEdgInfo("2001");
-        List<Map<String,Object>> EdgTasks2 = taskCacheService.selectEdgInfo("2002");
+        List<Map<String, Object>> EdgTasks1 = taskCacheService.selectEdgInfo("2001");
+        List<Map<String, Object>> EdgTasks2 = taskCacheService.selectEdgInfo("2002");
         jsonObject.append("EdgTasks1", EdgTasks1);
         jsonObject.append("EdgTasks2", EdgTasks2);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("cacheGlass");
@@ -696,9 +697,9 @@
      * @return
      */
     @Scheduled(fixedDelay = 1000)
-    public void selectEdgStorageCage(){
+    public void selectEdgStorageCage() {
         JSONObject jsonObject = new JSONObject();
-        List<Map<String, Object>> EdgStorageCageinfos=edgStorageCageService.selectEdgStorageCages();
+        List<Map<String, Object>> EdgStorageCageinfos = edgStorageCageService.selectEdgStorageCages();
         jsonObject.append("EdgStorageCageinfos", EdgStorageCageinfos);
         ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("cacheGlass");
         if (sendwServer != null) {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/pom.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/pom.xml
index cb109f5..6b6533a 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/pom.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/pom.xml
@@ -17,11 +17,6 @@
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>com.microsoft.sqlserver</groupId>
-            <artifactId>sqljdbc4</artifactId>
-            <version>4.0</version>
-        </dependency>
     </dependencies>
 <properties>
     <maven.compiler.source>8</maven.compiler.source>
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java
index a868ca4..6980cfb 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageController.java
@@ -1,7 +1,4 @@
 package com.mes.bigstorage.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.mes.bigstorage.entity.BigStorageCage;
 import com.mes.bigstorage.service.BigStorageCageService;
 import com.mes.utils.Result;
 import io.swagger.annotations.Api;
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
index 0aad429..0fee9b2 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/controller/BigStorageCageDetailsController.java
@@ -5,11 +5,10 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * <p>
@@ -30,44 +29,46 @@
 
     @ApiOperation("鐜荤拑璇︽儏鏌ヨ")
     @PostMapping("/selectBigStorageCageDetails")
-    public Result selectBigStorageCageDetails(String glassId) {
-        BigStorageCageDetails bigStorageCageDetails=bigStorageCageDetailsService.selectBigStorageCageDetails(glassId);
+    public Result selectBigStorageCageDetails(@RequestBody Map map) {
+        List<BigStorageCageDetails> bigStorageCageDetails=bigStorageCageDetailsService.selectBigStorageCageDetails(map.get("glassId").toString());
         return Result.build(200,"鏌ヨ鎴愬姛",bigStorageCageDetails);
     }
 
     @ApiOperation("鐞嗙墖绗艰鎯呮坊鍔�")
     @PostMapping("/insertBigStorageCageDetails")
-    public Result insertBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails) {
+    public Result insertBigStorageCageDetails(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
         bigStorageCageDetailsService.insertBigStorageCageDetails(bigStorageCageDetails);
         return Result.build(200,"娣诲姞鎴愬姛",1);
     }
 
     @ApiOperation("鐞嗙墖绗艰鎯呭垹闄�")
     @PostMapping("/deleteBigStorageCageDetails")
-    public Result deleteBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails) {
+    public Result deleteBigStorageCageDetails(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
         bigStorageCageDetailsService.deleteBigStorageCageDetails(bigStorageCageDetails);
         return Result.build(200,"鍒犻櫎鎴愬姛",1);
     }
 
     @ApiOperation("鐞嗙墖绗间换鍔$牬鎹�0/鎷胯蛋1")
     @PostMapping("/damageBigStorageCageDetails")
-    public Result damageBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails,int status) {
+    public Result damageBigStorageCageDetails(@RequestBody BigStorageCageDetails bigStorageCageDetails,int status) {
         bigStorageCageDetailsService.damageBigStorageCageDetails(bigStorageCageDetails.getGlassId(),status);
-        return Result.build(200,"鐮存崯鎴愬姛",1);
+        return Result.build(200,"鐮存崯/鎷胯蛋鎴愬姛",1);
     }
 
     @ApiOperation("鐞嗙墖绗间换鍔″畬鎴�")
     @PostMapping("/finishBigStorageCageDetails")
-    public Result finishBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails) {
+    public Result finishBigStorageCageDetails(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
         bigStorageCageDetailsService.finishBigStorageCageDetails(bigStorageCageDetails);
-        return Result.build(200,"鐮存崯鎴愬姛",1);
+        return Result.build(200,"浠诲姟瀹屾垚鎴愬姛",1);
     }
 
     @ApiOperation("鐞嗙墖绗间换鍔″嚭鐗�")
     @PostMapping("/outBigStorageCageDetails")
-    public Result outBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails) {
+    public Result outBigStorageCageDetails(@RequestBody BigStorageCageDetails bigStorageCageDetails) {
+
         bigStorageCageDetailsService.outBigStorageCageDetails(bigStorageCageDetails);
-        return Result.build(200,"鐮存崯鎴愬姛",1);
+        return Result.build(200,"鍑虹墖娣诲姞鎴愬姛",1);
     }
+
 }
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
index 635f2df..33fe7f5 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCageDetails.java
@@ -64,13 +64,13 @@
      * 楂�
      */
     @ApiModelProperty(value = "楂�", position = 10)
-    private Double height;
+    private double height;
 
     /**
      * 鍘氬害
      */
     @ApiModelProperty(value = "鍘氬害", position = 11)
-    private Double thickness;
+    private double thickness;
 
     /**
      * 閽㈠寲鐗堝浘id
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
index 29fef8c..83d86fe 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/BigStorageCageDetailsService.java
@@ -27,7 +27,7 @@
 
     void damageBigStorageCageDetails(String glassId,int status);
 
-    BigStorageCageDetails selectBigStorageCageDetails(String glassId);
+    List<BigStorageCageDetails> selectBigStorageCageDetails(String glassId);
 
     void insertBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails);
 
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
index c3a9c9c..27c9878 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -26,6 +26,7 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -80,7 +81,7 @@
             List<BigStorageCageDetails> bigStorageCageDetailsList = baseMapper.selectList(feedWrapper);
 
             LambdaQueryWrapper<BigStorageCageFeedTask> feedTaskWrapper = new LambdaQueryWrapper<>();
-            feedTaskWrapper.lt(BigStorageCageFeedTask::getTaskState,Const.BIG_STORAGE_IN_SLOT);
+            feedTaskWrapper.lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT);
             List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskMapper.selectList(feedTaskWrapper);
 
             Map<String, BigStorageCageFeedTask> listMap = bigStorageCageFeedTaskList.stream()
@@ -98,7 +99,7 @@
             List<BigStorageCageDetails> bigStorageCageDetailsList = baseMapper.selectList(outWrapper);
 
             LambdaQueryWrapper<BigStorageCageOutTask> outTaskWrapper = new LambdaQueryWrapper<>();
-            outTaskWrapper.lt(BigStorageCageOutTask::getTaskState,Const.BIG_STORAGE_OUT_SUCCESS);
+            outTaskWrapper.lt(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_SUCCESS);
             List<BigStorageCageOutTask> bigStorageCageOutTaskList = bigStorageCageOutTaskMapper.selectList(outTaskWrapper);
 
             Map<String, BigStorageCageOutTask> listMap = bigStorageCageOutTaskList.stream()
@@ -136,7 +137,7 @@
         for (BigStorageCageDetails bigStorageCageDetails : bigStorageCageDetailsList
         ) {
             if (bigStorageCageDetails.getBigStorageCageFeedTask().getTaskState() == 0) {
-                carWidth -= Integer.parseInt(bigStorageCageDetails.getWidth().toString()) + galssGap;
+                carWidth = carWidth - bigStorageCageDetails.getWidth() - galssGap;
             }
         }
         return carWidth;
@@ -153,7 +154,7 @@
 
     //鐞嗙墖绗艰鎯呯牬鎹�
     @Override
-    public void damageBigStorageCageDetails(String glassId,int status) {
+    public void damageBigStorageCageDetails(String glassId, int status) {
 
         LambdaQueryWrapper<TemperingGlassInfo> temperingGlassInfoWrapper = new LambdaQueryWrapper<>();
         temperingGlassInfoWrapper.eq(TemperingGlassInfo::getGlassId, glassId);
@@ -163,15 +164,16 @@
         bigStorageCageDetailsWrapper.eq(BigStorageCageDetails::getGlassId, glassId);
         BigStorageCageDetails bigStorageCageDetails = baseMapper.selectOne(bigStorageCageDetailsWrapper);
 
-        if(temperingGlassInfo!=null){
-            if(status==0){
+        if (temperingGlassInfo != null) {
+            if (status == 0) {
                 temperingGlassInfo.setState(Const.TEMPERING_DAMAGE);
-            }else{
+            } else {
                 temperingGlassInfo.setState(Const.TEMPERING_TAKE);
             }
             temperingGlassInfoMapper.updateById(temperingGlassInfo);
         }
-        baseMapper.deleteById(bigStorageCageDetails.getId());
+        bigStorageCageDetails.setState(Const.BIG_STORAGE_OUTSIDE);
+        baseMapper.updateById(bigStorageCageDetails);
         bigStorageCageService.updateRemainWidth(bigStorageCageDetails.getSlot());
         //todo:鎻掑叆鐮存崯鏁版嵁
 
@@ -179,15 +181,19 @@
 
     //鏌ヨ鐜荤拑淇℃伅
     @Override
-    public BigStorageCageDetails selectBigStorageCageDetails(String glassId) {
+    public List<BigStorageCageDetails> selectBigStorageCageDetails(String glassId) {
         LambdaQueryWrapper<GlassInfo> glassInfoWrapper = new LambdaQueryWrapper<>();
         glassInfoWrapper.eq(GlassInfo::getGlassId, glassId);
         GlassInfo glassInfo = glassInfoMapper.selectOne(glassInfoWrapper);
         BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
-        BeanUtils.copyProperties(glassInfo, bigStorageCageDetails);
-        bigStorageCageDetails.setState(0);
-        bigStorageCageDetails.setGap(galssGap);
-        return bigStorageCageDetails;
+        if (glassInfo != null) {
+            BeanUtils.copyProperties(glassInfo, bigStorageCageDetails);
+            bigStorageCageDetails.setState(0);
+            bigStorageCageDetails.setGap(galssGap);
+        }
+        List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>();
+        bigStorageCageDetailsList.add(bigStorageCageDetails);
+        return bigStorageCageDetailsList;
     }
 
     //鐞嗙墖绗艰鎯呮坊鍔�
@@ -200,7 +206,7 @@
     //鐞嗙墖绗艰鎯呭畬鎴�
     @Override
     public void finishBigStorageCageDetails(BigStorageCageDetails bigStorageCageDetails) {
-        if (bigStorageCageDetails.getBigStorageCageFeedTask()!=null) {
+        if (bigStorageCageDetails.getBigStorageCageFeedTask() != null) {
             bigStorageCageDetails.setState(Const.BIG_STORAGE_INSIDE);
             baseMapper.updateById(bigStorageCageDetails);
         } else {
@@ -223,6 +229,7 @@
         MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>(BigStorageCage.class)
                 .selectAll(BigStorageCage.class)
                 .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot)
+                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
                 .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId())
                 .gt(BigStorageCage::getRemainWidth, glassInfo.getWidth())
                 .last("limit 1");
@@ -239,6 +246,7 @@
             return bigStorageDTO;
         }
         bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
+                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
                 .eq(BigStorageCage::getRemainWidth, slotWidth)
                 .inSql(BigStorageCage::getDeviceId,
                         "select distinct device_id from big_storage_cage_details where tempering_layout_id = " + glassInfo.getTemperingLayoutId())
@@ -251,6 +259,7 @@
         }
         bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>()
                 .eq(BigStorageCage::getRemainWidth, slotWidth)
+                .eq(BigStorageCage::getEnableState, Const.SLOT_ON)
                 .last("limit 1"));
         Assert.isTrue(null != bigStorageCage, "娌℃湁绌轰綑鐨勭瀛愬瓨鏀剧幓鐠�");
         bigStorageDTO = new BigStorageDTO();
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
index e179fb1..72fc607 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageServiceImpl.java
@@ -244,6 +244,7 @@
     public List<BigStorageCage> querybigStorageCageDetail(int deviceId) {
         LambdaQueryWrapper<BigStorageCage> bigStorageCageWrapper =new LambdaQueryWrapper<>();
         LambdaQueryWrapper<BigStorageCageDetails> bigStorageCageDetailsWrapper =new LambdaQueryWrapper<>();
+        bigStorageCageDetailsWrapper.lt(BigStorageCageDetails::getState, Const.BIG_STORAGE_OUTSIDE);
         if(deviceId!=0){
             bigStorageCageWrapper.eq(BigStorageCage::getDeviceId,deviceId);
             bigStorageCageDetailsWrapper.eq(BigStorageCageDetails::getDeviceId,deviceId);
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageFeedTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageFeedTask.java
index c8e0a81..d539f7c 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageFeedTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/entity/BigStorageCageFeedTask.java
@@ -42,7 +42,7 @@
      * 鐩爣浣嶇疆
      */
     @ApiModelProperty(value = "鐩爣浣嶇疆", position = 4)
-    private Integer targetSlot;
+    private int targetSlot;
 
     /**
      * 鐜荤拑绫诲瀷
@@ -60,7 +60,7 @@
      * 绾胯矾
      */
     @ApiModelProperty(value = "绾胯矾", position = 7)
-    private Integer line;
+    private int line;
     /**
      * 瀹藉害
      */
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java
index ec83651..7c57951 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java
@@ -1,9 +1,8 @@
 package com.mes.bigstoragetask.mapper;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.bigstorage.entity.BigStorageDTO;
 import com.github.yulichang.base.MPJBaseMapper;
+import com.mes.bigstorage.entity.BigStorageDTO;
 import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
 import org.apache.ibatis.annotations.Param;
 
@@ -17,7 +16,7 @@
  * @author zhoush
  * @since 2024-04-16
  */
-@DS("salve_hangzhoumes")
+@DS("salve_hangzhoumes_1")
 public interface BigStorageCageFeedTaskMapper extends MPJBaseMapper<BigStorageCageFeedTask> {
 
     List<Integer> querySitToUpGlass();
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java
index 5fa29d3..8e53da7 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java
@@ -15,7 +15,7 @@
  * @author zhoush
  * @since 2024-04-16
  */
-@DS("salve_hangzhoumes")
+@DS("salve_hangzhoumes_1")
 public interface BigStorageCageOutTaskMapper extends BaseMapper<BigStorageCageOutTask> {
 
     boolean saveBatch(@Param(value = "list") List<BigStorageCageOutTask> list);
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java
index 304846e..4f5e96b 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/common/S7object.java
@@ -14,7 +14,7 @@
 public class S7object extends Thread {
     public S7control plccontrol; // PLC閫氳绫诲疄渚�
     private EPlcType plcType = EPlcType.S1200; // 瑗块棬瀛怭LC绫诲瀷
-    private String ip = "192.168.10.1"; // plc ip鍦板潃
+    private String ip = "192.168.20.100"; // plc ip鍦板潃
     private int port = 102; // plc 绔彛鍙�
 
 
@@ -25,7 +25,7 @@
         if (plccontrol == null) {
             plccontrol = new S7control(plcType, ip, port, 0, 0);
 
-            String PlcLoadGlass=S7object.class.getResource("/JsonFile/PlcCacheVerticalGlass.json").getPath();
+            String PlcLoadGlass = S7object.class.getResource("/JsonFile/PlcCacheVerticalGlass.json").getPath();
             //log.info(PLCAutoMes.class.getResource("").getPath());
             PlcMesObject = InitUtil.initword(PlcLoadGlass);
         }
@@ -54,8 +54,9 @@
             }
 
             byte[] getplcvlues = plccontrol.readByte(PlcMesObject.getPlcAddressBegin(), PlcMesObject.getPlcAddressLength());
-            PlcMesObject.setPlcParameterList(getplcvlues);
-
+            if (getplcvlues != null) {
+                PlcMesObject.setPlcParameterList(getplcvlues);
+            }
         }
     }
 }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/controller/TaskCacheController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/controller/TaskCacheController.java
deleted file mode 100644
index 23b286a..0000000
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/controller/TaskCacheController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.mes.edgstoragetask.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  鍓嶇鎺у埗鍣�
- * </p>
- *
- * @author zhoush
- * @since 2024-04-16
- */
-@RestController
-@RequestMapping("/task-cache")
-public class TaskCacheController {
-    
-}
-
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/entity/TaskCache.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/entity/TaskCache.java
deleted file mode 100644
index c307e69..0000000
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/entity/TaskCache.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.mes.edgstoragetask.entity;
-
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.io.Serializable;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * <p>
- * 
- * </p>
- *
- * @author zhoush
- * @since 2024-04-16
- */
-@Data
-@EqualsAndHashCode(callSuper = false)
-public class TaskCache implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * ID缂栧彿
-     */
-      @TableId("ID")
-    private Long id;
-
-    /**
-     * 璧峰
-     */
-    private String startCell;
-
-    /**
-     * 鐩爣
-     */
-    private String endCell;
-
-    /**
-     * 浠诲姟绫诲瀷 1:杩�   2锛氬嚭
-     */
-    private String taskType;
-
-    /**
-     * 浠诲姟鐘舵�� 0 鏈紑濮�  1宸插畬鎴�
-     */
-    private String taskStauts;
-
-
-}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/mapper/TaskCacheMapper.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/mapper/TaskCacheMapper.java
deleted file mode 100644
index dee45f9..0000000
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/mapper/TaskCacheMapper.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.mes.edgstoragetask.mapper;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.mes.edgstoragetask.entity.TaskCache;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-
-/**
- * <p>
- *  Mapper 鎺ュ彛
- * </p>
- *
- * @author zhoush
- * @since 2024-04-16
- */
-@DS("salve_hangzhoumes")
-public interface TaskCacheMapper extends BaseMapper<TaskCache> {
-
-}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/service/TaskCacheService.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/service/TaskCacheService.java
deleted file mode 100644
index 337dbb0..0000000
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/service/TaskCacheService.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.mes.edgstoragetask.service;
-
-import com.mes.edgstoragetask.entity.TaskCache;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- *  鏈嶅姟绫�
- * </p>
- *
- * @author zhoush
- * @since 2024-04-16
- */
-public interface TaskCacheService extends IService<TaskCache> {
-
-}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/service/impl/TaskCacheServiceImpl.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/service/impl/TaskCacheServiceImpl.java
deleted file mode 100644
index 8253eeb..0000000
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/service/impl/TaskCacheServiceImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.mes.edgstoragetask.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.mes.bigstoragetask.entity.BigStorageCageFeedTask;
-import com.mes.bigstoragetask.mapper.BigStorageCageFeedTaskMapper;
-import com.mes.edgstoragetask.entity.TaskCache;
-import com.mes.edgstoragetask.mapper.TaskCacheMapper;
-import com.mes.edgstoragetask.service.TaskCacheService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.Resource;
-import java.util.List;
-
-/**
- * <p>
- *  鏈嶅姟瀹炵幇绫�
- * </p>
- *
- * @author zhoush
- * @since 2024-04-16
- */
-@Qualifier("")
-@Service
-public class TaskCacheServiceImpl extends ServiceImpl<TaskCacheMapper, TaskCache> implements TaskCacheService {
-
-
-}
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
index 389dffe..aa06134 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
@@ -36,7 +36,7 @@
      * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
      */
-    @Scheduled(fixedDelay = 5000)
+    @Scheduled(fixedDelay = 1000)
     public void plcStorageCageTask() throws InterruptedException {
         JSONObject jsonObject = new JSONObject();
         try {
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
index aebf46d..b7f0f13 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -27,6 +27,7 @@
 import com.mes.glassinfo.service.GlassInfoService;
 import com.mes.temperingglass.entity.TemperingGlassInfo;
 import com.mes.temperingglass.service.TemperingGlassInfoService;
+import com.mes.tools.S7control;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
@@ -71,75 +72,90 @@
     @Value("${mes.slotWidth}")
     private Integer slotWidth;
 
-    @Value("${mes.carMaxSize}")
-    private Integer carMaxSize;
+    @Value("${mes.inCarMaxSize}")
+    private Integer inCarMaxSize;
+
+    @Value("${mes.outCarMaxSize}")
+    private Integer outCarMaxSize;
 
     @Value("${mes.galssGap}")
     private Integer galssGap;
 
-    @Scheduled(fixedDelay = 5000)
+    //    @Scheduled(fixedDelay = 5000)
     public void plcToHomeEdgScan() {
         PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
-        String d01Request = plcParameterObject.getPlcParameter("D01Request").getValue();
-        String d01Id = plcParameterObject.getPlcParameter("D01ID1").getValue();
-        String d02SitState = plcParameterObject.getPlcParameter("D02SitState").getValue();
-        String d04Request = plcParameterObject.getPlcParameter("D04Request").getValue();
-        String d04Id = plcParameterObject.getPlcParameter("D04ID1").getValue();
-        String d05SitState = plcParameterObject.getPlcParameter("D05SitState").getValue();
+        String d01Id = plcParameterObject.getPlcParameter("D01ID").getValue();
+        String d04Id = plcParameterObject.getPlcParameter("D04ID").getValue();
+        String d03State = plcParameterObject.getPlcParameter("D03State").getValue();
+        String d05State = plcParameterObject.getPlcParameter("D05State").getValue();
+        String mesD03Address = plcParameterObject.getPlcParameter("MESToD03").getAddress();
+        String mesD05Address = plcParameterObject.getPlcParameter("MESToD05").getAddress();
 
-        log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧d01涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};鑾峰彇鍒扮殑璇锋眰瀛梔04涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};",
-                d01Request, d01Id, d04Request, d04Id);
-        if (!REQUEST_WORD.equals(d01Request) && !REQUEST_WORD.equals(d04Request)) {
+
+        log.info("1銆佽幏鍙杁01Id鎵弿ID涓猴細{};鑾峰彇d04Id鎵弿ID涓猴細{};", d01Id, d04Id);
+        if (StringUtils.isBlank(d01Id) && StringUtils.isBlank(d04Id)) {
             log.info("涓ゆ潯绾挎湭鏀跺埌杩涚墖浠诲姟锛岀粨鏉熸湰娆℃壂鎻忚繘鍗ц浆绔嬩换鍔�");
             return;
         }
-        if (REQUEST_WORD.equals(d02SitState) && REQUEST_WORD.equals(d05SitState)) {
+        if (REQUEST_WORD.equals(d03State) && REQUEST_WORD.equals(d05State)) {
             log.info("涓ゆ潯绾垮崸杞珛鍧囧湪鎵ц浠诲姟锛岀粨鏉熸湰娆℃壂鎻忚繘鍗ц浆绔嬩换鍔�");
             return;
         }
-        Boolean flag01 = Boolean.FALSE;
-        Boolean flag04 = Boolean.FALSE;
+//        Boolean flag01 = Boolean.FALSE;
+//        Boolean flag04 = Boolean.FALSE;
         //鎸夌収绾胯矾鍙婄幓鐠僫d鑾峰彇鐩搁偦涓ゅ潡鐜荤拑 鍗ц浆绔嬩笂鐨勭幓鐠�
-        if (REQUEST_WORD.equals(d01Request) && !REQUEST_WORD.equals(d02SitState)) {
-            flag01 = judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION);
+        if (StringUtils.isNotBlank(d01Id) && !REQUEST_WORD.equals(d03State)) {
+            judgeGlassTypeStatus(d01Id, Const.A09_OUT_TARGET_POSITION, mesD03Address);
         }
-        if (REQUEST_WORD.equals(d04Request) && !REQUEST_WORD.equals(d05SitState)) {
-            flag04 = judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION);
+        if (StringUtils.isNotBlank(d04Id) && !REQUEST_WORD.equals(d05State)) {
+            judgeGlassTypeStatus(d04Id, Const.A10_OUT_TARGET_POSITION, mesD05Address);
         }
-        if (flag01 && flag04) {
-            //姣旇緝鏈�鏃╀竴鐗囦换鍔$殑鐗堝浘id鍙婄増搴� 姹傚嚭鍗ц浆绔嬬殑绾胯矾
-            Integer startLine = getStartLine();
-            //璁$畻鐩爣鏍煎瓙锛屽彂閫佸惎鍔ㄤ换鍔�
-            computeTargetByLine(startLine);
-        } else if (flag01 || flag04) {
-            Integer startLine = flag01.equals(Boolean.TRUE) ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
-            //璁$畻鐩爣鏍煎瓙锛屽彂閫佸惎鍔ㄤ换鍔�
-            computeTargetByLine(startLine);
-        } else {
-            log.info("涓ゆ潯绾挎湭鏀跺埌杩涚墖浠诲姟锛岀粨鏉熸湰娆℃壂鎻忚繘鍗ц浆绔嬩换鍔�");
-        }
+        log.info("缁撴潫鎵爜浠诲姟");
+//        if (flag01 && flag04) {
+//            //姣旇緝鏈�鏃╀竴鐗囦换鍔$殑鐗堝浘id鍙婄増搴� 姹傚嚭鍗ц浆绔嬬殑绾胯矾
+//            Integer startLine = getStartLine();
+//            //璁$畻鐩爣鏍煎瓙锛屽彂閫佸惎鍔ㄤ换鍔�
+//            computeTargetByLine(startLine);
+//        } else if (flag01 || flag04) {
+//            Integer startLine = flag01.equals(Boolean.TRUE) ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+//            //璁$畻鐩爣鏍煎瓙锛屽彂閫佸惎鍔ㄤ换鍔�
+//            computeTargetByLine(startLine);
+//        } else {
+//            log.info("涓ゆ潯绾挎湭鏀跺埌杩涚墖浠诲姟锛岀粨鏉熸湰娆℃壂鎻忚繘鍗ц浆绔嬩换鍔�");
+//        }
     }
 
     @Scheduled(fixedDelay = 5000)
     public void plcToHomeEdgFreeCarTask() {
         PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
-        String e01Status = plcParameterObject.getPlcParameter("E01Status").getValue();
+        String e01Status = plcParameterObject.getPlcParameter("E01State").getValue();
         if (REQUEST_WORD.equals(e01Status)) {
             log.info("杩涚墖澶ц溅闈炵┖闂�");
             return;
         }
-        String d01Request = plcParameterObject.getPlcParameter("D01Request").getValue();
-        String d01Id = plcParameterObject.getPlcParameter("D01ID1").getValue();
-        String d04Request = plcParameterObject.getPlcParameter("D04Request").getValue();
-        String d04Id = plcParameterObject.getPlcParameter("D04ID1").getValue();
-        log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧d01涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};鑾峰彇鍒扮殑璇锋眰瀛梔04涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};",
-                d01Request, d01Id, d04Request, d04Id);
-        //涓ゆ潯绾块兘鏈夎繘鍗ц浆绔嬩换鍔★紝鐩存帴缁撴潫
-        if (Const.BIG_STORAGE_REQUEST_IN.equals(d01Request)
-                && Const.BIG_STORAGE_REQUEST_IN.equals(d04Request)) {
-            log.info("涓ゆ潯绾块兘瀛樺湪杩涚墖浠诲姟锛岀粨鏉熶换鍔�");
-            return;
+        List<BigStorageCageFeedTask> feedTaskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>()
+                .eq(BigStorageCageFeedTask::getTaskType, Const.BIG_STORAGE_IN_RUN)
+                .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP));
+        if (CollectionUtils.isNotEmpty(feedTaskList)) {
+            if (feedTaskList.size() == 1) {
+                computeTargetByLine(feedTaskList.get(0).getLine());
+                return;
+            } else {
+                //姣旇緝鏈�鏃╀竴鐗囦换鍔$殑鐗堝浘id鍙婄増搴� 姹傚嚭鍗ц浆绔嬬殑绾胯矾
+                Integer startLine = getStartLine();
+//            //璁$畻鐩爣鏍煎瓙锛屽彂閫佸惎鍔ㄤ换鍔�
+                computeTargetByLine(startLine);
+                return;
+            }
         }
+        String d01Id = plcParameterObject.getPlcParameter("D01ID").getValue();
+        String d04Id = plcParameterObject.getPlcParameter("D04ID").getValue();
+        log.info("1銆佽幏鍙杁01Id鎵弿ID涓猴細{};鑾峰彇d04Id鎵弿ID涓猴細{};", d01Id, d04Id);
+        //涓ゆ潯绾块兘鏈夎繘鍗ц浆绔嬩换鍔★紝鐩存帴缁撴潫
+//        if (StringUtils.isNotBlank(d01Id) && StringUtils.isNotBlank(d04Id)) {
+//            log.info("涓ゆ潯绾块兘瀛樺湪杩涚墖浠诲姟锛岀粨鏉熶换鍔�");
+//            return;
+//        }
         //鑾峰彇涓ゆ潯绾垮崸杞珛鏄惁鏈夌幓鐠冿紝涓斾换鍔$姸鎬侀兘涓�2
         List<Integer> lineList = bigStorageCageFeedTaskService.querySitToUpGlass();
         if (CollectionUtils.isEmpty(lineList)) {
@@ -148,26 +164,52 @@
         }
         Integer lineFirst = lineList.get(0);
         String lineGlassId = lineFirst.equals(Const.A09_OUT_TARGET_POSITION) ? d01Id : d04Id;
+        //浠呮湁涓�鏉″厛绗﹀悎鍚姩鍚姩鏉′欢
         if (lineList.size() == 1) {
-            //璁$畻浠诲姟琛ㄨ繘鐗囨牸瀛� 鍙戦�佽繘鐗囦换鍔�
+            //濡傛灉杩涚墖璇锋眰浣嗙幓鐠冧负绌猴紝璁$畻浠诲姟琛ㄨ繘鐗囨牸瀛� 鍙戦�佽繘鐗囦换鍔�
             if (StringUtils.isEmpty(lineGlassId)) {
                 computeTargetByLine(lineFirst);
+            } else {
+                //todo:璁$畻鎵弿鍒扮殑鐜荤拑鏄惁鍙互瀛樿繘鍗ц浆绔�
+                //鑾峰彇鍗ц浆绔嬪墿浣欏搴�
+                if (computeIsRun(lineFirst, lineGlassId)) {
+                    computeTargetByLine(lineFirst);
+                }
             }
             return;
         }
+        //涓ゆ潯鍏堝潎鍙墽琛岃繘鐗囦换鍔★紝鍒ゆ柇涓ゆ潯绾挎槸鍚﹁繘鐗囪姹傛槸鍚﹂兘涓虹┖
         if (StringUtils.isBlank(d01Id) && StringUtils.isBlank(d04Id)) {
             //姣旇緝鏈�鏃╀竴鐗囦换鍔$殑鐗堝浘id鍙婄増搴� 姹傚嚭鍗ц浆绔嬬殑绾胯矾
             Integer line = getStartLine();
             //璁$畻浠诲姟琛ㄨ繘鐗囨牸瀛� 鍙戦�佽繘鐗囦换鍔�
             computeTargetByLine(line);
             return;
+        } else if (StringUtils.isNotBlank(d01Id) && StringUtils.isNotBlank(d04Id)) {
+//            todo:涓や釜閮芥湁杩涚墖鐜荤拑
+            if (computeIsRun(Const.A09_OUT_TARGET_POSITION, d01Id) && computeIsRun(Const.A10_OUT_TARGET_POSITION, d04Id)) {
+                //姣旇緝鏈�鏃╀竴鐗囦换鍔$殑鐗堝浘id鍙婄増搴� 姹傚嚭鍗ц浆绔嬬殑绾胯矾
+                Integer line = getStartLine();
+                //璁$畻浠诲姟琛ㄨ繘鐗囨牸瀛� 鍙戦�佽繘鐗囦换鍔�
+                computeTargetByLine(line);
+            } else if (computeIsRun(Const.A09_OUT_TARGET_POSITION, d01Id)) {
+                computeTargetByLine(Const.A09_OUT_TARGET_POSITION);
+            } else if (computeIsRun(Const.A10_OUT_TARGET_POSITION, d04Id)) {
+                computeTargetByLine(Const.A10_OUT_TARGET_POSITION);
+            } else {
+                return;
+            }
+        } else {
+            //锛屾垨鑰呬粎鏈変竴鏉℃湁鐜荤拑
+            //涓�鏉$嚎涓虹┖锛屼竴鏉$嚎鏈夎繘鐗囪姹傛湁鐜荤拑
+            int outLine = StringUtils.isBlank(d01Id) ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
+            //鑾峰彇杩涚墖璇锋眰鐜荤拑涓虹┖鐨勶紝璁$畻浠诲姟琛ㄨ繘鐗囨牸瀛� 鍙戦�佽繘鐗囦换鍔�
+            computeTargetByLine(outLine);
         }
-        int outLine = StringUtils.isBlank(d01Id) ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION;
-        //璁$畻浠诲姟琛ㄨ繘鐗囨牸瀛� 鍙戦�佽繘鐗囦换鍔�
-        computeTargetByLine(outLine);
+
     }
 
-    @Scheduled(fixedDelay = 5000)
+    //    @Scheduled(fixedDelay = 5000)
     public void plcToHomeEdgOutTask() {
 
         List<BigStorageCageOutTask> outingList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>().eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_NEW));
@@ -234,7 +276,7 @@
     /**
      * 鎸夌収鐜荤拑id鍒ゆ柇鐜荤拑鐘舵�佸強鍗ц浆绔嬫槸鍚﹀彲鐩存帴鍚姩
      */
-    public Boolean judgeGlassTypeStatus(String glassId, Integer line) {
+    public Boolean judgeGlassTypeStatus(String glassId, Integer line, String mesAddress) {
         //1銆佽幏鍙栦换鍔¤〃涓浉閭荤幓鐠�
         List<EdgGlassTaskInfo> edgGlassTaskInfoList = edgGlassTaskInfoService.list(new LambdaQueryWrapper<EdgGlassTaskInfo>()
                 .eq(EdgGlassTaskInfo::getLine, line)
@@ -252,36 +294,42 @@
             remainWidth = sitToUpRemainWidth.getWidth();
             glassCount = sitToUpRemainWidth.getGlassCount();
         }
+
+        Boolean flag = Boolean.TRUE;
         //2銆佽幏鍙栧崸杞珛
         Integer widthFirst = edgGlassTaskInfoList.get(0).getWidth();
         if (edgGlassTaskInfoList.size() == 1) {
             if (remainWidth >= widthFirst) {
                 if (glassCount <= 5) {
                     addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst);
-                    return Boolean.FALSE;
                 } else {
                     addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst);
-                    return Boolean.TRUE;
                 }
+            } else {
+                flag = Boolean.FALSE;
             }
         } else {
             Integer widthSecond = edgGlassTaskInfoList.get(1).getWidth();
             if (remainWidth >= widthFirst) {
                 if (remainWidth - widthFirst - galssGap >= widthSecond) {
-                    if (glassCount <= carMaxSize - 1) {
+                    if (glassCount <= inCarMaxSize - 1) {
                         addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst);
-                        return Boolean.FALSE;
                     } else {
                         addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst);
-                        return Boolean.TRUE;
                     }
                 } else {
                     addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst);
                 }
+            } else {
+                flag = Boolean.FALSE;
             }
         }
+        //鍚憄lc鍙戦�佽繘鐗囩‘璁�
+        if (flag) {
+            S7object.getinstance().plccontrol.writeWord(mesAddress, (short) 1);
+        }
         //璁板綍鏃犳硶鏀句笅鐜荤拑锛屽悗缁垽鏂惎鍔�
-        return Boolean.TRUE;
+        return flag;
     }
 
     /**
@@ -329,17 +377,17 @@
         //2銆佸幓绗煎瓙鍐呮煡鎵炬槸鍚﹀彲浠ョ户缁瓨鏀剧殑绗煎瓙
         List<String> glassIds = taskList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList());
         List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIds));
-        return computeIsTemperingTargetByLine(glassInfos, taskList, Boolean.TRUE) && computeIsTemperingTargetByLine(glassInfos, taskList, Boolean.FALSE);
+        return computeIsTemperingTargetByLine(glassInfos, taskList, line);
     }
 
     /**
      * 鏄惁閽㈠寲鐜荤拑杩涚鐩爣浣嶇疆
      *
-     * @param glassInfos  褰撴潯绾垮崸杞珛鎵�鏈夌幓鐠�
-     * @param taskList    褰撴潯绾垮崸杞珛鎵�鏈変换鍔�
-     * @param isTempering true 閽㈠寲  false  涓嶉挗鍖�
+     * @param glassInfos 褰撴潯绾垮崸杞珛鎵�鏈夌幓鐠�
+     * @param taskList   褰撴潯绾垮崸杞珛鎵�鏈変换鍔�
+     * @param line       浠诲姟鏄摢鏉$嚎
      */
-    private boolean computeIsTemperingTargetByLine(List<GlassInfo> glassInfos, List<BigStorageCageFeedTask> taskList, Boolean isTempering) {
+    private boolean computeIsTemperingTargetByLine(List<GlassInfo> glassInfos, List<BigStorageCageFeedTask> taskList, Integer line) {
         //1銆佸皢鐜荤拑淇℃伅闆嗗悎杞负glassid涓簁ey鐨刴ap
         Map<String, GlassInfo> glassInfoMap = glassInfos.stream()
                 .collect(Collectors.toMap(GlassInfo::getGlassId, p -> p));
@@ -357,7 +405,7 @@
                     .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot()));
             //4銆佹洿鏂拌繘鐗囦换鍔¤〃锛岀洰鏍囨牸瀛愬強鐘舵�侊紙鐘舵�佹敼涓�2 鐢垫皵鎵埌鑷澶勭悊锛�  閬囧埌闂锛氭棤娉曟壒閲忔洿鏂帮紝鎵归噺鏇存柊鏃犳硶璧版寚瀹氫粠搴�
             e.setTargetSlot(bigStorageDTO.getSlot());
-            e.setTaskType(Const.BIG_STORAGE_IN_RUN);
+//            e.setTaskType(Const.BIG_STORAGE_IN_RUN);
             bigStorageCageFeedTaskService.updateById(e);
 
             //5銆佸皢杩涚墖淇℃伅瀛樺叆澶х悊鐗囩璇︽儏琛�
@@ -365,7 +413,21 @@
             cageDetails.setState(Const.GLASS_STATE_IN);
             bigStorageCageDetailsService.save(cageDetails);
         }
+        sendTaskListToPLC(taskList, line);
         return Boolean.TRUE;
+    }
+
+    private void sendTaskListToPLC(List<BigStorageCageFeedTask> taskList, Integer line) {
+        S7control s7control = S7object.getinstance().plccontrol;
+        PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject;
+        String mesD03Address = plcMesObject.getPlcParameter("MESToD03").getAddress();
+        String mesD05Address = plcMesObject.getPlcParameter("MESToD05").getAddress();
+        String outLine = line.equals(Const.A09_OUT_TARGET_POSITION) ? mesD03Address : mesD05Address;
+        for (int i = 1; i <= taskList.size(); i++) {
+            s7control.writeWord(plcMesObject.getPlcParameter("StartAddToImport" + i).getAddress(), (short) taskList.get(i - 1).getLine());
+            s7control.writeWord(plcMesObject.getPlcParameter("TargetAddToImport" + i).getAddress(), (short) taskList.get(i - 1).getTargetSlot());
+        }
+        s7control.writeWord(outLine, (short) 1);
     }
 
     private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list) {
@@ -374,12 +436,12 @@
         //鎵撹溅鍓╀綑灏哄
         Integer remainWidth = carWidth;
         for (T e : list) {
-            if (bigStorageCageOutTaskList.size() > carMaxSize || e.getWidth() > remainWidth) {
+            if (bigStorageCageOutTaskList.size() > outCarMaxSize || e.getWidth() > remainWidth) {
                 break;
             }
-            remainWidth = remainWidth - e.getWidth().intValue() - galssGap;
+            remainWidth = remainWidth - (int) e.getWidth() - galssGap;
             bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.A09_OUT_TARGET_POSITION,
-                    e.getWidth().intValue(), 0, 0, 1));
+                    (int) e.getWidth(), 0, 0, 1));
         }
         Assert.isFalse(CollectionUtils.isEmpty(bigStorageCageOutTaskList), "鏈幏鍙栧嚭鐗囨暟鎹紝缁撴潫鍑虹墖浠诲姟");
         log.info("鑾峰彇鍑虹墖浠诲姟鏁版嵁{}鏉★紝鎵ц淇濆瓨", bigStorageCageOutTaskList.size());
@@ -420,7 +482,14 @@
             bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, slotWidth)
                     .in(BigStorageCage::getSlot, slotList));
         }
-
-
     }
+
+    public Boolean computeIsRun(int line, String glassId) {
+        //鑾峰彇鍗ц浆绔嬪墿浣欏搴�
+        BigStorageDTO sitToUpRemainWidth = bigStorageCageFeedTaskService.querySitToUpRemainWidth(line);
+        //鑾峰彇鐜荤拑淇℃伅
+        GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
+        return sitToUpRemainWidth.getWidth() < glassInfo.getWidth();
+    }
+
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java
index eb64e0d..13dbcca 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/temperingglass/controller/TemperingGlassInfoController.java
@@ -10,11 +10,7 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 
@@ -38,14 +34,14 @@
 
     @ApiOperation("鍑虹墖浠诲姟鍒犻櫎")
     @PostMapping("/deleteTemperingGlassInfo")
-    public Result deleteTemperingGlassInfo(TemperingGlassInfo temperingGlassInfo) {
+    public Result deleteTemperingGlassInfo(@RequestBody TemperingGlassInfo temperingGlassInfo) {
         temperingGlassInfoService.removeById(temperingGlassInfo.getId());
         return Result.build(200,"鍒犻櫎鎴愬姛",1);
     }
 
     @ApiOperation("鍑虹墖浠诲姟鐮存崯0/鎷胯蛋1")
     @PostMapping("/damageTemperingGlassInfo")
-    public Result damageTemperingGlassInfo(TemperingGlassInfo temperingGlassInfo,int status) {
+    public Result damageTemperingGlassInfo(@RequestBody TemperingGlassInfo temperingGlassInfo,int status) {
         bigStorageCageDetailsService.damageBigStorageCageDetails(temperingGlassInfo.getGlassId(),status);
         return Result.build(200,"鐮存崯鎴愬姛",1);
     }
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/JsonFile/PlcCacheVerticalGlass.json b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/JsonFile/PlcCacheVerticalGlass.json
index 1b538cf..e19b6ac 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/JsonFile/PlcCacheVerticalGlass.json
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/JsonFile/PlcCacheVerticalGlass.json
@@ -1,91 +1,335 @@
 {
-  "plcAddressBegin":"DB14.0",
-  "plcAddressLenght":"84",
-  "dataType":"word",
-  "parameteInfor":[
-    {
-      "codeId": "D01Request",
-      "addressIndex":"0",
-      "addressLenght":"2",
-      "ratio":"1",
-      "unit":"m/min"
-    },
-    {
-      "codeId": "D01ID1",
-      "addressIndex":"2",
-      "addressLenght":"6",
-      "ratio":"1",
-      "unit":""
-    },
-    {
-      "codeId": "D04Request",
-      "addressIndex":"34",
-      "addressLenght":"2",
-      "ratio":"1",
-      "unit":""
-    },
-    {
-      "codeId": "D04ID1",
-      "addressIndex":"10",
-      "addressLenght":"36",
-      "ratio":"1",
-      "unit":""
-    },
-    {
-      "codeId": "E01Status",
-      "addressIndex":"2",
-      "addressLenght":"68",
-      "ratio":"1",
-      "unit":""
-    },
-    {
-      "codeId": "E02Status",
-      "addressIndex":"2",
-      "addressLenght":"70",
-      "ratio":"1",
-      "unit":""
-    },
-    {
-      "codeId": "MaxTaskNo",
-      "addressIndex":"2",
-      "addressLenght":"72",
-      "ratio":"1",
-      "unit":""
-    },
-    {
-      "codeId": "D02MaxWidth",
-      "addressIndex":"2",
-      "addressLenght":"74",
-      "ratio":"1",
-      "unit":""
-    },
-    {
-      "codeId": "D05MaxWidth",
-      "addressIndex":"2",
-      "addressLenght":"76",
-      "ratio":"1",
-      "unit":""
-    },
-    {
-      "codeId": "GlassGap",
-      "addressIndex":"2",
-      "addressLenght":"78",
-      "ratio":"1",
-      "unit":""
-    },
-    {
-      "codeId": "D02SitState",
-      "addressIndex":"80",
-      "addressLenght":"2",
-      "ratio":"1",
-      "unit":""
-    },
-    {
-      "codeId": "D05SitState",
-      "addressIndex":"82",
-      "addressLenght":"2",
-      "ratio":"1",
-      "unit":""
-    }
-  ]
+	"plcAddressBegin": "DB14.0",
+	"plcAddressLenght": "938",
+	"dataType": "word",
+	"parameteInfor": [{
+			"codeId": "D01ID",
+			"addressIndex": "0",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D02ID",
+			"addressIndex": "32",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ID1",
+			"addressIndex": "64",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ID2",
+			"addressIndex": "96",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ID3",
+			"addressIndex": "128",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ID4",
+			"addressIndex": "160",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ID5",
+			"addressIndex": "192",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03ID6",
+			"addressIndex": "224",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D04ID",
+			"addressIndex": "256",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ID1",
+			"addressIndex": "288",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ID2",
+			"addressIndex": "328",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ID3",
+			"addressIndex": "352",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ID4",
+			"addressIndex": "384",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ID5",
+			"addressIndex": "416",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05ID6",
+			"addressIndex": "448",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01ID1",
+			"addressIndex": "480",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01ID2",
+			"addressIndex": "512",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01ID3",
+			"addressIndex": "544",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01ID4",
+			"addressIndex": "576",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01ID5",
+			"addressIndex": "608",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01ID6",
+			"addressIndex": "640",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02ID1",
+			"addressIndex": "672",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02ID2",
+			"addressIndex": "704",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02ID3",
+			"addressIndex": "736",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02ID4",
+			"addressIndex": "768",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02ID5",
+			"addressIndex": "800",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02ID6",
+			"addressIndex": "832",
+			"addressLenght": "32",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "MESToD03",
+			"addressIndex": "888",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "MESToD05",
+			"addressIndex": "890",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "MESToPLC",
+			"addressIndex": "892",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "StartAddToImport1",
+			"addressIndex": "914",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "StartAddToImport2",
+			"addressIndex": "916",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "StartAddToImport3",
+			"addressIndex": "918",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "StartAddToImport4",
+			"addressIndex": "920",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "StartAddToImport5",
+			"addressIndex": "922",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "StartAddToImport6",
+			"addressIndex": "924",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "TargetAddToImport1",
+			"addressIndex": "926",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "TargetAddToImport2",
+			"addressIndex": "928",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "TargetAddToImport3",
+			"addressIndex": "930",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "TargetAddToImport4",
+			"addressIndex": "932",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "TargetAddToImport5",
+			"addressIndex": "934",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "TargetAddToImport6",
+			"addressIndex": "936",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "deviceState",
+			"addressIndex": "864",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E01State",
+			"addressIndex": "866",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "E02State",
+			"addressIndex": "868",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D03State",
+			"addressIndex": "870",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		},
+		{
+			"codeId": "D05State",
+			"addressIndex": "872",
+			"addressLenght": "2",
+			"ratio": "1",
+			"unit": ""
+		}
+	]
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml
index 6dc9dfd..4e08558 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml
@@ -14,6 +14,10 @@
           username: sa
           password: beibo.123/
           driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
+        salve_hangzhoumes_1:
+          url: jdbc:sqlserver://192.168.20.2:1433;databasename=hangzhoumes
+          username: sa
+          password: beibo.123/
   cloud:
     nacos:
       discovery:
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
index 7f3890a..4b6e3f1 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -16,5 +16,6 @@
   minCount: 5
   carWidth: 5000   #澶ц溅瀹藉害
   slotWidth: 5000   #澶ц溅瀹藉害
-  carMaxSize: 6     #澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
-  galssGap: 20      #鐜荤拑闂磋窛
\ No newline at end of file
+  inCarMaxSize: 6     #杩涚墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
+  outCarMaxSize: 1     #鍑虹墖澶ц溅鏈�澶у瓨鏀剧幓鐠冩暟閲�
+  galssGap: 300      #鐜荤拑闂磋窛
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
index f104fc3..a0f23bf 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -37,7 +37,7 @@
              ) T2
                  INNER JOIN (SELECT ENGINEER_ID, TEMPERING_LAYOUT_ID, COUNT(TEMPERING_FEED_SEQUENCE) AS COUNT
                              FROM BIG_STORAGE_CAGE_DETAILS
-                             WHERE STATE = 100
+                             WHERE STATE in (100, 101, 102)
                              GROUP BY ENGINEER_ID, TEMPERING_LAYOUT_ID) T3 ON T2.ENGINEER_ID = T3.ENGINEER_ID
             AND T2.TEMPERING_LAYOUT_ID = T3.TEMPERING_LAYOUT_ID
             AND T2.COUNT = T3.COUNT LIMIT 1
diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
index 94991b1..8ab9cf4 100644
--- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -1,5 +1,6 @@
 package com.mes;
 
+import com.mes.bigstorage.service.BigStorageCageDetailsService;
 import com.mes.bigstorage.service.BigStorageCageService;
 import com.mes.common.config.Const;
 import com.mes.job.PlcStorageCageTask;
@@ -26,6 +27,8 @@
     BigStorageCageService bigStorageCageService;
     @Autowired
     PlcStorageCageTask plcStorageCageTask;
+    @Autowired
+    BigStorageCageDetailsService bigStorageCageDetailsService;
 
     @Test
     public void testFindPath() {
@@ -74,4 +77,9 @@
         log.info("鑾峰彇澶х悊鐗囩淇℃伅锛歿}", bigStorageCageService.selectBigStorageCageUsage());
     }
 
+    @Test
+    public void selectBigStorageCageDetails() {
+        log.info("鑾峰彇澶х悊鐗囩淇℃伅锛歿}", bigStorageCageDetailsService.selectBigStorageCageDetails("P24060403|3|6"));
+    }
+
 }
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java
index 94df6c1..c9321fa 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java
@@ -40,17 +40,17 @@
     /**
      * 骞冲潎鍒╃敤鐜�
      */
-    private Double avgAvailability;
+    private double avgAvailability;
 
     /**
      * 鏈夋晥鍒╃敤鐜�
      */
-    private Double validAvailability;
+    private double validAvailability;
 
     /**
      * 灏剧墖鍒╃敤鐜�
      */
-    private Double lastAvailability;
+    private double lastAvailability;
 
     /**
      * 鐘舵��
@@ -65,7 +65,7 @@
     /**
      * 灏忕墖鎬婚潰绉�
      */
-    private Double glassTotalArea;
+    private double glassTotalArea;
 
     /**
      * 璁″垝鍘熺墖鎬绘暟
@@ -75,7 +75,7 @@
     /**
      * 璁″垝鍘熺墖鎬婚潰绉�
      */
-    private Double planPatternTotalArea;
+    private double planPatternTotalArea;
 
     /**
      * 瀹為檯鍘熺墖鎬绘暟
@@ -85,7 +85,7 @@
     /**
      * 瀹為檯鍘熺墖鎬婚潰绉�
      */
-    private Double realityPatternTotalArea;
+    private double realityPatternTotalArea;
 
     /**
      * 鑶滅郴id
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java
index 38b62f7..5b214f1 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java
@@ -25,17 +25,17 @@
     /**
      * 骞冲潎鍒╃敤鐜�
      */
-    private Double avgCutPct;
+    private double avgCutPct;
 
     /**
      * 鏈夋晥鍒╃敤鐜�
      */
-    private Double validCutPct;
+    private double validCutPct;
 
     /**
      * 灏剧墖鍒╃敤鐜�
      */
-    private Double lastCutPct;
+    private double lastCutPct;
 
     /**
      * 鐘舵��
@@ -49,7 +49,7 @@
     /**
      * 灏忕墖鎬婚潰绉�
      */
-    private Double glassTotalArea;
+    private double glassTotalArea;
     /**
      * 璁″垝鍘熺墖鎬绘暟
      */
@@ -57,7 +57,7 @@
     /**
      * 璁″垝鍘熺墖鎬婚潰绉�
      */
-    private Double rawStockArea;
+    private double rawStockArea;
     /**
      * 瀹為檯鍘熺墖鎬绘暟
      */
@@ -65,11 +65,11 @@
     /**
      * 瀹為檯鍘熺墖鎬婚潰绉�
      */
-    private Double actualStockArea;
+    private double actualStockArea;
     /**
      * 鑶滅郴
      */
-    private  String glassType;
+    private String glassType;
     /**
      * 澶囨敞
      */
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java
index d4aca93..3b9b0e0 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java
@@ -25,17 +25,17 @@
     /**
      * 瀹�
      */
-    private Double width;
+    private double width;
 
     /**
      * 楂�
      */
-    private Double height;
+    private double height;
 
     /**
      * 鍘氬害
      */
-    private Double glassThickness;
+    private double glassThickness;
 
     /**
      * 鍘熺墖鐗堝浘鐗囧簭
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java
index ed0bc83..3fa49a8 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java
@@ -50,17 +50,17 @@
     /**
      * 鍘熺墖瀹�
      */
-    private Double patternWidth;
+    private double patternWidth;
 
     /**
      * 鍘熺墖楂�
      */
-    private Double patternHeight;
+    private double patternHeight;
 
     /**
      * 鍘熺墖鍘氬害
      */
-    private Double patternThickness;
+    private double patternThickness;
 
     /**
      * 鑶滅郴
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml
index c9fd5bc..13e2d80 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/pom.xml
@@ -24,12 +24,6 @@
             <version>2.8.9</version>
             <scope>compile</scope>
         </dependency>
-
-        <dependency>
-            <groupId>com.microsoft.sqlserver</groupId>
-            <artifactId>sqljdbc4</artifactId>
-            <version>4.0</version>
-        </dependency>
     </dependencies>
 
     <properties>
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java
index 0f18b76..0fe78d6 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java
@@ -1,6 +1,7 @@
 package com.mes;
 
-//import com.mes.common.S7object;
+
+import com.mes.common.S7object;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
@@ -13,14 +14,12 @@
 @Slf4j
 @Component
 @Order(1)
-
 public class AppRunnerConfig implements ApplicationRunner {
 
 
     @Override
     public void run(ApplicationArguments args) throws Exception {
         log.info("鍚姩瀹屾垚");
-        //S7object.getinstance().start();
-
+        S7object.getinstance().start();
     }
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java
index 15b3372..670d12c 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/common/S7object.java
@@ -14,7 +14,7 @@
 public class S7object extends Thread {
     public S7control plccontrol; // PLC閫氳绫诲疄渚�
     private EPlcType plcType = EPlcType.S1200; // 瑗块棬瀛怭LC绫诲瀷
-    private String ip = "192.168.10.1"; // plc ip鍦板潃
+    private String ip = "192.168.30.100"; // plc ip鍦板潃
     private int port = 102; // plc 绔彛鍙�
 
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java
index 4daca39..97130df 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/controller/DownGlassTaskController.java
@@ -1,9 +1,12 @@
 package com.mes.downglassinfo.controller;
 
 
-import io.swagger.annotations.Api;
+import com.mes.downglassinfo.service.DownGlassInfoService;
+import com.mes.utils.Result;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -20,5 +23,14 @@
 @RequestMapping("/downGlassTask")
 public class DownGlassTaskController {
 
+    @Autowired
+    DownGlassInfoService downGlassInfoService;
+
+    @PostMapping("/generateOutGlassTask")
+    @ApiOperation(value = "鐢熸垚鍑虹墖浠诲姟", notes = "鐢熸垚鍑虹墖浠诲姟")
+    public Result<Boolean> generateOutGlassTask(@RequestBody String glassId) {
+        return Result.success(downGlassInfoService.generateOutGlassTask(glassId));
+    }
+
 }
 
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java
index 5543ab5..410a443 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassInfo.java
@@ -1,10 +1,10 @@
 package com.mes.downglassinfo.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.springframework.data.annotation.Id;
 import org.springframework.stereotype.Component;
-
 
 import java.io.Serializable;
 
@@ -26,13 +26,18 @@
     /**
      * 涓嬬墖鐜荤拑淇℃伅琛╥d
      */
-
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**
      * 娴佺▼鍗″彿
      */
     private String flowCardId;
+
+    /**
+     * 灞傚彿
+     */
+    private Integer layer;
 
     /**
      * 椤哄簭
@@ -42,17 +47,17 @@
     /**
      * 瀹�
      */
-    private Double width;
+    private double width;
 
     /**
      * 楂�
      */
-    private Double height;
+    private double height;
 
     /**
      * 鍘氬害
      */
-    private Double thickness;
+    private double thickness;
 
     /**
      * 鑶滅郴
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassTask.java
index 13fbc8a..d14ded1 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/entity/DownGlassTask.java
@@ -1,5 +1,6 @@
 package com.mes.downglassinfo.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -24,18 +25,24 @@
     /**
      * id
      */
-    @TableId(value = "id")
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
+
+    /**
+     * 鐜荤拑id
+     */
+    private String glassId;
+
 
     /**
      * 璧峰
      */
-    private String startCell;
+    private Integer startCell;
 
     /**
      * 鐩爣
      */
-    private String endCell;
+    private Integer endCell;
 
     /**
      * 浠诲姟绫诲瀷 1:杩�   2锛氬嚭
@@ -45,12 +52,12 @@
     /**
      * 瀹�
      */
-    private Double width;
+    private Integer width;
 
     /**
      * 楂�
      */
-    private Double height;
+    private Integer height;
 
     /**
      * 鑶滅郴
@@ -60,22 +67,21 @@
     /**
      * 鍘氬害
      */
-    private Double thickness;
+    private Integer thickness;
 
     /**
      * 娴佺▼鍗″彿
      */
     private String flowCardId;
+    /**
+     * 灞傚彿
+     */
+    private int layer;
 
     /**
      * 浠诲姟鐘舵�� 0 鏈紑濮�  1姝e湪杩涜   2瀹屾垚
      */
     private Integer taskStauts;
-
-    /**
-     * 鐜荤拑id
-     */
-    private String glassId;
 
     /**
      * 鍒涘缓鏃堕棿
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
index 8ba6c01..fac40d1 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/mapper/DownGlassInfoMapper.java
@@ -1,14 +1,20 @@
 package com.mes.downglassinfo.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.github.yulichang.base.MPJBaseMapper;
 import com.mes.downglassinfo.entity.DownGlassInfo;
-import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.downworkstation.entity.dto.DownGlassInfoDTO;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Repository
-public interface DownGlassInfoMapper extends BaseMapper<DownGlassInfo>, MPJBaseMapper<DownGlassInfo> {
+public interface DownGlassInfoMapper extends BaseMapper<DownGlassInfo> {
 
 
+    DownGlassInfoDTO queryDownGlassMaxLayer(@Param(value = "flowCardId") String flowCardId);
 
+    Integer queryMaxSequence(@Param(value = "flowCardId") String flowCardId, @Param(value = "layer") int layer);
+
+    List<DownGlassInfoDTO> queryWorkStationIsIn(@Param(value = "isDownload") Boolean isDownload);
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
index 2feead5..0830e6b 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/DownGlassInfoService.java
@@ -2,6 +2,9 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.mes.downglassinfo.entity.DownGlassInfo;
+import com.mes.downworkstation.entity.dto.DownGlassInfoDTO;
+
+import java.util.List;
 
 public interface DownGlassInfoService extends IService<DownGlassInfo> {
 
@@ -10,7 +13,7 @@
      * @param flowCardId
      * @return // 鏍规嵁娴佺▼鍗″彿鏌ヨ鏈�澶у簭鍙�
      */
-    Integer getMaxSequenceByFlowCardId(String flowCardId);
+    Integer getMaxSequenceByFlowCardId(String flowCardId, int layer);
 
     /**
      * @param downGlassInfo 鎻掑叆涓嬬墖淇℃伅
@@ -18,4 +21,23 @@
     void insertDownGlassInfo(DownGlassInfo downGlassInfo);
 
 
+    DownGlassInfoDTO queryDownGlassMaxLayer(String flowCardId);
+
+    Integer queryMaxSequence(String flowCardId, int layer);
+
+    /**
+     * 鑾峰彇鏋跺瓙缁戝畾 娴佺▼鍗$殑鐜荤拑淇℃伅锛堝凡钀芥灦/鏈惤鏋讹級
+     *
+     * @param isDownload true/false
+     * @return
+     */
+    List<DownGlassInfoDTO> queryWorkStationIsIn(Boolean isDownload);
+
+    /**
+     * 鐢熸垚鍑虹墖浠诲姟
+     *
+     * @param glassId
+     * @return
+     */
+    boolean generateOutGlassTask(String glassId);
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
index e5bf336..64317a2 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downglassinfo/service/impl/DownGlassInfoServiceImpl.java
@@ -1,21 +1,41 @@
 package com.mes.downglassinfo.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.common.config.Const;
 import com.mes.downglassinfo.entity.DownGlassInfo;
 import com.mes.downglassinfo.mapper.DownGlassInfoMapper;
 import com.mes.downglassinfo.service.DownGlassInfoService;
+import com.mes.downstorage.entity.DownStorageCageDetails;
+import com.mes.downstorage.service.DownStorageCageDetailsService;
+import com.mes.downworkstation.entity.dto.DownGlassInfoDTO;
+import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.job.DownLoadCacheGlassTask;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 @Service
 public class DownGlassInfoServiceImpl extends ServiceImpl<DownGlassInfoMapper, DownGlassInfo> implements DownGlassInfoService {
 
-    // 鏍规嵁娴佺▼鍗″彿鏌ヨ鏈�澶у簭鍙�
+    @Autowired
+    DownLoadCacheGlassTask downLoadCacheGlassTask;
+
+    @Autowired
+    DownStorageCageDetailsService downStorageCageDetailsService;
+
+    /**
+     * 鏍规嵁娴佺▼鍗″彿鏌ヨ鏈�澶у簭鍙�
+     */
     @Override
-    public Integer getMaxSequenceByFlowCardId(String flowCardId) {
+    public Integer getMaxSequenceByFlowCardId(String flowCardId, int layer) {
         LambdaQueryWrapper<DownGlassInfo> lambdaQueryWrapper = Wrappers.lambdaQuery();
         lambdaQueryWrapper.eq(DownGlassInfo::getFlowCardId, flowCardId)
+                .eq(DownGlassInfo::getLayer, flowCardId)
                 .select(DownGlassInfo::getSequence)
                 .orderByDesc(DownGlassInfo::getSequence)
                 .last("LIMIT 1");
@@ -24,14 +44,42 @@
         return downGlassInfo != null ? downGlassInfo.getSequence() : 0;
     }
 
-
     @Override
     public void insertDownGlassInfo(DownGlassInfo downGlassInfo) {
-
-
-
         baseMapper.insert(downGlassInfo);
     }
 
+    @Override
+    public DownGlassInfoDTO queryDownGlassMaxLayer(String flowCardId) {
+        return baseMapper.queryDownGlassMaxLayer(flowCardId);
+    }
 
+    @Override
+    public Integer queryMaxSequence(String flowCardId, int layer) {
+        return baseMapper.queryMaxSequence(flowCardId, layer);
+    }
+
+    @Override
+    public List<DownGlassInfoDTO> queryWorkStationIsIn(Boolean isDownload) {
+        return baseMapper.queryWorkStationIsIn(isDownload);
+    }
+
+    @Override
+    public boolean generateOutGlassTask(String glassId) {
+        //鏇存柊鍗у紡鐞嗙墖绗煎唴鐜荤拑鐘舵��
+        downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>()
+                .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId));
+        DownStorageCageDetails details = downStorageCageDetailsService.getOne(new LambdaQueryWrapper<DownStorageCageDetails>()
+                .eq(DownStorageCageDetails::getGlassId, glassId));
+        //鐢熸垚涓嬬墖淇℃伅
+        DownGlassInfo downGlassInfo = new DownGlassInfo();
+        BeanUtils.copyProperties(details, downGlassInfo);
+        //鑾峰彇褰撳墠娴佺▼鍗℃渶澶х墖搴�
+        downGlassInfo.setSequence(this.getMaxSequenceByFlowCardId(details.getFlowCardId(), details.getLayer()) + 1);
+        this.save(downGlassInfo);
+        //鐢熸垚浠诲姟淇℃伅 骞跺悜plc鍙戦�佸嚭鐗囦换鍔�
+        GlassInfo glassInfo = new GlassInfo();
+        BeanUtils.copyProperties(details, glassInfo);
+        return downLoadCacheGlassTask.initDownGlassTask(glassInfo, details.getSlot(), 3001, 2);
+    }
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java
index 9298084..24f9182 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/entity/DownStorageCageDetails.java
@@ -60,17 +60,17 @@
     /**
      * 瀹�
      */
-    private Double width;
+    private double width;
 
     /**
      * 楂�
      */
-    private Double height;
+    private double height;
 
     /**
      * 鍘氬害
      */
-    private Double thickness;
+    private double thickness;
 
     /**
      * 閽㈠寲鐗堝浘id
@@ -96,6 +96,14 @@
      * 鐜荤拑闂撮殭
      */
     private Integer gap;
+    /**
+     * 鎬诲眰鏁�
+     */
+    private Integer totalLayer;
+    /**
+     * 灞傛暟
+     */
+    private Integer layer;
 
 
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
index 49a3bd9..327b48e 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/mapper/DownStorageCageDetailsMapper.java
@@ -1,13 +1,8 @@
 package com.mes.downstorage.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.github.yulichang.base.MPJBaseMapper;
-import com.mes.downglassinfo.entity.DownGlassTask;
 import com.mes.downstorage.entity.DownStorageCageDetails;
-import com.mes.glassinfo.entity.GlassInfo;
-import org.apache.ibatis.annotations.*;
-
-import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
 
 /**
  * <p>
@@ -20,4 +15,5 @@
 @Mapper
 public interface DownStorageCageDetailsMapper extends MPJBaseMapper<DownStorageCageDetails> {
 
+    DownStorageCageDetails getGlassInfoMaxCount();
 }
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
index d5eb659..29c215b 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageDetailsService.java
@@ -65,11 +65,14 @@
 //     * @return 鐩撮�氭煡璇�
 //     */
 //    List<GlassInfo>  DirectConnection();
+
     /**
      * @return 鐩撮�氭煡璇�
      */
     boolean DirectConnection(GlassInfo glassInfo);
 
+    DownStorageCageDetails getGlassInfoMaxCount();
+
     /**
      * @param glassId
      * @param ControlsId
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
index f5d4ad5..0332552 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/DownStorageCageService.java
@@ -1,6 +1,5 @@
 package com.mes.downstorage.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.base.MPJBaseService;
 import com.mes.downglassinfo.entity.DownGlassTask;
 import com.mes.downstorage.entity.DownStorageCage;
@@ -20,18 +19,21 @@
  */
 public interface DownStorageCageService extends MPJBaseService<DownStorageCage> {
 
-    DownGlassTask createDownGlassTask(GlassInfo glassInfo, String startCell, String endCell, String taskType);
-    DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, String startCell, String endCell, String taskType);
+    DownGlassTask createDownGlassTask(GlassInfo glassInfo, Integer startCell, Integer endCell, String taskType);
+
+    DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, Integer startCell, Integer endCell, String taskType);
     //    List<Map<String, Object>> selectCacheLeisure();
-
-
-
 
 
     /**
      * @return 鎵惧埌绌烘牸瀛�
      */
-    List<DownStorageCageDetails> selectCacheEmpty() ;
+    DownStorageCage selectCacheEmpty(int currentSlot, boolean flag);
+
+    /**
+     * @return 鎵惧埌绌烘牸瀛�
+     */
+    List<DownStorageCageDetails> selectCacheEmpty();
 
     /**
      * @param downStorageCage
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
index c0808fa..1b3d559 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageDetailsServiceImpl.java
@@ -197,9 +197,10 @@
         return count > 0;
     }
 
-
-
-
+    @Override
+    public DownStorageCageDetails getGlassInfoMaxCount() {
+        return baseMapper.getGlassInfoMaxCount();
+    }
 
 
     @Override
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
index 3643a74..07dbd63 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downstorage/service/impl/DownStorageCageServiceImpl.java
@@ -1,17 +1,13 @@
 package com.mes.downstorage.service.impl;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.toolkit.JoinWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
-
-//import com.mes.device.PlcParameterObject;
-import com.google.common.base.Functions;
 import com.mes.common.config.Const;
 import com.mes.downglassinfo.entity.DownGlassTask;
 import com.mes.downglassinfo.service.DownGlassTaskService;
 import com.mes.downstorage.entity.DownStorageCage;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.downstorage.entity.DownStorageCageDetails;
 import com.mes.downstorage.mapper.DownStorageCageDetailsMapper;
 import com.mes.downstorage.mapper.DownStorageCageMapper;
@@ -19,9 +15,7 @@
 import com.mes.downstorage.service.DownStorageCageService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
-import com.mes.pp.entity.OptimizeDetail;
 import lombok.extern.slf4j.Slf4j;
-import net.sf.jsqlparser.statement.select.SelectItem;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -54,7 +48,7 @@
     private DownStorageCageDetailsMapper downStorageCageDetailsMapper;
 
     @Override
-    public DownGlassTask createDownGlassTask(GlassInfo glassInfo, String startCell, String endCell, String taskType) {
+    public DownGlassTask createDownGlassTask(GlassInfo glassInfo, Integer startCell, Integer endCell, String taskType) {
         DownGlassTask downGlassTask = new DownGlassTask();
 
         BeanUtils.copyProperties(glassInfo, downGlassTask);
@@ -66,7 +60,7 @@
     }
 
     @Override
-    public DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, String startCell, String endCell, String taskType) {
+    public DownGlassTask createDownGlassTask(DownStorageCageDetails glassInfo, Integer startCell, Integer endCell, String taskType) {
         DownGlassTask downGlassTask = new DownGlassTask();
 
         BeanUtils.copyProperties(glassInfo, downGlassTask);
@@ -75,24 +69,41 @@
         downGlassTask.setEndCell(endCell);
         return downGlassTask;
     }
-
-
 
 
     //鎵惧埌绌烘牸瀛�
     @Override
     public List<DownStorageCageDetails> selectCacheEmpty() {
-        return baseMapper.selectJoinList(DownStorageCageDetails.class,
+        return this.selectJoinList(DownStorageCageDetails.class,
                 JoinWrappers.lambda(DownStorageCage.class)
                         .selectAll(DownStorageCage.class)
-                        .select(DownStorageCageDetails::getWidth, DownStorageCageDetails::getHeight, DownStorageCageDetails::getGlassId)
                         .leftJoin(DownStorageCageDetails.class, on -> on
                                 .eq(DownStorageCageDetails::getDeviceId, DownStorageCage::getDeviceId)
                                 .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot)
-                                .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN)
-                        )
+                                .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN))
                         .isNull(DownStorageCageDetails::getSlot)
         );
+    }
+
+    //鎵惧埌绌烘牸瀛�
+    @Override
+    public DownStorageCage selectCacheEmpty(int currentSlot, boolean flag) {
+        List<DownStorageCage> emptyList = this.selectJoinList(DownStorageCage.class,
+                JoinWrappers.lambda(DownStorageCage.class)
+                        .selectAll(DownStorageCage.class)
+                        .leftJoin(DownStorageCageDetails.class, on -> on
+                                .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot)
+                                .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN))
+                        .isNull(DownStorageCageDetails::getSlot)
+                        .last("order by abs(t.slot - " + currentSlot + ")  asc limit 2")
+        );
+        if (flag && CollectionUtil.isNotEmpty(emptyList)) {
+            return emptyList.get(0);
+        }
+        if (CollectionUtil.isEmpty(emptyList) || emptyList.size() == 1) {
+            return null;
+        }
+        return emptyList.get(0);
     }
 
     @Override
@@ -104,7 +115,7 @@
                         .leftJoin(DownStorageCageDetails.class, on -> on
                                 .eq(DownStorageCageDetails::getDeviceId, DownStorageCage::getDeviceId)
                                 .eq(DownStorageCageDetails::getSlot, DownStorageCage::getSlot)
-                        .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN))
+                                .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN))
                         .isNull(DownStorageCageDetails::getSlot)
                         .eq(DownStorageCage::getEnableState, 1)
                         .groupBy(DownStorageCageDetails::getFlowCardId) // 鏍规嵁 flowCardId 鍒嗙粍
@@ -113,12 +124,6 @@
 
         );
     }
-
-
-
-
-
-
 
 
     @Override
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java
index d242127..7afc44a 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstation.java
@@ -53,6 +53,11 @@
      */
     private Integer workState;
 
+    /**
+     * 灞傛暟
+     */
+    private Integer layer;
+
 
     /**
      * 鎬绘暟閲�
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java
index 15cbb9f..f5300b1 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstationTask.java
@@ -29,12 +29,12 @@
     /**
      * 瀹�
      */
-    private Double width;
+    private double width;
 
     /**
      * 楂�
      */
-    private Double height;
+    private double height;
 
     /**
      * 鑶滅郴
@@ -44,7 +44,7 @@
     /**
      * 鍘氬害
      */
-    private Double thickness;
+    private double thickness;
 
     /**
      * 娴佺▼鍗″彿
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java
index 0ebb340..1229f98 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/DownWorkstionAndDownGlassinfo.java
@@ -6,8 +6,6 @@
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import java.io.Serializable;
-
 /**
  * <p>
  *
@@ -70,19 +68,19 @@
     /**
      * 瀹�
      */
-    private Double width;
+    private double width;
 
     /**
      * 楂�
      */
-    private Double height;
-    private Double totalwidth;
+    private double height;
+    private double totalwidth;
 
-    private Double totalheight;
+    private double totalheight;
     /**
      * 鍘氬害
      */
-    private Double thickness;
+    private double thickness;
 
 
     private String Filmsid;
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/dto/DownGlassInfoDTO.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/dto/DownGlassInfoDTO.java
new file mode 100644
index 0000000..dc3fe51
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/downworkstation/entity/dto/DownGlassInfoDTO.java
@@ -0,0 +1,32 @@
+package com.mes.downworkstation.entity.dto;
+
+import com.mes.glassinfo.entity.GlassInfo;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/6/21 16:06
+ * @Description:
+ */
+@Data
+public class DownGlassInfoDTO {
+    /**
+     * 娴佺▼鍗″彿
+     */
+    private String flowCardId;
+    /**
+     * 灞傛暟
+     */
+    private Integer layer;
+    /**
+     * 钀芥灦鏁伴噺
+     */
+    private Integer count;
+
+    /**
+     * 娴佺▼鍗℃湭杩涚墖鐨勭幓鐠冧俊鎭�
+     */
+    private List<GlassInfo> glassInfoList;
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
index d6db167..da50b29 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
@@ -17,7 +17,6 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -52,7 +51,7 @@
     //    @Value("${mes.threshold}")
     private int threshold;
 
-    @Scheduled(fixedDelay = 1000)
+//    @Scheduled(fixedDelay = 1000)
     public void autoBindRack() {
         log.info("鏍规嵁缂撳瓨涓凡缁忚繘鐗囩殑鐜荤拑绉嶆暟閲忔渶澶氱殑娴佺▼鍗″彿鑷姩缁戝畾涓�涓惎鐢ㄧ姸鎬佺殑绌烘灦瀛�");
 
@@ -135,8 +134,6 @@
         }
 
 
-
-
     }
 
     /**
@@ -158,15 +155,15 @@
         if (downStorageCageDetailsService.DirectConnection(glassInfo)) {
             //鐩撮��
             //log.info("3銆佸鏋滃綋鍓嶇幓鐠冨睘浜庣増鍥緄d鍜岀墖搴忕殑椤哄簭鍒欑洿閫氾紝鎵ц涓嬬墖浠诲姟");
-          log.info("3銆佸鏋滃綋鍓嶇幓鐠冨睘浜庢祦绋嬪崱涓殑鐗囧簭鐨勯『搴忓垯鐩撮�氾紝鎵ц涓嬬墖浠诲姟");
+            log.info("3銆佸鏋滃綋鍓嶇幓鐠冨睘浜庢祦绋嬪崱涓殑鐗囧簭鐨勯『搴忓垯鐩撮�氾紝鎵ц涓嬬墖浠诲姟");
             DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId()));
             int WorkstationId = downWorkstation.getWorkstationId();
-            DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(glassInfo, "0", String.valueOf(WorkstationId), "3");
+            DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(glassInfo, 0, WorkstationId, "3");
             downGlassTaskService.insertCacheTask(downGlassTask);
 
         } else {
 
-           // log.info("4銆佸鏋滀笉灞炰簬鐗堝浘id鍜岀墖搴忕殑椤哄簭鎵ц杩涚墖浠诲姟");
+            // log.info("4銆佸鏋滀笉灞炰簬鐗堝浘id鍜岀墖搴忕殑椤哄簭鎵ц杩涚墖浠诲姟");
             log.info("4銆佸鏋滀笉灞炰簬娴佺▼鍗′腑鐨勭墖搴忕殑椤哄簭鎵ц杩涚墖浠诲姟");
 
             //娣诲姞杩涚墖浠诲姟  鏌ユ壘绌烘牸
@@ -186,7 +183,7 @@
                 downStorageCageDetailsService.save(details);
                 log.info("7銆佺幓鐠冧俊鎭凡瀛樺叆鐞嗙墖绗艰鎯呰〃锛岀幓鐠冧俊鎭负{}", details);
 
-                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(glassInfo, "0", item.getSlot() + "", "1");
+                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(glassInfo, 0, item.getSlot(), "1");
                 //娣诲姞杩涚墖浠诲姟
                 log.info("8銆佺敓鎴愯繘鐗囦换鍔′俊鎭瓨鍏ヤ换鍔¤〃{}", downGlassTask);
                 downGlassTaskService.insertCacheTask(downGlassTask);
@@ -204,7 +201,7 @@
      * @param MESSendingWord
      */
     private Boolean outTo(String MESSendingWord) {
-       // log.info("鍗曠墖鎯呭喌鏍规嵁浼犲叆鐨勬枡鏋跺彿 鏌ヨ绗﹀悎鎸夌収鐗堝浘id鍜岀墖搴忓嚭鐗�,骞朵笖浼樺厛鍑烘弧鏋剁殑灏忕墖");
+        // log.info("鍗曠墖鎯呭喌鏍规嵁浼犲叆鐨勬枡鏋跺彿 鏌ヨ绗﹀悎鎸夌収鐗堝浘id鍜岀墖搴忓嚭鐗�,骞朵笖浼樺厛鍑烘弧鏋剁殑灏忕墖");
         log.info("鍗曠墖鎯呭喌鏍规嵁浼犲叆鐨勬枡鏋跺彿 鏌ヨ绗﹀悎鎸夌収娴佺▼鍗′腑椤哄簭鍑虹墖,骞朵笖浼樺厛鍑烘弧鏋剁殑灏忕墖");
 
 //        List<DownStorageCageDetails> list1to3 = downStorageCageDetailsService.CacheOut1(1, 3);
@@ -213,7 +210,7 @@
 
         DownStorageCageDetails selectedItem = null;
 
-        String endCell = "";
+        Integer endCell = null;
 
         // 浼樺厛 瓒呭嚭灏哄浼樺厛浜哄伐鍑虹墖 浜哄伐澶勭悊
         if (!list1to6.isEmpty()) {
@@ -246,11 +243,11 @@
                     new LambdaQueryWrapper<DownWorkstation>()
                             .eq(DownWorkstation::getFlowCardId, selectedItem.getFlowCardId())
             );
-            endCell = String.valueOf(downWorkstation.getWorkstationId());
-            if (endCell.isEmpty()) {
-                endCell = "7";
+            endCell = downWorkstation.getWorkstationId();
+            if (endCell == null) {
+                endCell = 7;
             }
-            DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(selectedItem, "9", endCell, "2");
+            DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(selectedItem, 9, endCell, "2");
             downGlassTaskService.insertCacheTask(downGlassTask);
             LambdaQueryWrapper<DownStorageCageDetails> wrapper = new LambdaQueryWrapper<>();
             wrapper.eq(DownStorageCageDetails::getGlassId, selectedItem.getGlassId());
@@ -279,7 +276,7 @@
                     // 鍒涘缓鏂扮殑 DownGlassInfo 瀵硅薄骞惰缃浉鍏冲睘鎬�
                     DownGlassInfo newdownGlassInfo = new DownGlassInfo();
 
-                    Integer maxSequence = downGlassInfoService.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
+                    Integer maxSequence = downGlassInfoService.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer());
                     // 鍒濆鍖栭『搴忓瓧娈靛��
                     int sequence = maxSequence != null ? maxSequence + 1 : 1;
                     BeanUtils.copyProperties(downGlassInfo, newdownGlassInfo);
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
new file mode 100644
index 0000000..4eaa40d
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -0,0 +1,518 @@
+package com.mes.job;
+
+import cn.hutool.core.lang.Assert;
+import cn.smallbun.screw.core.util.CollectionUtils;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.mes.common.S7object;
+import com.mes.common.config.Const;
+import com.mes.device.PlcParameterObject;
+import com.mes.downglassinfo.entity.DownGlassInfo;
+import com.mes.downglassinfo.entity.DownGlassTask;
+import com.mes.downglassinfo.service.DownGlassInfoService;
+import com.mes.downglassinfo.service.DownGlassTaskService;
+import com.mes.downstorage.entity.DownStorageCage;
+import com.mes.downstorage.entity.DownStorageCageDetails;
+import com.mes.downstorage.service.DownStorageCageDetailsService;
+import com.mes.downstorage.service.DownStorageCageService;
+import com.mes.downworkstation.entity.DownWorkstation;
+import com.mes.downworkstation.entity.dto.DownGlassInfoDTO;
+import com.mes.downworkstation.service.DownWorkstationService;
+import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.tools.S7control;
+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.Value;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Author : zhoush
+ * @Date: 2024/5/8 8:17
+ * @Description:
+ */
+@Component
+@Slf4j
+public class DownLoadCacheGlassTask {
+
+    @Autowired
+    DownGlassTaskService downGlassTaskService;
+    @Autowired
+    GlassInfoService glassInfoService;
+    @Autowired
+    DownStorageCageDetailsService downStorageCageDetailsService;
+    @Autowired
+    DownStorageCageService downStorageCageService;
+    @Autowired
+    DownWorkstationService downWorkstationService;
+    @Autowired
+    DownGlassInfoService downGlassInfoService;
+
+    @Value("${mes.threshold}")
+    private Integer threshold;
+
+    @Value("${mes.throughWidth}")
+    private Integer throughWidth;
+
+    @Value("${mes.throughHeight}")
+    private Integer throughHeight;
+
+    @Value("${mes.maxWidth}")
+    private Integer maxWidth;
+
+    @Value("${mes.maxHeight}")
+    private Integer maxHeight;
+
+
+    @Scheduled(fixedDelay = 1000)
+    public void plcHomeEdgTask() {
+        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
+        String requestWord = plcParameterObject.getPlcParameter("requestWord").getValue();
+        String glassIdeValue = plcParameterObject.getPlcParameter("requestID").getValue();
+        //A08  A09琛ㄧず绾胯矾鐩稿悓  鍙仛绛変环  鏃犳暟鎹浆int寮傚父
+        String out06Glassstate = plcParameterObject.getPlcParameter("glassStatus06").getValue();
+        String out08Glassstate = plcParameterObject.getPlcParameter("glassStatus08").getValue();
+        String out11Glassstate = plcParameterObject.getPlcParameter("glassStatus11").getValue();
+        String out13Glassstate = plcParameterObject.getPlcParameter("glassStatus13").getValue();
+        String confirmationWrodValue = plcParameterObject.getPlcParameter("confirmationWord").getValue();
+        String confirmationWrodAddress = plcParameterObject.getPlcParameter("confirmationWord").getAddress();
+        String currentSlot = plcParameterObject.getPlcParameter("currentCell").getValue();
+
+        log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛歡06:{}銆乬08:{}銆乬11:{}銆乬13:{},褰撳墠鏍煎瓙鍙蜂负锛歿}",
+                requestWord, glassIdeValue, confirmationWrodValue, out06Glassstate, out08Glassstate, out11Glassstate, out13Glassstate, currentSlot);
+
+        if ("0".equals(requestWord)) {
+            if ("0".equals(confirmationWrodValue)) {
+                log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屼笖纭瀛椾负0锛屼笉鎵ц浠诲姟");
+                return;
+            }
+            log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屽皢纭瀛楁敼涓�0");
+            S7object.getinstance().plccontrol.writeWord(confirmationWrodAddress, (short) 0);
+            return;
+        }
+        if (!"0".equals(confirmationWrodValue)) {
+            log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓嶄负0锛屽皢纭瀛椾笉涓�0锛岀洿鎺ョ粨鏉�");
+            return;
+        }
+        if ("1".equals(requestWord)) {
+            log.info("2銆佽繘鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
+            inTo(glassIdeValue, requestWord, currentSlot);
+        } else if ("2".equals(requestWord)) {
+            //09绌洪棽 锛�1      10绌洪棽 锛�2        閮界┖闂诧細3    鍏朵粬0
+            log.info("2銆佸嚭鐗囪姹傦紝涓旂‘璁ゅ瓧涓�0锛屾墽琛岃繘鐗囦换鍔�");
+            outTo(out06Glassstate, out08Glassstate, out11Glassstate, out13Glassstate, glassIdeValue, currentSlot);
+        } else if ("3".equals(requestWord)) {
+            log.info("2銆佽繘鐗囧拰鍑虹墖閮界┖闂诧紝鎵ц鍑虹墖浠诲姟");
+            //鍔犵瀛愰噷闈㈡槸鍚︽湁鐜荤拑锛屾湁鍏堝嚭锛屾棤鐜荤拑鍏堣繘
+            boolean outFlase = outTo(out06Glassstate, out08Glassstate, out11Glassstate, out13Glassstate, glassIdeValue, currentSlot);
+            log.info("鍑虹墖浠诲姟鏄惁瀹屾垚锛歿},澶辫触涓旂幓鐠僫d:{}涓嶄负绌哄垯鎵ц杩涚墖浠诲姟", outFlase, glassIdeValue);
+            if (!outFlase && StringUtils.isNotBlank(glassIdeValue)) {
+                inTo(glassIdeValue, requestWord, currentSlot);
+            }
+        }
+    }
+
+    public void inTo(String glassId, String requestWord, String currentSlot) {
+        log.info("1銆佹寜鐓х幓鐠僫d:{}鑾峰彇鐜荤拑灏忕墖淇℃伅,褰撳墠鏍煎瓙涓�:{}", glassId, currentSlot);
+        //娣诲姞杩涚墖浠诲姟  鏌ユ壘绌烘牸
+        DownStorageCage nearestEmpty = downStorageCageService.selectCacheEmpty(Integer.parseInt(currentSlot), Boolean.FALSE);
+        Assert.isTrue(null != nearestEmpty, "鏍煎瓙宸叉弧,鏃犳硶鎵ц杩涚墖鎿嶄綔");
+        log.info("2銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", nearestEmpty);
+        GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
+        Assert.isFalse(null == glassInfo, "鐜荤拑淇℃伅涓嶅瓨鍦�");
+        if ("1".equals(requestWord) && (glassInfo.getWidth() > throughWidth || glassInfo.getHeight() > throughHeight)) {
+            log.info("鐜荤拑褰撳墠灏哄瀹斤細{}锛岄珮锛歿}鍙兘鐩撮�氾紝褰撳墠杩涚墖浠诲姟闇�绛夊緟", glassInfo.getWidth(), glassInfo.getHeight());
+            return;
+        }
+        Boolean checkFlag = Boolean.FALSE;
+        //鐜荤拑灏哄鏄惁璧颁汉宸ヤ笅鐗�
+        if (glassInfo.getWidth() > maxWidth || glassInfo.getHeight() > maxHeight) {
+            log.info("璇ョ幓鐠冨昂瀵歌蛋浜哄伐涓嬬墖,鐩存帴杩涚墖");
+        } else {
+            log.info("璇ョ幓鐠冨昂瀵搁潪浜哄伐涓嬬墖");
+            //鑾峰彇璇ョ幓鐠冪殑娴佺▼鍗℃槸鍚﹀凡缁戝畾鏋跺瓙
+            DownWorkstation one = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
+                    .eq(DownWorkstation::getLayer, glassInfo.getLayer())
+                    .eq(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId()));
+            Boolean isBind = Boolean.FALSE;
+            if (null != one) {
+                log.info("璇ユ祦绋嬪崱宸茬粦瀹氭灦瀛�");
+                isBind = Boolean.TRUE;
+                checkFlag = multilayerCheck(glassInfo, isBind);
+            }
+            if (!checkFlag && !isBind) {
+                log.info("璇ョ幓鐠冪殑娴佺▼鍗℃湭缁戝畾鏋跺瓙锛岃幏鍙栨槸鍚︽湁绌烘灦瀛�");
+                List<DownWorkstation> list = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
+                        .isNull(DownWorkstation::getFlowCardId));
+                if (CollectionUtils.isNotEmpty(list)) {
+                    log.info("鏈夌┖鏋跺瓙,灏嗘祦绋嬪崱涓庢灦瀛愬ソ缁戝畾锛屾墽琛岃繘鐗囦换鍔� 缁撴潫");
+                    //缁戝畾娴佺▼鍗�
+                    downWorkstationService.update(new LambdaUpdateWrapper<DownWorkstation>()
+                            .set(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId())
+                            .set(DownWorkstation::getLayer, glassInfo.getLayer())
+                            .eq(DownWorkstation::getWorkstationId, list.get(0).getWorkstationId()));
+                    checkFlag = Boolean.TRUE;
+                }
+            }
+            if (!checkFlag) {
+                log.info("鏃犵┖鏋跺瓙,鑾峰彇宸茬粦瀹氭灦瀛愮殑娴佺▼鍗′俊鎭�,鏌ョ湅鐜荤拑淇℃伅鏄惁鍙瀵硅皟");
+                List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Boolean.FALSE);
+                log.info("鑾峰彇鏋跺瓙涓婂凡缁戝畾娴佺▼鍗¤惤鏋剁殑鏁伴噺鍙婃湭钀芥灦鐨勭幓鐠冩暟鎹細{}", downGlassInfoDTOList);
+                if (CollectionUtils.isNotEmpty(downGlassInfoDTOList)) {
+                    log.info("宸茬粦瀹氭祦绋嬪崱鍧囨棤鏈惤鏋剁幓鐠冿紝璇峰強鏃跺鐞嗘灦瀛愪笂鐨勭幓鐠冿紝娓呴櫎娴佺▼鍗�,鎵ц杩涚墖浠诲姟");
+                } else {
+                    //鏇挎崲鐜荤拑淇℃伅
+                    endLoop:
+                    for (DownGlassInfoDTO e : downGlassInfoDTOList) {
+                        List<GlassInfo> glassInfoList = e.getGlassInfoList();
+                        for (GlassInfo item : glassInfoList) {
+                            if (item.getWidth() == glassInfo.getWidth() && item.getHeight() == glassInfo.getHeight()
+                                    && item.getThickness() == glassInfo.getThickness() && item.getFilmsid().equals(glassInfo.getFilmsid())) {
+                                //鐜荤拑鏄惁涓哄灞�
+                                checkFlag = multilayerCheck(item, Boolean.FALSE);
+                                if (checkFlag) {
+                                    //鐜荤拑鏇挎崲 浠呮浛鎹㈡祦绋嬪崱id鍙婂眰鏁�
+                                    String tempFlowCardId = item.getFlowCardId();
+                                    Integer tempLayer = item.getLayer();
+                                    String flowCardId = glassInfo.getFlowCardId();
+                                    Integer layer = glassInfo.getLayer();
+                                    log.info("鏇挎崲娴佺▼鍗′俊鎭�,褰撳墠鐜荤拑淇℃伅:{}鐨勬祦绋嬪崱鍙穥}鍙婂眰鏁皗},鏇挎崲鍚庣幓鐠冧俊鎭�:{}鐨勬祦绋嬪崱鍙穥}鍙婂眰鏁皗}",
+                                            item, glassInfo, flowCardId, layer, tempFlowCardId, tempLayer);
+                                    glassInfo.setFlowCardId(tempFlowCardId);
+                                    glassInfo.setLayer(tempLayer);
+                                    glassInfoService.updateById(glassInfo);
+                                    item.setFlowCardId(flowCardId);
+                                    item.setLayer(layer);
+                                    glassInfoService.updateById(item);
+                                    break endLoop;
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        //灏嗕换鍔℃彃鍏ョ悊鐗囩璇︽儏琛�
+        DownStorageCageDetails downStorageCageDetails = new DownStorageCageDetails();
+        BeanUtils.copyProperties(glassInfo, downStorageCageDetails);
+        downStorageCageDetails.setState(Const.GLASS_STATE_IN);
+        downStorageCageDetails.setSlot(nearestEmpty.getSlot());
+        downStorageCageDetailsService.save(downStorageCageDetails);
+//        鐢熸垚杩涚墖浠诲姟
+        initDownGlassTask(glassInfo, 0, nearestEmpty.getSlot(), Const.GLASS_CACHE_TYPE_IN);
+    }
+
+    public Boolean outTo(String glassStatus06, String out08Glassstate, String glassStatus11, String glassStatus13, String glassId, String currentSlot) {
+        if ("2".equals(glassStatus06) && "2".equals(glassStatus11) && "2".equals(glassStatus13)) {
+            log.info("G06銆丟11銆丟13鍒嗗埆涓簕},{}銆亄}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖", glassStatus06, glassStatus11, glassStatus13);
+            return Boolean.FALSE;
+        }
+
+        List<DownStorageCageDetails> tempList = downStorageCageDetailsService.list(new LambdaQueryWrapper<DownStorageCageDetails>()
+                .eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN));
+        //鑾峰彇寰呰繘鐗囩幓鐠�
+        DownStorageCageDetails cageDetails = new DownStorageCageDetails();
+        if (StringUtils.isNotBlank(glassId)) {
+            GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
+            BeanUtils.copyProperties(glassInfo, cageDetails);
+            //鑾峰彇褰撳墠绗煎瓙绌烘牸淇℃伅
+            DownStorageCage empty = downStorageCageService.selectCacheEmpty(Integer.parseInt(currentSlot), Boolean.TRUE);
+            cageDetails.setSlot(empty.getSlot());
+            tempList.add(cageDetails);
+        }
+
+        log.info("绗煎唴鐜荤拑鐨勬暟鎹湁锛歿}", tempList);
+        if (CollectionUtils.isEmpty(tempList)) {
+            log.info("绗煎唴娌℃湁鐜荤拑,鏃犳硶鎵ц鍑虹墖");
+            return Boolean.FALSE;
+        }
+        Boolean flag08 = "1".equals(out08Glassstate) ? Boolean.TRUE : Boolean.FALSE;
+        if (!generateTaskByShelf(glassStatus11, flag08, glassStatus13, tempList, cageDetails)) {
+            return generateTaskByShelf(glassStatus11, !flag08, glassStatus13, tempList, cageDetails);
+        }
+        return Boolean.TRUE;
+    }
+
+    private Boolean multilayerCheck(GlassInfo glassInfo, boolean isBind) {
+        //鏌ヨ璇ユ祦绋嬪崱鏄惁涓哄灞�
+        if (glassInfo.getTotalLayer() > 1) {
+            log.info("鎸夌収娴佺▼鍗¤幏鍙栧綋鍓嶆祦绋嬪崱鍚勫眰宸茶惤鏋舵暟閲�");
+            DownGlassInfoDTO downGlassInfoDTO = downGlassInfoService.queryDownGlassMaxLayer(glassInfo.getFlowCardId());
+            if (null == downGlassInfoDTO) {
+                if (isBind) {
+                    return Boolean.TRUE;
+                } else {
+                    log.info("鏋跺瓙宸茬粡鍗犳弧锛屽灞傜幓鐠冩棤娉曟壘鍒板搴旂殑鏍煎瓙锛岄渶鎵ц鏇挎崲鐜荤拑鐨勬搷浣�");
+                    return Boolean.FALSE;
+                }
+
+            }
+            if (downGlassInfoDTO.getLayer().equals(glassInfo.getLayer())) {
+                log.info("褰撳墠鐜荤拑鐨勬祦绋嬪湪鏋跺瓙涓婅惤鏋舵渶澶� 鐩存帴杩涚墖");
+                return Boolean.TRUE;
+            }
+            Integer sequence = downGlassInfoService.queryMaxSequence(glassInfo.getFlowCardId(), glassInfo.getLayer());
+            log.info("鑾峰彇褰撳墠鐜荤拑闇�瑕佹斁鐨勬搴忥細绗煎唴鍚屾祦绋� 鍚屽眰鏁扮殑閫氳揪娆″簭+1:{}", sequence);
+            DownGlassInfo downGlassInfo = downGlassInfoService.getOne(new LambdaQueryWrapper<DownGlassInfo>()
+                    .eq(DownGlassInfo::getFlowCardId, downGlassInfoDTO.getFlowCardId())
+                    .eq(DownGlassInfo::getLayer, downGlassInfoDTO.getLayer()).eq(DownGlassInfo::getSequence, sequence));
+            log.info("鎷垮綋鍓嶇増搴忚幏鍙栫幓鐠冧俊鎭瘂}锛屾寜鐓ф搴忓垽鏂綋鍓嶇幓鐠冩槸鍚﹀昂瀵稿搴旂殑涓婏紙涓庢暟閲忔渶澶氱殑娆″簭姣旇緝锛夈��", downGlassInfo);
+            if (null != downGlassInfoDTO && downGlassInfo.getWidth() == glassInfo.getWidth() && downGlassInfo.getHeight() == glassInfo.getHeight()) {
+                log.info("鐩稿悓娆″簭鐜荤拑瀵瑰簲涓婏紝鍙墽琛岃繘鐗囦换鍔�");
+                return Boolean.TRUE;
+            } else {
+                log.info("鍚屾搴忕幓鐠冨搴斾笉涓婏紝闇�鎵ц鏇挎崲鐜荤拑鐨勬搷浣�");
+                return Boolean.FALSE;
+            }
+        } else {
+            log.info("闈炲灞傜幓鐠冿紝鐩存帴杩涚墖");
+            return Boolean.TRUE;
+        }
+    }
+
+    private Boolean generateTaskByShelf(String glassStatus, Boolean flag08, String glassStatus13, List<DownStorageCageDetails> tempList, DownStorageCageDetails cageDetails) {
+        //鑾峰彇2涓満姊拌噦鑼冨洿鍐呯殑鏋跺瓙缁戝畾鐨勬祦绋嬪崱淇℃伅
+        List<Integer> workList = new ArrayList();
+
+        if (flag08) {
+            if (!"2".equals(glassStatus)) {
+                workList.addAll(Const.G11_WORK_STATION);
+            }
+        } else {
+            if (!"2".equals(glassStatus)) {
+                workList.addAll(Const.G06_WORK_STATION);
+            }
+        }
+        List<DownStorageCageDetails> list = new ArrayList();
+        Boolean isEmptyShelf = Boolean.FALSE;
+        //瀵圭鍐呯幓鐠冭繘琛岃繃婊わ紝浠呭嚭绗﹀悎閫昏緫鐨勭幓鐠�
+        if (CollectionUtils.isNotEmpty(workList)) {
+            List<DownWorkstation> downWorkstationList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
+                    .eq(DownWorkstation::getEnableState, 0).in(DownWorkstation::getWorkstationId, workList));
+            log.info("鏋跺瓙琚鐢紝鏃犳硶鍑虹墖钀芥灦");
+            if (CollectionUtils.isEmpty(downWorkstationList)) {
+                log.info("绗煎瓙琚鐢紝鏃犳硶璧版満姊拌噦涓嬬墖");
+                //璧颁汉宸ヤ笅鐗�
+                if (!"2".equals(glassStatus13)) {
+                    list = tempList.stream().filter(item -> item.getWidth() > maxWidth || item.getHeight() > maxHeight).collect(Collectors.toList());
+                }
+            } else {
+                List<DownWorkstation> workstationsIsNotBind = downWorkstationList.stream().filter(item -> null == (item.getFlowCardId())).collect(Collectors.toList());
+                Map<String, List<DownWorkstation>> listMap = downWorkstationList.stream().collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer()));
+                if (CollectionUtils.isEmpty(workstationsIsNotBind)) {
+                    log.info("涓嶅瓨鍦ㄦ湭缁戝畾娴佺▼鍗℃灦瀛�");
+                    //绛涢�夊嚭瀵瑰簲鏋跺瓙宸茬粦瀹氭祦绋嬪崱鍙笅鐗囩殑鐜荤拑
+                    list = tempList.stream().filter(item -> listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
+                } else {
+                    log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�");
+                    isEmptyShelf = Boolean.TRUE;
+                    //todo:濡傛灉绂佺敤鏋跺瓙宸茬粦瀹氭祦绋嬪崱锛屽洜涓烘椂闂翠笉纭畾锛岀瀛愬唴鐨勭幓鐠冨彲閲嶆柊缁戝畾鏂版灦瀛�
+//                    list = tempList.stream().filter(item -> !listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
+                    list = tempList;
+                }
+            }
+        } else {
+            if (flag08 && !"2".equals(glassStatus13)) {
+                //鐩存帴璧颁汉宸ヤ笅鐗�
+                list = tempList.stream().filter(item -> item.getWidth() > maxWidth || item.getHeight() > maxHeight).collect(Collectors.toList());
+            }
+        }
+        if (CollectionUtils.isEmpty(list)) {
+            log.info("绗煎唴鐜荤拑鏃犳硶鎵ц鍑虹墖");
+            return Boolean.FALSE;
+        }
+        String tempGlassId = null;
+        Boolean isBind = Boolean.FALSE;
+
+        for (DownStorageCageDetails item : list) {
+            if (item.getWidth() > maxWidth || item.getHeight() > maxHeight) {
+                if (flag08 && !"2".equals(glassStatus13)) {
+                    log.info("鐜荤拑瀹藉害鎴栭珮搴﹁秴鍑洪槇鍊硷紝鎵ц浜哄伐涓嬬墖");
+                    tempGlassId = item.getGlassId();
+                    break;
+                }
+            }
+        }
+        loop:
+        if (tempGlassId == null) {
+            //鑾峰彇姝e湪钀芥灦鐨勭粦瀹氭祦绋嬪崱鐨勪俊鎭�(娴佺▼鍗°�佸眰鏁般�佽惤鏋舵暟閲�)
+            List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Boolean.TRUE);
+            List<String> downGlassFlowList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList());
+            if (CollectionUtils.isEmpty(downGlassFlowList)) {
+                //鏋跺瓙閮芥湭缁戝畾娴佺▼鍗★紝鍑虹鍐呭瓙鏁伴噺鏈�澶氬昂瀵告渶澶х殑鐜荤拑
+                DownStorageCageDetails downStorageCageDetails = downStorageCageDetailsService.getGlassInfoMaxCount();
+                //缁戝畾娴佺▼鍗★紝鏇存柊鐜荤拑鐘舵�侊紝鐢熸垚鍑虹墖浠诲姟锛�
+                tempGlassId = downStorageCageDetails.getGlassId();
+                isBind = Boolean.TRUE;
+                break loop;
+            }
+            //灏嗙瀛愬唴鐨勭幓鐠冭繘琛岃繃婊わ紝浠呰幏鍙栨棤娉曡惤鏋剁殑娴佺▼鍗$幓鐠�
+            List<DownStorageCageDetails> noDownLoadList = list.stream().filter(item -> !downGlassFlowList.contains(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(noDownLoadList)) {
+                //鏄惁鏈夌┖鏋跺瓙
+//                List<DownWorkstation> emptyShelfList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>()
+//                        .isNull(DownWorkstation::getFlowCardId));
+                if (isEmptyShelf) {
+                    DownStorageCageDetails downStorageCageDetails = downStorageCageDetailsService.getGlassInfoMaxCount();
+                    //缁戝畾娴佺▼鍗★紝鏇存柊鐜荤拑鐘舵�侊紝鐢熸垚鍑虹墖浠诲姟
+                    tempGlassId = downStorageCageDetails.getGlassId();
+                    isBind = Boolean.TRUE;
+                    break loop;
+                }
+            }
+            //灏嗙瀛愬唴鐨勭幓鐠冭繘琛岃繃婊わ紝浠呰幏鍙栧彲钀芥灦鐨勬祦绋嬪崱鐜荤拑
+            List<DownStorageCageDetails> downLoadList = list.stream().filter(item -> downGlassFlowList.contains(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList());
+            if (CollectionUtils.isEmpty(downLoadList)) {
+                //涓嶆墽琛屽嚭鐗囦换鍔★紝绗煎唴娌℃湁鍚堥�傜殑鍑虹墖鐜荤拑
+                return Boolean.FALSE;
+            }
+            //灏嗙鍐呯幓鐠冪殑娴佺▼鍗�+灞傚彿 鍜岃惤鏋剁殑娴佺▼鍗� 鍘婚噸锛屽緱鍑哄睍绀烘棤娉曡惤鏋剁殑鐜荤拑锛屽垽鏂幓鐠冩暟鏄惁瓒呰繃闃堝��
+            //绗煎唴鐜荤拑鏄惁鍙惤鏋�:绗煎唴鏄惁鏈夐渶瑕佷腑绌虹殑
+            List<DownStorageCageDetails> multiLayerList = list.stream().filter(item -> item.getTotalLayer() >= 2).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(multiLayerList)) {
+                for (DownStorageCageDetails item : multiLayerList) {
+                    DownGlassInfoDTO downGlassInfoDTO = downGlassInfoService.queryDownGlassMaxLayer(item.getFlowCardId());
+                    if (null == downGlassInfoDTO) {
+//                    鍘嗗彶钀芥灦鐜荤拑鎸夌収鐩稿叧娴佺▼鍗″彇鏁版嵁搴撴湭鎵惧埌鏈�澶氱幓鐠冧俊鎭紝琛ㄦ槑褰撳墠娴佺▼鍗′笅鐨勬湁灞傜殑鐜荤拑鍧囨湭钀芥灦锛岀洿鎺ュ彲鍑哄綋鍓嶇幓鐠�
+                        log.info("");
+                        isBind = Boolean.FALSE;
+                        tempGlassId = item.getGlassId();
+                        break loop;
+                    }
+                    if (downGlassInfoDTO.getLayer().equals(downGlassInfoDTO.getLayer())) {
+                        log.info("褰撳墠鐜荤拑鐨勬祦绋嬪湪鏋跺瓙涓婅惤鏋舵渶澶�,鐩存帴鍑虹墖");
+                        //鏇存柊鐜荤拑鐘舵�侊紝鐢熸垚鍑虹墖浠诲姟
+                        tempGlassId = item.getGlassId();
+                        isBind = Boolean.FALSE;
+                        break loop;
+                    }
+                    Integer sequence = downGlassInfoService.queryMaxSequence(item.getFlowCardId(), item.getLayer());
+                    log.info("鑾峰彇褰撳墠鐜荤拑闇�瑕佹斁鐨勬搴忥細绗煎唴鍚屾祦绋� 鍚屽眰鏁扮殑閫氳揪娆″簭+1:{}", sequence);
+                    DownGlassInfo downGlassInfo = downGlassInfoService.getOne(new LambdaQueryWrapper<DownGlassInfo>()
+                            .eq(DownGlassInfo::getFlowCardId, downGlassInfoDTO.getFlowCardId())
+                            .eq(DownGlassInfo::getLayer, downGlassInfoDTO.getLayer()).eq(DownGlassInfo::getSequence, sequence));
+                    if (null != downGlassInfoDTO && downGlassInfo.getWidth() == item.getWidth() && downGlassInfo.getHeight() == item.getHeight()) {
+                        log.info("鐩稿悓娆″簭鐜荤拑瀵瑰簲涓婏紝鍙墽琛岃繘鐗囦换鍔�");
+                        //鏇存柊鐜荤拑鐘舵�侊紝鐢熸垚鍑虹墖浠诲姟
+                        tempGlassId = item.getGlassId();
+                        isBind = Boolean.FALSE;
+                        break loop;
+                    }
+                }
+            }
+
+            Map<String, List<DownStorageCageDetails>> singleLayerMap = list.stream().filter(item -> item.getTotalLayer() == 1)
+                    .collect(Collectors.groupingBy(item -> item.getFlowCardId() + item.getLayer(), Collectors.toList()));
+            if (tempGlassId == null) {
+                if (CollectionUtils.isNotEmpty(singleLayerMap)) {
+                    //鑾峰彇宸茶惤鏋舵祦绋嬪崱淇℃伅锛屾寜钀芥灦鏁伴噺鎺掑簭
+                    for (DownGlassInfoDTO e : downGlassInfoDTOList) {
+                        List<DownStorageCageDetails> downStorageCageDetails = singleLayerMap.get(e.getFlowCardId() + e.getLayer());
+                        if (CollectionUtils.isNotEmpty(downStorageCageDetails)) {
+                            tempGlassId = downStorageCageDetails.get(0).getGlassId();
+                            isBind = Boolean.FALSE;
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        if (tempGlassId == null) {
+            log.info("娌℃湁鎵惧埌鍙互涓嬬墖鐨勭殑鐜荤拑锛岀粨鏉熶换鍔�");
+            return Boolean.FALSE;
+        } else {
+            //鎸夌収鍑虹墖鐨勭幓鐠僫d鏇存柊绗煎唴鐨勭幓鐠冪姸鎬佷负宸插嚭鐗�
+            return generateDownGlassOutTask(tempGlassId, Const.GLASS_CACHE_TYPE_OUT, isBind, cageDetails);
+        }
+    }
+
+    public Boolean generateDownGlassOutTask(String glassId, Integer taskType, Boolean isBind, DownStorageCageDetails cageDetails) {
+        //鎸夌幓鐠僫d鑾峰彇鐜荤拑淇℃伅
+        DownStorageCageDetails downStorageCageDetails = null;
+        if (glassId.equals(cageDetails.getGlassId())) {
+            downStorageCageDetails = cageDetails;
+            taskType = 3;
+        } else {
+            downStorageCageDetails = downStorageCageDetailsService.getOne(new LambdaQueryWrapper<DownStorageCageDetails>()
+                    .eq(DownStorageCageDetails::getGlassId, glassId));
+        }
+
+        Integer endCell = null;
+        if (isBind) {
+            //鑾峰彇绌烘灦瀛愪俊鎭紝灏嗙┖鏋跺瓙淇℃伅缁戝畾娴佺▼鍗�
+            DownWorkstation emptyDownWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>()
+                    .isNull(DownWorkstation::getFlowCardId).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1"));
+            if (null != emptyDownWorkstation) {
+                log.info("鑾峰彇鍒扮┖鏋跺瓙淇℃伅锛岀粦瀹氭祦绋嬪崱");
+                emptyDownWorkstation.setFlowCardId(downStorageCageDetails.getFlowCardId());
+                emptyDownWorkstation.setLayer(downStorageCageDetails.getLayer());
+                downWorkstationService.updateById(emptyDownWorkstation);
+                endCell = emptyDownWorkstation.getWorkstationId();
+            } else {
+                log.info("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�");
+                return Boolean.FALSE;
+            }
+        } else {
+            DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>()
+                    .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer()));
+            endCell = workstation.getWorkstationId();
+        }
+        //鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬�
+        if (downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>()
+                .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId))) {
+            log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佹垚鍔�");
+        } else {
+            log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佸け璐�");
+            return Boolean.FALSE;
+        }
+        //鐢熸垚浠诲姟淇℃伅
+        DownGlassInfo downGlassInfo = new DownGlassInfo();
+        BeanUtils.copyProperties(downStorageCageDetails, downGlassInfo);
+        downGlassInfoService.save(downGlassInfo);
+        //鐢熸垚浠诲姟淇℃伅
+        GlassInfo glassInfo = new GlassInfo();
+        BeanUtils.copyProperties(downStorageCageDetails, glassInfo);
+        return initDownGlassTask(glassInfo, downStorageCageDetails.getSlot(), endCell, taskType);
+    }
+
+    public Boolean initDownGlassTask(GlassInfo glassInfo, Integer startCell, Integer endCell, Integer taskType) {
+        log.info("鐜荤拑{}鐢熸垚杩涚墖浠诲姟", glassInfo.getGlassId());
+        DownGlassTask downGlassTask = new DownGlassTask();
+        downGlassTask.setStartCell(startCell);
+        downGlassTask.setGlassId(glassInfo.getGlassId());
+        downGlassTask.setEndCell(endCell);
+        downGlassTask.setTaskType(taskType + "");
+        downGlassTask.setWidth((int) glassInfo.getWidth());
+        downGlassTask.setHeight((int) glassInfo.getHeight());
+        downGlassTask.setFlowCardId(glassInfo.getFlowCardId());
+        downGlassTask.setLayer(glassInfo.getLayer());
+        downGlassTask.setTaskStauts(0);
+        downGlassTask.setCreateTime(new Date());
+        downGlassTaskService.save(downGlassTask);
+        //鍚憄lc鍙戦�佸懡浠�
+        return sendMessageToPlc((int) glassInfo.getWidth(), (int) glassInfo.getHeight(), (int) glassInfo.getThickness(),
+                startCell, endCell, taskType);
+    }
+
+    private Boolean sendMessageToPlc(int width, int height, int thickness, int startCell, int endCell, int taskType) {
+        S7control s7control = S7object.getinstance().plccontrol;
+        PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject;
+        s7control.writeWord(plcMesObject.getPlcParameter("Glass_width").getAddress(), (short) width);
+        s7control.writeWord(plcMesObject.getPlcParameter("Glass_height").getAddress(), (short) height);
+        s7control.writeWord(plcMesObject.getPlcParameter("Glass_thickness").getAddress(), (short) thickness);
+        s7control.writeWord(plcMesObject.getPlcParameter("Start_cell").getAddress(), (short) startCell);
+        s7control.writeWord(plcMesObject.getPlcParameter("End_cell").getAddress(), (short) endCell);
+        s7control.writeWord(plcMesObject.getPlcParameter("task_type").getAddress(), (short) taskType);
+        s7control.writeWord(plcMesObject.getPlcParameter("confirmationWord").getAddress(), (short) 1);
+        return Boolean.TRUE;
+    }
+}
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
index bb10665..ac8379f 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/JsonFile/PlcdownGlass.json
@@ -1,362 +1,144 @@
 {
-  "plcAddressBegin": "DB100.0",
-  "plcAddressLenght": "230",
-  "dataType": "word",
-  "parameteInfor": [
-    {
-      "codeId": "RequestWord",
-      "addressIndex": "0",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G04ID",
-      "addressIndex": "30",
-      "addressLenght": "30"
-    },
-    {
-      "codeId": "G06RobotTaskRequestWord",
-      "addressIndex": "32",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06ID",
-      "addressIndex": "62",
-      "addressLenght": "30"
-    },
-    {
-      "codeId": "G11RobotTaskRequestWord",
-      "addressIndex": "64",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G011ID",
-      "addressIndex": "94",
-      "addressLenght": "30"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "96",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "98",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "100",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "102",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "MESSendingWord",
-      "addressIndex": "104",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InputGrid",
-      "addressIndex": "106",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "OutputGrid",
-      "addressIndex": "108",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "OutputID",
-      "addressIndex": "110",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "FrontOrRearLowerSlice",
-      "addressIndex": "112",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "114",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06RobotTaskReply",
-      "addressIndex": "116",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06Rack",
-      "addressIndex": "118",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11RobotTaskReply",
-      "addressIndex": "120",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11Rack",
-      "addressIndex": "122",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "124",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "126",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "128",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "130",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "132",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "134",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "136",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "138",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "MESTaskState",
-      "addressIndex": "140",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "142",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "AlarmState",
-      "addressIndex": "144",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "Alarm1",
-      "addressIndex": "146",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "Alarm2",
-      "addressIndex": "148",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "Alarm3",
-      "addressIndex": "150",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "Alarm4",
-      "addressIndex": "152",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "neirong",
-      "addressIndex": "154",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "device",
-      "addressIndex": "156",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "158",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "160",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut1",
-      "addressIndex": "162",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut2",
-      "addressIndex": "164",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut3",
-      "addressIndex": "166",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut4",
-      "addressIndex": "168",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut5",
-      "addressIndex": "170",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut6",
-      "addressIndex": "172",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "InOut7",
-      "addressIndex": "174",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "176",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "178",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "180",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "182",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "spare",
-      "addressIndex": "184",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G04ActionState",
-      "addressIndex": "186",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G05ActionState",
-      "addressIndex": "190",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06ActionState",
-      "addressIndex": "192",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G07ActionState",
-      "addressIndex": "194",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G08ActionState",
-      "addressIndex": "196",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G09ActionState",
-      "addressIndex": "200",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G10ActionState",
-      "addressIndex": "202",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11ActionState",
-      "addressIndex": "204",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G12ActionState",
-      "addressIndex": "206",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G13ActionState",
-      "addressIndex": "208",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G04IDS",
-      "addressIndex": "210",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G05IDS",
-      "addressIndex": "212",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G06IDS",
-      "addressIndex": "214",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G07IDS",
-      "addressIndex": "216",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G08IDS",
-      "addressIndex": "218",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G09IDS",
-      "addressIndex": "220",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G10IDS",
-      "addressIndex": "222",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G11IDS",
-      "addressIndex": "224",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G12IDS",
-      "addressIndex": "226",
-      "addressLenght": "2"
-    },
-    {
-      "codeId": "G13ID",
-      "addressIndex": "230",
-      "addressLenght": "2"
-    }
-  ]
+	"plcAddressBegin": "DB11.0",
+	"plcAddressLenght": "100",
+	"dataType": "word",
+	"parameteInfor": [
+
+		{
+			"codeId": "requestWord",
+			"addressIndex": "0",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "requestID",
+			"addressIndex": "2",
+			"addressLenght": "30"
+		},
+		{
+			"codeId": "currentCell",
+			"addressIndex": "32",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "glassStatus08",
+			"addressIndex": "36",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_glass_status",
+			"addressIndex": "40",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_glass_status",
+			"addressIndex": "42",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_glass_status",
+			"addressIndex": "44",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G04_error_status",
+			"addressIndex": "48",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G05_error_status",
+			"addressIndex": "50",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_error_status",
+			"addressIndex": "52",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "robot_error_status",
+			"addressIndex": "54",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G08_error_status",
+			"addressIndex": "56",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G09_error_status",
+			"addressIndex": "58",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G10_error_status",
+			"addressIndex": "60",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_error_status",
+			"addressIndex": "62",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "robot_error_status",
+			"addressIndex": "64",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_error_status",
+			"addressIndex": "66",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "confirmationWord",
+			"addressIndex": "72",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G06_prohibit_film_production",
+			"addressIndex": "74",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G11_prohibit_film_production",
+			"addressIndex": "76",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "G13_prohibit_film_production",
+			"addressIndex": "78",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "Glass_width",
+			"addressIndex": "82",
+			"addressLenght": "4"
+		},
+		{
+			"codeId": "Glass_height",
+			"addressIndex": "86",
+			"addressLenght": "4"
+		},
+		{
+			"codeId": "Glass_thickness",
+			"addressIndex": "90",
+			"addressLenght": "4"
+		},
+		{
+			"codeId": "Start_cell",
+			"addressIndex": "94",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "End_cell",
+			"addressIndex": "96",
+			"addressLenght": "2"
+		},
+		{
+			"codeId": "task_type",
+			"addressIndex": "98",
+			"addressLenght": "2"
+		}
+
+	]
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
index 46db88a..b13162f 100644
--- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/application.yml
@@ -3,7 +3,7 @@
 
 spring:
   profiles:
-    active: cz
+    active: dev
   application:
     name: unLoadGlass
 
@@ -12,3 +12,10 @@
   mapper-locations: classpath*:mapper/*.xml
   configuration:
     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+mes:
+  maxWidth: 1000    #涓嬬墖鐨勬渶澶у搴�
+  maxHeight: 1000   #涓嬬墖鐨勬渶澶ч珮搴�
+  throughWidth: 3000
+  throughHeight: 3000
+  threshold: 5      #涓嬬墖鐨勬渶澶ч槇鍊�
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
new file mode 100644
index 0000000..76a9216
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownGlassInfoMapper.xml
@@ -0,0 +1,75 @@
+<?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.downglassinfo.mapper.DownGlassInfoMapper">
+
+    <resultMap id="downGlassInfoDTO" type="com.mes.downworkstation.entity.dto.DownGlassInfoDTO">
+        <result column="flow_card_id" property="flowCardId"/>
+        <result column="layer" property="layer"/>
+        <result column="count" property="count"/>
+    </resultMap>
+    <resultMap id="downGlassInfo" type="com.mes.downworkstation.entity.dto.DownGlassInfoDTO">
+        <result column="flow_card_id" property="flowCardId"/>
+        <result column="layer" property="layer"/>
+        <result column="count" property="count"/>
+        <collection property="glassInfoList" ofType="com.mes.glassinfo.entity.GlassInfo">
+            <id column="id" property="id"/>
+            <result column="flow_card_id" property="flowCardId"/>
+            <result column="glass_type" property="glassType"/>
+            <result column="width" property="width"/>
+            <result column="height" property="height"/>
+            <result column="thickness" property="thickness"/>
+            <result column="filmsid" property="filmsid"/>
+            <result column="total_layer" property="totalLayer"/>
+            <result column="layer" property="layer"/>
+        </collection>
+    </resultMap>
+
+    <select id="queryDownGlassMaxLayer" resultMap="downGlassInfoDTO">
+        SELECT flow_card_id,
+               layer,
+               COUNT(layer) AS count
+        FROM
+            down_glass_info
+        WHERE
+            flow_card_id = #{flowCardId}
+        GROUP BY
+            flow_card_id,
+            layer
+        order by count desc limit 1
+    </select>
+    <select id="queryMaxSequence" resultType="java.lang.Integer">
+        SELECT max(sequence) + 1 as sequence
+        FROM down_glass_info
+        WHERE flow_card_id = #{flowCardId}
+          AND layer = #{layer}
+    </select>
+
+    <select id="queryWorkStationIsIn" resultMap="downGlassInfo">
+        SELECT T.*
+        <if test="!isDownload">
+            ,T1.*
+        </if>
+        FROM (
+        SELECT T.FLOW_CARD_ID,
+        T.LAYER,
+        COUNT(T.LAYER) AS COUNT
+        FROM
+        DOWN_WORKSTATION T
+        LEFT JOIN DOWN_GLASS_INFO T1 ON T.FLOW_CARD_ID = T1.FLOW_CARD_ID
+        GROUP BY T.FLOW_CARD_ID,LAYER
+        HAVING T.FLOW_CARD_ID IS NOT NULL
+        ) T
+        INNER JOIN GLASS_INFO T1 ON T.FLOW_CARD_ID = T1.FLOW_CARD_ID
+        AND T.LAYER = T1.LAYER
+        LEFT JOIN DOWN_GLASS_INFO T2 ON T1.GLASS_ID = T2.GLASS_ID
+        <where>
+            <if test="isDownload">
+                AND T2.GLASS_ID IS NULL
+            </if>
+            <if test="!isDownload">
+                AND T2.GLASS_ID IS not NULL
+            </if>
+        </where>
+        order by t.count desc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
new file mode 100644
index 0000000..c506462
--- /dev/null
+++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/resources/mapper/DownStorageCageDetailsMapper.xml
@@ -0,0 +1,41 @@
+<?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.downstorage.mapper.DownStorageCageDetailsMapper">
+
+    <resultMap id="downStorageCageDetails" type="com.mes.downstorage.entity.DownStorageCageDetails">
+        <id column="id" property="id"/>
+        <result column="slot" property="slot"/>
+        <result column="glass_id" property="glassId"/>
+        <result column="sequence" property="sequence"/>
+        <result column="filmsid" property="filmsid"/>
+        <result column="flow_card_id" property="flowCardId"/>
+        <result column="glass_type" property="glassType"/>
+        <result column="width" property="width"/>
+        <result column="height" property="height"/>
+        <result column="thickness" property="thickness"/>
+        <result column="tempering_layout_id" property="temperingLayoutId"/>
+        <result column="tempering_feed_sequence" property="temperingFeedSequence"/>
+        <result column="state" property="state"/>
+        <result column="gap" property="gap"/>
+        <result column="total_layer" property="totalLayer"/>
+        <result column="layer" property="layer"/>
+    </resultMap>
+
+    <select id="getGlassInfoMaxCount" resultMap="downStorageCageDetails">
+        SELECT *
+        FROM DOWN_STORAGE_CAGE_DETAILS
+        WHERE (FLOW_CARD_ID, LAYER) = (SELECT FLOW_CARD_ID, LAYER
+                                       FROM DOWN_STORAGE_CAGE_DETAILS
+                                       WHERE STATE = 100
+                                       GROUP BY FLOW_CARD_ID, LAYER
+                                       ORDER BY COUNT(FLOW_CARD_ID) DESC
+            LIMIT 1 )
+          AND STATE = 100
+        ORDER BY
+            WIDTH DESC,
+            HEIGHT DESC
+            LIMIT 1
+    </select>
+
+
+</mapper>
\ No newline at end of file

--
Gitblit v1.8.0