From 95db3e96a9465f137fdf16540e0c5985752894c2 Mon Sep 17 00:00:00 2001
From: 严智鑫 <test>
Date: 星期二, 09 四月 2024 14:27:33 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes

---
 TemperingGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java        |  142 +
 UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java                      |    2 
 LoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java         |  128 +
 UnLoadGlassModule/src/main/java/com/mes/service/GlassInfoService.java             |   28 
 LoadGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java               |   77 +
 TemperingGlassModule/src/main/JsonFile/PlcAlbania.json                            |  414 +++++
 UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java       |    4 
 UI-Project/src/views/LoginView.vue                                                |    2 
 TemperingGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java         |   89 +
 UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCageDetails.java        |   97 +
 UnLoadGlassModule/src/main/java/com/mes/service/DownGlassCacheLogic.java          |  233 +++
 UnLoadGlassModule/src/main/java/com/mes/service/DownGlassLogic.java               |  154 ++
 TemperingGlassModule/src/main/java/com/mes/entity/device/PLCAutoMes.java          |   95 +
 UnLoadGlassModule/src/main/java/com/mes/entity/EdgStorageCageDetails.java         |    0 
 UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java                      |   13 
 TemperingGlassModule/src/main/java/com/mes/MesApplication.java                    |    3 
 LoadGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuController.java  |    4 
 UI-Project/package.json                                                           |    1 
 UnLoadGlassModule/src/main/java/com/mes/entity/TaskCache.java                     |   22 
 UI-Project/src/stores/userInfo.js                                                 |    8 
 UnLoadGlassModule/src/main/java/com/mes/service/Plchome.java                      |   26 
 LoadGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java             |  142 +
 LoadGlassModule/src/main/java/com/mes/MesApplication.java                         |    2 
 TemperingGlassModule/src/main/java/com/mes/service/TemperingService.java          |   20 
 UI-Project/src/views/UnLoadGlass/loadmachineracktwo.vue                           |   16 
 TemperingGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java            |    2 
 UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java         |   45 
 CacheVerticalGlassModule/src/main/java/com/mes/service/BigStorageCageService.java |   50 
 UnLoadGlassModule/src/main/java/com/mes/service/DownWorkstationService.java       |   56 
 UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java            |    5 
 LoadGlassModule/src/main/java/com/mes/entity/device/PLCAutoMes.java               |   95 +
 CacheVerticalGlassModule/src/main/resources/application.yml                       |   15 
 LoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java       |  202 ++
 UI-Project/src/layout/MainErpView.vue                                             |    2 
 LoadGlassModule/src/main/java/com/mes/mapper/LoadGlassMapper.java                 |   18 
 TemperingGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java          |   77 +
 UnLoadGlassModule/src/main/java/com/mes/tools/Configuration.java                  |   32 
 UI-Project/src/views/UnLoadGlass/loadmachinerack.vue                              |  281 ++
 UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java               |   56 
 UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java           |    4 
 UnLoadGlassModule/src/main/java/com/mes/controller/DownGlassInfoController.java   |    7 
 TemperingGlassModule/src/main/java/com/mes/service/TemperingOverService.java      |   32 
 TemperingGlassModule/src/main/java/com/mes/controller/TemperingController.java    |   51 
 UnLoadGlassModule/src/main/java/com/mes/mapper/GlassInfoMapper.java               |   18 
 UnLoadGlassModule/src/main/java/com/mes/mapper/SelectInfo.java                    |   74 
 UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java                |    4 
 TemperingGlassModule/src/main/java/com/mes/entity/device/InitUtil.java            |  124 +
 LoadGlassModule/src/main/java/com/mes/service/LoadGlassService.java               |   51 
 TemperingGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java    |  128 +
 /dev/null                                                                         |    4 
 UnLoadGlassModule/src/main/java/com/mes/entity/GlassInfo.java                     |   34 
 TemperingGlassModule/src/main/java/com/mes/mapper/TemperingMapper.java            |   19 
 LoadGlassModule/src/main/java/com/mes/entity/device/InitUtil.java                 |  124 +
 UnLoadGlassModule/src/main/java/com/mes/controller/DownWorkstationController.java |  125 +
 LoadGlassModule/src/main/resources/JsonFile/PlcAlbania.json                       |  414 +++++
 UI-Project/src/views/HomeView.vue                                                 |    2 
 UI-Project/package-lock.json                                                      |  205 ++
 UnLoadGlassModule/src/main/resources/application.yml                              |    1 
 LoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java              |   89 +
 LoadGlassModule/src/main/java/com/mes/controller/LoadGlassController.java         |   55 
 UnLoadGlassModule/target/classes/application.yml                                  |    1 
 TemperingGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java  |  202 ++
 UI-Project/vite.config.js                                                         |   45 
 63 files changed, 4,223 insertions(+), 248 deletions(-)

diff --git a/CacheVerticalGlassModule/src/main/java/com/mes/controller/OrderTestController.java b/CacheVerticalGlassModule/src/main/java/com/mes/controller/OrderTestController.java
deleted file mode 100644
index aecbd7f..0000000
--- a/CacheVerticalGlassModule/src/main/java/com/mes/controller/OrderTestController.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.mes.controller;
-
-import com.mes.mapper.OrderTestMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-//@CrossOrigin  //瑙e喅鍗曚釜controller 璺ㄥ煙闂
-@RestController
-@RequestMapping("/order11111111")
-
-public class OrderTestController {
-    @Autowired
-    private OrderTestMapper orderMapper;
-
-//    @GetMapping //鏌ヨorder琛ㄧ粨鏋滈泦
-//    public Result index(){
-//        return Result.seccess(orderMapper.findAll());
-//
-//    }
-//
-//    @PostMapping  //鎻掑叆
-//    public Integer save(@RequestBody Order order) {
-//        return orderMapper.insert(order);
-//    }
-//
-//    @PostMapping("/update")
-//    public Integer updateOrder(@RequestBody Order order) {
-//        return orderMapper.update(order.getId(),order.getOrderid());
-//    }
-//
-//    @DeleteMapping("/{id}") //鍒犻櫎鏁版嵁
-//    public Integer delete(@PathVariable Integer id) {
-//        return orderMapper.deleteById(id);
-//    }
-
-    
-}
diff --git a/CacheVerticalGlassModule/src/main/java/com/mes/entity/OrderTest.java b/CacheVerticalGlassModule/src/main/java/com/mes/entity/OrderTest.java
deleted file mode 100644
index e8ea030..0000000
--- a/CacheVerticalGlassModule/src/main/java/com/mes/entity/OrderTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`order`")
-public class OrderTest {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;
-    private  String orderId;
-    private  String recipeNo;
-    private  String largeglassNo;
-    private  String largeglassCompleted;
-    private  String smallglassNo;
-    private  String smallglassCompleted;
-    private  String smallglassProcessing;
-    private  String smallglassWorn;
-    private  String orderStatus;
-    private  String orderMaker;
-    private  String makeTime;
-    private  String updateTime;
-
-}
diff --git a/CacheVerticalGlassModule/src/main/java/com/mes/mapper/OrderTestMapper.java b/CacheVerticalGlassModule/src/main/java/com/mes/mapper/OrderTestMapper.java
deleted file mode 100644
index d12d4ce..0000000
--- a/CacheVerticalGlassModule/src/main/java/com/mes/mapper/OrderTestMapper.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.mes.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.entity.OrderTest;
-import org.apache.ibatis.annotations.*;
-
-@Mapper
-public interface OrderTestMapper extends BaseMapper<OrderTest> {
-
-//    @Select("select * from `order`")
-//    List<Order> findAll();
-//
-//    @Insert("INSERT `order`(order_id)VALUES(#{order_id})")
-//    Integer insert(Order order);
-//
-//    @Delete("delete from `order` where id=#{id}")
-//    Integer deleteById(@Param("id") Integer id);
-//
-//    @Update("update `order` set order_id=#{order_id} where id=#{id}")
-//    Integer update(@Param("id") Integer id,@Param("order_id") String order_id);
-}
diff --git a/CacheVerticalGlassModule/src/main/java/com/mes/service/BigStorageCageService.java b/CacheVerticalGlassModule/src/main/java/com/mes/service/BigStorageCageService.java
index f965542..5c39505 100644
--- a/CacheVerticalGlassModule/src/main/java/com/mes/service/BigStorageCageService.java
+++ b/CacheVerticalGlassModule/src/main/java/com/mes/service/BigStorageCageService.java
@@ -12,37 +12,37 @@
 
     // private BigStorageCageMapper bigStorageCageMapper;
 
-    // // 鑾峰彇鐜荤拑瀛樻斁鏍煎瓙
-    // public BigStorageCageDetails FeedGlass(BigStorageCageDetails bigStorageCageDetails) {
-    //     //鑾峰彇鍚岄挗鍖栫増鍥緄d鍙繘鐗囩殑鏍煎瓙
-    //     BigStorageCageDetails LayoutSlotInfo=bigStorageCageMapper.SelectTemperingFeedSlot(bigStorageCageDetails);
-    //     //鏈夌鍚堟潯浠剁殑鏍煎瓙鏃�
-    //     if (LayoutSlotInfo!=null) {
-    //         //灏嗙幓鐠冧俊鎭~鍏ョ悊鐗囩璇︽儏琛�
-    //         bigStorageCageDetails.setSlot(LayoutSlotInfo.getSlot());
-    //     }else{
-    //         //鑾峰彇涓嶅埌鏃讹細
+    // 鑾峰彇鐜荤拑瀛樻斁鏍煎瓙
+    public BigStorageCageDetails FeedGlass(BigStorageCageDetails bigStorageCageDetails) {
+        //鑾峰彇鍚岄挗鍖栫増鍥緄d鍙繘鐗囩殑鏍煎瓙
+        BigStorageCageDetails LayoutSlotInfo=bigStorageCageMapper.SelectTemperingFeedSlot(bigStorageCageDetails);
+        //鏈夌鍚堟潯浠剁殑鏍煎瓙鏃�
+        if (LayoutSlotInfo!=null) {
+            //灏嗙幓鐠冧俊鎭~鍏ョ悊鐗囩璇︽儏琛�
+            bigStorageCageDetails.setSlot(LayoutSlotInfo.getSlot());
+        }else{
+            //鑾峰彇涓嶅埌鏃讹細
 
-    //         //鑾峰彇鍙繘鐗囨牸瀛愪俊鎭�
-    //         BigStorageCageDetails EmptySlotInfo=bigStorageCageMapper.SelectEmptyFeedSlot();
-    //         bigStorageCageDetails.setSlot(EmptySlotInfo.getSlot());
-    //         //鑾峰彇鍏朵粬绗兼牸瀛�
+            //鑾峰彇鍙繘鐗囨牸瀛愪俊鎭�
+            BigStorageCageDetails EmptySlotInfo=bigStorageCageMapper.SelectEmptyFeedSlot();
+            bigStorageCageDetails.setSlot(EmptySlotInfo.getSlot());
+            //鑾峰彇鍏朵粬绗兼牸瀛�-
             
-    //         //灏嗙幓鐠冧俊鎭斁鍏ヨ鏍煎瓙
+            //灏嗙幓鐠冧俊鎭斁鍏ヨ鏍煎瓙
 
-    //     }
+        }
 
-    //     UpdateRemainWidth(bigStorageCageDetails.getSlot());
-    //     return bigStorageCageDetails;
-    // }
+        UpdateRemainWidth(bigStorageCageDetails.getSlot());
+        return bigStorageCageDetails;
+    }
 
-    // //淇敼鏍煎瓙鍓╀綑瀹藉害
-    // private void UpdateRemainWidth(int Slot){
-    //     //鑾峰彇璇ユ牸瀛愬唴鐜荤拑淇℃伅
+    //淇敼鏍煎瓙鍓╀綑瀹藉害
+    private void UpdateRemainWidth(int Slot){
+        //鑾峰彇璇ユ牸瀛愬唴鐜荤拑淇℃伅
 
-    //     //淇敼鏍煎瓙鍓╀綑瀹藉害
-    //     BigStorageCageMapper.UpdateRemainWidth(Slot);
-    // }
+        //淇敼鏍煎瓙鍓╀綑瀹藉害
+        BigStorageCageMapper.UpdateRemainWidth(Slot);
+    }
     
 
 }
diff --git a/CacheVerticalGlassModule/src/main/java/com/mes/service/IOrderService.java b/CacheVerticalGlassModule/src/main/java/com/mes/service/IOrderService.java
deleted file mode 100644
index 9e44ceb..0000000
--- a/CacheVerticalGlassModule/src/main/java/com/mes/service/IOrderService.java
+++ /dev/null
@@ -1,2 +0,0 @@
-package com.mes.service;public interface IOrderService {
-}
diff --git a/CacheVerticalGlassModule/src/main/java/com/mes/service/impl/OrderServiceImpl.java b/CacheVerticalGlassModule/src/main/java/com/mes/service/impl/OrderServiceImpl.java
deleted file mode 100644
index 5274aa6..0000000
--- a/CacheVerticalGlassModule/src/main/java/com/mes/service/impl/OrderServiceImpl.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.mes.service.impl;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.mes.entity.OrderTest;
-import com.mes.mapper.OrderTestMapper;
-import com.mes.service.IOrderService;
-import org.springframework.stereotype.Service;
-
-@Service
-@DS("erp_sd")
-public class OrderServiceImpl extends ServiceImpl<OrderTestMapper, OrderTest> implements IOrderService {
-}
diff --git a/CacheVerticalGlassModule/src/main/resources/application.yml b/CacheVerticalGlassModule/src/main/resources/application.yml
index d74069d..887dcc8 100644
--- a/CacheVerticalGlassModule/src/main/resources/application.yml
+++ b/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -14,19 +14,4 @@
           url: jdbc:mysql://10.153.19.150:3306/erp_user_info?serverTimezone=GMT%2b8
           username: root
           password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        sd:
-          url: jdbc:mysql://10.153.19.150:3306/sd?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        mm:
-          url: jdbc:mysql://10.153.19.150:3306/mm?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
-          driver-class-name: com.mysql.cj.jdbc.Driver
-        pp:
-          url: jdbc:mysql://10.153.19.150:3306/pp?serverTimezone=GMT%2b8
-          username: root
-          password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
\ No newline at end of file
diff --git a/LoadGlassModule/src/main/java/com/mes/MesApplication.java b/LoadGlassModule/src/main/java/com/mes/MesApplication.java
index 9cc84b5..14b69cd 100644
--- a/LoadGlassModule/src/main/java/com/mes/MesApplication.java
+++ b/LoadGlassModule/src/main/java/com/mes/MesApplication.java
@@ -1,6 +1,4 @@
 package com.mes;
-
-import com.mes.common.PlcTools.S7object;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cache.annotation.EnableCaching;
diff --git a/LoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java b/LoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
index 9cc9e37..8ffee41 100644
--- a/LoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
+++ b/LoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
@@ -1,7 +1,9 @@
 package com.mes.common.PlcTools;
 
-
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
 import java.nio.charset.StandardCharsets;
+import java.sql.Time;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -9,15 +11,37 @@
 import com.github.xingshuangs.iot.protocol.s7.service.MultiAddressWrite;
 import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
 import com.google.common.primitives.Bytes;
+import org.apache.ibatis.jdbc.Null;
 
 public class S7control {
 
     S7PLC s7PLC; // PLC閫氳绫诲疄渚�
-    
-    public S7control(EPlcType plcType, String ip, int port, int rack, int slot) {
+    private EPlcType plcType = EPlcType.S1500; // 瑗块棬瀛怭LC绫诲瀷
+    private String ip = "192.168.10.1"; // plc ip鍦板潃
+    private int port = 102; // plc 绔彛鍙�
+
+    private static volatile S7control instance = null;
+
+    private S7control() {
         if (s7PLC == null)
             s7PLC = new S7PLC(plcType, ip, port,0,0);
-    } 
+    }
+    public S7control(EPlcType plcType,String ip,int port,int a,int b) {
+        if (s7PLC == null)
+            s7PLC = new S7PLC(plcType, ip, port,a,b);
+    }
+
+    // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥
+    public static S7control getinstance() {
+        if (instance == null) {
+            synchronized (S7control.class) {
+                if (instance == null)
+                    instance = new S7control();
+            }
+        }
+        return instance;
+    }
+    
     /**
      * 鍏抽棴瑗块棬瀛恠7閫氳杩炴帴
      */
@@ -33,7 +57,7 @@
     public boolean CheckConnected() {
         return s7PLC.checkConnected();
     }
-     
+
     /**
      * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆涓�涓獁ord
      * 
@@ -156,7 +180,7 @@
         }
     }
 
-
+    
 
 
     private int getIndexFromAddress(String address) {
@@ -181,7 +205,6 @@
     public List<Short> ReadWord(String address, int count) {
         if (s7PLC == null)
             return null;
-
         List<String> addresslist = GetAddressList(address, count, 16);
         try {
             return s7PLC.readInt16(addresslist);
@@ -191,7 +214,13 @@
             return null;
         }
     }
-
+    public byte[] Readbyte(String address, int count) {
+        byte[] byt=new byte[count];
+        int wordcount=((count%2==0)?count/2:count+1);
+        List<Short> word=ReadWord(address,wordcount);
+        
+        return byt;
+    }
     /**
      * 鎸夋寚瀹氱殑鍦板潃 璇诲彇byte缁撴灉闆�
      * 
@@ -269,6 +298,41 @@
 }
 
 
+
+
+
+    public List<String> readStringsandword(List<String> addressList) {
+        if (s7PLC == null) {
+            return null;
+        }
+        List<String> result = new ArrayList<>();
+        for (String address : addressList) {
+            try {
+                if (address.contains("-")) {
+                    address = address.substring(0, address.indexOf("-"));
+
+                    byte[] bytes = s7PLC.readByte(address, 14);
+                    if (bytes != null) {
+                        String str = new String(bytes, StandardCharsets.UTF_8);
+                        result.add(str);
+                    }
+
+                } else {
+                    Short value = s7PLC.readInt16(address);
+                    result.add(value.toString());
+
+                }
+            } catch (Exception e) {
+                System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
+                result.add(null);
+            }
+        }
+
+        return result;
+    }
+
+
+
 //涓嶈繛缁湴鍧�鍐欏叆Word
     public void WriteWord(List<String> address, List<Short> datas) {
         if (s7PLC == null)
@@ -300,7 +364,7 @@
             glassidlist.add(Byte.valueOf(String.valueOf(iditem)));
         }
         byte[] bytes = Bytes.toArray(glassidlist);
-        WriteByte(addr, bytes);
+        S7control.getinstance().WriteByte(addr, bytes);
     }
 
 //璇诲彇涓嶈繛缁瓀ord
@@ -410,4 +474,11 @@
         }
         return addresslist;
     }
+    public void writeString(String addr,String data) {
+        s7PLC.writeString(addr,data);
+    }
+    
+    public String readStrings(String addr) {
+        return s7PLC.readString(addr);
+    }
 }
diff --git a/LoadGlassModule/src/main/java/com/mes/controller/LoadGlassController.java b/LoadGlassModule/src/main/java/com/mes/controller/LoadGlassController.java
new file mode 100644
index 0000000..24a0bc7
--- /dev/null
+++ b/LoadGlassModule/src/main/java/com/mes/controller/LoadGlassController.java
@@ -0,0 +1,55 @@
+package com.mes.controller;
+import java.util.List;
+import java.util.Map;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.mes.common.Result;
+import com.mes.entity.Tempering;
+import com.mes.entity.UpWorkstation;
+import com.mes.service.LoadGlassService;
+import com.mes.service.TemperingOverService;
+import com.mes.service.TemperingService;
+
+
+@RestController
+@RequestMapping("/LoadGlass")
+
+// TidyUpGlassModule 閽㈠寲妯″潡
+public class LoadGlassController {
+
+    @Autowired
+    private LoadGlassService loadGlassService;
+
+    @PostMapping("/") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
+    @ResponseBody
+    public Result SelectTerritoryInfo() {
+        List<UpWorkstation> glass = loadGlassService.selectAll();
+        System.out.println(glass);
+        return Result.seccess(glass);
+    }
+
+    @PostMapping("/") //鏂板涓�鏉″伐浣嶄俊鎭�,鎺ユ敹瀹炰緥绫诲瓧娈典负瀹介珮鍘氳啘绯绘暟閲忓伐浣峣d
+    @ResponseBody
+    public void CutTerritory(@RequestBody UpWorkstation upwork) {
+        loadGlassService.insertGlass(upwork);
+      
+    }
+
+    @PostMapping("/") //鍒犻櫎涓�鏉″伐浣嶇殑鐜荤拑淇℃伅锛屼紶杈撳伐浣峣d鍒犻櫎
+    @ResponseBody
+    public void SelectCutTerritory(int upworkid) {
+        loadGlassService.deleteGlass(upworkid);
+    }
+    
+    @PostMapping("/") //寮�濮嬩笂鐗囦换鍔�
+    @ResponseBody
+    public void selectPriority() {
+        boolean result = loadGlassService.isCanLoadGlass();
+        if(result==true){
+            loadGlassService.selectPriority();
+        }
+    }
+
+  
+
+}
diff --git a/LoadGlassModule/src/main/java/com/mes/controller/OrderTestController.java b/LoadGlassModule/src/main/java/com/mes/controller/OrderTestController.java
deleted file mode 100644
index aecbd7f..0000000
--- a/LoadGlassModule/src/main/java/com/mes/controller/OrderTestController.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.mes.controller;
-
-import com.mes.mapper.OrderTestMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-//@CrossOrigin  //瑙e喅鍗曚釜controller 璺ㄥ煙闂
-@RestController
-@RequestMapping("/order11111111")
-
-public class OrderTestController {
-    @Autowired
-    private OrderTestMapper orderMapper;
-
-//    @GetMapping //鏌ヨorder琛ㄧ粨鏋滈泦
-//    public Result index(){
-//        return Result.seccess(orderMapper.findAll());
-//
-//    }
-//
-//    @PostMapping  //鎻掑叆
-//    public Integer save(@RequestBody Order order) {
-//        return orderMapper.insert(order);
-//    }
-//
-//    @PostMapping("/update")
-//    public Integer updateOrder(@RequestBody Order order) {
-//        return orderMapper.update(order.getId(),order.getOrderid());
-//    }
-//
-//    @DeleteMapping("/{id}") //鍒犻櫎鏁版嵁
-//    public Integer delete(@PathVariable Integer id) {
-//        return orderMapper.deleteById(id);
-//    }
-
-    
-}
diff --git a/LoadGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuController.java b/LoadGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuController.java
index 6eee09a..aab8fb4 100644
--- a/LoadGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuController.java
+++ b/LoadGlassModule/src/main/java/com/mes/controller/userInfo/SysMenuController.java
@@ -19,9 +19,7 @@
     private SysMenuService sysMenuService;
     @GetMapping
     public Result getMenu(){
-        //MyChannelHandlerPool myChannelHandlerPool = new MyChannelHandlerPool();
-        //myChannelHandlerPool.sendMsg("123");
-        //MyChannelHandlerPool.channelGroup.writeAndFlush( new TextWebSocketFrame("123123"));
+        //鑾峰彇缂撳瓨
         return Result.seccess(sysMenuService.getMenu());
 
     }
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/BigStorageCage.java b/LoadGlassModule/src/main/java/com/mes/entity/BigStorageCage.java
deleted file mode 100644
index d103b46..0000000
--- a/LoadGlassModule/src/main/java/com/mes/entity/BigStorageCage.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`big_storage_cage`")
-public class BigStorageCage {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//澶х悊鐗囩琛╥d
-    private  Integer device_id;//璁惧id
-    private  Integer slot;//鏍呮牸鍙�
-    private  String enable_state;//鍚敤鐘舵��
-    private  Integer remain_width;//鍓╀綑瀹藉害
-
-}
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java b/LoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java
deleted file mode 100644
index bb1d86e..0000000
--- a/LoadGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`down_glass_info`")
-public class DownGlassInfo {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//涓嬬墖鐜荤拑淇℃伅琛╥d
-    private  String flowcardid;//娴佺▼鍗″彿
-    private  Integer sequence;//椤哄簭
-    private  Integer width;//瀹�
-    private  Integer height;//楂�
-    private  Integer thickness;//鍘氬害
-
-}
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/DownStorageCage.java b/LoadGlassModule/src/main/java/com/mes/entity/DownStorageCage.java
deleted file mode 100644
index 1e1ff49..0000000
--- a/LoadGlassModule/src/main/java/com/mes/entity/DownStorageCage.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`down_storage_cage`")
-public class DownStorageCage {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//涓嬬墖鍓嶇悊鐗囩琛╥d
-    private  Integer deviceid;//璁惧id
-    private  Integer slot;//鏍呮牸鍙�
-    private  String enablestate;//鍚敤鐘舵��
-    private  Integer remainwidth;//鍓╀綑
-
-}
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/DownStorageCagedetails.java b/LoadGlassModule/src/main/java/com/mes/entity/DownStorageCagedetails.java
deleted file mode 100644
index 9e26f5f..0000000
--- a/LoadGlassModule/src/main/java/com/mes/entity/DownStorageCagedetails.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`down_storage_cage_details`")
-public class DownStorageCagedetails {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//涓嬬墖鍓嶇悊鐗囩鏄庣粏琛╥d
-    private  Integer deviceid;//璁惧id
-    private  Integer slot;//鏍呮牸鍙�
-    private  Integer glassid;//鐜荤拑id
-    private  Integer sequence;//灏忕墖鍦ㄦ牸鍐呯殑椤哄簭
-    private  String flow_card_id;//娴佺▼鍗″彿
-    private  Integer glass_type;//鐜荤拑绫诲瀷
-    private  Double width;//瀹�
-    private  Double height;//楂�
-    private  Double thickness;//鍘氬害
-    private  Integer temperinglayoutid;//閽㈠寲鐗堝浘id
-    private  Integer tempering_feed_sequence;//閽㈠寲鐗堝浘鐗囧簭
-    private  Integer state;//鐘舵��
-    private  Integer gap;//鐜荤拑闂撮殭
-
-}
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java b/LoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
deleted file mode 100644
index 847d157..0000000
--- a/LoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`down_workstation`")
-public class DownWorkstation {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//涓嬬墖宸ヤ綅琛╥d
-    private  Integer flowcard_id;//宸ヤ綅id
-    private  String glass_type;//娴佺▼鍗″彿
-    private  Integer width;//璁惧id
-    private  Integer height;//鍚敤鐘舵��
-    private  Integer thickness;//宸ヤ綔鐘舵��
-
-}
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/OrderTest.java b/LoadGlassModule/src/main/java/com/mes/entity/OrderTest.java
deleted file mode 100644
index e8ea030..0000000
--- a/LoadGlassModule/src/main/java/com/mes/entity/OrderTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`order`")
-public class OrderTest {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;
-    private  String orderId;
-    private  String recipeNo;
-    private  String largeglassNo;
-    private  String largeglassCompleted;
-    private  String smallglassNo;
-    private  String smallglassCompleted;
-    private  String smallglassProcessing;
-    private  String smallglassWorn;
-    private  String orderStatus;
-    private  String orderMaker;
-    private  String makeTime;
-    private  String updateTime;
-
-}
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/Tempering.java b/LoadGlassModule/src/main/java/com/mes/entity/Tempering.java
deleted file mode 100644
index 5b61dae..0000000
--- a/LoadGlassModule/src/main/java/com/mes/entity/Tempering.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`tempering_glass_info`")
-public class Tempering {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//閽㈠寲灏忕墖淇℃伅琛╥d
-    private  String flowcard_id;//娴佺▼鍗�
-    private  Integer glass_type;//娴佺▼鍗$幓鐠冪被鍨�
-    private  Double width;//瀹�
-    private  Double height;//楂�
-    private  Double thickness;//鍘氬害
-    private  Integer filmsid;//鑶滅郴
-    private  Integer ishorizontal;//閽㈠寲鏄惁鎺ュ彈妯斁
-    private  Integer tempering_layout_id;//閽㈠寲鐗堝浘id
-    private  Integer tempering_feed_sequence;//閽㈠寲鐗堝浘鐗囧簭
-    private  Integer x_coordinate;//x鍧愭爣
-    private  Integer y_coordinate;//y鍧愭爣
-    private  Integer angle;//鏃嬭浆瑙掑害锛堥�嗘椂閽堬級
-    private  Integer state;//鐘舵��
-
-}
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/device/InitUtil.java b/LoadGlassModule/src/main/java/com/mes/entity/device/InitUtil.java
new file mode 100644
index 0000000..6d59bd3
--- /dev/null
+++ b/LoadGlassModule/src/main/java/com/mes/entity/device/InitUtil.java
@@ -0,0 +1,124 @@
+package com.mes.entity.device;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import com.mes.common.PlcTools.S7control;
+
+public class InitUtil {
+    //鍒濆鍖杦ord
+    public static PlcParameterObject initword(String jsonFilePath) {
+        try {
+            FileReader fileReader = new FileReader(jsonFilePath);
+            BufferedReader bufferedReader = new BufferedReader(fileReader);
+
+            StringBuilder content = new StringBuilder();
+            String line;
+
+            while ((line = bufferedReader.readLine()) != null) {
+                content.append(line);
+            }
+
+            bufferedReader.close();
+            fileReader.close();
+
+            JSONObject jsonfileobj = new JSONObject(content.toString());
+            JSONArray jsonArray = jsonfileobj.getJSONArray("parameteInfor");
+            PlcParameterObject plcParameterObject = new PlcParameterObject();
+            plcParameterObject.setPlcAddressBegin(jsonfileobj.getStr("plcAddressBegin"));//璁剧疆璧峰浣嶅湴鍧�
+            plcParameterObject.setPlcAddressLength(Integer.valueOf(jsonfileobj.getStr("plcAddressLenght")));//璁剧疆鍦板潃闀垮害
+
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject parameterObj = jsonArray.getJSONObject(i);
+                PlcParameterInfo plcParameterInfo = new PlcParameterInfo(jsonfileobj.getStr("plcAddressBegin")); //鍙傛暟瀹炰緥
+                String codeid = parameterObj.getStr("codeId");
+                plcParameterInfo.setCodeId(codeid);
+                plcParameterInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex")));
+                //plcParameterInfo.setRatio(Integer.valueOf(parameterObj.getStr("ratio")));
+                plcParameterInfo.setAddressLength(Integer.valueOf(parameterObj.getStr("addressLenght")));
+                plcParameterInfo.setUnit(parameterObj.getStr("unit"));
+                plcParameterObject.addPlcParameter(plcParameterInfo);
+            }
+           // byte[] getplcvlues = {0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02};
+           // byte[] getplcvlues = S7control.getinstance().ReadByte(plcParameterObject.getPlcAddressBegin(), plcParameterObject.getPlcAddressLength());
+           // plcParameterObject.setPlcParameterList(getplcvlues);
+
+            return plcParameterObject;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    //鍒濆鍖朾it
+    public static PlcBitObject initbit(String jsonFilePath) {
+        PlcBitObject plcBitObject = new PlcBitObject();
+
+        try {
+            FileReader fileReader = new FileReader(jsonFilePath);
+            BufferedReader bufferedReader = new BufferedReader(fileReader);
+
+            StringBuilder content = new StringBuilder();
+            String line;
+
+            while ((line = bufferedReader.readLine()) != null) {
+                content.append(line);
+            }
+
+            bufferedReader.close();
+            fileReader.close();
+
+            JSONObject jsonfileobj = new JSONObject(content.toString());
+            JSONArray jsonArray = jsonfileobj.getJSONArray("parameteInfor");
+            plcBitObject.setPlcAddressBegin(jsonfileobj.getStr("plcAddressBegin"));//璁剧疆璧峰浣嶅湴鍧�
+            plcBitObject.setPlcAddressLength(Integer.valueOf(jsonfileobj.getStr("plcAddressLenght")));//璁剧疆鍦板潃闀垮害
+
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject parameterObj = jsonArray.getJSONObject(i);
+
+                PlcBitInfo plcBitInfo = new PlcBitInfo(jsonfileobj.getStr("plcAddressBegin")); //鍙傛暟瀹炰緥
+                String codeid = parameterObj.getStr("codeId");
+                plcBitInfo.setCodeId(codeid);
+                plcBitInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex")));
+
+                plcBitObject.addPlcBit(plcBitInfo);
+            }
+            System.out.println("");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+           //Boolean[] values1 = { false, true, true, true, false, false, true, false,
+          //  false, true ,true };
+   // List<Boolean> getplcvlues = new ArrayList<>(Arrays.asList(values1));
+
+//        List<Boolean> getplcvlues = S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(), plcBitObject.getPlcAddressLength());
+//        plcBitObject.setPlcBitList(getplcvlues);
+        return plcBitObject;
+    }
+
+//
+    public static void readAndUpdateBitValues(PlcBitObject plcBitObject) {
+
+//        Boolean[] values1 = { false, true, true, true, false, false, true, false,
+//          false, true ,true };
+//         List<Boolean> getplcvlues = new ArrayList<>(Arrays.asList(values1));
+        List<Boolean> getplcvlues = S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(), plcBitObject.getPlcAddressLength());
+        plcBitObject.setPlcBitList(getplcvlues);
+    }
+
+
+    public static void readAndUpdateWordValues(PlcParameterObject plcParameterObject) {
+
+        // byte[] getplcvlues = {0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02};
+        byte[] getplcvlues = S7control.getinstance().ReadByte(plcParameterObject.getPlcAddressBegin(), plcParameterObject.getPlcAddressLength());
+        plcParameterObject.setPlcParameterList(getplcvlues);
+    }
+
+
+
+}
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/device/PLCAutoMes.java b/LoadGlassModule/src/main/java/com/mes/entity/device/PLCAutoMes.java
new file mode 100644
index 0000000..dcb707e
--- /dev/null
+++ b/LoadGlassModule/src/main/java/com/mes/entity/device/PLCAutoMes.java
@@ -0,0 +1,95 @@
+package com.mes.entity.device;
+
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import static com.mes.entity.device.InitUtil.readAndUpdateWordValues;
+public class PLCAutoMes extends Thread {
+
+    // // 鐢ㄤ簬瀛樺偍搴旂敤绋嬪簭鐨勯厤缃俊鎭�
+    // private Configuration config;
+    private static InitUtil initUtil;
+    // public static PlcParameterObject PlcMesObject;
+    // public static PlcParameterObject PlcReadObject;
+    // public static PlcParameterObject PlcframeObject;
+
+    // // 鍒涘缓涓�涓嚜瀹氫箟鐨� S7 鎺у埗鍣ㄦ秷鎭鐞嗗櫒瀵硅薄
+    // MessageHandler customS7Control = new MessageHandler();
+
+    // 鍗曚緥瀹炰緥
+    private static PLCAutoMes instance;
+    // private static String PlcMes = PLCAutoMes.class.getResource("/JsonFile/PlcMes.json").getPath();
+    private static String PlcAlbania = PLCAutoMes.class.getResource("/JsonFile/PlcAlbania.json").getPath();
+    // private static String PlcRead = PLCAutoMes.class.getResource("/JsonFile/PlcRead.json").getPath();
+    // private static String Plcframe = PLCAutoMes.class.getResource("/JsonFile/Plcframe.json").getPath();
+    // private static String PlcParameter = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcParameter.json").getPath();
+            
+    // private static String PlcSign = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json").getPath();
+            
+    // private static String PlcState = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json").getPath();
+            
+    // private static String PlcAlarm = PLCAutoMes.class.getResource("/JsonFile/PlcAlarm.json").getPath();
+    // private static String PlcTest = PLCAutoMes.class.getResource("/JsonFile/PlcTest.json").getPath();
+
+    // 璋冪敤initword鏂规硶
+
+    // public static PlcParameterObject plcParameterObject = initUtil.initword(PlcParameter);
+    // public static PlcBitObject plcPlcTest = initUtil.initbit(PlcTest);
+    // public static PlcBitObject  plcBitObject = initUtil.initbit(PlcSign);
+    // public static PlcParameterObject  plcStateObject= initUtil.initword(PlcState);
+    // public static PlcBitObject plcPlcAlarm = initUtil.initbit(PlcAlarm);
+    public static PlcParameterObject PlcMesObject = InitUtil.initword(PlcAlbania);
+    // public static PlcParameterObject PlcReadObject = initUtil.initword(PlcRead);
+    // public static PlcParameterObject PlcframeObject = initUtil.initword(Plcframe);
+  
+    // 绉佹湁鏋勯�犲嚱鏁�
+    public PLCAutoMes() throws IOException {
+        //config = new Configuration("config.properties");
+        initUtil = new InitUtil();
+    }
+
+    // 鑾峰彇鍗曚緥瀹炰緥
+    public static synchronized PLCAutoMes getInstance() throws IOException {
+        if (instance == null) {
+            instance = new PLCAutoMes();
+        }
+        return instance;
+    }
+
+    @Override
+    public void run() {
+        while (this != null) {
+            try {
+                Thread.sleep(100);
+
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            // System.out.println(jsonFilePath);
+
+            //readAndUpdateWordValues(PlcReadObject);
+            readAndUpdateWordValues(PlcMesObject);
+            //readAndUpdateWordValues(PlcframeObject);
+            // readAndUpdateWordValues(PlcframeObject);
+
+            // readAndUpdateWordValues(plcStateObject);
+            // int index = PlcMesObject.getPlcParameter("AddStart").getAddressIndex();
+            // // System.out.println(index);
+            // PlcMesObject.getPlcParameter("AddStart").getAddress(index);
+            // // System.out.println(PlcMesObject.getPlcParameter("AddStart").getAddress(index));
+            // List<String> addresses = new ArrayList<>();
+            // addresses.add("FeedID");
+            // addresses.add("AddStart");
+            // // System.out.println(addresses);
+            // // System.out.println(PlcMesObject.getPlcParameterValues(addresses));
+            // List<String> addresses2 = new ArrayList<>();
+            // addresses2.add("FeedID");
+            // addresses2.add("FeedCarStatus");
+
+            //System.out.println(PlcReadObject.getPlcParameterValues(addresses2));
+
+        }
+    }
+}
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java b/LoadGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java
new file mode 100644
index 0000000..78846f9
--- /dev/null
+++ b/LoadGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java
@@ -0,0 +1,77 @@
+package com.mes.entity.device;
+
+
+
+public  class PlcBitInfo {
+
+        public PlcBitInfo(String startAddress) {
+            this.startAddress = startAddress;
+        }
+        private String startAddress;
+        // 鍙傛暟鏍囪瘑
+        private String codeId;
+
+        // 鍙傛暟鍚嶇О
+        private String name;
+
+        // 璇诲彇 鍙傛暟鍊�
+        private Boolean value;
+        // 鍙傛暟鍦板潃
+        private int addressIndex;
+
+        public String getCodeId() {
+            return this.codeId;
+        }
+
+        public void setCodeId(String codeId) {
+            this.codeId = codeId;
+        }
+
+        public String getName() {
+            return this.name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public Boolean getValue() {
+            return this.value;
+        }
+
+        public void setValue(Boolean value) {
+            this.value = value;
+        } 
+         
+
+        public int getAddressIndex() {
+            return this.addressIndex;
+        } 
+         /**
+     * 鑾峰彇鍦板潃
+     * 
+     * @param index 绱㈠紩鍦板潃
+     */
+        public String getAddress(int index) {
+            String[] stringdatas = this.startAddress.trim().split("\\.");
+            if (stringdatas.length < 2 )
+                return null;
+            int dbwindex = 0;
+            int bitindex = 0;
+             if (stringdatas.length == 3) {
+                dbwindex = Integer.parseInt(stringdatas[1]);
+                bitindex = Integer.parseInt(stringdatas[2]);
+            } else
+                return null; 
+              dbwindex+=index/8;
+              bitindex+=index%8;
+            return stringdatas[0]+"."+dbwindex+"."+bitindex;
+        }
+
+
+
+
+    public void setAddressIndex(int addressindex) {
+            this.addressIndex = addressindex;
+        } 
+    }
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java b/LoadGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java
new file mode 100644
index 0000000..977a13c
--- /dev/null
+++ b/LoadGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java
@@ -0,0 +1,142 @@
+package com.mes.entity.device;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+public class PlcBitObject {
+
+    // 璇ユā鍧楁暟鎹被鍨嬶紝鏁版嵁璧峰浣嶇疆
+    private String plcAddressBegin;
+    // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
+    private int plcAddressLength;
+    private ArrayList<PlcBitInfo> plcBitList;
+
+    /**
+     * @return 鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public String getPlcAddressBegin() {
+        return plcAddressBegin;
+    }
+
+    /**
+     * @param plcAddressBegin 璁剧疆鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public void setPlcAddressBegin(String plcAddressBegin) {
+        this.plcAddressBegin = plcAddressBegin;
+    }
+
+    /**
+     * @return 鏁版嵁鍖� 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public int getPlcAddressLength() {
+        return plcAddressLength;
+    }
+
+    /**
+     * @return 璁剧疆锛氭暟鎹尯 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public void setPlcAddressLength(int plcAddressLength) {
+        this.plcAddressLength = plcAddressLength;
+    }
+
+    /**
+     * @return 鑾峰彇鍙傛暟瀹炰緥闆嗗悎
+     */
+    public ArrayList<PlcBitInfo> getBitList() {
+        return plcBitList;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public PlcBitInfo getPlcBit(String codeid) {
+        if (plcBitList != null) {
+            for (PlcBitInfo plcbitInfo : plcBitList) {
+                if (plcbitInfo.getCodeId().equals(codeid))
+                    return plcbitInfo;
+            }
+            return null;
+        } else
+            return null;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public List<Boolean> getPlcBitValues(List<String> codeids) {
+        List<Boolean> arrayList = new ArrayList<>();
+        if (plcBitList != null) {
+            Map<String, Boolean> resultMap = new LinkedHashMap<>(); // 浣跨敤 LinkedHashMap 淇濈暀鎻掑叆椤哄簭
+            for (PlcBitInfo plcBitInfo : plcBitList) {
+                if (codeids.contains(plcBitInfo.getCodeId().toString())) {
+                    resultMap.put(plcBitInfo.getCodeId().toString(), plcBitInfo.getValue());
+                }
+            }
+            for (String codeId : codeids) { // 鎸夌収浼犲叆鍙傛暟鐨勯『搴忛亶鍘�
+                Boolean value = resultMap.get(codeId);
+                if (value != null) {
+                    arrayList.add(value);
+                } else {
+                    arrayList.add(null); // 濡傛灉鎵句笉鍒板搴旂殑鍊硷紝娣诲姞 null
+                }
+            }
+        }
+        return arrayList;
+    }
+
+
+    public List<String> getAddressListByCodeId(List<String> codeIdList) {
+        List<String> addressList = new ArrayList<>();
+        for (String codeId : codeIdList) {
+            for (PlcBitInfo plcBitInfo : plcBitList) {
+                if (plcBitInfo.getCodeId().equals(codeId)) {
+                    int index = plcBitInfo.getAddressIndex();
+                    String address = plcBitInfo.getAddress(index);
+                    if (address != null) {
+                        addressList.add(address);
+                    }
+                }
+            }
+        }
+        return addressList;
+    }
+
+
+    /**
+     * 娣诲姞鍙傛暟瀹炰緥
+     * 
+     * @param param 鍙傛暟瀹炰緥
+     */
+    public void addPlcBit(PlcBitInfo param) {
+        if (plcBitList != null)
+            plcBitList.add(param);
+        else {
+            plcBitList = new ArrayList<PlcBitInfo>();
+            plcBitList.add(param);
+        }
+    }
+
+    /**
+     * 鏍规嵁PLC杩斿洖鐨勬暟鎹� 缁欏弬鏁板疄渚嬭祴鍊�
+     * 
+     * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
+     */
+    public void setPlcBitList(List<Boolean> plcValueArray) {
+        if (plcBitList != null) {
+            for (PlcBitInfo plcbitInfo : plcBitList) {
+                plcbitInfo.setValue(plcValueArray.get(plcbitInfo.getAddressIndex()));
+            }
+        }
+    }
+   
+
+   
+}
\ No newline at end of file
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java b/LoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java
new file mode 100644
index 0000000..b4a2051
--- /dev/null
+++ b/LoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java
@@ -0,0 +1,128 @@
+package com.mes.entity.device;
+public  class PlcParameterInfo {
+      public PlcParameterInfo(String startAddress) {
+        this.startAddress = startAddress;
+      } 
+        private String startAddress;
+        // 鍙傛暟鏍囪瘑
+        private String codeId;
+
+        // 鍙傛暟鍚嶇О
+        private String name;
+
+        // 璇诲彇 鍙傛暟鍊�
+        private String value;
+
+        // // 鍐欏叆 鍙傛暟鍊�
+        // private String writeValue;
+
+        // 鍙傛暟鍗曚綅
+        private String unit;
+
+        // 鍙傛暟鍊艰浆鎹㈢郴鏁�
+        private int ratio;
+
+        // 鍙傛暟鍦板潃
+        private int addressIndex;
+
+        // 鍙傛暟鍦板潃浣嶉暱搴�
+        private int addressLength;
+
+        public String getCodeId() {
+            return this.codeId;
+        }
+
+        public void setCodeId(String codeId) {
+            this.codeId = codeId;
+        }
+
+        public String getName() {
+            return this.name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getValue() {
+            return this.value;
+        }
+
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        // public String getWriteValue() {
+        //     return this.writeValue;
+        // }
+
+        // public void setWriteValue(String writeValue) {
+        //     this.writeValue = writeValue;
+        // }
+
+        public String getUnit() {
+            return this.unit;
+        }
+
+        public void setUnit(String unit) {
+            this.unit = unit;
+        }
+
+        public int getAddressIndex() {
+            return this.addressIndex;
+        }
+
+        public void setAddressIndex(int addressindex) {
+            this.addressIndex = addressindex;
+        }
+
+        public int getAddressLength() {
+            return this.addressLength;
+        }
+
+        public void setAddressLength(int addresslength) {
+            this.addressLength = addresslength;
+        }
+
+        public int getRatio() {
+            return this.ratio;
+        }
+
+        public void setRatio(int ratio) {
+            this.ratio = ratio;
+        }
+       
+
+           /**
+     * 鑾峰彇鍦板潃
+     * 
+     * @param index 绱㈠紩鍦板潃
+     */
+    public String getAddress(int index) {
+        String[] stringdatas = this.startAddress.trim().split("\\.");
+        int addressLength=this.addressLength;
+        if (addressLength < 2 ){
+            return null;
+        }
+
+        if (addressLength == 2 ) {
+            int wordindex = index;
+
+            return stringdatas[0] + "." + wordindex;
+        }
+        if (addressLength == 14 ) {
+            int wordindex = index;
+            //int newIndex = wordindex + 13;
+            return stringdatas[0] + "." + wordindex ;
+        }
+        return null;
+    }
+
+    public int getPlcAddress() {
+
+        return addressIndex;
+    }
+    public String getAddress() {
+       return getAddress(this.addressIndex);
+    }
+}
\ No newline at end of file
diff --git a/LoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java b/LoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java
new file mode 100644
index 0000000..5355db5
--- /dev/null
+++ b/LoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java
@@ -0,0 +1,202 @@
+package com.mes.entity.device;
+
+import java.lang.reflect.Array;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+public class PlcParameterObject {
+
+    // 璇ユā鍧楁暟鎹被鍨嬶紝鏁版嵁璧峰浣嶇疆
+    private String plcAddressBegin;
+    // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
+    private int plcAddressLength;
+    private ArrayList<PlcParameterInfo> plcParameterList;
+
+    /**
+     * @return 鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public String getPlcAddressBegin() {
+        return plcAddressBegin;
+    }
+
+    /**
+     * @param plcAddressBegin 璁剧疆鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public void setPlcAddressBegin(String plcAddressBegin) {
+        this.plcAddressBegin = plcAddressBegin;
+    }
+
+    /**
+     * @return 鏁版嵁鍖� 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public int getPlcAddressLength() {
+        return plcAddressLength;
+    }
+
+    /**
+     * @return 璁剧疆锛氭暟鎹尯 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public void setPlcAddressLength(int plcAddressLength) {
+        this.plcAddressLength = plcAddressLength;
+    }
+
+    /**
+     * @return 鑾峰彇鍙傛暟瀹炰緥闆嗗悎
+     */
+    public ArrayList<PlcParameterInfo> getPlcParameterList() {
+        return plcParameterList;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public PlcParameterInfo getPlcParameter(String codeid) {
+        if (plcParameterList != null) {
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                if (plcParameterInfo.getCodeId().equals(codeid))
+                    return plcParameterInfo;
+            }
+            return null;
+        } else
+            return null;
+    }
+
+
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeids 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public List<String> getPlcParameterValues(List<String> codeids) {
+        List<String> arrayList = new ArrayList<>();
+        if (plcParameterList != null) {
+            Map<String, PlcParameterInfo> resultMap = new LinkedHashMap<>(); // 浣跨敤 LinkedHashMap 淇濈暀鎻掑叆椤哄簭
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                if (codeids.contains(plcParameterInfo.getCodeId())) {
+                    resultMap.put(plcParameterInfo.getCodeId(), plcParameterInfo);
+                }
+            }
+            for (String codeId : codeids) { // 鎸夌収浼犲叆鍙傛暟鐨勯『搴忛亶鍘�
+                PlcParameterInfo plcParameterInfo = resultMap.get(codeId);
+                if (plcParameterInfo != null) {
+                    arrayList.add(plcParameterInfo.getValue());
+                } else {
+                    arrayList.add(null); // 濡傛灉鎵句笉鍒板搴旂殑鍊硷紝娣诲姞 null
+                }
+            }
+        }
+        return arrayList;
+    }
+
+
+    public List<String> getAddressListByCodeId(List<String> codeIdList) {
+        List<String> addressList = new ArrayList<>();
+        for (String codeId : codeIdList) {
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                if (plcParameterInfo.getCodeId().equals(codeId)) {
+                    int index = plcParameterInfo.getAddressIndex();
+                    String address = plcParameterInfo.getAddress(index);
+                    if (address != null) {
+                        addressList.add(address);
+                    }
+                }
+            }
+        }
+        return addressList;
+    }
+
+
+
+
+
+
+    /**
+     * 娣诲姞鍙傛暟瀹炰緥
+     * 
+     * @param param 鍙傛暟瀹炰緥
+     */
+    public void addPlcParameter(PlcParameterInfo param) {
+        if (plcParameterList != null)
+            plcParameterList.add(param);
+        else {
+            plcParameterList = new ArrayList<PlcParameterInfo>();
+            plcParameterList.add(param);
+        }
+    }
+
+    /**
+     * 鏍规嵁PLC杩斿洖鐨勬暟鎹� 缁欏弬鏁板疄渚嬭祴鍊�
+     * 
+     * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
+     */
+    public void setPlcParameterList(byte[] plcValueArray) {
+        if (plcParameterList != null) {
+          
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+               
+                byte[] valueList = new byte[plcParameterInfo.getAddressLength()];
+
+//                System.out.println(plcParameterInfo.getAddressLength());
+
+                for (int i = 0; i < plcParameterInfo.getAddressLength(); i++) {
+                    Array.setByte(valueList, i, plcValueArray[plcParameterInfo.getAddressIndex() + i]);
+
+                }
+                if (plcParameterInfo.getAddressLength()==2) { 
+                      plcParameterInfo.setValue(String.valueOf(byte2short(valueList)));
+                }
+                else if (plcParameterInfo.getAddressLength()==14) {
+                    plcParameterInfo.setValue((byteToHexString(valueList)));
+                }
+
+                else
+                {
+                    String valuestr = new String(valueList);
+                    plcParameterInfo.setValue(valuestr);
+                }
+            }
+        }
+    }
+     /**
+     * short绫诲瀷杞琤yte[]
+     * 
+     * @param s short绫诲瀷鍊�
+     */
+    public static byte[] short2byte(short s){
+        byte[] b = new byte[2]; 
+        for(int i = 0; i < 2; i++){
+            int offset = 16 - (i+1)*8; //鍥犱负byte鍗�4涓瓧鑺傦紝鎵�浠ヨ璁$畻鍋忕Щ閲�
+            b[i] = (byte)((s >> offset)&0xff); //鎶�16浣嶅垎涓�2涓�8浣嶈繘琛屽垎鍒瓨鍌�
+        }
+        return b;
+   }
+     /**
+     * byte[]绫诲瀷杞瑂hort
+     * 
+     * @param b byte[]绫诲瀷鍊�
+     */
+   public static short byte2short(byte[] b){
+       short l = 0;
+       for (int i = 0; i < 2; i++) {
+           l<<=8; //<<=鍜屾垜浠殑 +=鏄竴鏍风殑锛屾剰鎬濆氨鏄� l = l << 8 
+           l |= (b[i] & 0xff); //鍜屼笂闈篃鏄竴鏍风殑  l = l | (b[i]&0xff)
+       }
+       return l;
+   }
+
+    public static String byteToHexString(byte[] bytes) {
+
+        String str = new String(bytes, StandardCharsets.UTF_8);
+        return str;
+    }
+
+
+}
\ No newline at end of file
diff --git a/LoadGlassModule/src/main/java/com/mes/mapper/LoadGlassMapper.java b/LoadGlassModule/src/main/java/com/mes/mapper/LoadGlassMapper.java
index 8db4eff..363b7a2 100644
--- a/LoadGlassModule/src/main/java/com/mes/mapper/LoadGlassMapper.java
+++ b/LoadGlassModule/src/main/java/com/mes/mapper/LoadGlassMapper.java
@@ -1,18 +1,24 @@
 package com.mes.mapper;
-
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.entity.OrderTest;
+import java.util.List;
 import org.apache.ibatis.annotations.*;
-
+import com.mes.entity.UpWorkstation;
 @Mapper
 public interface LoadGlassMapper extends BaseMapper<UpWorkstation> {
     //鏄剧ず鐩墠宸ヤ綅鐜荤拑淇℃伅
     @Select("SELECT * FROM up_workstation")
-    UpWorkstation SelectALL();
+    List<UpWorkstation> selectALL();
     //鍒犻櫎宸ヤ綅鐨勭幓鐠冧俊鎭�
     @Delete("DELETE FROM up_workstation where  workstation_id=#{id}")
-    void DeleteALL(int id );
+    void deleteGlass(int id );
     //澧炲姞涓婄墖淇℃伅
     @Insert ("INSERT INTO up_workstation (pattern_width,pattern_heigth,pattern_thickness)value(#{patternwidth},#{patternheigth},#{patternthickness}where workstation_id=#{workstationid) ")
-    void InsertALL(Double patternwidth,Double patternheigth,Double patternthickness,int workstationid);
+    void insertGlass(Double patternwidth,Double patternheigth,Double patternthickness,int workstationid);
+    //鏄惁鍙戣捣鍚哥墖
+    @Select("SELECT * FROM up_workstation where  workstation_id=#{id}")
+    UpWorkstation selectAdd(int id);
+    //鍒ゆ柇浼樺厛宸ヤ綅鍚哥墖
+    @Select("select b.layout_sequence from up_workstation a left join up_patten_usage b on a.pattern_width=b.width and a.pattern_heigth=b.width and a.pattern_thickness=b.thickness where a.workstation_id=#{id}")
+    int selectPriority(int id);
+    
 }
diff --git a/LoadGlassModule/src/main/java/com/mes/mapper/OrderTestMapper.java b/LoadGlassModule/src/main/java/com/mes/mapper/OrderTestMapper.java
deleted file mode 100644
index d12d4ce..0000000
--- a/LoadGlassModule/src/main/java/com/mes/mapper/OrderTestMapper.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.mes.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.entity.OrderTest;
-import org.apache.ibatis.annotations.*;
-
-@Mapper
-public interface OrderTestMapper extends BaseMapper<OrderTest> {
-
-//    @Select("select * from `order`")
-//    List<Order> findAll();
-//
-//    @Insert("INSERT `order`(order_id)VALUES(#{order_id})")
-//    Integer insert(Order order);
-//
-//    @Delete("delete from `order` where id=#{id}")
-//    Integer deleteById(@Param("id") Integer id);
-//
-//    @Update("update `order` set order_id=#{order_id} where id=#{id}")
-//    Integer update(@Param("id") Integer id,@Param("order_id") String order_id);
-}
diff --git a/LoadGlassModule/src/main/java/com/mes/service/IOrderService.java b/LoadGlassModule/src/main/java/com/mes/service/IOrderService.java
deleted file mode 100644
index 9e44ceb..0000000
--- a/LoadGlassModule/src/main/java/com/mes/service/IOrderService.java
+++ /dev/null
@@ -1,2 +0,0 @@
-package com.mes.service;public interface IOrderService {
-}
diff --git a/LoadGlassModule/src/main/java/com/mes/service/LoadGlassService.java b/LoadGlassModule/src/main/java/com/mes/service/LoadGlassService.java
index c990244..ae21fd0 100644
--- a/LoadGlassModule/src/main/java/com/mes/service/LoadGlassService.java
+++ b/LoadGlassModule/src/main/java/com/mes/service/LoadGlassService.java
@@ -1,40 +1,69 @@
+package com.mes.service;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import com.example.springboot.component.PLCAutoMes;
-import com.example.springboot.component.S7control;
-import com.example.springboot.entity.device.PlcParameterObject;
+import com.mes.entity.device.PLCAutoMes;
+import com.mes.common.PlcTools.S7control;
+import com.mes.entity.device.PlcParameterObject;
 import com.google.common.primitives.Bytes;
 import com.mes.entity.GlassInfo;
 import com.mes.entity.UpWorkstation;
 import com.mes.mapper.LoadGlassMapper;
-import com.mes.mapper.TemperingMapper;
 
 @Service
 public class LoadGlassService {
     @Autowired
     private com.mes.common.PlcTools.S7control s7control;
     private LoadGlassMapper LoadGlassMapper;
+    PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
     //鏄剧ず宸ヤ綅涓婄殑鐜荤拑淇℃伅
-    public GlassInfo selectAll() {
-        GlassInfo glassInfo = LoadGlassMapper.SelectALL();
+    public List<UpWorkstation> selectAll() {
+        List<UpWorkstation> glassInfo= LoadGlassMapper.selectALL();
         return glassInfo;
     }
     //澧炲姞浜哄伐杈撳叆鐨勫伐浣嶇幓鐠冧俊鎭�
-    public void insertGlass(UpWorkstation upwork) {
-        LoadGlassMapper.insertGlass(upwork.Getpatternwidth(),upwork.getPatternheigth(),upwork.getPatternthickness(),1);
+    public void insertGlass(UpWorkstation upwork) { 
+        LoadGlassMapper.insertGlass(upwork.getPatternwidth(),upwork.getPatternheigth(),upwork.getPatternthickness(),upwork.getWorkstationid());
     }  
     //鍒犻櫎浜哄伐鎼蛋鐨勭幓鐠冧俊鎭�
-    public void deleteGlass(String id) {
+    public void deleteGlass(int id) {
         LoadGlassMapper.deleteGlass(id);
     }
     //鍒ゆ柇鏄惁鍙互鍚哥墖杩涜浠诲姟
     public boolean isCanLoadGlass() {
-        boolean result=s7control.WriteWord("100.10", 1);
-        return result;
+        String loadstate=plcmes.getPlcParameter("鍚哥墖淇″彿").getValue();
+        if(loadstate.equals("1")) {
+            return true;
+        }else{
+            return false;
+        }
+        
     }
+    //鍒ゆ柇浼樺厛鍚哥墖浣嶇疆鍚庡彂閫佸嚭鐗囦换鍔�
+    public void selectPriority() {
+        int loadid1=LoadGlassMapper.selectPriority(1);
+        int loadid2=LoadGlassMapper.selectPriority(2);
+        //鍒ゆ柇涓�浜屽彿宸ヤ綅鍝竟鐨勯『搴忔洿鍏�
+        if(loadid1>loadid2) {
+            s7control.WriteWord("DB100.10", (short)2);
+        }else if(loadid1==loadid2){
+            //褰撲袱涓伐浣嶄笂鐨勭幓鐠冩暟鐩稿悓鏃讹紝鍒ゆ柇鍝釜宸ヤ綅涓婄殑鐜荤拑鏁版洿灏�,浼樺厛娓呯┖涓�涓灦瀛�
+            int glassnum1=plcmes.getPlcParameter("鐜荤拑鏁�").getValue();
+            int glassnum2=plcmes.getPlcParameter("鐜荤拑鏁�").getValue();
+            if(glassnum1>glassnum2){
+                s7control.WriteWord("DB100.10", (short)2);
+            }else{
+                s7control.WriteWord("DB100.10", (short)1);
+            }
+        }else{
+            s7control.WriteWord("DB100.10", (short)1);
+        }
+    }
+   
+
+
 
 
 }
diff --git a/LoadGlassModule/src/main/java/com/mes/service/impl/OrderServiceImpl.java b/LoadGlassModule/src/main/java/com/mes/service/impl/OrderServiceImpl.java
deleted file mode 100644
index 5274aa6..0000000
--- a/LoadGlassModule/src/main/java/com/mes/service/impl/OrderServiceImpl.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.mes.service.impl;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.mes.entity.OrderTest;
-import com.mes.mapper.OrderTestMapper;
-import com.mes.service.IOrderService;
-import org.springframework.stereotype.Service;
-
-@Service
-@DS("erp_sd")
-public class OrderServiceImpl extends ServiceImpl<OrderTestMapper, OrderTest> implements IOrderService {
-}
diff --git a/LoadGlassModule/src/main/resources/JsonFile/PlcAlbania.json b/LoadGlassModule/src/main/resources/JsonFile/PlcAlbania.json
new file mode 100644
index 0000000..ab65b19
--- /dev/null
+++ b/LoadGlassModule/src/main/resources/JsonFile/PlcAlbania.json
@@ -0,0 +1,414 @@
+{
+   "plcAddressBegin":"DB14.0",
+   "plcAddressLenght":"208",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "PLCToMES",  
+         "addressIndex":"0",
+         "addressLenght":"2", 
+         "ratio":"1", 
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "IDStatus1",
+          "addressIndex":"2",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"      
+       },
+       {
+          "codeId": "IDStatus2",
+          "addressIndex":"4",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"       
+       },
+       {
+          "codeId": "IDStatus3",
+          "addressIndex":"6",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "IDStatus4",
+          "addressIndex":"8",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "IDStatus5",
+          "addressIndex":"10",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+       ,
+       {
+          "codeId": "IDStatus6",
+          "addressIndex":"12",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "StautsID1",
+          "addressIndex":"14",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+       ,
+       {
+          "codeId": "StautsID2",
+          "addressIndex":"16",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+       ,
+       {
+          "codeId": "StautsID3",
+          "addressIndex":"18",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+       ,
+       {
+          "codeId": "StautsID4",
+          "addressIndex":"20",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+       ,
+       {
+          "codeId": "StautsID5",
+          "addressIndex":"22",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "StautsID6",
+          "addressIndex":"24",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "GaToMES",
+          "addressIndex":"26",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "Height",
+          "addressIndex":"28",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "width",
+          "addressIndex":"30",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "ExportTOMES1",
+          "addressIndex":"32",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+       ,
+       {
+          "codeId": "ExportToMES2",
+          "addressIndex":"34",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       } ,
+       {
+          "codeId": "MESToPLC",
+          "addressIndex":"36",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       } ,
+       {
+          "codeId": "MESID1",
+          "addressIndex":"38",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       } ,
+       {
+          "codeId": "MESID2",
+          "addressIndex":"54",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "MESID3",
+          "addressIndex":"70",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "MESID4",
+          "addressIndex":"86",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "MESID5",
+          "addressIndex":"102",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "MESID6",
+          "addressIndex":"118",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "MESToPLCStart1",
+          "addressIndex":"134",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },{
+         "codeId": "MESToPLCStart2",
+         "addressIndex":"136",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStart3",
+         "addressIndex":"138",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      }
+      ,{
+         "codeId": "MESToPLCStart4",
+         "addressIndex":"140",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      }
+      ,{
+         "codeId": "MESToPLCStart5",
+         "addressIndex":"142",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      }
+      ,{
+         "codeId": "MESToPLCStart6",
+         "addressIndex":"144",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCTarget1",
+         "addressIndex":"146",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCTarget2",
+         "addressIndex":"148",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCTarget3",
+         "addressIndex":"150",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCTarget4",
+         "addressIndex":"152",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCTarget5",
+         "addressIndex":"154",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCTarget6",
+         "addressIndex":"156",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStatus1",
+         "addressIndex":"158",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStatus2",
+         "addressIndex":"160",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStatus3",
+         "addressIndex":"162",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStatus4",
+         "addressIndex":"164",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStatus5",
+         "addressIndex":"166",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStatus6",
+         "addressIndex":"168",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToGaStatus",
+         "addressIndex":"170",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "A01Err",
+         "addressIndex":"172",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "A02Err",
+         "addressIndex":"174",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "B01Err",
+         "addressIndex":"176",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "C01Err",
+         "addressIndex":"178",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "C02Err",
+         "addressIndex":"180",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "ErrSpace1",
+         "addressIndex":"182",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "ErrSpace2",
+         "addressIndex":"184",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "ErrSpace3",
+         "addressIndex":"186",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "B01Position",
+         "addressIndex":"188",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "C01Position",
+         "addressIndex":"190",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "C02Position",
+         "addressIndex":"192",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "DeviceState",
+         "addressIndex":"194",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "AllFVRun",
+         "addressIndex":"196",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "A01State",
+         "addressIndex":"198",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "A02State",
+         "addressIndex":"200",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "B01State",
+         "addressIndex":"202",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "C01State",
+         "addressIndex":"204",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "C02State",
+         "addressIndex":"206",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      }
+   ]
+}
diff --git a/TemperingGlassModule/src/main/JsonFile/PlcAlbania.json b/TemperingGlassModule/src/main/JsonFile/PlcAlbania.json
new file mode 100644
index 0000000..ab65b19
--- /dev/null
+++ b/TemperingGlassModule/src/main/JsonFile/PlcAlbania.json
@@ -0,0 +1,414 @@
+{
+   "plcAddressBegin":"DB14.0",
+   "plcAddressLenght":"208",
+   "dataType":"word",
+   "parameteInfor":[
+      {
+         "codeId": "PLCToMES",  
+         "addressIndex":"0",
+         "addressLenght":"2", 
+         "ratio":"1", 
+         "unit":"m/min"    
+      },
+      {
+          "codeId": "IDStatus1",
+          "addressIndex":"2",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"      
+       },
+       {
+          "codeId": "IDStatus2",
+          "addressIndex":"4",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"m/min"       
+       },
+       {
+          "codeId": "IDStatus3",
+          "addressIndex":"6",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "IDStatus4",
+          "addressIndex":"8",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "IDStatus5",
+          "addressIndex":"10",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+       ,
+       {
+          "codeId": "IDStatus6",
+          "addressIndex":"12",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "StautsID1",
+          "addressIndex":"14",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+       ,
+       {
+          "codeId": "StautsID2",
+          "addressIndex":"16",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+       ,
+       {
+          "codeId": "StautsID3",
+          "addressIndex":"18",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+       ,
+       {
+          "codeId": "StautsID4",
+          "addressIndex":"20",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+       ,
+       {
+          "codeId": "StautsID5",
+          "addressIndex":"22",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "StautsID6",
+          "addressIndex":"24",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "GaToMES",
+          "addressIndex":"26",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "Height",
+          "addressIndex":"28",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "width",
+          "addressIndex":"30",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "ExportTOMES1",
+          "addressIndex":"32",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       }
+       ,
+       {
+          "codeId": "ExportToMES2",
+          "addressIndex":"34",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       } ,
+       {
+          "codeId": "MESToPLC",
+          "addressIndex":"36",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       } ,
+       {
+          "codeId": "MESID1",
+          "addressIndex":"38",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       } ,
+       {
+          "codeId": "MESID2",
+          "addressIndex":"54",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "MESID3",
+          "addressIndex":"70",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "MESID4",
+          "addressIndex":"86",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "MESID5",
+          "addressIndex":"102",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "MESID6",
+          "addressIndex":"118",
+          "addressLenght":"14",
+          "ratio":"1",
+          "unit":"mm/S"
+       },
+       {
+          "codeId": "MESToPLCStart1",
+          "addressIndex":"134",
+          "addressLenght":"2",
+          "ratio":"1",
+          "unit":"mm/S"
+       },{
+         "codeId": "MESToPLCStart2",
+         "addressIndex":"136",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStart3",
+         "addressIndex":"138",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      }
+      ,{
+         "codeId": "MESToPLCStart4",
+         "addressIndex":"140",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      }
+      ,{
+         "codeId": "MESToPLCStart5",
+         "addressIndex":"142",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      }
+      ,{
+         "codeId": "MESToPLCStart6",
+         "addressIndex":"144",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCTarget1",
+         "addressIndex":"146",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCTarget2",
+         "addressIndex":"148",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCTarget3",
+         "addressIndex":"150",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCTarget4",
+         "addressIndex":"152",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCTarget5",
+         "addressIndex":"154",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCTarget6",
+         "addressIndex":"156",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStatus1",
+         "addressIndex":"158",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStatus2",
+         "addressIndex":"160",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStatus3",
+         "addressIndex":"162",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStatus4",
+         "addressIndex":"164",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStatus5",
+         "addressIndex":"166",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToPLCStatus6",
+         "addressIndex":"168",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "MESToGaStatus",
+         "addressIndex":"170",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "A01Err",
+         "addressIndex":"172",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "A02Err",
+         "addressIndex":"174",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "B01Err",
+         "addressIndex":"176",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "C01Err",
+         "addressIndex":"178",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "C02Err",
+         "addressIndex":"180",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "ErrSpace1",
+         "addressIndex":"182",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "ErrSpace2",
+         "addressIndex":"184",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "ErrSpace3",
+         "addressIndex":"186",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "B01Position",
+         "addressIndex":"188",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "C01Position",
+         "addressIndex":"190",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "C02Position",
+         "addressIndex":"192",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "DeviceState",
+         "addressIndex":"194",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "AllFVRun",
+         "addressIndex":"196",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "A01State",
+         "addressIndex":"198",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "A02State",
+         "addressIndex":"200",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "B01State",
+         "addressIndex":"202",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "C01State",
+         "addressIndex":"204",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      },{
+         "codeId": "C02State",
+         "addressIndex":"206",
+         "addressLenght":"2",
+         "ratio":"1",
+         "unit":"mm/S"
+      }
+   ]
+}
diff --git a/TemperingGlassModule/src/main/java/com/mes/MesApplication.java b/TemperingGlassModule/src/main/java/com/mes/MesApplication.java
index 9cc84b5..79565d5 100644
--- a/TemperingGlassModule/src/main/java/com/mes/MesApplication.java
+++ b/TemperingGlassModule/src/main/java/com/mes/MesApplication.java
@@ -1,11 +1,8 @@
 package com.mes;
-
-import com.mes.common.PlcTools.S7object;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
-import org.springframework.transaction.annotation.Transactional;
 
 //springboot 鍚姩鍏ュ彛
 @SpringBootApplication
diff --git a/TemperingGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java b/TemperingGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
index 9cc9e37..8ffee41 100644
--- a/TemperingGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
+++ b/TemperingGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
@@ -1,7 +1,9 @@
 package com.mes.common.PlcTools;
 
-
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
 import java.nio.charset.StandardCharsets;
+import java.sql.Time;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -9,15 +11,37 @@
 import com.github.xingshuangs.iot.protocol.s7.service.MultiAddressWrite;
 import com.github.xingshuangs.iot.protocol.s7.service.S7PLC;
 import com.google.common.primitives.Bytes;
+import org.apache.ibatis.jdbc.Null;
 
 public class S7control {
 
     S7PLC s7PLC; // PLC閫氳绫诲疄渚�
-    
-    public S7control(EPlcType plcType, String ip, int port, int rack, int slot) {
+    private EPlcType plcType = EPlcType.S1500; // 瑗块棬瀛怭LC绫诲瀷
+    private String ip = "192.168.10.1"; // plc ip鍦板潃
+    private int port = 102; // plc 绔彛鍙�
+
+    private static volatile S7control instance = null;
+
+    private S7control() {
         if (s7PLC == null)
             s7PLC = new S7PLC(plcType, ip, port,0,0);
-    } 
+    }
+    public S7control(EPlcType plcType,String ip,int port,int a,int b) {
+        if (s7PLC == null)
+            s7PLC = new S7PLC(plcType, ip, port,a,b);
+    }
+
+    // 鍗曚緥妯″紡 鑾峰彇绫荤殑鍞竴瀹炰緥
+    public static S7control getinstance() {
+        if (instance == null) {
+            synchronized (S7control.class) {
+                if (instance == null)
+                    instance = new S7control();
+            }
+        }
+        return instance;
+    }
+    
     /**
      * 鍏抽棴瑗块棬瀛恠7閫氳杩炴帴
      */
@@ -33,7 +57,7 @@
     public boolean CheckConnected() {
         return s7PLC.checkConnected();
     }
-     
+
     /**
      * 鎸夋寚瀹氱殑鍦板潃 鍐欏叆涓�涓獁ord
      * 
@@ -156,7 +180,7 @@
         }
     }
 
-
+    
 
 
     private int getIndexFromAddress(String address) {
@@ -181,7 +205,6 @@
     public List<Short> ReadWord(String address, int count) {
         if (s7PLC == null)
             return null;
-
         List<String> addresslist = GetAddressList(address, count, 16);
         try {
             return s7PLC.readInt16(addresslist);
@@ -191,7 +214,13 @@
             return null;
         }
     }
-
+    public byte[] Readbyte(String address, int count) {
+        byte[] byt=new byte[count];
+        int wordcount=((count%2==0)?count/2:count+1);
+        List<Short> word=ReadWord(address,wordcount);
+        
+        return byt;
+    }
     /**
      * 鎸夋寚瀹氱殑鍦板潃 璇诲彇byte缁撴灉闆�
      * 
@@ -269,6 +298,41 @@
 }
 
 
+
+
+
+    public List<String> readStringsandword(List<String> addressList) {
+        if (s7PLC == null) {
+            return null;
+        }
+        List<String> result = new ArrayList<>();
+        for (String address : addressList) {
+            try {
+                if (address.contains("-")) {
+                    address = address.substring(0, address.indexOf("-"));
+
+                    byte[] bytes = s7PLC.readByte(address, 14);
+                    if (bytes != null) {
+                        String str = new String(bytes, StandardCharsets.UTF_8);
+                        result.add(str);
+                    }
+
+                } else {
+                    Short value = s7PLC.readInt16(address);
+                    result.add(value.toString());
+
+                }
+            } catch (Exception e) {
+                System.out.println("璇诲彇 " + address + " 澶辫触锛�" + e.getMessage());
+                result.add(null);
+            }
+        }
+
+        return result;
+    }
+
+
+
 //涓嶈繛缁湴鍧�鍐欏叆Word
     public void WriteWord(List<String> address, List<Short> datas) {
         if (s7PLC == null)
@@ -300,7 +364,7 @@
             glassidlist.add(Byte.valueOf(String.valueOf(iditem)));
         }
         byte[] bytes = Bytes.toArray(glassidlist);
-        WriteByte(addr, bytes);
+        S7control.getinstance().WriteByte(addr, bytes);
     }
 
 //璇诲彇涓嶈繛缁瓀ord
@@ -410,4 +474,11 @@
         }
         return addresslist;
     }
+    public void writeString(String addr,String data) {
+        s7PLC.writeString(addr,data);
+    }
+    
+    public String readStrings(String addr) {
+        return s7PLC.readString(addr);
+    }
 }
diff --git a/TemperingGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java b/TemperingGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
index 1e45c2c..703a863 100644
--- a/TemperingGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
+++ b/TemperingGlassModule/src/main/java/com/mes/config/AppRunnerConfig.java
@@ -16,7 +16,7 @@
     public void run(ApplicationArguments args) throws Exception {
         // TODO Auto-generated method stub
         //
-        System.out.println("鍚姩瀹屾垚");
+        System.out.println("鍚姩瀹屾垚Tempering");
  
  
     }
diff --git a/TemperingGlassModule/src/main/java/com/mes/controller/OrderTestController.java b/TemperingGlassModule/src/main/java/com/mes/controller/OrderTestController.java
deleted file mode 100644
index aecbd7f..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/controller/OrderTestController.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.mes.controller;
-
-import com.mes.mapper.OrderTestMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-//@CrossOrigin  //瑙e喅鍗曚釜controller 璺ㄥ煙闂
-@RestController
-@RequestMapping("/order11111111")
-
-public class OrderTestController {
-    @Autowired
-    private OrderTestMapper orderMapper;
-
-//    @GetMapping //鏌ヨorder琛ㄧ粨鏋滈泦
-//    public Result index(){
-//        return Result.seccess(orderMapper.findAll());
-//
-//    }
-//
-//    @PostMapping  //鎻掑叆
-//    public Integer save(@RequestBody Order order) {
-//        return orderMapper.insert(order);
-//    }
-//
-//    @PostMapping("/update")
-//    public Integer updateOrder(@RequestBody Order order) {
-//        return orderMapper.update(order.getId(),order.getOrderid());
-//    }
-//
-//    @DeleteMapping("/{id}") //鍒犻櫎鏁版嵁
-//    public Integer delete(@PathVariable Integer id) {
-//        return orderMapper.deleteById(id);
-//    }
-
-    
-}
diff --git a/TemperingGlassModule/src/main/java/com/mes/controller/TemperingController.java b/TemperingGlassModule/src/main/java/com/mes/controller/TemperingController.java
new file mode 100644
index 0000000..deeca44
--- /dev/null
+++ b/TemperingGlassModule/src/main/java/com/mes/controller/TemperingController.java
@@ -0,0 +1,51 @@
+package com.mes.controller;
+import java.util.List;
+import java.util.Map;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import com.mes.common.Result;
+import com.mes.entity.Tempering;
+import com.mes.service.TemperingOverService;
+import com.mes.service.TemperingService;
+
+
+@RestController
+@RequestMapping("/Tempering")
+
+// TidyUpGlassModule 閽㈠寲妯″潡
+public class TemperingController {
+
+    @Autowired
+    private TemperingService temperingService;
+
+    @Autowired
+    private TemperingOverService temperingOverService;
+
+    @GetMapping("/") // 鏌ヨ閽㈠寲绛夌墖涓殑鐗堝浘淇℃伅,鐘舵�佷负1鐨勪负宸插埌,鐘舵�佷负0鐨勪负绛夊緟涓�
+    @ResponseBody
+    public Result SelectTerritoryInfo(@RequestParam(name = "ProcessId", required = false) String ProcessId) {
+        List<Tempering> glass = temperingService.SelectWaitingGlass();
+        System.out.println(glass);
+        return Result.seccess(glass);
+    }
+
+    @GetMapping("/") // 鏌ヨ杩涚倝涓殑閽㈠寲绛夌墖涓殑鐗堝浘淇℃伅,鐘舵�佸叏涓�1鐨勪负宸插埌銆�
+    @ResponseBody
+    public Result CutTerritory(String ProcessId) {
+        List<Tempering> glass = temperingService.SelectIntoGlass();
+        System.out.println(glass);
+        return Result.seccess(glass);
+    }
+
+    @GetMapping("/") //閽㈠寲鍚庢樉绀哄嚭鐐夌殑鐗堝浘淇℃伅
+    @ResponseBody
+    public Result SelectCutTerritory(String ProcessId) {
+        List<Tempering> glass = temperingOverService.SelectOutGlass();
+        System.out.println(glass);
+        return Result.seccess(glass);
+    }
+
+
+  
+
+}
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/BigStorageCage.java b/TemperingGlassModule/src/main/java/com/mes/entity/BigStorageCage.java
deleted file mode 100644
index d103b46..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/entity/BigStorageCage.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`big_storage_cage`")
-public class BigStorageCage {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//澶х悊鐗囩琛╥d
-    private  Integer device_id;//璁惧id
-    private  Integer slot;//鏍呮牸鍙�
-    private  String enable_state;//鍚敤鐘舵��
-    private  Integer remain_width;//鍓╀綑瀹藉害
-
-}
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/BigStorageCageDetails.java b/TemperingGlassModule/src/main/java/com/mes/entity/BigStorageCageDetails.java
deleted file mode 100644
index 3dd0188..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/entity/BigStorageCageDetails.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`big_storage_cage_details`")
-public class BigStorageCageDetails {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//澶х悊鐗囩璇︽儏琛╥d
-    private  Integer deviceid;//璁惧id
-    private  Integer slot;//鏍呮牸鍙�
-    private  Integer glassid;//鐜荤拑id
-    private  Integer sequence;//灏忕墖鍦ㄦ牸鍐呯殑椤哄簭
-    private  String flowcardid;//娴佺▼鍗″彿
-    private  Integer glasstype;//鐜荤拑绫诲瀷
-    private  Double width;//瀹�
-    private  Double height;//楂�
-    private  Double thickness;//鍘氬害
-    private  Integer temperinglayoutid;//閽㈠寲鐗堝浘id
-    private  Integer temperingfeedsequence;//閽㈠寲鐗堝浘鐗囧簭
-    private  Integer state;//鐘舵��
-    private  Integer gap;//鐜荤拑闂撮殭
-
-}
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java b/TemperingGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java
deleted file mode 100644
index bb1d86e..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/entity/DownGlassInfo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`down_glass_info`")
-public class DownGlassInfo {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//涓嬬墖鐜荤拑淇℃伅琛╥d
-    private  String flowcardid;//娴佺▼鍗″彿
-    private  Integer sequence;//椤哄簭
-    private  Integer width;//瀹�
-    private  Integer height;//楂�
-    private  Integer thickness;//鍘氬害
-
-}
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/DownStorageCage.java b/TemperingGlassModule/src/main/java/com/mes/entity/DownStorageCage.java
deleted file mode 100644
index 1e1ff49..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/entity/DownStorageCage.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`down_storage_cage`")
-public class DownStorageCage {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//涓嬬墖鍓嶇悊鐗囩琛╥d
-    private  Integer deviceid;//璁惧id
-    private  Integer slot;//鏍呮牸鍙�
-    private  String enablestate;//鍚敤鐘舵��
-    private  Integer remainwidth;//鍓╀綑
-
-}
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/DownStorageCagedetails.java b/TemperingGlassModule/src/main/java/com/mes/entity/DownStorageCagedetails.java
deleted file mode 100644
index 9e26f5f..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/entity/DownStorageCagedetails.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`down_storage_cage_details`")
-public class DownStorageCagedetails {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//涓嬬墖鍓嶇悊鐗囩鏄庣粏琛╥d
-    private  Integer deviceid;//璁惧id
-    private  Integer slot;//鏍呮牸鍙�
-    private  Integer glassid;//鐜荤拑id
-    private  Integer sequence;//灏忕墖鍦ㄦ牸鍐呯殑椤哄簭
-    private  String flow_card_id;//娴佺▼鍗″彿
-    private  Integer glass_type;//鐜荤拑绫诲瀷
-    private  Double width;//瀹�
-    private  Double height;//楂�
-    private  Double thickness;//鍘氬害
-    private  Integer temperinglayoutid;//閽㈠寲鐗堝浘id
-    private  Integer tempering_feed_sequence;//閽㈠寲鐗堝浘鐗囧簭
-    private  Integer state;//鐘舵��
-    private  Integer gap;//鐜荤拑闂撮殭
-
-}
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/DownWorkstation.java b/TemperingGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
deleted file mode 100644
index 847d157..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`down_workstation`")
-public class DownWorkstation {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//涓嬬墖宸ヤ綅琛╥d
-    private  Integer flowcard_id;//宸ヤ綅id
-    private  String glass_type;//娴佺▼鍗″彿
-    private  Integer width;//璁惧id
-    private  Integer height;//鍚敤鐘舵��
-    private  Integer thickness;//宸ヤ綔鐘舵��
-
-}
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/EdgStorageCage.java b/TemperingGlassModule/src/main/java/com/mes/entity/EdgStorageCage.java
deleted file mode 100644
index 9dcf7eb..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/entity/EdgStorageCage.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`edg_storage_cage`")
-public class EdgStorageCage {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;//纾ㄨ竟鍓嶇悊鐗囩琛╥d
-    private  Integer flowcard_id;//璁惧id
-    private  Integer glass_type;//鏍呮牸鍙�
-    private  String height;//鍚敤鐘舵��
-    private  Integer thickness;//鍓╀綑
-
-}
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/OrderTest.java b/TemperingGlassModule/src/main/java/com/mes/entity/OrderTest.java
deleted file mode 100644
index e8ea030..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/entity/OrderTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`order`")
-public class OrderTest {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;
-    private  String orderId;
-    private  String recipeNo;
-    private  String largeglassNo;
-    private  String largeglassCompleted;
-    private  String smallglassNo;
-    private  String smallglassCompleted;
-    private  String smallglassProcessing;
-    private  String smallglassWorn;
-    private  String orderStatus;
-    private  String orderMaker;
-    private  String makeTime;
-    private  String updateTime;
-
-}
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/device/InitUtil.java b/TemperingGlassModule/src/main/java/com/mes/entity/device/InitUtil.java
new file mode 100644
index 0000000..6d59bd3
--- /dev/null
+++ b/TemperingGlassModule/src/main/java/com/mes/entity/device/InitUtil.java
@@ -0,0 +1,124 @@
+package com.mes.entity.device;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import com.mes.common.PlcTools.S7control;
+
+public class InitUtil {
+    //鍒濆鍖杦ord
+    public static PlcParameterObject initword(String jsonFilePath) {
+        try {
+            FileReader fileReader = new FileReader(jsonFilePath);
+            BufferedReader bufferedReader = new BufferedReader(fileReader);
+
+            StringBuilder content = new StringBuilder();
+            String line;
+
+            while ((line = bufferedReader.readLine()) != null) {
+                content.append(line);
+            }
+
+            bufferedReader.close();
+            fileReader.close();
+
+            JSONObject jsonfileobj = new JSONObject(content.toString());
+            JSONArray jsonArray = jsonfileobj.getJSONArray("parameteInfor");
+            PlcParameterObject plcParameterObject = new PlcParameterObject();
+            plcParameterObject.setPlcAddressBegin(jsonfileobj.getStr("plcAddressBegin"));//璁剧疆璧峰浣嶅湴鍧�
+            plcParameterObject.setPlcAddressLength(Integer.valueOf(jsonfileobj.getStr("plcAddressLenght")));//璁剧疆鍦板潃闀垮害
+
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject parameterObj = jsonArray.getJSONObject(i);
+                PlcParameterInfo plcParameterInfo = new PlcParameterInfo(jsonfileobj.getStr("plcAddressBegin")); //鍙傛暟瀹炰緥
+                String codeid = parameterObj.getStr("codeId");
+                plcParameterInfo.setCodeId(codeid);
+                plcParameterInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex")));
+                //plcParameterInfo.setRatio(Integer.valueOf(parameterObj.getStr("ratio")));
+                plcParameterInfo.setAddressLength(Integer.valueOf(parameterObj.getStr("addressLenght")));
+                plcParameterInfo.setUnit(parameterObj.getStr("unit"));
+                plcParameterObject.addPlcParameter(plcParameterInfo);
+            }
+           // byte[] getplcvlues = {0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02};
+           // byte[] getplcvlues = S7control.getinstance().ReadByte(plcParameterObject.getPlcAddressBegin(), plcParameterObject.getPlcAddressLength());
+           // plcParameterObject.setPlcParameterList(getplcvlues);
+
+            return plcParameterObject;
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    //鍒濆鍖朾it
+    public static PlcBitObject initbit(String jsonFilePath) {
+        PlcBitObject plcBitObject = new PlcBitObject();
+
+        try {
+            FileReader fileReader = new FileReader(jsonFilePath);
+            BufferedReader bufferedReader = new BufferedReader(fileReader);
+
+            StringBuilder content = new StringBuilder();
+            String line;
+
+            while ((line = bufferedReader.readLine()) != null) {
+                content.append(line);
+            }
+
+            bufferedReader.close();
+            fileReader.close();
+
+            JSONObject jsonfileobj = new JSONObject(content.toString());
+            JSONArray jsonArray = jsonfileobj.getJSONArray("parameteInfor");
+            plcBitObject.setPlcAddressBegin(jsonfileobj.getStr("plcAddressBegin"));//璁剧疆璧峰浣嶅湴鍧�
+            plcBitObject.setPlcAddressLength(Integer.valueOf(jsonfileobj.getStr("plcAddressLenght")));//璁剧疆鍦板潃闀垮害
+
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject parameterObj = jsonArray.getJSONObject(i);
+
+                PlcBitInfo plcBitInfo = new PlcBitInfo(jsonfileobj.getStr("plcAddressBegin")); //鍙傛暟瀹炰緥
+                String codeid = parameterObj.getStr("codeId");
+                plcBitInfo.setCodeId(codeid);
+                plcBitInfo.setAddressIndex(Integer.valueOf(parameterObj.getStr("addressIndex")));
+
+                plcBitObject.addPlcBit(plcBitInfo);
+            }
+            System.out.println("");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+           //Boolean[] values1 = { false, true, true, true, false, false, true, false,
+          //  false, true ,true };
+   // List<Boolean> getplcvlues = new ArrayList<>(Arrays.asList(values1));
+
+//        List<Boolean> getplcvlues = S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(), plcBitObject.getPlcAddressLength());
+//        plcBitObject.setPlcBitList(getplcvlues);
+        return plcBitObject;
+    }
+
+//
+    public static void readAndUpdateBitValues(PlcBitObject plcBitObject) {
+
+//        Boolean[] values1 = { false, true, true, true, false, false, true, false,
+//          false, true ,true };
+//         List<Boolean> getplcvlues = new ArrayList<>(Arrays.asList(values1));
+        List<Boolean> getplcvlues = S7control.getinstance().ReadBits(plcBitObject.getPlcAddressBegin(), plcBitObject.getPlcAddressLength());
+        plcBitObject.setPlcBitList(getplcvlues);
+    }
+
+
+    public static void readAndUpdateWordValues(PlcParameterObject plcParameterObject) {
+
+        // byte[] getplcvlues = {0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02, 0x03, 0x04,0x01, 0x02};
+        byte[] getplcvlues = S7control.getinstance().ReadByte(plcParameterObject.getPlcAddressBegin(), plcParameterObject.getPlcAddressLength());
+        plcParameterObject.setPlcParameterList(getplcvlues);
+    }
+
+
+
+}
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/device/PLCAutoMes.java b/TemperingGlassModule/src/main/java/com/mes/entity/device/PLCAutoMes.java
new file mode 100644
index 0000000..dcb707e
--- /dev/null
+++ b/TemperingGlassModule/src/main/java/com/mes/entity/device/PLCAutoMes.java
@@ -0,0 +1,95 @@
+package com.mes.entity.device;
+
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import static com.mes.entity.device.InitUtil.readAndUpdateWordValues;
+public class PLCAutoMes extends Thread {
+
+    // // 鐢ㄤ簬瀛樺偍搴旂敤绋嬪簭鐨勯厤缃俊鎭�
+    // private Configuration config;
+    private static InitUtil initUtil;
+    // public static PlcParameterObject PlcMesObject;
+    // public static PlcParameterObject PlcReadObject;
+    // public static PlcParameterObject PlcframeObject;
+
+    // // 鍒涘缓涓�涓嚜瀹氫箟鐨� S7 鎺у埗鍣ㄦ秷鎭鐞嗗櫒瀵硅薄
+    // MessageHandler customS7Control = new MessageHandler();
+
+    // 鍗曚緥瀹炰緥
+    private static PLCAutoMes instance;
+    // private static String PlcMes = PLCAutoMes.class.getResource("/JsonFile/PlcMes.json").getPath();
+    private static String PlcAlbania = PLCAutoMes.class.getResource("/JsonFile/PlcAlbania.json").getPath();
+    // private static String PlcRead = PLCAutoMes.class.getResource("/JsonFile/PlcRead.json").getPath();
+    // private static String Plcframe = PLCAutoMes.class.getResource("/JsonFile/Plcframe.json").getPath();
+    // private static String PlcParameter = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcParameter.json").getPath();
+            
+    // private static String PlcSign = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcSign.json").getPath();
+            
+    // private static String PlcState = PLCAutomaticParameterSettingReview2.class.getResource("/JsonFile/PlcState.json").getPath();
+            
+    // private static String PlcAlarm = PLCAutoMes.class.getResource("/JsonFile/PlcAlarm.json").getPath();
+    // private static String PlcTest = PLCAutoMes.class.getResource("/JsonFile/PlcTest.json").getPath();
+
+    // 璋冪敤initword鏂规硶
+
+    // public static PlcParameterObject plcParameterObject = initUtil.initword(PlcParameter);
+    // public static PlcBitObject plcPlcTest = initUtil.initbit(PlcTest);
+    // public static PlcBitObject  plcBitObject = initUtil.initbit(PlcSign);
+    // public static PlcParameterObject  plcStateObject= initUtil.initword(PlcState);
+    // public static PlcBitObject plcPlcAlarm = initUtil.initbit(PlcAlarm);
+    public static PlcParameterObject PlcMesObject = InitUtil.initword(PlcAlbania);
+    // public static PlcParameterObject PlcReadObject = initUtil.initword(PlcRead);
+    // public static PlcParameterObject PlcframeObject = initUtil.initword(Plcframe);
+  
+    // 绉佹湁鏋勯�犲嚱鏁�
+    public PLCAutoMes() throws IOException {
+        //config = new Configuration("config.properties");
+        initUtil = new InitUtil();
+    }
+
+    // 鑾峰彇鍗曚緥瀹炰緥
+    public static synchronized PLCAutoMes getInstance() throws IOException {
+        if (instance == null) {
+            instance = new PLCAutoMes();
+        }
+        return instance;
+    }
+
+    @Override
+    public void run() {
+        while (this != null) {
+            try {
+                Thread.sleep(100);
+
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            // System.out.println(jsonFilePath);
+
+            //readAndUpdateWordValues(PlcReadObject);
+            readAndUpdateWordValues(PlcMesObject);
+            //readAndUpdateWordValues(PlcframeObject);
+            // readAndUpdateWordValues(PlcframeObject);
+
+            // readAndUpdateWordValues(plcStateObject);
+            // int index = PlcMesObject.getPlcParameter("AddStart").getAddressIndex();
+            // // System.out.println(index);
+            // PlcMesObject.getPlcParameter("AddStart").getAddress(index);
+            // // System.out.println(PlcMesObject.getPlcParameter("AddStart").getAddress(index));
+            // List<String> addresses = new ArrayList<>();
+            // addresses.add("FeedID");
+            // addresses.add("AddStart");
+            // // System.out.println(addresses);
+            // // System.out.println(PlcMesObject.getPlcParameterValues(addresses));
+            // List<String> addresses2 = new ArrayList<>();
+            // addresses2.add("FeedID");
+            // addresses2.add("FeedCarStatus");
+
+            //System.out.println(PlcReadObject.getPlcParameterValues(addresses2));
+
+        }
+    }
+}
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java b/TemperingGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java
new file mode 100644
index 0000000..78846f9
--- /dev/null
+++ b/TemperingGlassModule/src/main/java/com/mes/entity/device/PlcBitInfo.java
@@ -0,0 +1,77 @@
+package com.mes.entity.device;
+
+
+
+public  class PlcBitInfo {
+
+        public PlcBitInfo(String startAddress) {
+            this.startAddress = startAddress;
+        }
+        private String startAddress;
+        // 鍙傛暟鏍囪瘑
+        private String codeId;
+
+        // 鍙傛暟鍚嶇О
+        private String name;
+
+        // 璇诲彇 鍙傛暟鍊�
+        private Boolean value;
+        // 鍙傛暟鍦板潃
+        private int addressIndex;
+
+        public String getCodeId() {
+            return this.codeId;
+        }
+
+        public void setCodeId(String codeId) {
+            this.codeId = codeId;
+        }
+
+        public String getName() {
+            return this.name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public Boolean getValue() {
+            return this.value;
+        }
+
+        public void setValue(Boolean value) {
+            this.value = value;
+        } 
+         
+
+        public int getAddressIndex() {
+            return this.addressIndex;
+        } 
+         /**
+     * 鑾峰彇鍦板潃
+     * 
+     * @param index 绱㈠紩鍦板潃
+     */
+        public String getAddress(int index) {
+            String[] stringdatas = this.startAddress.trim().split("\\.");
+            if (stringdatas.length < 2 )
+                return null;
+            int dbwindex = 0;
+            int bitindex = 0;
+             if (stringdatas.length == 3) {
+                dbwindex = Integer.parseInt(stringdatas[1]);
+                bitindex = Integer.parseInt(stringdatas[2]);
+            } else
+                return null; 
+              dbwindex+=index/8;
+              bitindex+=index%8;
+            return stringdatas[0]+"."+dbwindex+"."+bitindex;
+        }
+
+
+
+
+    public void setAddressIndex(int addressindex) {
+            this.addressIndex = addressindex;
+        } 
+    }
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java b/TemperingGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java
new file mode 100644
index 0000000..977a13c
--- /dev/null
+++ b/TemperingGlassModule/src/main/java/com/mes/entity/device/PlcBitObject.java
@@ -0,0 +1,142 @@
+package com.mes.entity.device;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+public class PlcBitObject {
+
+    // 璇ユā鍧楁暟鎹被鍨嬶紝鏁版嵁璧峰浣嶇疆
+    private String plcAddressBegin;
+    // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
+    private int plcAddressLength;
+    private ArrayList<PlcBitInfo> plcBitList;
+
+    /**
+     * @return 鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public String getPlcAddressBegin() {
+        return plcAddressBegin;
+    }
+
+    /**
+     * @param plcAddressBegin 璁剧疆鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public void setPlcAddressBegin(String plcAddressBegin) {
+        this.plcAddressBegin = plcAddressBegin;
+    }
+
+    /**
+     * @return 鏁版嵁鍖� 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public int getPlcAddressLength() {
+        return plcAddressLength;
+    }
+
+    /**
+     * @return 璁剧疆锛氭暟鎹尯 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public void setPlcAddressLength(int plcAddressLength) {
+        this.plcAddressLength = plcAddressLength;
+    }
+
+    /**
+     * @return 鑾峰彇鍙傛暟瀹炰緥闆嗗悎
+     */
+    public ArrayList<PlcBitInfo> getBitList() {
+        return plcBitList;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public PlcBitInfo getPlcBit(String codeid) {
+        if (plcBitList != null) {
+            for (PlcBitInfo plcbitInfo : plcBitList) {
+                if (plcbitInfo.getCodeId().equals(codeid))
+                    return plcbitInfo;
+            }
+            return null;
+        } else
+            return null;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public List<Boolean> getPlcBitValues(List<String> codeids) {
+        List<Boolean> arrayList = new ArrayList<>();
+        if (plcBitList != null) {
+            Map<String, Boolean> resultMap = new LinkedHashMap<>(); // 浣跨敤 LinkedHashMap 淇濈暀鎻掑叆椤哄簭
+            for (PlcBitInfo plcBitInfo : plcBitList) {
+                if (codeids.contains(plcBitInfo.getCodeId().toString())) {
+                    resultMap.put(plcBitInfo.getCodeId().toString(), plcBitInfo.getValue());
+                }
+            }
+            for (String codeId : codeids) { // 鎸夌収浼犲叆鍙傛暟鐨勯『搴忛亶鍘�
+                Boolean value = resultMap.get(codeId);
+                if (value != null) {
+                    arrayList.add(value);
+                } else {
+                    arrayList.add(null); // 濡傛灉鎵句笉鍒板搴旂殑鍊硷紝娣诲姞 null
+                }
+            }
+        }
+        return arrayList;
+    }
+
+
+    public List<String> getAddressListByCodeId(List<String> codeIdList) {
+        List<String> addressList = new ArrayList<>();
+        for (String codeId : codeIdList) {
+            for (PlcBitInfo plcBitInfo : plcBitList) {
+                if (plcBitInfo.getCodeId().equals(codeId)) {
+                    int index = plcBitInfo.getAddressIndex();
+                    String address = plcBitInfo.getAddress(index);
+                    if (address != null) {
+                        addressList.add(address);
+                    }
+                }
+            }
+        }
+        return addressList;
+    }
+
+
+    /**
+     * 娣诲姞鍙傛暟瀹炰緥
+     * 
+     * @param param 鍙傛暟瀹炰緥
+     */
+    public void addPlcBit(PlcBitInfo param) {
+        if (plcBitList != null)
+            plcBitList.add(param);
+        else {
+            plcBitList = new ArrayList<PlcBitInfo>();
+            plcBitList.add(param);
+        }
+    }
+
+    /**
+     * 鏍规嵁PLC杩斿洖鐨勬暟鎹� 缁欏弬鏁板疄渚嬭祴鍊�
+     * 
+     * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
+     */
+    public void setPlcBitList(List<Boolean> plcValueArray) {
+        if (plcBitList != null) {
+            for (PlcBitInfo plcbitInfo : plcBitList) {
+                plcbitInfo.setValue(plcValueArray.get(plcbitInfo.getAddressIndex()));
+            }
+        }
+    }
+   
+
+   
+}
\ No newline at end of file
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java b/TemperingGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java
new file mode 100644
index 0000000..b4a2051
--- /dev/null
+++ b/TemperingGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java
@@ -0,0 +1,128 @@
+package com.mes.entity.device;
+public  class PlcParameterInfo {
+      public PlcParameterInfo(String startAddress) {
+        this.startAddress = startAddress;
+      } 
+        private String startAddress;
+        // 鍙傛暟鏍囪瘑
+        private String codeId;
+
+        // 鍙傛暟鍚嶇О
+        private String name;
+
+        // 璇诲彇 鍙傛暟鍊�
+        private String value;
+
+        // // 鍐欏叆 鍙傛暟鍊�
+        // private String writeValue;
+
+        // 鍙傛暟鍗曚綅
+        private String unit;
+
+        // 鍙傛暟鍊艰浆鎹㈢郴鏁�
+        private int ratio;
+
+        // 鍙傛暟鍦板潃
+        private int addressIndex;
+
+        // 鍙傛暟鍦板潃浣嶉暱搴�
+        private int addressLength;
+
+        public String getCodeId() {
+            return this.codeId;
+        }
+
+        public void setCodeId(String codeId) {
+            this.codeId = codeId;
+        }
+
+        public String getName() {
+            return this.name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public String getValue() {
+            return this.value;
+        }
+
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        // public String getWriteValue() {
+        //     return this.writeValue;
+        // }
+
+        // public void setWriteValue(String writeValue) {
+        //     this.writeValue = writeValue;
+        // }
+
+        public String getUnit() {
+            return this.unit;
+        }
+
+        public void setUnit(String unit) {
+            this.unit = unit;
+        }
+
+        public int getAddressIndex() {
+            return this.addressIndex;
+        }
+
+        public void setAddressIndex(int addressindex) {
+            this.addressIndex = addressindex;
+        }
+
+        public int getAddressLength() {
+            return this.addressLength;
+        }
+
+        public void setAddressLength(int addresslength) {
+            this.addressLength = addresslength;
+        }
+
+        public int getRatio() {
+            return this.ratio;
+        }
+
+        public void setRatio(int ratio) {
+            this.ratio = ratio;
+        }
+       
+
+           /**
+     * 鑾峰彇鍦板潃
+     * 
+     * @param index 绱㈠紩鍦板潃
+     */
+    public String getAddress(int index) {
+        String[] stringdatas = this.startAddress.trim().split("\\.");
+        int addressLength=this.addressLength;
+        if (addressLength < 2 ){
+            return null;
+        }
+
+        if (addressLength == 2 ) {
+            int wordindex = index;
+
+            return stringdatas[0] + "." + wordindex;
+        }
+        if (addressLength == 14 ) {
+            int wordindex = index;
+            //int newIndex = wordindex + 13;
+            return stringdatas[0] + "." + wordindex ;
+        }
+        return null;
+    }
+
+    public int getPlcAddress() {
+
+        return addressIndex;
+    }
+    public String getAddress() {
+       return getAddress(this.addressIndex);
+    }
+}
\ No newline at end of file
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java b/TemperingGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java
new file mode 100644
index 0000000..5355db5
--- /dev/null
+++ b/TemperingGlassModule/src/main/java/com/mes/entity/device/PlcParameterObject.java
@@ -0,0 +1,202 @@
+package com.mes.entity.device;
+
+import java.lang.reflect.Array;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+public class PlcParameterObject {
+
+    // 璇ユā鍧楁暟鎹被鍨嬶紝鏁版嵁璧峰浣嶇疆
+    private String plcAddressBegin;
+    // 鏁版嵁鍦板潃闀垮害锛氱涓�鍙傛暟鍒版渶鍚庝竴涓弬鏁扮殑闀垮害
+    private int plcAddressLength;
+    private ArrayList<PlcParameterInfo> plcParameterList;
+
+    /**
+     * @return 鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public String getPlcAddressBegin() {
+        return plcAddressBegin;
+    }
+
+    /**
+     * @param plcAddressBegin 璁剧疆鏁版嵁鍖哄紑濮嬪湴鍧�
+     */
+    public void setPlcAddressBegin(String plcAddressBegin) {
+        this.plcAddressBegin = plcAddressBegin;
+    }
+
+    /**
+     * @return 鏁版嵁鍖� 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public int getPlcAddressLength() {
+        return plcAddressLength;
+    }
+
+    /**
+     * @return 璁剧疆锛氭暟鎹尯 璇诲彇鎵�鏈夋暟鎹墍闇�鐨勯暱搴︼紙浠yte绫诲瀷涓哄熀鍑嗭級
+     */
+    public void setPlcAddressLength(int plcAddressLength) {
+        this.plcAddressLength = plcAddressLength;
+    }
+
+    /**
+     * @return 鑾峰彇鍙傛暟瀹炰緥闆嗗悎
+     */
+    public ArrayList<PlcParameterInfo> getPlcParameterList() {
+        return plcParameterList;
+    }
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeid 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public PlcParameterInfo getPlcParameter(String codeid) {
+        if (plcParameterList != null) {
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                if (plcParameterInfo.getCodeId().equals(codeid))
+                    return plcParameterInfo;
+            }
+            return null;
+        } else
+            return null;
+    }
+
+
+
+    /**
+     * 鏍规嵁鍙傛暟鏍囪瘑 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     * 
+     * @param codeids 鍙傛暟鏍囪瘑
+     * @return 鑾峰彇鏌愪釜鍙傛暟瀹炰緥
+     */
+    public List<String> getPlcParameterValues(List<String> codeids) {
+        List<String> arrayList = new ArrayList<>();
+        if (plcParameterList != null) {
+            Map<String, PlcParameterInfo> resultMap = new LinkedHashMap<>(); // 浣跨敤 LinkedHashMap 淇濈暀鎻掑叆椤哄簭
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                if (codeids.contains(plcParameterInfo.getCodeId())) {
+                    resultMap.put(plcParameterInfo.getCodeId(), plcParameterInfo);
+                }
+            }
+            for (String codeId : codeids) { // 鎸夌収浼犲叆鍙傛暟鐨勯『搴忛亶鍘�
+                PlcParameterInfo plcParameterInfo = resultMap.get(codeId);
+                if (plcParameterInfo != null) {
+                    arrayList.add(plcParameterInfo.getValue());
+                } else {
+                    arrayList.add(null); // 濡傛灉鎵句笉鍒板搴旂殑鍊硷紝娣诲姞 null
+                }
+            }
+        }
+        return arrayList;
+    }
+
+
+    public List<String> getAddressListByCodeId(List<String> codeIdList) {
+        List<String> addressList = new ArrayList<>();
+        for (String codeId : codeIdList) {
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+                if (plcParameterInfo.getCodeId().equals(codeId)) {
+                    int index = plcParameterInfo.getAddressIndex();
+                    String address = plcParameterInfo.getAddress(index);
+                    if (address != null) {
+                        addressList.add(address);
+                    }
+                }
+            }
+        }
+        return addressList;
+    }
+
+
+
+
+
+
+    /**
+     * 娣诲姞鍙傛暟瀹炰緥
+     * 
+     * @param param 鍙傛暟瀹炰緥
+     */
+    public void addPlcParameter(PlcParameterInfo param) {
+        if (plcParameterList != null)
+            plcParameterList.add(param);
+        else {
+            plcParameterList = new ArrayList<PlcParameterInfo>();
+            plcParameterList.add(param);
+        }
+    }
+
+    /**
+     * 鏍规嵁PLC杩斿洖鐨勬暟鎹� 缁欏弬鏁板疄渚嬭祴鍊�
+     * 
+     * @param plcValueArray PLC璇诲彇鍥炴潵鐨刡yte绫诲瀷鏁版嵁闆嗗悎
+     */
+    public void setPlcParameterList(byte[] plcValueArray) {
+        if (plcParameterList != null) {
+          
+            for (PlcParameterInfo plcParameterInfo : plcParameterList) {
+               
+                byte[] valueList = new byte[plcParameterInfo.getAddressLength()];
+
+//                System.out.println(plcParameterInfo.getAddressLength());
+
+                for (int i = 0; i < plcParameterInfo.getAddressLength(); i++) {
+                    Array.setByte(valueList, i, plcValueArray[plcParameterInfo.getAddressIndex() + i]);
+
+                }
+                if (plcParameterInfo.getAddressLength()==2) { 
+                      plcParameterInfo.setValue(String.valueOf(byte2short(valueList)));
+                }
+                else if (plcParameterInfo.getAddressLength()==14) {
+                    plcParameterInfo.setValue((byteToHexString(valueList)));
+                }
+
+                else
+                {
+                    String valuestr = new String(valueList);
+                    plcParameterInfo.setValue(valuestr);
+                }
+            }
+        }
+    }
+     /**
+     * short绫诲瀷杞琤yte[]
+     * 
+     * @param s short绫诲瀷鍊�
+     */
+    public static byte[] short2byte(short s){
+        byte[] b = new byte[2]; 
+        for(int i = 0; i < 2; i++){
+            int offset = 16 - (i+1)*8; //鍥犱负byte鍗�4涓瓧鑺傦紝鎵�浠ヨ璁$畻鍋忕Щ閲�
+            b[i] = (byte)((s >> offset)&0xff); //鎶�16浣嶅垎涓�2涓�8浣嶈繘琛屽垎鍒瓨鍌�
+        }
+        return b;
+   }
+     /**
+     * byte[]绫诲瀷杞瑂hort
+     * 
+     * @param b byte[]绫诲瀷鍊�
+     */
+   public static short byte2short(byte[] b){
+       short l = 0;
+       for (int i = 0; i < 2; i++) {
+           l<<=8; //<<=鍜屾垜浠殑 +=鏄竴鏍风殑锛屾剰鎬濆氨鏄� l = l << 8 
+           l |= (b[i] & 0xff); //鍜屼笂闈篃鏄竴鏍风殑  l = l | (b[i]&0xff)
+       }
+       return l;
+   }
+
+    public static String byteToHexString(byte[] bytes) {
+
+        String str = new String(bytes, StandardCharsets.UTF_8);
+        return str;
+    }
+
+
+}
\ No newline at end of file
diff --git a/TemperingGlassModule/src/main/java/com/mes/mapper/OrderTestMapper.java b/TemperingGlassModule/src/main/java/com/mes/mapper/OrderTestMapper.java
deleted file mode 100644
index d12d4ce..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/mapper/OrderTestMapper.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.mes.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.entity.OrderTest;
-import org.apache.ibatis.annotations.*;
-
-@Mapper
-public interface OrderTestMapper extends BaseMapper<OrderTest> {
-
-//    @Select("select * from `order`")
-//    List<Order> findAll();
-//
-//    @Insert("INSERT `order`(order_id)VALUES(#{order_id})")
-//    Integer insert(Order order);
-//
-//    @Delete("delete from `order` where id=#{id}")
-//    Integer deleteById(@Param("id") Integer id);
-//
-//    @Update("update `order` set order_id=#{order_id} where id=#{id}")
-//    Integer update(@Param("id") Integer id,@Param("order_id") String order_id);
-}
diff --git a/TemperingGlassModule/src/main/java/com/mes/mapper/TemperingMapper.java b/TemperingGlassModule/src/main/java/com/mes/mapper/TemperingMapper.java
index 54e486f..5ec7ed8 100644
--- a/TemperingGlassModule/src/main/java/com/mes/mapper/TemperingMapper.java
+++ b/TemperingGlassModule/src/main/java/com/mes/mapper/TemperingMapper.java
@@ -4,6 +4,8 @@
 import com.mes.entity.GlassInfo;
 import com.mes.entity.Tempering;
 
+import java.util.List;
+
 import org.apache.ibatis.annotations.*;
 
 @Mapper
@@ -12,9 +14,20 @@
 
 //鏌ヨ璇ョ幓鐠冪殑灏哄鍜屽潗鏍�
 @Select("select *from glass_info where id=#{glassid};")
-GlassInfo SelectOutGlass(String glassid);
-
-@Select("select *from glass_info where id=#{glassid};")
+GlassInfo SelectGlass(String glassid);
+//鏄惁鍙互鍙戦�佽繘鐐変俊鍙�
+@Select("select count(*) from glass_info where id=#{glassid};")
 int SelectTempering(String glassid);
+//鏌ヨ绛夊緟涓殑閽㈠寲鐗堝浘鐜荤拑淇℃伅
+@Select("select*from tempering_glass_info a left join (select flowcard_id,count(state)state from tempering_glass_info GROUP BY flowcard_id,state)b on a.flowcard_id=b.flowcard_id where b.state=2")
+List<Tempering> SelectWaitingGlass();
+//鏌ヨ杩涚倝涓殑閽㈠寲鐗堝浘鐜荤拑淇℃伅
+@Select("select*from tempering_glass_info a left join (select flowcard_id,min(state)state1 from tempering_glass_info GROUP BY flowcard_id having state1=1)b on a.flowcard_id=b.flowcard_id where b.state1=1")
+List<Tempering> SelectInGlass();
+//鏌ヨ閽㈠寲鍚庣殑閽㈠寲鐗堝浘淇℃伅
+@Select("select*from tempering_glass_info a left join (select flowcard_id,min(state)state1 from tempering_glass_info GROUP BY flowcard_id having state1=2)b on a.flowcard_id=b.flowcard_id where b.state1=2")
+List <Tempering> SelectOutGlass();
+
+
 
 }
diff --git a/TemperingGlassModule/src/main/java/com/mes/service/IOrderService.java b/TemperingGlassModule/src/main/java/com/mes/service/IOrderService.java
deleted file mode 100644
index 9e44ceb..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/service/IOrderService.java
+++ /dev/null
@@ -1,2 +0,0 @@
-package com.mes.service;public interface IOrderService {
-}
diff --git a/TemperingGlassModule/src/main/java/com/mes/service/ModuleA.java b/TemperingGlassModule/src/main/java/com/mes/service/ModuleA.java
deleted file mode 100644
index 3adf2ef..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/service/ModuleA.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.mes.service;
-
-import com.rabbitmq.client.Channel;
-import com.rabbitmq.client.Connection;
-import com.rabbitmq.client.ConnectionFactory;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class ModuleA {
-    private static String QUEUE_NAME = "hangzhou2";
-
-    public ModuleA(String QUEUENAME){
-        QUEUE_NAME=QUEUENAME;
-    }
-
-
-   public static void main(String[] argv) throws Exception {
-        // 鍒涘缓杩炴帴宸ュ巶
-        ConnectionFactory factory = new ConnectionFactory();
-      factory.setHost("10.153.19.150");
-    //factory.setHost("localhost");
-
-        try (Connection connection = factory.newConnection();
-             //channel 鏄�氳繃 connection 鍒涘缓鐨勪竴涓� AMQP 淇¢亾瀵硅薄
-             Channel channel = connection.createChannel()) {
-            // `channel.queueDeclare(QUEUE_NAME, false, false, false, null);` 鏄敤鏉ュ0鏄庝竴涓槦鍒楃殑鏂规硶
-            //璇ユ柟娉曟湁浜斾釜鍙傛暟锛�
-            //1. `QUEUE_NAME`锛氭寚瀹氶槦鍒楃殑鍚嶇О锛岃繖閲屼娇鐢ㄤ簡涔嬪墠澹版槑鐨勫父閲廯"module_queue"`浣滀负闃熷垪鍚嶇О銆�
-            //2. `false`锛氭寚瀹氶槦鍒楁槸鍚︿负鎸佷箙鍖栫殑銆傚湪杩欓噷璁剧疆涓篳false`锛岃〃绀轰笉灏嗛槦鍒楁寔涔呭寲鍒扮鐩橈紝涓�鏃abbitMQ鏈嶅姟鍋滄鎴栧穿婧冿紝闃熷垪灏嗕細涓㈠け銆�
-            //3. `false`锛氭寚瀹氭槸鍚﹀彧鍏佽褰撳墠杩炴帴澹版槑姝ら槦鍒椼�傚湪杩欓噷璁剧疆涓篳false`锛岃〃绀哄彲鍏佽鍏朵粬杩炴帴涔熷0鏄庡悓鍚嶇殑闃熷垪銆�
-            //4. `false`锛氭寚瀹氭槸鍚﹀湪涓嶅啀浣跨敤鏃惰嚜鍔ㄥ垹闄ら槦鍒椼�傚湪杩欓噷璁剧疆涓篳false`锛岃〃绀哄綋娌℃湁娑堣垂鑰呮垨鑰呮墍鏈夋秷璐硅�呮柇寮�杩炴帴鍚庯紝闃熷垪涓嶄細鑷姩鍒犻櫎銆�
-            //5. `null`锛氭寚瀹氬叾浠栭槦鍒楀睘鎬х殑鍙傛暟銆傚湪杩欓噷璁剧疆涓篳null`锛岃〃绀烘病鏈夊叾浠栧睘鎬ч渶瑕佽缃��
-            //鎵ц`channel.queueDeclare()`鏂规硶鍚庯紝濡傛灉闃熷垪涓嶅瓨鍦紝灏嗕細鍒涘缓涓�涓柊鐨勯槦鍒楋紝濡傛灉闃熷垪宸茬粡瀛樺湪锛屽垯涓嶅仛浠讳綍鎿嶄綔銆�
-            Map<String, Object> args = new HashMap<>();
-            args.put("x-max-length-bytes",20000);
-//            args.put("x-max-length",5000);
-            channel.queueDeclare(QUEUE_NAME, false, false, false, args);
-
-            String message = "浣�";
-
-            for ( int i=1;i< 5000;i++)
-            {
-                message+="浣�";
-
-            }
-
-            message+="b";
-
-
-
-            //  灏嗘秷鎭彂甯冨埌鎸囧畾鐨勯槦鍒椾腑銆傜┖瀛楃涓�""琛ㄧず榛樿鐨勪氦鎹㈡満锛孮UEUE_NAME鎸囧畾浜嗙洰鏍囬槦鍒楀悕绉帮紝null琛ㄧず娌℃湁鎸囧畾鍏朵粬灞炴�э紝message.getBytes()灏嗘秷鎭唴瀹硅浆鎹负瀛楄妭鏁扮粍杩涜浼犺緭銆�
-            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
-            System.out.println(" [x] Sent '" + message + "'");
-        }
-    }
-}
-
diff --git a/TemperingGlassModule/src/main/java/com/mes/service/ModuleB.java b/TemperingGlassModule/src/main/java/com/mes/service/ModuleB.java
deleted file mode 100644
index 6a1cd78..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/service/ModuleB.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.mes.service;
-
-import com.rabbitmq.client.Channel;
-import com.rabbitmq.client.Connection;
-import com.rabbitmq.client.ConnectionFactory;
-import com.rabbitmq.client.DeliverCallback;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class ModuleB {
-    private final static String QUEUE_NAME = "hangzhou2";
-
-    public static void main(String[] argv) throws Exception {
-        // 鍒涘缓杩炴帴宸ュ巶
-        ConnectionFactory factory = new ConnectionFactory();
-    factory.setHost("10.153.19.150");
-        //factory.setHost("localhost");
-        try (Connection connection = factory.newConnection();
-             Channel channel = connection.createChannel()) {
-            // 澹版槑闃熷垪
-            Map<String, Object> args = new HashMap<>();
-            args.put("x-max-length-bytes",20000);
-//            args.put("x-max-length",5000);
-            channel.queueDeclare(QUEUE_NAME, false, false, false, args);
-
-            // 鍒涘缓娑堣垂鑰�
-            DeliverCallback deliverCallback = (consumerTag, delivery) -> {
-                String receivedMessage = new String(delivery.getBody(), "UTF-8");
-                System.out.println(" [x] Received '" + receivedMessage + "'");
-            };
-            // 寮�濮嬫秷璐规秷鎭�
-          channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {
-           });
-        }
-    }
-}
-
diff --git a/TemperingGlassModule/src/main/java/com/mes/service/TemperingOverService.java b/TemperingGlassModule/src/main/java/com/mes/service/TemperingOverService.java
index dc2fc19..1cc1983 100644
--- a/TemperingGlassModule/src/main/java/com/mes/service/TemperingOverService.java
+++ b/TemperingGlassModule/src/main/java/com/mes/service/TemperingOverService.java
@@ -1,28 +1,36 @@
 package com.mes.service;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
-import com.mes.entity.GlassInfo;
-import com.mes.entity.userInfo.SysError;
+import com.mes.common.PlcTools.S7control;
+import com.mes.entity.Tempering;
+import com.mes.entity.device.PLCAutoMes;
+import com.mes.entity.device.PlcParameterObject;
 import com.mes.mapper.TemperingMapper;
-import com.mes.mapper.userInfo.SysErrorMapper;
-import org.springframework.beans.factory.annotation.Autowired;
+import java.util.List;
 import org.springframework.stereotype.Service;
 
 @Service
 @DS("glass_info")
 public class TemperingOverService {
-    private final TemperingMapper temperingMapper;
-
+private final TemperingMapper temperingMapper;
+   //PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
     public TemperingOverService(TemperingMapper temperingMapper) {
         this.temperingMapper = temperingMapper;
     }
     //鎺ユ敹鍑虹倝淇″彿鍜岀倝鍙�
-    public GlassInfo SelectOutGlass (String glassid) {
-        GlassInfo GlassInfo = temperingMapper.SelectOutGlass(glassid);
-        return GlassInfo;
+    public String SelectOutSignal () {
+        
+        S7control.getinstance().WriteWord("鍑虹倝淇″彿", (short)1);
+        return "GlassInfo";
     }
-    //鍙戦�佺‘璁ゆ敹鍒�
+    //鍙戦�佺‘璁ゆ敹鍒颁俊鍙�
+    public void OverSignal () {
+        S7control.getinstance().WriteWord("纭瀛�", (short)1);
+    }
+    //鏄剧ず閽㈠寲鍑虹倝鍚庣殑鐗堝浘淇℃伅
+    public List <Tempering> SelectOutGlass () {
+        return temperingMapper.SelectOutGlass();
+    }
 
-   
-    
+       
 }
diff --git a/TemperingGlassModule/src/main/java/com/mes/service/TemperingService.java b/TemperingGlassModule/src/main/java/com/mes/service/TemperingService.java
index bdfd258..362d417 100644
--- a/TemperingGlassModule/src/main/java/com/mes/service/TemperingService.java
+++ b/TemperingGlassModule/src/main/java/com/mes/service/TemperingService.java
@@ -1,12 +1,10 @@
 package com.mes.service;
-
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.mes.common.PlcTools.S7control;
 import com.mes.entity.GlassInfo;
-import com.mes.entity.userInfo.SysError;
+import com.mes.entity.Tempering;
 import com.mes.mapper.TemperingMapper;
-import com.mes.mapper.userInfo.SysErrorMapper;
-import org.springframework.beans.factory.annotation.Autowired;
+import java.util.List;
 import org.springframework.stereotype.Service;
 
 @Service
@@ -21,7 +19,7 @@
     }
     //鎺ユ敹id杩斿洖鍧愭爣鍜屾暟鎹�
     public GlassInfo SelectOutGlass (String glassid) {
-        GlassInfo GlassInfo = temperingMapper.SelectOutGlass(glassid);
+        GlassInfo GlassInfo = temperingMapper.SelectGlass(glassid);
         return GlassInfo;
     }
     //鍙戦�佸潗鏍囦俊鎭�
@@ -38,15 +36,23 @@
         else {
             return 0;
         }
-        
     }
     //鍙戦�佽繘鐐変俊鍙�
     public void SendIntoGlass (short start) {
         s7control.WriteWord("DB100.10", start);
     }
     //鎺ュ彈瀹屾垚瀛楀洖澶嶇‘璁ゅ瓧
-    
     public void SendIntoGlass () {
         s7control.WriteWord("DB100.10", (short)1);
     }
+    //鏄剧ず绛夊緟涓殑鐗堝浘
+    public List <Tempering> SelectWaitingGlass () {
+        List<Tempering> WaitingGlass = temperingMapper.SelectWaitingGlass();
+        return WaitingGlass;
+    }
+    //鏄剧ず姝e湪杩涚倝鐨勭増鍥�
+    public List<Tempering> SelectIntoGlass () {
+        List<Tempering> IntoGlass = temperingMapper.SelectInGlass();
+        return IntoGlass;
+    }
 }
diff --git a/TemperingGlassModule/src/main/java/com/mes/service/impl/OrderServiceImpl.java b/TemperingGlassModule/src/main/java/com/mes/service/impl/OrderServiceImpl.java
deleted file mode 100644
index 5274aa6..0000000
--- a/TemperingGlassModule/src/main/java/com/mes/service/impl/OrderServiceImpl.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.mes.service.impl;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.mes.entity.OrderTest;
-import com.mes.mapper.OrderTestMapper;
-import com.mes.service.IOrderService;
-import org.springframework.stereotype.Service;
-
-@Service
-@DS("erp_sd")
-public class OrderServiceImpl extends ServiceImpl<OrderTestMapper, OrderTest> implements IOrderService {
-}
diff --git a/UI-Project/package-lock.json b/UI-Project/package-lock.json
index a7386d3..4b5e2c0 100644
--- a/UI-Project/package-lock.json
+++ b/UI-Project/package-lock.json
@@ -26,6 +26,7 @@
       "devDependencies": {
         "@types/sortablejs": "^1.15.7",
         "@vitejs/plugin-vue": "^4.3.4",
+        "http-proxy-middleware": "^3.0.0",
         "vite": "^4.4.9"
       }
     },
@@ -500,6 +501,15 @@
       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz",
       "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA=="
     },
+    "node_modules/@types/http-proxy": {
+      "version": "1.17.14",
+      "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.14.tgz",
+      "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==",
+      "dev": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
     "node_modules/@types/lodash": {
       "version": "4.14.199",
       "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz",
@@ -511,6 +521,15 @@
       "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==",
       "dependencies": {
         "@types/lodash": "*"
+      }
+    },
+    "node_modules/@types/node": {
+      "version": "20.12.5",
+      "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.12.5.tgz",
+      "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==",
+      "dev": true,
+      "dependencies": {
+        "undici-types": "~5.26.4"
       }
     },
     "node_modules/@types/sortablejs": {
@@ -931,6 +950,23 @@
       "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
       "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
     },
+    "node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -1016,6 +1052,12 @@
       "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
       "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
     },
+    "node_modules/eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+      "dev": true
+    },
     "node_modules/fill-range": {
       "version": "7.0.1",
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -1091,6 +1133,37 @@
         "node": ">= 6"
       }
     },
+    "node_modules/http-proxy": {
+      "version": "1.18.1",
+      "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz",
+      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+      "dev": true,
+      "dependencies": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
+    "node_modules/http-proxy-middleware": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz",
+      "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==",
+      "dev": true,
+      "dependencies": {
+        "@types/http-proxy": "^1.17.10",
+        "debug": "^4.3.4",
+        "http-proxy": "^1.18.1",
+        "is-glob": "^4.0.1",
+        "is-plain-obj": "^3.0.0",
+        "micromatch": "^4.0.5"
+      },
+      "engines": {
+        "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+      }
+    },
     "node_modules/is-binary-path": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -1127,6 +1200,15 @@
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
       "engines": {
         "node": ">=0.12.0"
+      }
+    },
+    "node_modules/is-plain-obj": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+      "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
       }
     },
     "node_modules/local-pkg": {
@@ -1187,6 +1269,19 @@
       "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
       "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
     },
+    "node_modules/micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "dependencies": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      },
+      "engines": {
+        "node": ">=8.6"
+      }
+    },
     "node_modules/mime-db": {
       "version": "1.52.0",
       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
@@ -1213,6 +1308,12 @@
       "engines": {
         "node": "*"
       }
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
     },
     "node_modules/nanoid": {
       "version": "3.3.6",
@@ -1366,6 +1467,12 @@
         "node": ">=8.10.0"
       }
     },
+    "node_modules/requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+      "dev": true
+    },
     "node_modules/rollup": {
       "version": "3.29.4",
       "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
@@ -1429,6 +1536,12 @@
       "engines": {
         "node": ">=8.0"
       }
+    },
+    "node_modules/undici-types": {
+      "version": "5.26.5",
+      "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+      "dev": true
     },
     "node_modules/unplugin": {
       "version": "1.5.0",
@@ -1828,6 +1941,15 @@
       "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.2.tgz",
       "integrity": "sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA=="
     },
+    "@types/http-proxy": {
+      "version": "1.17.14",
+      "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.14.tgz",
+      "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
     "@types/lodash": {
       "version": "4.14.199",
       "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.199.tgz",
@@ -1839,6 +1961,15 @@
       "integrity": "sha512-ZTcmhiI3NNU7dEvWLZJkzG6ao49zOIjEgIE0RgV7wbPxU0f2xT3VSAHw2gmst8swH6V0YkLRGp4qPlX/6I90MQ==",
       "requires": {
         "@types/lodash": "*"
+      }
+    },
+    "@types/node": {
+      "version": "20.12.5",
+      "resolved": "https://registry.npmmirror.com/@types/node/-/node-20.12.5.tgz",
+      "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==",
+      "dev": true,
+      "requires": {
+        "undici-types": "~5.26.4"
       }
     },
     "@types/sortablejs": {
@@ -2143,6 +2274,15 @@
       "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz",
       "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ=="
     },
+    "debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
     "delayed-stream": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@@ -2215,6 +2355,12 @@
       "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
       "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
     },
+    "eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+      "dev": true
+    },
     "fill-range": {
       "version": "7.0.1",
       "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -2257,6 +2403,31 @@
         "is-glob": "^4.0.1"
       }
     },
+    "http-proxy": {
+      "version": "1.18.1",
+      "resolved": "https://registry.npmmirror.com/http-proxy/-/http-proxy-1.18.1.tgz",
+      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+      "dev": true,
+      "requires": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "http-proxy-middleware": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-3.0.0.tgz",
+      "integrity": "sha512-36AV1fIaI2cWRzHo+rbcxhe3M3jUDCNzc4D5zRl57sEWRAxdXYtw7FSQKYY6PDKssiAKjLYypbssHk+xs/kMXw==",
+      "dev": true,
+      "requires": {
+        "@types/http-proxy": "^1.17.10",
+        "debug": "^4.3.4",
+        "http-proxy": "^1.18.1",
+        "is-glob": "^4.0.1",
+        "is-plain-obj": "^3.0.0",
+        "micromatch": "^4.0.5"
+      }
+    },
     "is-binary-path": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -2282,6 +2453,12 @@
       "version": "7.0.0",
       "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
+    },
+    "is-plain-obj": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
+      "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==",
+      "dev": true
     },
     "local-pkg": {
       "version": "0.4.3",
@@ -2325,6 +2502,16 @@
       "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz",
       "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
     },
+    "micromatch": {
+      "version": "4.0.5",
+      "resolved": "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz",
+      "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+      "dev": true,
+      "requires": {
+        "braces": "^3.0.2",
+        "picomatch": "^2.3.1"
+      }
+    },
     "mime-db": {
       "version": "1.52.0",
       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
@@ -2342,6 +2529,12 @@
       "version": "2.30.1",
       "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
       "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how=="
+    },
+    "ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
     },
     "nanoid": {
       "version": "3.3.6",
@@ -2419,6 +2612,12 @@
         "picomatch": "^2.2.1"
       }
     },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/requires-port/-/requires-port-1.0.0.tgz",
+      "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==",
+      "dev": true
+    },
     "rollup": {
       "version": "3.29.4",
       "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
@@ -2464,6 +2663,12 @@
         "is-number": "^7.0.0"
       }
     },
+    "undici-types": {
+      "version": "5.26.5",
+      "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
+      "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+      "dev": true
+    },
     "unplugin": {
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.0.tgz",
diff --git a/UI-Project/package.json b/UI-Project/package.json
index 75d8054..f41d6b8 100644
--- a/UI-Project/package.json
+++ b/UI-Project/package.json
@@ -26,6 +26,7 @@
   "devDependencies": {
     "@types/sortablejs": "^1.15.7",
     "@vitejs/plugin-vue": "^4.3.4",
+    "http-proxy-middleware": "^3.0.0",
     "vite": "^4.4.9"
   }
 }
diff --git a/UI-Project/src/layout/MainErpView.vue b/UI-Project/src/layout/MainErpView.vue
index d5c18f5..6c2e09c 100644
--- a/UI-Project/src/layout/MainErpView.vue
+++ b/UI-Project/src/layout/MainErpView.vue
@@ -12,7 +12,7 @@
 const router = useRouter()
 const userStore = useUserInfoStore()
 const user = userStore.user.userName
-store.createWebSocket();
+// store.createWebSocket();
 function quit(){
   userStore.$patch({
     user:null
diff --git a/UI-Project/src/stores/userInfo.js b/UI-Project/src/stores/userInfo.js
index eeaefac..bfae4e8 100644
--- a/UI-Project/src/stores/userInfo.js
+++ b/UI-Project/src/stores/userInfo.js
@@ -1,6 +1,6 @@
 import {defineStore} from 'pinia'
 import {ref} from "vue";
-import {createWebSocket, global_callback1} from "@/utils/webSocket";
+// import {createWebSocket, global_callback1} from "@/utils/webSocket";
 
 export  default defineStore("userInfo",{
     state: () =>{
@@ -10,9 +10,9 @@
         }
     },
     actions:{
-        createWebSocket(){
-            createWebSocket(global_callback1)
-        }
+        // createWebSocket(){
+        //     createWebSocket(global_callback1)
+        // }
 
     },
     persist: true//鏁版嵁鎸佷箙鍖栵紝闃叉鍒锋柊鏁版嵁娑堝け
diff --git a/UI-Project/src/utils/webSocket.js b/UI-Project/src/utils/webSocket.js
deleted file mode 100644
index 51e5ede..0000000
--- a/UI-Project/src/utils/webSocket.js
+++ /dev/null
@@ -1,137 +0,0 @@
-var websock = null;
-var global_callback = null;
-let isConnect = false; //杩炴帴鏍囪瘑 閬垮厤閲嶅杩炴帴
-let rec; //鏂嚎閲嶈繛鍚庯紝寤惰繜5绉掗噸鏂板垱寤篧ebSocket杩炴帴  rec鐢ㄦ潵瀛樺偍寤惰繜璇锋眰鐨勪唬鐮�
-let soketparams ='蹇冭烦鍖呮娴�'
-
-
-var serverPort = "/ws"; // webSocket杩炴帴绔彛
-var wsuri = "ws://localhost:8081/mesModuleTools";
-
-function createWebSocket(callback) {
-
-    if (websock == null || typeof websock !== WebSocket) {
-        initWebSocket(callback);
-    }
-}
-
-function global_callback1(msg) {
-    console.log("websocket鐨勫洖璋冨嚱鏁版敹鍒版湇鍔″櫒淇℃伅锛�" + JSON.stringify(msg));
-    // console.log("鏀跺埌鏈嶅姟鍣ㄤ俊鎭細" + msg);
-}
-
-function initWebSocket(callback) {
-    global_callback = callback;
-    // 鍒濆鍖杦ebsocket
-    websock = new WebSocket(wsuri);
-    websock.onmessage = function (e) {
-        websocketonmessage(e);
-    };
-    websock.onclose = function (e) {
-        websocketclose(e);
-    };
-    websock.onopen = function () {
-        websocketOpen();
-    };
-
-    // 杩炴帴鍙戠敓閿欒鐨勫洖璋冩柟娉�
-    websock.onerror = function () {
-        console.log("WebSocket杩炴帴鍙戠敓閿欒");
-    };
-}
-
-
-
-//蹇冭烦璁剧疆
-var heartCheck = {
-    timeout: 20000, //姣忔鏃堕棿鍙戦�佷竴娆″績璺冲寘 杩欓噷璁剧疆涓�20s
-    timeoutObj: null, //寤舵椂鍙戦�佹秷鎭璞★紙鍚姩蹇冭烦鏂板缓杩欎釜瀵硅薄锛屾敹鍒版秷鎭悗閲嶇疆瀵硅薄锛�
-
-    start: function () {
-        this.timeoutObj = setInterval(function () {
-            if (isConnect) websock.send(JSON.stringify(soketparams));
-        }, this.timeout);
-    },
-
-    reset: function () {
-        clearTimeout(this.timeoutObj);
-        this.start();
-    }
-};
-
-//瀹氫箟閲嶈繛鍑芥暟
-let reConnect = () => {
-    console.log("灏濊瘯閲嶆柊杩炴帴");
-    if (isConnect) return; //濡傛灉宸茬粡杩炰笂灏变笉鍦ㄩ噸杩炰簡
-    rec && clearTimeout(rec);
-    rec = setTimeout(function () { // 寤惰繜5绉掗噸杩�  閬垮厤杩囧娆¤繃棰戠箒璇锋眰閲嶈繛
-        initWebSocket();
-    }, 5000);
-};
-
-
-
-// 瀹為檯璋冪敤鐨勬柟娉�
-function sendSock(agentData ) {
-    if (websock.readyState === websock.OPEN) {
-        // 鑻ユ槸ws寮�鍚姸鎬�
-        websocketsend(agentData);
-    } else if (websock.readyState === websock.CONNECTING) {
-        // 鑻ユ槸 姝e湪寮�鍚姸鎬侊紝鍒欑瓑寰�1s鍚庨噸鏂拌皟鐢�
-        setTimeout(function () {
-            sendSock(agentData);
-        }, 1000);
-    } else {
-        // 鑻ユ湭寮�鍚� 锛屽垯绛夊緟1s鍚庨噸鏂拌皟鐢�
-        setTimeout(function () {
-            sendSock(agentData);
-        }, 1000);
-    }
-}
-
-function closeSock() {
-    console.log('鍏抽棴浜�')
-    websock.close();
-}
-
-// 鏁版嵁鎺ユ敹
-function websocketonmessage(msg) {
-    // console.log("鏀跺埌鏁版嵁锛�"+JSON.parse(e.data));
-    // console.log("鏀跺埌鏁版嵁锛�"+msg);
-
-    // global_callback(JSON.parse(msg.data));
-    // 鏀跺埌淇℃伅涓築lob绫诲瀷鏃�
-    let result = null;
-    if (msg.data instanceof Blob) {
-        const reader = new FileReader();
-        reader.readAsText(msg.data, "UTF-8");
-        reader.onload = (e) => {
-            result = JSON.parse(reader.result);
-            //console.log("websocket鏀跺埌", result);
-            global_callback(result);
-        };
-    } else {
-        result = JSON.parse(msg.data);
-        //console.log("websocket鏀跺埌", result);
-        global_callback(result);
-    }
-}
-
-// 鏁版嵁鍙戦��
-function websocketsend(agentData) {
-    // console.log("鍙戦�佹暟鎹細" + agentData);
-    websock.send(agentData);
-}
-
-// 鍏抽棴
-function websocketclose(e) {
-    console.log("connection closed (" + e.code + ")");
-}
-
-function websocketOpen(e) {
-    console.log("杩炴帴鎵撳紑");
-    isConnect = true
-    //heartCheck.start(); //鍙戦�佸績璺� 鐪嬩釜浜洪」鐩渶姹�
-}
-
-export { sendSock, createWebSocket, closeSock ,global_callback1};
\ No newline at end of file
diff --git a/UI-Project/src/views/HomeView.vue b/UI-Project/src/views/HomeView.vue
index 6285749..cdec3b1 100644
--- a/UI-Project/src/views/HomeView.vue
+++ b/UI-Project/src/views/HomeView.vue
@@ -1,8 +1,6 @@
 <script setup>
 import { useRouter, useRoute } from 'vue-router'
 
-import { sendSock, createWebSocket, closeSock } from "@/utils/webSocket"
-
 // function global_callback(msg) {
 //   console.log("websocket鐨勫洖璋冨嚱鏁版敹鍒版湇鍔″櫒淇℃伅锛�" + JSON.stringify(msg));
 //   // console.log("鏀跺埌鏈嶅姟鍣ㄤ俊鎭細" + msg);
diff --git a/UI-Project/src/views/LoginView.vue b/UI-Project/src/views/LoginView.vue
index d949ca3..c1515b9 100644
--- a/UI-Project/src/views/LoginView.vue
+++ b/UI-Project/src/views/LoginView.vue
@@ -6,7 +6,7 @@
 import { Lock,Avatar } from '@element-plus/icons-vue'
 import request from '@/utils/request'
 import userInfo from '@/stores/userInfo'
-import { sendSock, createWebSocket, closeSock,global_callback1 } from "@/utils/webSocket"
+
 
 const store=userInfo()
 let ruleFormRef  = ref<FormInstance>()
diff --git a/UI-Project/src/views/Returns/CreateReturns.vue b/UI-Project/src/views/Returns/CreateReturns.vue
deleted file mode 100644
index 8e203da..0000000
--- a/UI-Project/src/views/Returns/CreateReturns.vue
+++ /dev/null
@@ -1,182 +0,0 @@
-<script setup>
-
-import {reactive} from "vue";
-
-
-
-const gridOptions = reactive({
-  border:  "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe:true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'OrderList',
-  showFooter: true,//鏄剧ず鑴�
-  printConfig: {},
-  importConfig: {},
-  exportConfig: {},
-  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
-  showOverflow:true,
-  columnConfig: {
-    resizable: true,
-    useKey: true
-  },
-  filterConfig: {   //绛涢�夐厤缃」
-    remote: true
-  },
-  customConfig: {
-    storage: true
-  },
-  editConfig: {
-    trigger: 'click',
-    mode: 'row',
-    showStatus: true
-  },//琛ㄥご鍙傛暟
-  columns:[
-    {type:'expand',slots: { content:'content' },width: 50,fixed:"left"},
-    {type:'checkbox',title: '閫夊垯', width: 80,fixed:"left"},
-    {type: 'seq', title: '鑷簭', width: 80 ,fixed:"left"},
-    {field: '0',width:120,  title: '鍙戣揣鍗曞彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '1',width:120,  title: '鎵规',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '2',width:120,  title: '鍙��鏁伴噺',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '3',width:120,  title: '宸查��鏁伴噺',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '4',width:120,  title: '鎬绘暟閲�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '5',width:120,  title: '閫�璐ф暟閲�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '6',width:120,  title: '妤煎彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '7',width:120,   title: '浜у搧缂栧彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '8',width:120,  title: '浜у搧鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '9',width:120,  title: '鍗曚环',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '10',width:120,  title: '搴撳尯',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '11',width:120,  title: '閲戦',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '12',width:120,  title: '瀹�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '13',width:120,  title: '楂�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '14',width:120,  title: '褰㈢姸',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '15',width:120,   title: '鍗曠墖闈㈢Н',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '16',width:120,   title: '鎬婚潰绉�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '17',width:120,  title: '缁撶畻鍗曠墖闈㈢Н',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '18',width:120,  title: '缁撶畻鎬婚潰绉�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '19',width:120,  title: '鍔犲伐瑕佹眰',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '20',width:120,  title: '澶囨敞',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '21',width:120,  title: '纾ㄨ竟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '22',width:120,  title: '鍛ㄩ暱',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-
-
-  ],//琛ㄥご鎸夐挳
-  toolbarConfig: {
-    buttons: [
-      {'code': 'add', 'name': '淇濆瓨',status: 'primary',icon: 'vxe-icon-save'}
-    ],
-    import: false,
-    export: true,
-    print: true,
-    zoom: true,
-    custom: true
-  },
-  data:  [
-  ],//table body瀹為檯鏁版嵁
-  footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
-    return[
-      columns.map((column, columnIndex) => {
-        if (columnIndex === 0) {
-          return '鍚堣:'
-        }
-        // if (props.tableProp.footList.includes(column.field)) {
-        //   return sumNum(data, column.field)
-        // }
-        return ''
-      })
-    ]
-  }
-
-})
-
-</script>
-
-<template>
-  <div class="main-div">
-    <div class="order-primary" style="background-color: white" >
-      <el-row>
-        <el-col  :span="2"><el-text>瀹㈡埛缂栫爜:</el-text></el-col>
-        <el-col  :span="5"><el-text style="font-size: large;color: #181818">131</el-text></el-col>
-        <el-col  :span="2"><el-text>瀹㈡埛鍚嶇О:</el-text></el-col>
-        <el-col  :span="5"><el-text></el-text></el-col>
-        <el-col  :span="2"><el-text>椤圭洰鍚嶇О:</el-text></el-col>
-        <el-col  :span="5"><el-text></el-text></el-col>
-      </el-row>
-      <el-row>
-        <el-col  :span="2"><el-text>閫�璐ф柟寮�:</el-text></el-col>
-        <el-col  :span="5">
-          <el-select  clearable  >
-            <el-option/>
-          </el-select>
-        </el-col>
-        <el-col  :span="2"><el-text>閫�璐ф棩鏈�:</el-text></el-col>
-        <el-col  :span="5">
-          <el-date-picker
-              type="week"
-              format="[Week] ww"
-              placeholder="閫夋嫨鏃ユ湡"/>
-        </el-col>
-        <el-col  :span="2"><el-text>澶囨敞:</el-text></el-col>
-        <el-col  :span="5"><el-text></el-text></el-col>
-      </el-row>
-      <el-row>
-        <el-col  :span="2"><el-text>涓氬姟鍛�:</el-text></el-col>
-        <el-col  :span="5"><el-text style="font-size: large;color: #181818"></el-text></el-col>
-        <el-col  :span="2"><el-text>鍙戣揣鍛�:</el-text></el-col>
-        <el-col  :span="5"><el-text style="font-size: large;color: #181818"></el-text></el-col>
-      </el-row>
-    </div>
-    <div class="order-detail">
-      <vxe-grid
-          max-height="97%"
-          class="mytable-scrollbar"
-          ref="xGrid"
-          v-bind="gridOptions"
-
-      >
-        <template #num1_filter="{ column, $panel }">
-          <div>
-            <div v-for="(option, index) in column.filters" :key="index">
-              <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
-            </div>
-          </div>
-        </template>
-        <template #content="{ row}">
-          <ul class="expand-wrapper">
-            <li  v-for="(item,key,index) in row">
-              <span style="font-weight: bold">{{key+':  '}}</span>
-              <span>{{ item }}</span>
-            </li>
-          </ul>
-        </template>
-
-      </vxe-grid>
-    </div>
-  </div>
-
-</template>
-
-<style scoped>
-.main-div {
-  width: 100%;
-  height: 100%;
-  text-align: center;
-}
-.el-col{
-  border: #181818 1px solid;
-}
-:deep(.el-input__wrapper) {
-  box-shadow: 0 0 0 0 var(--el-input-border-color, var(--el-border-color)) inset;
-  cursor: default;
-  border: none !important;
-  background-color: transparent;
-}
-.order-primary{
-  width: 100%;
-}
-.order-detail{
-  width: 100%;
-  height: 70%;
-}
-</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Returns/ReturnsReport.vue b/UI-Project/src/views/Returns/ReturnsReport.vue
deleted file mode 100644
index 883648d..0000000
--- a/UI-Project/src/views/Returns/ReturnsReport.vue
+++ /dev/null
@@ -1,180 +0,0 @@
-<script setup>
-
-import {Folder, Search} from "@element-plus/icons-vue";
-import {reactive} from "vue";
-
-let titleList = [
-  '搴忓彿',
-  '閫�璐у崟鍙�',
-  '鍙戣揣鍗曞彿',
-  '璁㈠崟鍗曞彿',
-  '椤圭洰鍚嶇О',
-  '瀹㈡埛鍚嶇О',
-  '涓氬姟鍛�',
-  '閫佽揣鍦板潃',
-  '鍙戣揣鍛�',
-  '妤煎彿',
-  '浜у搧缂栧彿',
-  '浜у搧鍚嶇О',
-  '閫�璐ф暟閲�',
-  '鍛ㄩ暱',
-  '瀹為檯闈㈢Н',
-  '鍙戣揣闈㈢Н',
-  '鍗曚环',
-  '鍙戣揣閲戦',
-  '瀹�',
-  '楂�',
-  '褰㈢姸',
-  '纾ㄨ竟绫诲瀷',
-  '澶囨敞',
-  '鍔犲伐瑕佹眰',
-  '寤虹珛鏃堕棿'
-
-
-
-
-]
-
-const gridOptions = reactive({
-  border:  "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe:true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'OrderList',
-  showFooter: true,//鏄剧ず鑴�
-  printConfig: {},
-  importConfig: {},
-  exportConfig: {},
-  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
-  showOverflow:true,
-  columnConfig: {
-    resizable: true,
-    useKey: true
-  },
-  filterConfig: {   //绛涢�夐厤缃」
-    remote: true
-  },
-  customConfig: {
-    storage: true
-  },
-  editConfig: {
-    trigger: 'click',
-    mode: 'row',
-    showStatus: true
-  },//琛ㄥご鍙傛暟
-  columns:[
-
-    {type:'expand',slots: { content:'content' },width: 50,fixed:"left"},
-    {type: 'seq', title: '鑷簭', width: 80 ,fixed:"left"},
-    {field: '0',width:120,  title: '閫�璐у崟鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '1',width:120,  title: '鍙戣揣鍗曞彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '2',width:120,  title: '璁㈠崟鍗曞彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '3',width:120,  title: '椤圭洰鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '4',width:120,  title: '瀹㈡埛鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '5',width:120,  title: '涓氬姟鍛�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '6',width:120,  title: '閫佽揣鍦板潃',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '7',width:120,   title: '鍙戣揣鍛�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '8',width:120,  title: '妤煎彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '9',width:120,  title: '浜у搧缂栧彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '10',width:120,  title: '浜у搧鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '11',width:120,  title: '閫�璐ф暟閲�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '12',width:120,  title: '鍛ㄩ暱',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '13',width:120,  title: '瀹為檯闈㈢Н',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '14',width:120,  title: '閫�璐ч潰绉�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '15',width:120,   title: '鍗曚环',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '16',width:120,   title: '閫�璐ч噾棰�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '17',width:120,  title: '瀹�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '18',width:120,  title: '楂�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '19',width:120,  title: '褰㈢姸',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '20',width:120,  title: '纾ㄨ竟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '21',width:120,  title: '澶囨敞',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '22',width:120,  title: '鍔犲伐瑕佹眰',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '22',width:120,  title: '寤虹珛鏃堕棿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
-
-
-  ],//琛ㄥご鎸夐挳
-  toolbarConfig: {
-    buttons: [
-    ],
-    import: false,
-    export: true,
-    print: true,
-    zoom: true,
-    custom: true
-  },
-  data:  [
-  ],//table body瀹為檯鏁版嵁
-  footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
-    return[
-      columns.map((column, columnIndex) => {
-        if (columnIndex === 0) {
-          return '鍚堣:'
-        }
-        // if (props.tableProp.footList.includes(column.field)) {
-        //   return sumNum(data, column.field)
-        // }
-        return ''
-      })
-    ]
-  }
-
-})
-
-</script>
-
-<template>
-  <div class="main-div">
-    <el-date-picker
-        v-model="value1"
-        type="daterange"
-        start-placeholder="寮�濮嬫椂闂�"
-        end-placeholder="缁撴潫鏃堕棿"
-    />
-    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
-    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Folder">瀵煎嚭</el-button>
-    <div class="order-detail">
-      <vxe-grid
-          max-height="97%"
-          class="mytable-scrollbar"
-          ref="xGrid"
-          v-bind="gridOptions"
-
-      >
-        <template #num1_filter="{ column, $panel }">
-          <div>
-            <div v-for="(option, index) in column.filters" :key="index">
-              <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
-            </div>
-          </div>
-        </template>
-        <template #content="{ row}">
-          <ul class="expand-wrapper">
-            <li  v-for="(item,key,index) in row">
-              <span style="font-weight: bold">{{key+':  '}}</span>
-              <span>{{ item }}</span>
-            </li>
-          </ul>
-        </template>
-
-      </vxe-grid>
-    </div>
-  </div>
-</template>
-
-<style scoped>
-.main-div {
-  width: 100%;
-  height: 100%;
-}
-.el-col{
-  border: #181818 1px solid;
-}
-.order-primary{
-  width: 100%;
-}
-.order-detail{
-  width: 100%;
-  height: 80%;
-}
-</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Returns/SelectDeliveryList.vue b/UI-Project/src/views/Returns/SelectDeliveryList.vue
deleted file mode 100644
index f046fcd..0000000
--- a/UI-Project/src/views/Returns/SelectDeliveryList.vue
+++ /dev/null
@@ -1,205 +0,0 @@
-<script setup>
-import {Search} from "@element-plus/icons-vue"
-import {useRouter} from "vue-router"
-import {reactive, ref} from "vue";
-const router = useRouter()
-
-const getTableRow = (row,type) =>{
-  switch (type) {
-    case 'edit' :{
-      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
-      router.push({path: '/main/returns/createReturns', query: { deliveryID: 'JG24010101' }})
-      break
-    }
-    case 'delete':{
-      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
-      break
-    }
-  }
-}
-const xGrid = ref()
-const gridOptions = reactive({
-  border:  "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe:true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'OrderList',
-  showFooter: true,//鏄剧ず鑴�
-  printConfig: {},
-  importConfig: {},
-  exportConfig: {},
-  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
-  showOverflow:true,
-  columnConfig: {
-    resizable: true,
-    useKey: true
-  },
-  filterConfig: {   //绛涢�夐厤缃」
-    remote: true
-  },
-  customConfig: {
-    storage: true
-  },
-  editConfig: {
-    trigger: 'click',
-    mode: 'row',
-    showStatus: true
-  },//琛ㄥご鍙傛暟
-  columns:[
-
-    {type:'expand',slots: { content:'content' },width: 50,fixed:"left"},
-    {title: '鎿嶄綔',slots: { default: 'button_slot' }, width: 80,fixed:"left"},
-    {type: 'seq', title: '鑷簭', width: 80 ,fixed:"left"},
-
-    {title: '瀹℃牳', width: 40, slots: { default: 'state' }},
-    {title: '鍑哄簱', width: 40, slots: { default: 'state' }},
-
-    {field: '1',width:120,  title: '閿�鍞崟鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '2',width:120,  title: '瀹㈡埛缂栧彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '3',width:120,  title: '瀹㈡埛鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '4',width:120,  title: '鎬绘暟閲�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '5',width:120,  title: '鍙敤搴撳瓨',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '6',width:120,  title: '椤圭洰鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '7',width:120,  title: '鎵规',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '8',width:120,   title: '鎬婚噾棰�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '9',width:120,  title: '缁撶畻鎬婚潰绉�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '10',width:120,  title: '鎶ヨ〃鏃ユ湡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '11',width:120,  title: '鍖呰鏂瑰紡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '12',width:120,  title: '璁㈠崟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '13',width:120,  title: '璁㈠崟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: '14',width:120,  title: '璁㈠崟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
-
-
-  ],//琛ㄥご鎸夐挳
-  toolbarConfig: {
-    buttons: [
-    ],
-    import: false,
-    export: true,
-    print: true,
-    zoom: true,
-    custom: true
-  },
-  data:  [
-    {
-      '0': '1',
-      '1': 'NG23110102',
-      '2': '11',
-      '3': '涓缓',
-      '4': '534',
-      '5': '116',
-      '6': '榛勭煶鏈夎建鐢佃溅',
-      '7': '20鎵�',
-      '8': '111100.02',
-      '9': '1008.38',
-      '10': '2023-10-30',
-      '11': '鍙夎溅鏈ㄧ',
-      '12': '鏅�氳鍗�',
-      '13': '',
-      '14': '鐜嬮緳'
-    },
-    {
-      '0': '1',
-      '1': 'NG23110101',
-      '2': '11',
-      '3': '涓缓',
-      '4': '534',
-      '5': '116',
-      '6': '榛勭煶鏈夎建鐢佃溅',
-      '7': '20鎵�',
-      '8': '111100.02',
-      '9': '1008.38',
-      '10': '2023-10-30',
-      '11': '鍙夎溅鏈ㄧ',
-      '12': '鏅�氳鍗�',
-      '13': '',
-      '14': '鐜嬮緳'
-    }
-  ],//table body瀹為檯鏁版嵁
-  footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
-    return[
-      columns.map((column, columnIndex) => {
-        if (columnIndex === 0) {
-          return '鍚堣:'
-        }
-        // if (props.tableProp.footList.includes(column.field)) {
-        //   return sumNum(data, column.field)
-        // }
-        return ''
-      })
-    ]
-  }
-
-})
-const gridEvents = {
-  toolbarButtonClick ({ code }) {
-    const $grid = xGrid.value
-    if ($grid) {
-      switch (code) {
-        case 'add': {
-          router.push({path: '/main/delivery/createDelivery', params: { orderID: 'NG24010101' }})
-          break
-        }
-      }
-    }
-  }
-}
-
-
-
-
-</script>
-
-<template>
-  <div  style="width: 100%;height: 100%">
-    <el-date-picker
-        v-model="value1"
-        type="daterange"
-        start-placeholder="寮�濮嬫椂闂�"
-        end-placeholder="缁撴潫鏃堕棿"
-    />
-    <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button>
-    <vxe-grid
-        max-height="97%"
-        class="mytable-scrollbar"
-        ref="xGrid"
-        v-bind="gridOptions"
-        v-on="gridEvents"
-
-    >
-      <template #state="{ row}">
-        <el-checkbox checked/>
-      </template>
-
-      <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
-      <template #content="{ row }">
-        <ul class="expand-wrapper">
-          <li  v-for="(item,index) in gridOptions.columns" v-show="item.field!=undefined ">
-            <span style="font-weight: bold">{{item.title+':  '}}</span>
-            <span>{{ row[item.field] }}</span>
-          </li>
-        </ul>
-      </template>
-
-      <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
-      <template #button_slot="{ row }">
-        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">閫�璐�</el-button>
-      </template>
-
-      <template #num1_filter="{ column, $panel }">
-        <div>
-          <div v-for="(option, index) in column.filters" :key="index">
-            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
-          </div>
-        </div>
-      </template>
-    </vxe-grid>
-
-
-  </div>
-</template>
-
-<style scoped>
-
-</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/Returns/SelectReturns.vue b/UI-Project/src/views/Returns/SelectReturns.vue
deleted file mode 100644
index e3fce3b..0000000
--- a/UI-Project/src/views/Returns/SelectReturns.vue
+++ /dev/null
@@ -1,273 +0,0 @@
-<script setup>
-import {Search} from "@element-plus/icons-vue";
-import {reactive} from "vue";
-import {useRouter} from "vue-router"
-const router = useRouter()
-
-import { ref } from 'vue'
-import { ElMessage, ElMessageBox } from 'element-plus'
-const dialogFormVisible = ref(false)
-const dialogFormVisiblea = ref(false)
-
-const tableData = [
-  {
-    id: '1',
-    long: '1005',
-    wide: '183.6',
-    thick: '1991'
-  },
-  {
-    id: '2',
-    long: '105',
-    wide: '183',
-    thick: '191'
-  }
-]
-const tableDataa = [
-  {
-    long: '1005',
-    wide: '183.6',
-    thick: '1991',
-    station: '1'
-  },
-  {
-    long: '105',
-    wide: '183',
-    thick: '191',
-    station: '2'
-  }
-]
-const open = () => {
-  ElMessageBox.confirm(
-    '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
-    '鎻愮ず',
-    {
-      confirmButtonText: '鏄�',
-      cancelButtonText: '鍙栨秷',
-      type: 'warning',
-    }
-  )
-    .then(() => {
-      ElMessage({
-        type: 'success',
-        message: '鍒犻櫎鎴愬姛锛�',
-      })
-    })
-    .catch(() => {
-      ElMessage({
-        type: 'info',
-        message: '鍒犻櫎澶辫触',
-      })
-    })
-}
-const getTableRow = (row,type) =>{
-  switch (type) {
-    case 'edit' :{
-      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
-      router.push({path: '/main/returns/createReturns', query: { ReturnID: 'TH24010101' }})
-      break
-    }
-    case 'delete':{
-      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
-      break
-    }
-  }
-}
-
-const gridOptions = reactive({
-  border:  "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe:true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'OrderList',
-  showFooter: true,//鏄剧ず鑴�
-  printConfig: {},
-  importConfig: {},
-  exportConfig: {},
-  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
-  showOverflow:true,
-  columnConfig: {
-    resizable: true,
-    useKey: true
-  },
-  filterConfig: {   //绛涢�夐厤缃」
-    remote: true
-  },
-  customConfig: {
-    storage: true
-  },
-  editConfig: {
-    trigger: 'click',
-    mode: 'row',
-    showStatus: true
-  },//琛ㄥご鍙傛暟
-  // columns:[
-  //   {type:'expand',slots: { content:'content' },width: 50},
-  //   // {title: '鎿嶄綔', width: 110, slots: { default: 'button_slot' }},
-  //   {type: 'seq', title: '鑷簭', width: 80 },
-
-  //   // {title: '瀹℃牳', width: 40, slots: { default: 'state' }},
-  //   {title: 'id', width: 140, slots: { default: 'state' }},
-  //   {title: '闀�', width: 160, slots: { default: 'state' }},
-  //   {title: '瀹�', width: 160, slots: { default: 'state' }},
-  //   {title: '鍘�', width: 160, slots: { default: 'state' }},
-
-  //   // {field: '3',width:120,  title: '閫�璐у崟鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-  // ],
-  //琛ㄥご鎸夐挳
-  // toolbarConfig: {
-  //   buttons: [],
-  //   import: false,
-  //   export: true,
-  //   print: true,
-  //   zoom: true,
-  //   custom: true
-  // },
-  data:  [
-    {
-      'id': '1',
-      'long': '5',
-      'wide': '1005',
-      'thick': '183.6',
-    }
-  ],
-  //table body瀹為檯鏁版嵁
-  // footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
-  //   return[
-  //     columns.map((column, columnIndex) => {
-  //       if (columnIndex === 0) {
-  //         return '鍚堣:'
-  //       }
-  //       // if (props.tableProp.footList.includes(column.field)) {
-  //       //   return sumNum(data, column.field)
-  //       // }
-  //       return ''
-  //     })
-  //   ]
-  // }
-})
-</script>
-
-<template>
-  <div>
-    <!-- <el-date-picker
-        v-model="value1"
-        type="daterange"
-        start-placeholder="寮�濮嬫椂闂�"
-        end-placeholder="缁撴潫鏃堕棿"
-    /> -->
-    <!-- <el-button style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">鏌ヨ</el-button> -->
-    <el-button style="margin-top: -5px;margin-left: 5px;"   id="searchButton" type="primary" @click="dialogFormVisible = true">涓婄墖杈撳叆</el-button>
-    <el-button style="margin-top: -5px"  id="searchButton" type="primary" @click="dialogFormVisiblea = true">鍘熺墖淇℃伅</el-button>
-    <!-- <el-button style="margin-top: -5px"  id="searchButton" type="danger">浜哄伐鎷胯蛋</el-button> -->
-
-    <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading">
-      <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto">
-        <el-table height="100%" ref="table" :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="id" align="center" label="id" min-width="80" />
-          <el-table-column prop="long" align="center" label="闀�" min-width="120" />
-          <el-table-column prop="wide" align="center" label="瀹�" min-width="120" />
-          <el-table-column prop="thick" align="center" label="鍘�" min-width="120" />
-          <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200">
-            <template #default>
-              <el-button size="mini" type="text" plain @click="open">浜哄伐鎷�111璧�</el-button>
-            </template>
-        </el-table-column>
-        </el-table>
-      </div>
-    </el-card>
-  </div>
-
-  
-  <el-dialog v-model="dialogFormVisible" top="21vh" width="40%" title="涓婄墖杈撳叆" >
-    <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;">
-            <el-form  size="mini" label-width="150px">
-      <el-form >
-        <el-row style="margin-top: -15px;margin-bottom: -2px;">
-          <el-col :span="6">
-              <div id="dt" style="font-size: 15px;">
-        <div>
-              <el-form-item label="宸ヤ綅锛�" :required="true" style="width: 14vw">
-                <el-input  autocomplete="off" />
-              </el-form-item></div></div>
-          </el-col>
-          <el-col :span="9">
-            <div id="dta" style="font-size: 15px;">
-        <div>
-              <el-form-item label="闀匡細" :required="true" style="width: 14vw">
-                <el-input autocomplete="off" />
-              </el-form-item></div>
-              </div>
-          </el-col>
-        </el-row>
-        <el-row style="margin-top: 10px;">
-          <el-col :span="6">
-              <div id="dt" style="font-size: 15px;">
-        <div>
-              <el-form-item label="瀹斤細" :required="true" style="width: 13.2vw;margin-left: 14px;">
-                <el-input autocomplete="off" />
-              </el-form-item></div></div>
-          </el-col>
-          <el-col :span="9">
-            <div id="dta" style="font-size: 15px;">
-        <div>
-              <el-form-item label="鍘氾細" :required="true" style="width: 14vw">
-                <el-input autocomplete="off" />
-              </el-form-item></div></div>
-          </el-col>
-        </el-row>
-        </el-form>
-            </el-form>
-          </div>
-    <template #footer>
-      <div id="dialog-footer">
-        <el-button type="primary" @click="dialogFormVisible = false">
-          纭
-        </el-button>
-        <el-button @click="dialogFormVisible = false">鍙栨秷</el-button>
-      </div>
-    </template>
-  </el-dialog>
-  <el-dialog v-model="dialogFormVisiblea" top="21vh" width="40%" title="鍘熺墖淇℃伅">
-    <el-table height="100%" ref="table" :data="tableDataa" @row-click="handle">
-      <el-table-column
-        prop="long"
-        align="center"
-        label="闀�"
-        min-width="120"
-      />
-      <el-table-column
-        prop="wide"
-        align="center"
-        label="瀹�"
-        min-width="120"
-      />
-      <el-table-column
-        prop="thick"
-        align="center"
-        label="鍘�"
-        min-width="120"
-      />
-      <el-table-column
-        prop="station"
-        align="center"
-        label="宸ヤ綅"
-        min-width="120"
-      />
-    </el-table>
-    <div style="text-align: center; height: 22px; margin-top: 30px;">
-        <el-button @click="dialogFormVisiblea = false">鍏抽棴</el-button>
-      </div>
-  </el-dialog>
-</template>
-
-<style scoped>
-
-#dt { display:block; float:left;line-height: 20px;margin-left: 100px;}
-#dta { display:block; float:left;line-height: 20px;margin-left: 80%;}
-#dialog-footer{
-  text-align: center;
-  margin-top: -15px;
-}
-</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/StockBasicData/Create.vue b/UI-Project/src/views/StockBasicData/Create.vue
deleted file mode 100644
index 0fc1826..0000000
--- a/UI-Project/src/views/StockBasicData/Create.vue
+++ /dev/null
@@ -1,724 +0,0 @@
-<template>
-  <el-header height="auto">
-    <el-descriptions
-        class="margin-top"
-        title=""
-        :column="4"
-        :size="'default'"
-        border
-        :rules="rules"
-        :model="ruleForm"
-    >
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy" prop="name">
-        <template #label>
-          <span style="color:red">*</span>
-          閲囪喘绫诲瀷
-        </template>
-<!--        <el-select v-model="form.buyType" class="m-2" placeholder="閫夋嫨閲囪喘绫诲瀷" clearable>-->
-        <el-select v-model="ruleForm.name" class="m-2" placeholder="閫夋嫨閲囪喘绫诲瀷" clearable>
-          <el-option
-              v-for="item in CGTypeOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-          />
-        </el-select>
-      </el-descriptions-item >
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
-        <template #label>
-          <span style="color:red">*</span>
-          閲囪喘缁勭粐
-        </template>
-        <el-input v-model="ruleForm.name" placeholder="閲囪喘缁勭粐" clearable prop="name"></el-input>
-      </el-descriptions-item>
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
-        <template #label>
-          <span style="color:red">*</span>
-          渚涘簲鍟�
-        </template>
-        <el-cascader
-            placeholder="閫夋嫨渚涘簲鍟�"
-            :options="buyerOptions"
-            filterable
-            clearable
-            empty-text="empty-text"
-            :v-model="form.supplier"
-        >
-        </el-cascader>
-      </el-descriptions-item>
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
-        <template #label>
-          <span style="color:red">*</span>
-          閲囪喘閮ㄩ棬
-        </template>
-        <el-select v-model="cgBuMen" class="m-2" placeholder="閫夋嫨閲囪喘閮ㄩ棬" clearable>
-          <el-option
-              v-for="item in CGBuMenOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-          />
-        </el-select>
-      </el-descriptions-item>
-
-
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
-        <template #label>
-          <span style="color:red">*</span>
-          閲囪喘鍛�
-        </template>
-        <el-select v-model="form.buyer" class="m-2" placeholder="閫夋嫨閲囪喘鍛�" clearable>
-          <el-option
-              v-for="item in BuyerOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-          />
-        </el-select>
-      </el-descriptions-item>
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy"
-      >
-        <template #label>
-          <span style="color:red">*</span>
-          鍒惰〃鏃ユ湡
-        </template>
-        <el-date-picker
-            v-model="form.date"
-            type="date"
-            placeholder="閫夋嫨鍒惰〃鏃ユ湡"
-
-        />
-      </el-descriptions-item>
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy"></el-descriptions-item>
-    </el-descriptions>
-
-  </el-header>
-
-  <el-main style="padding-top: 5px;height:100%">
-    <!--    <el-button class="mt-4" style="width: 10%" @click="onAddItem"
-        >娣诲姞
-        </el-button>-->
-
-    <vxe-grid
-
-        max-height="500"
-        @filter-change="filterChanged"
-        class="mytable-scrollbar"
-        ref="xGrid"
-        v-bind="gridOptions"
-        @="gridEvents"
-    >
-
-      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
-      <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
-      <template #content="{ row}">
-        <ul class="expand-wrapper">
-          <li v-for="(item,key,index) in row">
-            <span style="font-weight: bold">{{ key + ':  ' }}</span>
-            <span>{{ item }}</span>
-          </li>
-        </ul>
-      </template>
-
-      <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
-      <template #button_slot="{ row }">
-        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">缂栬緫</el-button>
-        <!--          <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">鍒犻櫎</el-button>-->
-        <!--          <el-button @click="cellClickEvent" link type="primary" size="small">璇︽儏</el-button>-->
-      </template>
-
-      <template #num1_filter="{ column, $panel }">
-        <div>
-          <div v-for="(option, index) in column.filters" :key="index">
-            <el-input v-model="option.data" @input="changeFilterEvent($event, option, $panel)" />
-          </div>
-        </div>
-      </template>
-    </vxe-grid>
-
-  </el-main>
-
-</template>
-
-<script lang="ts" setup>
-import {ref, reactive} from 'vue'
-import {useRouter} from "vue-router";
-import {ElMessage, ElMessageBox} from "element-plus";
-
-let router = useRouter()
-
-//缁勪欢鎺ユ敹鍙傛暟
-const gridOptions = reactive({
-  border: "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe: true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true, height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
-  showFooter: true,//鏄剧ず鑴�
-  printConfig: {},
-  importConfig: {},
-  exportConfig: {},
-  scrollY: {enabled: true},//寮�鍚櫄鎷熸粴鍔�
-  showOverflow: true,
-  columnConfig: {
-    resizable: true,
-    useKey: true
-  },
-  filterConfig: {   //绛涢�夐厤缃」
-    remote: true
-  },
-  customConfig: {
-    storage: true
-  },
-  editConfig: {
-    trigger: 'click',
-    mode: 'row',
-    showStatus: true
-  },
-  columns: [
-    //{title: '鎿嶄綔', width: '8%', slots: {default: 'button_slot'}, fixed: "left"},
-    {type: 'seq', fixed: "left", title: ' ', width: 50},
-    {type: 'checkbox', fixed: "left", title: '', width: 50},
-    //{type: 'expand', title: '璇︽儏', fixed: "left", slots: {content: 'content'}, width: 50},
-    {
-      field: 'cgdh',
-      width: '10%',
-      title: '鐗╂枡缂栫爜',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'cgzt',
-      width: '10%',
-      title: '鐗╂枡鍚嶇О',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'gys',
-      width: '10%',
-      title: '浜у湴',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'w',
-      width: '8%',
-      title: '瀹藉害', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'g',
-      width: '8%',
-      title: '楂樺害', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true,
-      type: 'number'
-    },
-    {
-      field: 'h',
-      width: '8%',
-      title: '鍘氬害', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'xh',
-      width: '8%',
-      title: '鍨嬪彿',/*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'dw',
-      width: '8%',
-      title: '鍗曚綅', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'sl',
-      width: '8%',
-      title: '鏁伴噺', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'sl',
-      width: '8%',
-      title: '鎿嶄綔鏁伴噺', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}}
-    },
-    {
-      field: 'sl',
-      width: '12%',
-      title: '绠辨暟',    /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'je',
-      width: '8%',
-      title: '鍗曠墖闈㈢Н', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'je',
-      width: '12%',
-      title: '鍗曚环',   /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: '6',
-      width: '8%',
-      title: '鎬绘暟閲�',   /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'sl',
-      width: '8%',
-      title: '鎬婚潰绉�', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'yl',
-      width: '10%',
-      title: '鎬婚噾棰�',/*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    },
-    {
-      field: 'yl',
-      width: '10%',
-      title: '澶囨敞', /*filters: [{data: ''}], slots: {filter: 'num1_filter'},*/
-      editRender: {name: 'input', attrs: {placeholder: ''}},
-      sortable: true
-    }
-  ],//琛ㄥご鍙傛暟
-  toolbarConfig: {
-    buttons: [
-      {type: 'text'},
-      {
-        'name': '鏂板',
-
-        'code': 'Add',
-      },
-      {
-        'name': '绉婚櫎',
-
-        'code': 'Remove'
-      },
-      {
-        'name': '淇濆瓨璁㈠崟',
-        status: 'primary',
-        'code': 'Save'
-      }, {
-        'name': '鍏ュ簱',
-        status: 'primary',
-        'code': 'Storage'
-      }/*,
-      {
-        'name': '閫�璐�',
-        status: 'primary',
-        'code': 'Return'
-      },
-      {
-        'name': '杩斿洖鏌ヨ',
-
-        'code':'GoSelect'
-      }*/],
-    import: false,
-    export: true,
-    print: true,
-    zoom: true,
-    custom: true,
-    tools: [],
-
-  },//琛ㄥご鎸夐挳
-  /*data: [{},{},{},{},{},{}],//table body瀹為檯鏁版嵁*/
-  data: [{}, {}, {}],//table body瀹為檯鏁版嵁
-  mergeFooterItems: [
-    {row: 0, col: 0, rowspan: 1, colspan: 3}
-  ],//鍚堝苟鑴�
-  footerMethod({columns, data}) {//椤佃剼鍑芥暟
-    return [
-      columns.map((column, columnIndex) => {
-        if (columnIndex === 0) {
-          return '鍚堣:'
-        }
-        /* if (props.tableProp.footList.includes(column.field)) {
-           return sumNum(data, column.field)
-         }*/
-        return ''
-      })
-    ]
-  },
-
-})
-
-const xGrid = ref()
-const gridEvents = {
-  toolbarButtonClick({code}) {
-    const $grid = xGrid.value
-    if ($grid) {
-      switch (code) {
-//鏂板
-        case 'Add': {
-          const record = {
-            checked: false
-          }
-          $grid.insertAt(record, 0).then(({row}) => {
-            $grid.setEditRow(row)
-          })
-          break
-        }
-//绉婚櫎
-        case 'Remove': {
-          if ($grid.getCheckboxRecords().length === 0) {
-            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�','warning');
-            return
-          } else {
-
-            MessageConfirmShow('绉婚櫎','鏄惁纭绉婚櫎閫変腑鐨�' + $grid.getCheckboxRecords().length + '鏉℃暟鎹紒');
-
-          }
-          break
-        }
-//淇濆瓨
-        case 'Save': {
-          /*if (form.buyItem === null || form.buyItem === '') {
-            MessageShow('閲囪喘缁勭粐涓嶅彲涓虹┖','warning');
-            return;
-          }
-*/
-          //閫変腑鏁版嵁
-          /* const $table = this.$refs.xTable
-           const selectRecords = $table.getCheckboxRecords()*/
-//+$grid.rows.number
-          if ($grid.getCheckboxRecords().length === 0) {
-            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�','warning');
-            return
-          } else {
-
-
-            MessageConfirmShow('淇濆瓨璁㈠崟','鏄惁纭畾淇濆瓨褰撳墠璁㈠崟淇℃伅');
-          }
-          break
-        }
-//鍏ュ簱
-        case 'Storage': {
-          if ($grid.getCheckboxRecords().length === 0) {
-            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�','warning');
-            return
-          } else {
-            MessageConfirmShow('鍏ュ簱','鎮ㄩ�夋嫨浜�' + $grid.getCheckboxRecords().length + '鏉℃暟鎹紒,鏄惁纭鍏ュ簱锛�')
-          }
-          break
-        }
-//閫�搴�
-        case 'Return': {
-          if ($grid.getCheckboxRecords().length === 0) {
-            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�','warning');
-            return
-          } else {
-
-
-          }
-          break
-        }
-
-      }
-    }
-  },
-  toolbarToolClick({code}) {
-    const $grid = xGrid.value
-    if ($grid) {
-      switch (code) {
-        case 'myPrint': {
-          $grid.print()
-          break
-        }
-      }
-    }
-  },
-}
-
-
-import type { FormInstance, FormRules } from 'element-plus'
-
-
-
-
-interface RuleForm {
-  name: string
-  region: string
-  count: string
-  date1: string
-  date2: string
-  delivery: boolean
-  type: string[]
-  resource: string
-  desc: string
-}
-const ruleFormRef = ref<FormInstance>()
-const ruleForm = reactive<RuleForm>({
-  name: '',
-  region: '',
-  count: '',
-  date1: '',
-  date2: '',
-  delivery: false,
-  type: [],
-  resource: '',
-  desc: '',
-})
-const rules = reactive<FormRules<RuleForm>>({
-  name: [
-    { required: true, message: 'Please input Activity name', trigger: 'blur' },
-    { min: 3, max: 5, message: 'Length should be 3 to 5', trigger: 'blur' },
-  ],
-  region: [
-    {
-      required: true,
-      message: 'Please select Activity zone',
-      trigger: 'change',
-    },
-  ],
-  count: [
-    {
-      required: true,
-      message: 'Please select Activity count',
-      trigger: 'change',
-    },
-  ],
-  date1: [
-    {
-      type: 'date',
-      required: true,
-      message: 'Please pick a date',
-      trigger: 'change',
-    },
-  ],
-  date2: [
-    {
-      type: 'date',
-      required: true,
-      message: 'Please pick a time',
-      trigger: 'change',
-    },
-  ],
-  type: [
-    {
-      type: 'array',
-      required: true,
-      message: 'Please select at least one activity type',
-      trigger: 'change',
-    },
-  ],
-  resource: [
-    {
-      required: true,
-      message: 'Please select activity resource',
-      trigger: 'change',
-    },
-  ],
-  desc: [
-    { required: true, message: 'Please input activity form', trigger: 'blur' },
-  ],
-})
-
-
-const form = reactive({
-  name: '',
-  region: '',
-  date: '',
-  delivery: false,
-  type: [],
-  resource: '',
-  desc: '',
-  supplier: '',
-  buyer: '',
-  buyItem: '',
-  buyType: ''
-
-})
-
-//渚涘簲鍟�
-const buyerOptions = [
-  {value: '0', label: '渚涘簲鍟�1'},
-  {value: '1', label: '渚涘簲鍟�2'},
-  {value: '2', label: '渚涘簲鍟�3'},
-  {value: '3', label: '渚涘簲鍟�4'},
-  {value: '4', label: '渚涘簲鍟�5'},
-  {value: '5', label: '渚涘簲鍟�6'},
-]
-
-
-const value = ref('')
-const cgBuMen = ref('')
-
-//閲囪喘绫诲瀷
-const CGTypeOptions = [
-  {
-    value: '1',
-    label: '鏍囧噯绫诲瀷',
-  },
-  {
-    value: '2',
-    label: '闈炴爣鍑嗙被鍨�',
-  },
-  {
-    value: '3',
-    label: '杩藉姞閲囪喘',
-  },
-
-]
-
-//閲囪喘閮ㄩ棬
-const CGBuMenOptions = [
-  {
-    value: '0',
-    label: '閲囪喘鍗庡寳閮�',
-  },
-  {
-    value: '1',
-    label: '閲囪喘涓滃崡閮�',
-  },
-  {
-    value: '2',
-    label: '閲囪喘瑗垮寳閮�',
-  },
-  {
-    value: '3',
-    label: '閲囪喘涓師閮�',
-  },
-  {
-    value: '4',
-    label: '閲囪喘澶栧浗閮�',
-  },
-
-]
-
-//閲囪喘浜�
-const BuyerOptions = [
-  {
-    value: '0',
-    label: '閲囪喘鍛�1',
-  },
-  {
-    value: '1',
-    label: '閲囪喘鍛�2',
-  },
-  {
-    value: '2',
-    label: '閲囪喘鍛�3',
-  },
-  {
-    value: '3',
-    label: '閲囪喘鍛�4',
-  },
-  {
-    value: '4',
-    label: '閲囪喘鍛�5',
-  },
-
-]
-
-//椤甸潰閫昏緫浠g爜鎵ц
-function logicExecute(type){
-  const $grid = xGrid.value
-  switch (type) {
-    case '鍏ュ簱':
-      //鍏ュ簱閫昏緫浠g爜TODO
-      MessageShow('鍏ュ簱鎴愬姛锛�', 'success');
-      break;
-    case '閫�璐�':
-      //閫�璐ч�昏緫浠g爜TODO
-      MessageShow('閫�璐ф垚鍔燂紒', 'success');
-      break;
-    case '淇濆瓨璁㈠崟':
-      //淇濆瓨璁㈠崟閫昏緫浠g爜TODO
-      const submitForm = async (formEl: FormInstance | undefined) => {
-        if (!formEl) return
-        await formEl.validate((valid, fields) => {
-          if (valid) {
-            console.log('submit!')
-          } else {
-            console.log('error submit!', fields)
-          }
-        })
-      }
-      MessageShow('璁㈠崟淇濆瓨鎴愬姛锛�', 'success');
-      break;
-    case '绉婚櫎':
-      $grid.removeCheckboxRow();
-      break;
-    default:
-      MessageShow('鏈煡鎿嶄綔锛�', 'error');
-      break;
-  }
-  return true;
-
-}
-
-//鎻愮ず淇℃伅
-const MessageShow = (content, type ) => {
-
-  ElMessage({
-    message: content,
-    type: type,
-    showClose: true,
-  })
-}
-
-//鎿嶄綔纭绫讳俊鎭細鎿嶄綔绫诲瀷锛屾彁绀哄唴瀹癸紝鎻愮ず鏍囧ご锛屾彁绀虹被鍨�
-const MessageConfirmShow = (czType, content, title='鎿嶄綔纭鎻愮ず', type='warning') => {
-
-  ElMessageBox.confirm(
-      content,
-      title,
-      {
-        cancelButtonText: '鍙栨秷',
-        confirmButtonText: '纭畾',
-        type: type,
-        center: true,
-      }
-  )
-      //鐐瑰嚮浜嗙‘瀹�
-      .then(() => {
-        return logicExecute(czType);
-      })
-      //鐐瑰嚮浜嗗彇娑�
-      .catch(() => {
-        return false;
-      })
-}
-
-
-</script>
-<style scoped>
-:deep(.el-descriptions__table .label-diy) {
-  text-align: center;
-  width: 100px;
-  /*font-size: large;*/
-}
-</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/StockBasicData/Details.vue b/UI-Project/src/views/StockBasicData/Details.vue
deleted file mode 100644
index 04fa130..0000000
--- a/UI-Project/src/views/StockBasicData/Details.vue
+++ /dev/null
@@ -1,453 +0,0 @@
-<template>
-  <el-header height="auto">
-    <el-descriptions
-        class="margin-top"
-        title=""
-        :column="4"
-        :size="'default'"
-        border
-    >
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
-        <template #label>
-          鎿嶄綔鍗曞彿
-        </template>
-        <el-input v-model="form.buyItem" placeholder="鍗曞彿" disabled></el-input>
-      </el-descriptions-item>
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
-        <template #label>
-          閲囪喘绫诲瀷
-        </template>
-        <el-input v-model="form.buyItem" placeholder="閲囪喘绫诲瀷" disabled></el-input>
-      </el-descriptions-item>
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
-        <template #label>
-          閲囪喘閮ㄩ棬
-        </template>
-        <el-input v-model="form.buyItem" placeholder="閲囪喘閮ㄩ棬" disabled></el-input>
-      </el-descriptions-item>
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
-        <template #label>
-          渚涘簲鍟�
-        </template>
-        <el-input v-model="form.buyItem" placeholder="渚涘簲鍟�" disabled></el-input>
-      </el-descriptions-item>
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
-        <template #label>
-          閲囪喘鍛�
-        </template>
-        <el-input v-model="form.buyItem" placeholder="閲囪喘鍛�" disabled></el-input>
-      </el-descriptions-item>
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
-        <template #label>
-          閲囪喘缁勭粐
-        </template>
-        <el-input v-model="form.buyItem" placeholder="閲囪喘缁勭粐" disabled></el-input>
-      </el-descriptions-item>
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy">
-        <template #label>
-          鍒惰〃鏃ユ湡
-        </template>
-        <el-date-picker
-            v-model="form.date"
-            type="date"
-            placeholder="閫夋嫨鍒惰〃鏃ユ湡"
-        />
-      </el-descriptions-item>
-
-      <el-descriptions-item label-class-name="label-diy" class-name="content-diy"></el-descriptions-item>
-
-    </el-descriptions>
-  </el-header>
-
-  <el-main style="padding-top: 5px;height:100%">
-    <vxe-grid
-        max-height="500"
-        @filter-change="filterChanged"
-        ref="xGrid"
-        v-bind="gridOptions"
-        v-on="gridEvents"
-    >
-
-      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
-      <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
-      <template #content="{ row}">
-        <ul class="expand-wrapper">
-          <li v-for="(item,key,index) in row">
-            <span style="font-weight: bold">{{ key + ':  ' }}</span>
-            <span>{{ item }}</span>
-          </li>
-        </ul>
-      </template>
-
-    </vxe-grid>
-
-  </el-main>
-
-</template>
-
-<script setup>
-import {ref, reactive} from 'vue'
-
-let router = useRouter()
-import {useRouter} from "vue-router";
-import { ElMessage, ElMessageBox} from "element-plus";
-
-const value = ref('')
-
-//缁勪欢鎺ユ敹鍙傛暟
-const gridOptions = reactive({
-  border: "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe: true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true, height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
-  showFooter: true,//鏄剧ず鑴�
-  printConfig: {},
-  importConfig: {},
-  exportConfig: {},
-  //寮�鍚櫄鎷熸粴鍔�
-  scrollY: {enabled: true},
-  showOverflow: true,
-  columnConfig: {
-    resizable: true,
-    useKey: true
-  },
-  //绛涢�夐厤缃」
-  filterConfig: {
-    remote: true
-  },
-  customConfig: {
-    storage: true
-  },
-  editConfig: {
-    trigger: 'click',
-    mode: 'row',
-    showStatus: true
-  },
-  //琛ㄥご鍙傛暟銆佸垪鍚�
-  columns: [
-    {type: 'seq', fixed: "left", title: ' ', width: 50},
-    {type: 'checkbox', fixed: "left", title: '', width: 50},
-    {
-      field: 'cgdh',
-      width: '10%',
-      title: '鐗╂枡缂栫爜',
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'cgzt',
-      width: '10%',
-      title: '鐗╂枡鍚嶇О',
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'gys',
-      width: '10%',
-      title: '浜у湴',
-
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'w',
-      width: '8%',
-      title: '瀹藉害',
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'g',
-      width: '8%',
-      title: '楂樺害',
-      filters: [{data: ''}],
-      sortable: true,
-
-    },
-    {
-      field: 'h',
-      width: '8%',
-      title: '鍘氬害',
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'xh',
-      width: '8%',
-      title: '鍨嬪彿',
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'dw',
-      width: '8%',
-      title: '鍗曚綅',
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'sl',
-      width: '8%',
-      title: '鏁伴噺',
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'czsl',
-      width: '8%',
-      title: '鎿嶄綔鏁伴噺',
-      type: 'number',
-      editRender: {name: 'input', type: 'number', attrs: {placeholder: ''}}
-    },
-    {
-      field: 'sl',
-      width: '12%',
-      title: '绠辨暟',
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'je',
-      width: '8%',
-      title: '鍗曠墖闈㈢Н',
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'je',
-      width: '12%',
-      title: '鍗曚环',
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'sl',
-      width: '8%',
-      title: '鎬婚潰绉�',
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'yl',
-      width: '10%',
-      title: '鎬婚噾棰�',
-      filters: [{data: ''}],
-      sortable: true
-    },
-    {
-      field: 'yl',
-      width: '10%',
-      title: '澶囨敞',
-      filters: [{data: ''}],
-      sortable: true
-    }
-  ],
-  //琛ㄥご鎸夐挳
-  toolbarConfig: {
-    buttons: [
-      {type: 'text'},
-      {
-        'name': '淇濆瓨璁㈠崟',
-        status: 'primary',
-        'code': 'Save'
-      }, {
-        'name': '鍏ュ簱',
-        status: 'primary',
-        'code': 'Storage'
-      },
-      {
-        'name': '閫�璐�',
-        status: 'primary',
-        'code': 'Return'
-      },
-      {
-        'name': '鍙栨秷',
-        status: '',
-        'code': 'Cancel'
-      }],
-    import: false,
-    export: true,
-    print: true,
-    zoom: true,
-    custom: true,
-    tools: [],
-
-  },
-  //table body瀹為檯鏁版嵁
-  data: [{}, {}, {}],
-  //鑴氬悎骞�
-  mergeFooterItems: [
-    {row: 0, col: 0, rowspan: 1, colspan: 3}
-  ],
-  //鍚堝苟鑴�
-  footerMethod({columns, data}) {//椤佃剼鍑芥暟
-    return [
-      columns.map((column, columnIndex) => {
-        if (columnIndex === 0) {
-          return '鍚堣:'
-        }
-        /* if (props.tableProp.footList.includes(column.field)) {
-           return sumNum(data, column.field)
-         }*/
-        return ''
-      })
-    ]
-  },
-
-})
-
-const xGrid = ref()
-const gridEvents = {
-  toolbarButtonClick({code}) {
-    const $grid = xGrid.value
-    if ($grid) {
-      switch (code) {
-//淇濆瓨
-        case 'Save': {
-          MessageAlertShow('鐐瑰嚮浜嗕繚瀛樿鍗�','鎿嶄綔鎻愮ず');
-          //MessageShow('鐐瑰嚮浜嗕繚瀛樿鍗曪紒', 'error');
-          break;
-        }
-//鍙栨秷锛岃繑鍥炴煡璇㈤〉闈�
-        case 'Cancel': {
-          // router.push({path: '/main/purchaseOrder/StoragePurchaseOrder'})
-          break
-        }
-//鍏ュ簱
-        case 'Storage': {
-          if ($grid.getCheckboxRecords().length === 0) {
-            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹紒', 'warning');
-            return
-          } else {
-            MessageConfirmShow('鍏ュ簱', '鏄惁纭瀵归�変腑鐨�' + $grid.getCheckboxRecords().length + '鐗╂枡杩涜鍏ュ簱鎿嶄綔锛�');
-          }
-          break
-        }
-//閫�璐�
-        case 'Return': {
-          if ($grid.getCheckboxRecords().length === 0) {
-            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹紒', 'warning');
-            return
-          } else {
-
-            MessageConfirmShow('閫�璐�', '鏄惁纭瀵归�変腑鐨�' + $grid.getCheckboxRecords().length + '鐗╂枡杩涜閫�璐ф搷浣滐紒');
-          }
-          break
-        }
-
-      }
-    }
-  },
-  toolbarToolClick({code}) {
-    const $grid = xGrid.value
-    if ($grid) {
-      switch (code) {
-        case 'myPrint': {
-          $grid.print()
-          break
-        }
-      }
-    }
-  },
-}
-
-//琛ㄥ崟鏁版嵁
-const form = reactive({
-  name: '',
-  region: '',
-  date: '',
-  delivery: false,
-  type: [],
-  resource: '',
-  desc: '',
-  supplier: '',
-  buyer: '',
-  buyItem: '',
-  buyType: ''
-
-})
-
-
-//椤甸潰閫昏緫浠g爜鎵ц
-function logicExecute(type){
-  const $grid = xGrid.value
-  switch (type) {
-    case '鍏ュ簱':
-      //鍏ュ簱閫昏緫浠g爜TODO
-      MessageShow('鍏ュ簱鎴愬姛锛�', 'success');
-      break;
-    case '閫�璐�':
-      //閫�璐ч�昏緫浠g爜TODO
-      MessageShow('閫�璐ф垚鍔燂紒', 'success');
-      break;
-    default:
-      MessageShow('鏈煡鎿嶄綔锛�', 'error');
-      break;
-  }
-  return true;
-}
-
-//鎻愮ず淇℃伅
-//淇℃伅鍐呭锛屾樉绀烘柟寮忥紝鏄剧ず鏍囬锛岀被鍨�
-const MessageShow = (content,type='success') => {
-    ElMessage({
-      message: content,
-      type: type,
-      showClose: true,
-    })
-}
-
-//鎿嶄綔纭绫讳俊鎭細鎿嶄綔绫诲瀷锛屾彁绀哄唴瀹癸紝鎻愮ず鏍囧ご锛屾彁绀虹被鍨�
-const MessageConfirmShow = (czType, content, title='鎿嶄綔纭鎻愮ず', type='warning') => {
-  ElMessageBox.confirm(
-      content,
-      title,
-      {
-        cancelButtonText: '鍙栨秷',
-        confirmButtonText: '纭畾',
-        type: type,
-        center: true,
-      }
-  )
-      //鐐瑰嚮浜嗙‘瀹�
-      .then(() => {
-
-        return logicExecute(czType);
-      })
-      //鐐瑰嚮浜嗗彇娑�
-      .catch(() => {
-        return false;
-      })
-}
-
-//寮圭獥淇℃伅
-const MessageAlertShow=(content,title,type='info')=>{
-
-  ElMessageBox.alert(content, title, {
-    // 绂佹鑷姩瀵圭劍
-    //autofocus: false,
-    confirmButtonText: 'OK',
-    /*callback: (action: Action) => {
-      MessageShow(`action: ${action}`,type)
-    },*/
-  })
-}
-
-</script>
-
-
-<style scoped>
-:deep(.el-descriptions__table .label-diy) {
-  text-align: center;
-  width: 100px;
-  /*  font-size: large;*/
-}
-</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/StockBasicData/Payment.vue b/UI-Project/src/views/StockBasicData/Payment.vue
deleted file mode 100644
index 475da20..0000000
--- a/UI-Project/src/views/StockBasicData/Payment.vue
+++ /dev/null
@@ -1,354 +0,0 @@
-<template>
-  <el-container>
-    <el-header class="m-header" style="height: auto">
-      <el-row :gutter="10" style="margin-bottom: 5px">
-        <el-col :span="7">
-          <el-date-picker
-              v-model="datevalue"
-              type="daterange"
-              unlink-panels
-              range-separator="鍒�"
-              start-placeholder="寮�濮嬫棩鏈�"
-              end-placeholder="缁撴潫鏃ユ湡"
-              :shortcuts="shortcuts"
-              :size="size"
-              format="YYYY/MM/DD"
-              value-format="YYYY-MM-DD"
-          />
-        </el-col>
-
-        <el-col :span="2">
-          <el-button
-              id="select"
-              type="primary"
-              :icon="Search"
-              @click="autoAddRow">鏌ヨ
-          </el-button>
-        </el-col>
-      </el-row>
-
-    </el-header>
-    <el-main style="padding-top: 5px">
-      <vxe-grid
-
-          max-height="600"
-          @filter-change="filterChanged"
-          class="mytable-scrollbar"
-          ref="xGrid"
-          v-bind="PayOptions"
-          @="gridEvents"
-
-      >
-
-        <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
-        <template #content="{ row }">
-          <ul class="expand-wrapper">
-            <li  v-for="(item,index) in gridOptions.columns" v-show="item.field!==undefined ">
-              <span style="font-weight: bold">{{item.title+':  '}}</span>
-              <span>{{ row[item.field] }}</span>
-            </li>
-          </ul>
-        </template>
-
-        <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
-        <template #button_slot="{ row }">
-          <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">缂栬緫</el-button>
-          <!--          <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">鍒犻櫎</el-button>-->
-          <!--          <el-button @click="cellClickEvent" link type="primary" size="small">璇︽儏</el-button>-->
-        </template>
-
-
-        <template #num1_filter="{ column, $panel }">
-          <div>
-            <div v-for="(option, index) in column.filters" :key="index">
-              <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
-            </div>
-          </div>
-        </template>
-      </vxe-grid>
-    </el-main>
-  </el-container>
-</template>
-
-
-<script setup>
-import {ref} from 'vue'
-import {Search} from "@element-plus/icons-vue";
-import 'dayjs/locale/zh-cn'
-import {VXETable} from "vxe-table";
-import {reactive} from "vue";
-import {useRouter} from 'vue-router'
-import {ElMessage, ElMessageBox} from "element-plus";
-
-const datevalue = ref('')//鏃堕棿
-
-//缁勪欢鎺ユ敹鍙傛暟
-const PayOptions = reactive({
-  border: "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe: true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true, height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
-  showFooter: true,//鏄剧ず鑴�
-  printConfig: {},
-  importConfig: {},
-  exportConfig: {},
-  scrollY: {enabled: true},//寮�鍚櫄鎷熸粴鍔�
-  showOverflow: true,
-  columnConfig: {
-    resizable: true,
-    useKey: true
-  },
-  filterConfig: {   //绛涢�夐厤缃」
-    remote: true
-  },
-  customConfig: {
-    storage: true
-  },
-  editConfig: {
-    trigger: 'click',
-    mode: 'row',
-    showStatus: true
-  },
-  columns: [
-    /* {title: '鎿嶄綔', width: '8%', slots: {default: 'button_slot'}, fixed: "left"},*/
-    {type: 'expand', title: '', fixed: "left", slots: {content: 'content'}, width: '5%'},//璇︽儏
-    {type: 'checkbox', fixed: "left", title: '', width: '5%'},
-    {type: 'seq', fixed: "left", title: ' ', width: '5%'},
-    {
-      field: 'cgdh',
-      width: '10%',
-      title: '閲囪喘鍗曞彿',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: 'cgzt', width: '10%', title: '鏈堜唤', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: 'gys',
-      width: '10%',
-      title: '渚涘簲鍟�',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'wlbh',
-      width: '10%',
-      title: '鏈熷垵閲戦',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'wlmc',
-      width: '10%',
-      title: '鏈湡搴斾粯',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'w',
-      width: '10%',
-      title: '鏈湡宸蹭粯',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'g',
-      width: '10%',
-      title: '鏈熸湯浣欓',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: 'h', width: '9%', title: '绋庣巼', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: '6', width: '10%', title: '澶囨敞', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}
-  ],//琛ㄥご鍙傛暟
-  toolbarConfig: {
-    buttons: [{type: 'text'}, {
-      'name': '搴斾粯纭',
-      status: 'primary',
-      'code': 'Sure',
-    }],
-    import: false,
-    export: true,
-    print: true,
-    zoom: true,
-    custom: true,
-    style: 'paddling-left:10px'
-  },//琛ㄥご鎸夐挳
-  data: [{}, {}, {}, {}],//table body瀹為檯鏁版嵁
-  mergeFooterItems: [
-    {row: 0, col: 0, rowspan: 1, colspan: 3}
-  ],//鍚堝苟鑴�
-  footerMethod({columns, data}) {//椤佃剼鍑芥暟
-    return [
-      columns.map((column, columnIndex) => {
-        if (columnIndex === 0) {
-          return '鍚堣:'
-        }
-        /* if (props.tableProp.footList.includes(column.field)) {
-           return sumNum(data, column.field)
-         }*/
-        return ''
-      })
-    ]
-  },
-
-})
-
-
-const xGrid = ref()
-const gridEvents = {
-  toolbarButtonClick({code}) {
-    const $grid = xGrid.value
-    if ($grid) {
-      switch (code) {
-          //搴斾粯纭
-        case 'Sure': {
-          if ($grid.getCheckboxRecords().length === 0) {
-            MessageShow("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�!", 'warning');
-            return
-          } else {
-            MessageConfirmShow("纭搴斾粯", '鎮ㄩ�夋嫨浜�' + $grid.getCheckboxRecords().length + '鏉℃暟鎹紒,鏄惁纭搴斾粯锛�')
-          }
-          break
-        }
-      }
-    }
-  },
-  toolbarToolClick({code}) {
-    const $grid = xGrid.value
-    if ($grid) {
-      switch (code) {
-        case 'myPrint': {
-          $grid.print()
-          break
-        }
-      }
-    }
-  },
-}
-
-
-
-const shortcuts = [
-  {
-    text: '杩戜竴鍛�',
-    value: () => {
-      const end = new Date()
-      const start = new Date()
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
-      return [start, end]
-    },
-  },
-  {
-    text: '杩戜竴涓湀',
-    value: () => {
-      const end = new Date()
-      const start = new Date()
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
-      return [start, end]
-    },
-  },
-  {
-    text: '杩戜笁涓湀',
-    value: () => {
-      const end = new Date()
-      const start = new Date()
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
-      return [start, end]
-    },
-  },
-]
-
-
-//椤甸潰閫昏緫浠g爜鎵ц
-function logicExecute(type){
-  const $grid = xGrid.value
-  switch (type) {
-    case '纭搴斾粯':
-      //鍏ュ簱閫昏緫浠g爜TODO
-      MessageShow('鎿嶄綔鎴愬姛锛�', 'success');
-      break;
-
-    default:
-      MessageShow('鏈煡鎿嶄綔锛�', 'error');
-      break;
-
-  }
-  return true;
-}
-
-
-//鎻愮ず淇℃伅
-//淇℃伅鍐呭锛屾樉绀烘柟寮忥紝鏄剧ず鏍囬锛岀被鍨�
-const MessageShow = (content, type = 'success') => {
-  ElMessage({
-    message: content,
-    type: type,
-    showClose: true,
-  })
-}
-
-//鎿嶄綔纭绫讳俊鎭細鎿嶄綔绫诲瀷锛屾彁绀哄唴瀹癸紝鎻愮ず鏍囧ご锛屾彁绀虹被鍨�
-const MessageConfirmShow = (czType, content, title = '鎿嶄綔纭鎻愮ず', type = 'warning') => {
-  ElMessageBox.confirm(
-      content,
-      title,
-      {
-        cancelButtonText: '鍙栨秷',
-        confirmButtonText: '纭畾',
-        type: type,
-        center: true,
-      }
-  )
-      //鐐瑰嚮浜嗙‘瀹�
-      .then(() => {
-
-        return  logicExecute(czType);
-
-      })
-      //鐐瑰嚮浜嗗彇娑�
-      .catch(() => {
-        return false;
-      })
-}
-
-//寮圭獥淇℃伅
-const MessageAlertShow = (content, title, type = 'info') => {
-
-  ElMessageBox.alert(content, title, {
-    // 绂佹鑷姩瀵圭劍
-    //autofocus: false,
-    confirmButtonText: 'OK',
-    /*callback: (action: Action) => {
-      MessageShow(`action: ${action}`,type)
-    },*/
-  })
-}
-
-</script>
-
-
-<style scoped>
-.el-row {
-  margin-bottom: 20px;
-}
-
-.el-row:last-child {
-  margin-bottom: 0;
-}
-
-.el-col {
-  border-radius: 4px;
-}
-
-.m-header {
-  height: 32px;
-}
-</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/StockBasicData/Return.vue b/UI-Project/src/views/StockBasicData/Return.vue
deleted file mode 100644
index 354092d..0000000
--- a/UI-Project/src/views/StockBasicData/Return.vue
+++ /dev/null
@@ -1,593 +0,0 @@
-<template>
-  <el-container>
-    <el-header class="m-header" style="height: auto">
-      <el-row :gutter="10" style="margin-bottom: 5px">
-        <el-col :span="7">
-          <el-date-picker
-              v-model="datevalue"
-              type="daterange"
-              unlink-panels
-              range-separator="鍒�"
-              start-placeholder="寮�濮嬫棩鏈�"
-              end-placeholder="缁撴潫鏃ユ湡"
-              :shortcuts="shortcuts"
-              :size="size"
-              format="YYYY/MM/DD"
-              value-format="YYYY-MM-DD"
-          />
-
-        </el-col>
-
-        <el-col :span="2">
-          <el-button
-              id="select"
-              type="primary"
-              :icon="Search"
-              @click="BtnSearchPurchaseOrder">鏌ヨ
-          </el-button>
-        </el-col>
-      </el-row>
-    </el-header>
-    <el-main style="padding-top: 5px;height:100%">
-      <vxe-grid
-
-          max-height="600"
-          @filter-change="filterChanged"
-          class="mytable-scrollbar"
-          ref="xGrid"
-          v-bind="gridOptions"
-          v-on="gridEvents"
-          @cell-dblclick="cellClickEvent"
-      >
-
-        <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
-        <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
-        <template #content="{ row }">
-          <ul class="expand-wrapper">
-            <li v-for="(item,index) in gridOptions.columns" v-show="item.field!==undefined ">
-              <span style="font-weight: bold">{{ item.title + ':  ' }}</span>
-              <span>{{ row[item.field] }}</span>
-            </li>
-          </ul>
-        </template>
-
-        <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
-        <template #button_slot="{ row }">
-          <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">缂栬緫</el-button>
-          <!--          <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">鍒犻櫎</el-button>-->
-          <!--          <el-button @click="cellClickEvent" link type="primary" size="small">璇︽儏</el-button>-->
-        </template>
-
-
-        <template #num1_filter="{ column, $panel }">
-          <div>
-            <div v-for="(option, index) in column.filters" :key="index">
-              <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
-            </div>
-          </div>
-        </template>
-      </vxe-grid>
-
-
-      <!--      璇︽儏妗� 閮ㄥ垎1-->
-      <vxe-modal v-model="showDetails" title="鏌ョ湅璇︽儏" width="600" height="80%" :mask="false" :lock-view="false"
-                 resize>
-        <el-container>
-          <el-header height="35px"
-                     style="margin: 0;padding: 0">
-
-            <el-input v-model="showCGDH" placeholder="閲囪喘鍗曞彿" disabled>
-              <template #prepend>閲囪喘鍗曞彿锛�</template>
-            </el-input>
-          </el-header>
-          <el-main>
-            <template #default>
-              <vxe-table
-                  border="default"
-                  auto-resize
-                  show-overflow
-                  max-height="400"
-                  :row-config="{isHover: true}"
-                  :show-header="false"
-                  :sync-resize="showDetails"
-                  :data="detailData"
-
-              >
-                <vxe-column field="label" width="30%" class-name="v-column-label"></vxe-column>
-                <vxe-column field="value"></vxe-column>
-              </vxe-table>
-            </template>
-          </el-main>
-          <el-footer height="40px">
-            <el-row>
-              <el-col :offset="20" :span="4">
-                <el-button
-                    id="Sure"
-                    type="primary"
-                    @click="SureReturn"
-                >纭閫�璐�
-                </el-button>
-              </el-col>
-
-            </el-row>
-          </el-footer>
-        </el-container>
-      </vxe-modal>
-      <!--      璇︽儏妗� 閮ㄥ垎1 缁撴潫-->
-    </el-main>
-  </el-container>
-</template>
-
-
-<script setup>
-
-import {ref} from "vue";
-import {reactive} from "vue";
-import {useRouter} from 'vue-router'
-import {Search} from "@element-plus/icons-vue";
-import dayjs from "dayjs";
-import {ElMessage, ElMessageBox} from "element-plus";
-
-
-let router = useRouter()
-const getTableRow = (row, type) => {
-  switch (type) {
-    case 'edit' : {
-      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
-      // router.push({path: '/main/purchaseOrder/DetailsPurchaseOrder', query: {id: row.id}})
-      break
-    }
-    case 'delete': {
-
-
-      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅' + row.id)
-      break
-    }
-  }
-}
-
-const xGrid = ref()
-
-const gridEvents = {
-  toolbarButtonClick({code}) {
-    const $grid = xGrid.value
-    if ($grid) {
-      switch (code) {
-        case 'Sure': {
-          if ($grid.getCheckboxRecords().length === 0) {
-
-            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�!', 'warning');
-
-            return
-          } else {
-
-            MessageConfirmShow('纭畾', '鎮ㄩ�夋嫨浜�' + $grid.getCheckboxRecords().length + '鏉℃暟鎹紒,鏄惁纭閫�璐э紵')
-          }
-          break
-        }
-        case 'Log': {
-          MessageAlertShow('鐐瑰嚮浜嗛��璐ц褰�!', '鎿嶄綔鎻愮ず');
-          break
-        }
-      }
-    }
-  },
-  toolbarToolClick({code}) {
-    const $grid = xGrid.value
-    if ($grid) {
-      switch (code) {
-        case 'myPrint': {
-          $grid.print()
-          break
-        }
-      }
-    }
-  },
-}
-
-
-//鏌ヨ鎸夐挳鏂规硶
-const BtnSearchPurchaseOrder = () => {
-
-  //寮�濮嬫椂闂达紝缁撴潫鏃堕棿鑾峰彇
-  //MessageShow("寮�濮嬫椂闂�"+datevalue._rawValue[0]+"\r\n缁撴潫鏃堕棿\r\n"+datevalue._rawValue[1]);
-
-  for (let i = 1; i < 6; i++) {
-    const randomInt = Math.floor(Math.random() * 999) + 1000;//4浣嶆暟闅忔満鏁�
-    const randomSumInt = Math.floor(Math.random() * 99) + 10;//2浣嶆暟闅忔満鏁�
-    const randomOrderInt = Math.floor(Math.random() * 99) + 100;//3浣嶆暟闅忔満鏁�
-    const t = i % 2 === 0 ? 5 : 6;
-    const s = i % 2 === 0 ? '鍏ュ簱' : i % 3 === 0 ? '閫�璐�' : '閮ㄥ垎鍏ュ簱';
-    const thdh = i % 2 === 0 ? '' : i % 3 === 0 ? 'THID' + randomOrderInt : '';
-    const CGNo = 'NGCG231200' + randomOrderInt;//閲囪喘缂栧彿
-    const wlNo = 'NGWL1000' + randomInt;
-    const xh = 'NGXH' + randomSumInt;
-    const wlmc = 'WLMC' + randomInt;
-    const gys = '渚涘簲鍟�' + randomSumInt;
-    const xhdh = 'NG231200' + randomOrderInt;
-    const w = i % 2 === 0 ? '3300' : i % 3 === 0 ? '3660' : i % 4 === 0 ? '2250' : '2580';
-    const h = i % 2 === 0 ? '2440' : i % 3 === 0 ? '2440' : i % 4 === 0 ? '2000' : '2300';
-    const dw = i % 2 === 0 ? '鐗�' : i % 3 === 0 ? '骞崇背' : i % 4 === 0 ? '鍖�' : '鍚�';
-    now.setDate(now.getDate() + 1);
-    gridOptions.data.push({
-      cgdh: CGNo,
-      thdh: thdh,
-      h: t,
-      xh: xh,
-      wlbh: wlNo,
-      wlmc: wlmc,
-      gys: gys,
-      w: w,
-      g: h,
-      dw: dw,
-      cgzt: s,
-      rq: dayjs(now).format('YYYY-MM-DD'),
-      yl: randomSumInt,
-      sl: randomOrderInt,
-      xsdh: xhdh,
-      je: randomInt,
-      6: '139xxxxxxxx',
-
-    })
-  }
-
-}
-
-
-//缁勪欢鎺ユ敹鍙傛暟
-const gridOptions = reactive({
-  border: "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe: true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true, height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
-  showFooter: true,//鏄剧ず鑴�
-  printConfig: {},
-  importConfig: {},
-  exportConfig: {},
-  scrollY: {enabled: true},//寮�鍚櫄鎷熸粴鍔�
-  showOverflow: true,
-  columnConfig: {
-    resizable: true,
-    useKey: true
-  },
-  filterConfig: {   //绛涢�夐厤缃」
-    remote: true
-  },
-  customConfig: {
-    storage: true
-  },
-  editConfig: {
-    trigger: 'click',
-    mode: 'row',
-    showStatus: true
-  },
-  columns: [
-    {type: 'expand', title: '', fixed: "left", slots: {content: 'content'}, width: 50},//璇︽儏
-    {title: '鎿嶄綔', width: '8%', slots: {default: 'button_slot'}, fixed: "left"},
-    {type: 'checkbox', fixed: "left", title: '', width: 50},
-    {type: 'seq', fixed: "left", title: ' ', width: 50},
-
-
-    {
-      field: 'thdh',
-      width: '10%',
-      title: '閫�璐у崟鍙�',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'cgdh',
-      width: '10%',
-      title: '閲囪喘鍗曞彿',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: 'cgzt', width: '10%', title: '鐘舵��', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: 'gys',
-      width: '10%',
-      title: '渚涘簲鍟�',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'wlbh',
-      width: '10%',
-      title: '鐗╂枡缂栧彿',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'wlmc',
-      width: '10%',
-      title: '鐗╂枡鍚嶇О',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: 'w', width: '8%', title: '瀹藉害', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'g', width: '8%', title: '楂樺害', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'h', width: '8%', title: '鍘氬害', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'xh', width: '8%', title: '鍨嬪彿', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'dw', width: '8%', title: '鍗曚綅', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: '6',
-      width: '12%',
-      title: '涓嶅惈绋庡崟浠�',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: 'sl', width: '8%', title: '鏁伴噺', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: 'sl',
-      width: '12%',
-      title: '宸查噰璐暟閲�',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: 'je', width: '8%', title: '閲戦', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: 'je',
-      width: '12%',
-      title: '涓嶅惈绋庨噾棰�',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: '6', width: '8%', title: '绋庣巼', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'sl', width: '8%', title: '搴撳瓨', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'yl', width: '10%', title: '鍛ㄧ敤閲�', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'yl', width: '10%', title: '鏈堢敤閲�', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: 'cgzt',
-      width: '10%',
-      title: '鍗曟嵁鐘舵��',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'xsdh',
-      width: '10%',
-      title: '閿�鍞崟鍙�',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'rq',
-      width: '10%',
-      title: '鍒跺崟鏃ユ湡',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: '6', width: '10%', title: '鍒跺崟浜�', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: '6',
-      width: '10%',
-      title: '閲囪喘閮ㄩ棬',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: '6',
-      width: '10%',
-      title: '閲囪喘缁勭粐',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: '6', width: '10%', title: '澶囨敞', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}
-  ],//琛ㄥご鍙傛暟
-  toolbarConfig: {
-    buttons: [{type: 'text'}, {
-      'name': '閫�璐ц褰�',
-
-      'code': 'Log'
-    },
-      {
-        'name': '纭閫�璐�',
-        status: 'primary',
-        'code': 'Sure'
-      }],
-    import: false,
-    export: true,
-    print: true,
-    zoom: true,
-    custom: true,
-    style: 'paddling-left:10px'
-  },//琛ㄥご鎸夐挳
-  data: [],//table body瀹為檯鏁版嵁
-  mergeFooterItems: [
-    {row: 0, col: 0, rowspan: 1, colspan: 4}
-  ],//鍚堝苟鑴�
-  footerMethod({columns, data}) {//椤佃剼鍑芥暟
-    return [
-      columns.map((column, columnIndex) => {
-        if (columnIndex === 0) {
-          return '鍚堣:'
-        }
-        /* if (props.tableProp.footList.includes(column.field)) {
-           return sumNum(data, column.field)
-         }*/
-        return ''
-      })
-    ]
-  },
-
-})
-
-
-//璇︽儏妗� 閮ㄥ垎2
-const showCGDH = ref();
-const showDetails = ref(false);
-let detailData = [];
-const cellClickEvent = ({row}) => {
-  if (isQueryColumnId === false) {
-    queryColumnId();
-  }
-
-  detailData = list.map(field => {
-    return {label: queryColumnsTitle(field), value: row[field]}
-  })
-  showDetails.value = true;
-  showCGDH.value = row['cgdh'];
-}
-
-//鑾峰彇琛ㄥ垪
-let list = [];
-let columnIndex = 4;//鍒楁爣澶翠粠绗嚑鍒楀紑濮嬬殑
-let isQueryColumnId = false;
-const queryColumnId = () => {
-
-  while (columnIndex < gridOptions.columns.length) {
-    list.push(gridOptions.columns[columnIndex].field);
-    columnIndex++;
-  }
-  isQueryColumnId = true;
-  return list;
-}
-
-//鑾峰彇琛ㄥ垪鍚�
-function queryColumnsTitle(cn) {
-  let i = 0;
-  while (i < gridOptions.columns.length + 1) {
-    if (gridOptions.columns[i].field === cn) {
-      return gridOptions.columns[i].title;
-    }
-    i++;
-  }
-}
-
-// 璇︽儏妗嗛儴鍒�2 缁撴潫
-
-const SureReturn = () => {
-
-  MessageConfirmShow('閫�璐�', '鏄惁纭閫�璐э紵')
-
-}
-
-//璇︽儏妗� 閮ㄥ垎2 缁撴潫
-
-
-const now = new Date()
-
-//鏃堕棿蹇嵎閫夋嫨
-const datevalue = ref('')
-const shortcuts = [
-  {
-    text: '杩戜竴鍛�',
-    value: () => {
-      const end = new Date()
-      const start = new Date()
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
-      return [start, end]
-    },
-  },
-  {
-    text: '杩戜竴涓湀',
-    value: () => {
-      const end = new Date()
-      const start = new Date()
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
-      return [start, end]
-    },
-  },
-  {
-    text: '杩戜笁涓湀',
-    value: () => {
-      const end = new Date()
-      const start = new Date()
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
-      return [start, end]
-    },
-  },
-]
-
-
-//椤甸潰閫昏緫浠g爜鎵ц
-function logicExecute(type) {
-  const $grid = xGrid.value
-  switch (type) {
-    case '纭畾':
-      //澶氶�夐��璐ч�昏緫浠g爜TODO
-      MessageShow('鎿嶄綔鎴愬姛锛�', 'success');
-      break;
-    case '閫�璐�':
-      //鍗曢��璐ч�昏緫浠g爜TODO
-      MessageShow('鎿嶄綔鎴愬姛锛�', 'success');
-      break;
-    default:
-      MessageShow('鏈煡鎿嶄綔锛�', 'error');
-      break;
-  }
-  return true;
-}
-
-
-//鎻愮ず淇℃伅
-//淇℃伅鍐呭锛屾樉绀烘柟寮忥紝鏄剧ず鏍囬锛岀被鍨�
-const MessageShow = (content, type = 'success') => {
-  ElMessage({
-    message: content,
-    type: type,
-    showClose: true,
-  })
-}
-
-//鎿嶄綔纭绫讳俊鎭細鎿嶄綔绫诲瀷锛屾彁绀哄唴瀹癸紝鎻愮ず鏍囧ご锛屾彁绀虹被鍨�
-const MessageConfirmShow = (czType, content, title = '鎿嶄綔纭鎻愮ず', type = 'warning') => {
-  ElMessageBox.confirm(
-      content,
-      title,
-      {
-        cancelButtonText: '鍙栨秷',
-        confirmButtonText: '纭畾',
-        type: type,
-        center: true,
-      }
-  )
-      //鐐瑰嚮浜嗙‘瀹�
-      .then(() => {
-
-        logicExecute(czType);
-
-        return true;
-      })
-      //鐐瑰嚮浜嗗彇娑�
-      .catch(() => {
-        return false;
-      })
-}
-
-//寮圭獥淇℃伅
-const MessageAlertShow = (content, title, type = 'info') => {
-
-  ElMessageBox.alert(content, title, {
-    // 绂佹鑷姩瀵圭劍
-    //autofocus: false,
-    confirmButtonText: 'OK',
-    /*callback: (action: Action) => {
-      MessageShow(`action: ${action}`,type)
-    },*/
-  })
-}
-
-</script>
-
-
-<style scoped>
-:deep(.v-column-label div span) {
-  font-weight: bold;
-}
-</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/StockBasicData/Storage.vue b/UI-Project/src/views/StockBasicData/Storage.vue
deleted file mode 100644
index 98a9156..0000000
--- a/UI-Project/src/views/StockBasicData/Storage.vue
+++ /dev/null
@@ -1,603 +0,0 @@
-<template>
-  <el-container>
-    <el-header class="m-header" style="height: auto">
-      <el-row :gutter="10" style="margin-bottom: 5px">
-        <el-col :span="7">
-          <el-date-picker
-              v-model="datevalue"
-              type="daterange"
-              unlink-panels
-              range-separator="鍒�"
-              start-placeholder="寮�濮嬫棩鏈�"
-              end-placeholder="缁撴潫鏃ユ湡"
-              :shortcuts="shortcuts"
-
-              format="YYYY/MM/DD"
-              value-format="YYYY-MM-DD"
-          />
-
-        </el-col>
-        <el-col :span="2">
-          <el-button
-              id="select"
-              type="primary"
-              :icon="Search"
-              @click="BtnSearchPurchaseOrder">鏌ヨ
-          </el-button>
-        </el-col>
-
-      </el-row>
-
-
-    </el-header>
-    <el-main style="padding-top: 5px;height:100%">
-      <vxe-grid
-
-          max-height="600"
-          @filter-change="filterChanged"
-          class="mytable-scrollbar"
-          ref="xGrid"
-          v-bind="gridOptions"
-          v-on="gridEvents"
-
-          @cell-dblclick="cellClickEvent"
-
-      >
-
-        <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
-        <template #content="{ row }">
-          <ul class="expand-wrapper">
-            <li v-for="(item,index) in gridOptions.columns" v-show="item.field!==undefined ">
-              <span style="font-weight: bold">{{ item.title + ':  ' }}</span>
-              <span>{{ row[item.field] }}</span>
-            </li>
-          </ul>
-        </template>
-
-        <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
-        <template #button_slot="{ row }">
-          <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">缂栬緫</el-button>
-          <el-button @click="getTableRow(row,'look')" link type="primary" size="small">鏌ョ湅</el-button>
-          <!--          <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">鍒犻櫎</el-button>-->
-          <!--          <el-button @click="cellClickEvent" link type="primary" size="small">璇︽儏</el-button>-->
-        </template>
-
-
-        <template #num1_filter="{ column, $panel }">
-          <div>
-            <div v-for="(option, index) in column.filters" :key="index">
-              <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
-            </div>
-          </div>
-        </template>
-      </vxe-grid>
-
-      <!--      璇︽儏妗� 閮ㄥ垎1-->
-      <vxe-modal v-model="showDetails" title="鏌ョ湅璇︽儏" width="600" height="80%" :mask="false" :lock-view="false"
-                 resize>
-        <el-container>
-          <el-header height="35px"
-                     style="margin: 0;padding: 0">
-
-            <el-input v-model="showCGDH" placeholder="閲囪喘鍗曞彿" disabled>
-              <template #prepend>閲囪喘鍗曞彿锛�</template>
-            </el-input>
-          </el-header>
-          <el-main>
-            <template #default>
-              <vxe-table
-                  border="inner"
-                  auto-resize
-                  show-overflow
-                  max-height="400"
-                  :row-config="{isHover: true}"
-                  :show-header="false"
-                  :sync-resize="showDetails"
-                  :data="detailData">
-                <vxe-column field="label" width="30%" class-name="v-column-label"></vxe-column>
-                <vxe-column field="value"></vxe-column>
-              </vxe-table>
-            </template>
-          </el-main>
-          <el-footer height="40px">
-            <el-row>
-              <el-col :offset="20" :span="4">
-                <el-button
-                    id="Sure"
-                    type="primary"
-                    @click="SureStorage"
-                >纭鍏ュ簱
-                </el-button>
-              </el-col>
-
-            </el-row>
-          </el-footer>
-        </el-container>
-      </vxe-modal>
-      <!--      璇︽儏妗� 閮ㄥ垎1 缁撴潫-->
-
-
-    </el-main>
-  </el-container>
-
-
-</template>
-
-
-<script setup>
-import {ref} from "vue";
-import {reactive} from "vue";
-import {useRouter} from 'vue-router'
-import {Search} from "@element-plus/icons-vue";
-import dayjs from "dayjs";
-import {VXETable} from "vxe-table";
-import {ElMessage, ElMessageBox} from "element-plus";
-
-let router = useRouter()
-
-
-const getTableRow = (row, type) => {
-  switch (type) {
-    case 'edit' : {
-      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
-      router.push({path: '/main/purchaseOrder/DetailsPurchaseOrder', query: {id: row.id}});
-
-      break
-    }
-    case 'look': {
-      /*this.detailData = ['name', 'nickname', 'role', 'sex', 'age', 'amount', 'address'].map(field => {
-        return { label: field, value: row[field] }
-      })*/
-      //this.showDetails = true
-      break
-    }
-    case 'delete': {
-      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅' + row.id)
-      break
-    }
-  }
-}
-
-const xGrid = ref()
-const gridEvents = {
-  toolbarButtonClick({code}) {
-    const $grid = xGrid.value
-    if ($grid) {
-      switch (code) {
-        case 'Sure': {
-          if ($grid.getCheckboxRecords().length === 0) {
-            MessageShow('璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�', 'warning');
-            //openAlert({type: 'message', content: '璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�', status: 'warning'})
-            //VXETable.modal.message( '璇烽�夋嫨涓�鏉℃暟鎹紒')
-            return
-          } else {
-            const type = VXETable.modal.confirm('鎮ㄩ�夋嫨浜�' + $grid.getCheckboxRecords().length + '鏉℃暟鎹紒,鏄惁纭鍏ュ簱锛�');
-            //openAlert({type:'alert', content: '鎴愬姛鍏ュ簱'+$grid.getCheckboxRecords().length+'鏉℃暟鎹紒', status: 'success' })
-            //VXETable.modal.message( '璇烽�夋嫨涓�鏉℃暟鎹紒')
-            return
-          }
-          break
-        }
-        case 'Log': {
-
-          //openAlert({type: 'alert', content: '鐐瑰嚮浜嗛��璐ц褰�', status: 'success'})
-          MessageConfirmShow("閫�璐ц褰�", "鐐瑰嚮浜嗛��璐ц褰�", "", 'success')
-          break
-        }
-      }
-    }
-  },
-  toolbarToolClick({code}) {
-    const $grid = xGrid.value
-    if ($grid) {
-      switch (code) {
-        case 'myPrint': {
-          $grid.print()
-          break
-        }
-      }
-    }
-  },
-}
-
-const openAlert = (options) => {
-  if (options.type === 'message') {
-    VXETable.modal.message(options)
-  } else {
-    VXETable.modal.alert(options)
-  }
-
-}
-const closeAlert = (id) => {
-  VXETable.modal.close(id)
-}
-
-
-//鏌ヨ璋冪敤浜嬩欢
-const BtnSearchPurchaseOrder = () => {
-  //寮�濮嬫椂闂达紝缁撴潫鏃堕棿鑾峰彇
-  //MessageShow(datevalue._rawValue[0]+"\r\n鏃堕棿2\r\n"+datevalue._rawValue[1]);
-
-  for (let i = 1; i < 6; i++) {
-    const randomInt = Math.floor(Math.random() * 999) + 1000;//4浣嶆暟闅忔満鏁�
-    const randomSumInt = Math.floor(Math.random() * 99) + 10;//2浣嶆暟闅忔満鏁�
-    const randomOrderInt = Math.floor(Math.random() * 99) + 100;//3浣嶆暟闅忔満鏁�
-    const t = i % 2 === 0 ? 5 : 6;
-    const s = i % 2 === 0 ? '鍏ュ簱' : i % 3 === 0 ? '寰呭鏍�' : '宸查噰璐�';
-    const rkdh = i % 2 === 0 ? 'RKID' + randomOrderInt : i % 3 === 0 ? '' : '';
-    const CGNo = 'NGCG231200' + randomOrderInt;//閲囪喘缂栧彿
-    const wlNo = 'NGWL1000' + randomInt;
-    const xh = 'NGXH' + randomSumInt;
-    const wlmc = 'WLMC' + randomInt;
-    const gys = '渚涘簲鍟�' + randomSumInt;
-    const xhdh = 'NG231200' + randomOrderInt;
-    const w = i % 2 === 0 ? '3300' : i % 3 === 0 ? '3660' : i % 4 === 0 ? '2250' : '2580';
-    const h = i % 2 === 0 ? '2440' : i % 3 === 0 ? '2440' : i % 4 === 0 ? '2000' : '2300';
-    const dw = i % 2 === 0 ? '鐗�' : i % 3 === 0 ? '骞崇背' : i % 4 === 0 ? '鍖�' : '鍚�';
-    now.setDate(now.getDate() + 1);
-    gridOptions.data.push({
-      cgdh: CGNo,
-      rkdh: rkdh,
-      h: t,
-      xh: xh,
-      wlbh: wlNo,
-      wlmc: wlmc,
-      gys: gys,
-      w: w,
-      g: h,
-      dw: dw,
-      cgzt: s,
-      rq: dayjs(now).format('YYYY-MM-DD'),
-      yl: randomSumInt,
-      sl: randomOrderInt,
-      xsdh: xhdh,
-      je: randomInt,
-      6: '139xxxxxxxx',
-
-    })
-  }
-
-}
-
-
-//缁勪欢鎺ユ敹鍙傛暟
-const gridOptions = reactive({
-  border: "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe: true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true, height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
-  showFooter: true,//鏄剧ず鑴�
-  printConfig: {},
-  importConfig: {},
-  exportConfig: {},
-  scrollY: {enabled: true},//寮�鍚櫄鎷熸粴鍔�
-  showOverflow: true,
-  //showDetails: false,//寮圭獥 鏄惁鏄剧ず
-  columnConfig: {
-    resizable: true,
-    useKey: true
-  },
-  filterConfig: {   //绛涢�夐厤缃」
-    remote: true
-  },
-  customConfig: {
-    storage: true
-  },
-  editConfig: {
-    trigger: 'click',
-    mode: 'row',
-    showStatus: true
-  },
-  columns: [
-    {type: 'expand', title: '', fixed: "left", slots: {content: 'content'}, width: 50},//璇︽儏
-    {title: '鎿嶄綔', width: '8%', slots: {default: 'button_slot'}, fixed: "left"},
-    {type: 'checkbox', fixed: "left", title: '', width: 50},
-    {type: 'seq', fixed: "left", title: ' ', width: 50},
-
-
-    {
-      field: 'rkdh',
-      width: '10%',
-      title: '鍏ュ簱鍗曞彿',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'cgdh',
-      width: '10%',
-      title: '閲囪喘鍗曞彿',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: 'cgzt', width: '10%', title: '鐘舵��', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: 'gys',
-      width: '10%',
-      title: '渚涘簲鍟�',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'wlbh',
-      width: '10%',
-      title: '鐗╂枡缂栧彿',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'wlmc',
-      width: '10%',
-      title: '鐗╂枡鍚嶇О',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: 'w', width: '8%', title: '瀹藉害', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'g', width: '8%', title: '楂樺害', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'h', width: '8%', title: '鍘氬害', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'xh', width: '8%', title: '鍨嬪彿', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'dw', width: '8%', title: '鍗曚綅', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: '6',
-      width: '12%',
-      title: '涓嶅惈绋庡崟浠�',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: 'sl', width: '8%', title: '鏁伴噺', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: 'sl',
-      width: '12%',
-      title: '宸查噰璐暟閲�',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: 'je', width: '8%', title: '閲戦', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: 'je',
-      width: '12%',
-      title: '涓嶅惈绋庨噾棰�',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: '6', width: '8%', title: '绋庣巼', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'sl', width: '8%', title: '搴撳瓨', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'yl', width: '10%', title: '鍛ㄧ敤閲�', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {field: 'yl', width: '10%', title: '鏈堢敤閲�', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: 'cgzt',
-      width: '10%',
-      title: '鍗曟嵁鐘舵��',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'xsdh',
-      width: '10%',
-      title: '閿�鍞崟鍙�',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: 'rq',
-      width: '10%',
-      title: '鍒跺崟鏃ユ湡',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: '6', width: '10%', title: '鍒跺崟浜�', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true},
-    {
-      field: '6',
-      width: '10%',
-      title: '閲囪喘閮ㄩ棬',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {
-      field: '7',
-      width: '10%',
-      title: '閲囪喘缁勭粐',
-      filters: [{data: ''}],
-      slots: {filter: 'num1_filter'},
-      sortable: true
-    },
-    {field: '8', width: '10%', title: '澶囨敞', filters: [{data: ''}], slots: {filter: 'num1_filter'}, sortable: true}
-  ],//琛ㄥご鍙傛暟
-  toolbarConfig: {
-    buttons: [{type: 'text'/*,name:'璁㈠崟鍏ュ簱'*/}, {
-      'name': '鍏ュ簱璁板綍',
-
-      'code': 'Log'
-    },
-      {
-        'name': '纭鍏ュ簱',
-        status: 'primary',
-        'code': 'Sure'
-      }],
-    import: false,
-    export: true,
-    print: true,
-    zoom: true,
-    custom: true,
-    style: 'paddling-left:10px'
-  },//琛ㄥご鎸夐挳
-  data: [],//table body瀹為檯鏁版嵁
-  mergeFooterItems: [
-    {row: 0, col: 0, rowspan: 1, colspan: 4}
-  ],//鍚堝苟鑴�
-  footerMethod({columns, data}) {//椤佃剼鍑芥暟
-    return [
-      columns.map((column, columnIndex) => {
-        if (columnIndex === 0) {
-          return '鍚堣:'
-        }
-        /* if (props.tableProp.footList.includes(column.field)) {
-           return sumNum(data, column.field)
-         }*/
-        return ''
-      })
-    ]
-  },
-
-})
-
-
-
-//璇︽儏妗� 閮ㄥ垎2
-const showCGDH = ref();
-const showDetails = ref(false);
-let detailData = [];
-const cellClickEvent = ({row}) => {
-  if(isQueryColumnId===false){
-    queryColumnId();
-  }
-
-  detailData = list.map(field => {
-    return {label: queryColumnsTitle(field), value: row[field]}
-  })
-
-  showDetails.value = true;
-  showCGDH.value = row['cgdh'];
-}
-
-//鑾峰彇琛ㄥ垪
-let list = [];
-let columnIndex = 4;//鍒楁爣澶翠粠绗嚑鍒楀紑濮嬬殑
-let isQueryColumnId = false;
-const queryColumnId = () => {
-  while (columnIndex < gridOptions.columns.length) {
-    list.push(gridOptions.columns[columnIndex].field);
-    columnIndex++;
-  }
-  isQueryColumnId = true;
-  return list;
-}
-
-//鑾峰彇琛ㄥ垪鍚�
-function queryColumnsTitle(cn) {
-  let i = 0;
-  while (i < gridOptions.columns.length + 1) {
-    if (gridOptions.columns[i].field === cn) {
-      return gridOptions.columns[i].title;
-    }
-    i++;
-  }
-}
-//璇︽儏妗� 閮ㄥ垎2 缁撴潫
-
-
-const SureStorage = () => {
-  MessageShow('纭鍏ュ簱鎴愬姛');
-
-}
-
-
-const now = new Date()
-
-//鏃堕棿蹇嵎閫夋嫨
-const datevalue = ref('')
-const shortcuts = [
-  {
-    text: '杩戜竴鍛�',
-    value: () => {
-      const end = new Date()
-      const start = new Date()
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
-      return [start, end]
-    },
-  },
-  {
-    text: '杩戜竴涓湀',
-    value: () => {
-      const end = new Date()
-      const start = new Date()
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
-      return [start, end]
-    },
-  },
-  {
-    text: '杩戜笁涓湀',
-    value: () => {
-      const end = new Date()
-      const start = new Date()
-      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
-      return [start, end]
-    },
-  },
-]
-
-
-//椤甸潰閫昏緫浠g爜鎵ц
-function logicExecute(type) {
-  const $grid = xGrid.value
-  switch (type) {
-    case '鍏ュ簱':
-      //鍏ュ簱閫昏緫浠g爜TODO
-      MessageShow('鍏ュ簱鎴愬姛锛�', 'success');
-      break;
-    case '閫�璐�':
-      //閫�璐ч�昏緫浠g爜TODO
-      MessageShow('閫�璐ф垚鍔燂紒', 'success');
-      break;
-    default:
-      MessageShow('鏈煡鎿嶄綔锛�', 'error');
-      break;
-  }
-  return true;
-}
-
-//鎻愮ず淇℃伅
-const MessageShow = (content, type = 'success') => {
-  ElMessage({
-    message: content,
-    type: type,
-    showClose: true,
-  })
-}
-
-//鎿嶄綔纭绫讳俊鎭細鎿嶄綔绫诲瀷锛屾彁绀哄唴瀹癸紝鎻愮ず鏍囧ご锛屾彁绀虹被鍨�
-const MessageConfirmShow = (czType, content, title = '鎿嶄綔纭鎻愮ず', type = 'warning') => {
-  ElMessageBox.confirm(
-      content,
-      title,
-      {
-        cancelButtonText: '鍙栨秷',
-        confirmButtonText: '纭畾',
-        type: type,
-        center: true,
-      }
-  )
-      //鐐瑰嚮浜嗙‘瀹�
-      .then(() => {
-        return logicExecute(czType);
-
-      })
-      //鐐瑰嚮浜嗗彇娑�
-      .catch(() => {
-        return false;
-      })
-}
-
-</script>
-
-
-<style scoped>
-:deep(.v-column-label div span) {
-  font-weight: bold;
-}
-
-
-</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/TL/Temperedlayout/SelectLayout.vue b/UI-Project/src/views/TL/Temperedlayout/SelectLayout.vue
deleted file mode 100644
index d53cd15..0000000
--- a/UI-Project/src/views/TL/Temperedlayout/SelectLayout.vue
+++ /dev/null
@@ -1,176 +0,0 @@
-<script setup>
-
-import {reactive} from "vue";
-import {useRouter} from  'vue-router'
-let router=useRouter()
-const getTableRow = (row,type) =>{
-  switch (type) {
-    case 'edit' :{
-      //alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
-      router.push({path: '/main/ingredients/CreateIngredients', query: { id: row.id }})
-      break
-    }
-    case 'delete':{
-      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
-      break
-    }
-  }
-}
-
-
-
-//瀛愮粍浠舵帴鏀跺弬鏁�
-
-const gridOptions = reactive({
-  border:  "full",//琛ㄦ牸鍔犺竟妗�
-  keepSource: true,//淇濇寔婧愭暟鎹�
-  align: 'center',//鏂囧瓧灞呬腑
-  stripe:true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true,height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
-  showFooter: true,//鏄剧ず鑴�
-  printConfig: {},
-  importConfig: {},
-  exportConfig: {},
-  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
-  showOverflow:true,
-  columnConfig: {
-    resizable: true,
-    useKey: true
-  },
-  filterConfig: {   //绛涢�夐厤缃」
-    remote: true
-  },
-  customConfig: {
-    storage: true
-  },
-  editConfig: {
-    trigger: 'click',
-    mode: 'row',
-    showStatus: true
-  },//琛ㄥご鍙傛暟
-  columns:[
-    {type:'expand',fixed:"left",slots: { content:'content' },width: '50'},
-    // { type: 'checkbox',fixed:"left", title: '閫夋嫨', width: '80' },
-    {title: '鎿嶄綔', width: '110', slots: { default: 'button_slot' },fixed:"left"},
-    { type: 'seq',fixed:"left", title: '鑷簭', width: '80' },
-    {field: 'materialCode', width:'150', title: '鐗╂枡缂栫爜', sortable: true,editRender: { name: 'input', attrs: { placeholder: '' } } },
-    {field: 'materialName', width: '150',title: '鐗╂枡鍚嶇О', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'origin', width: '120',title: '浜у湴', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'width', width: '100',title: '瀹藉害', sortable: true},
-    {field: 'height',width: '100', title: '楂樺害', sortable: true,showOverflow:"ellipsis"},
-    {field: 'thickness', width: '80',title: '鍘氬害', sortable: true},
-    {field: 'model',width: '100', title: '鍨嬪彿', sortable: true},
-    {field: 'conversionRate', width: '100',title: '鎹㈢畻鐜�', sortable: true},
-    {field: 'unit',width: '100', title: '鍗曚綅', sortable: true},
-    {field: 'conversionUnit', width: '80',title: '鎹㈢畻鍗曚綅', sortable: true},
-    {field: 'shelfLife',width: '100', title: '淇濊川鏈�', sortable: true},
-    {field: 'weight', width: '100',title: ' 閲嶉噺', sortable: true},
-    {field: 'quantity',width: '110', title: '鏁伴噺', sortable: true},
-    {field: 'inventoryOrganization',width: '100', title: '搴撳瓨缁勭粐', sortable: true},
-    {field: 'remark',width: '80', title: '澶囨敞', sortable: true},
-
-  ],//琛ㄥご鎸夐挳
-  toolbarConfig: {
-
-    import: false,
-    export: true,
-    print: true,
-    zoom: true,
-    custom: true
-  },
-  data:  [
-    {
-      "materialCode": 700900000000941,
-      "materialName": "涓濊闃叉檼鎵嬪濂楄",
-      "origin": "00",
-      "width": "00",
-      "height": "00",
-      "thickness":'00',
-      "model": "鏈嶉グ",
-      "conversionRate": "1000",
-      "unit": "鍙�",
-      "conversionUnit": "1",
-      "shelfLife": "12涓湀",
-      "weight": "0.0000",
-      "quantity": "10000",
-      "inventoryOrganization": "浜哄伐搴�",
-      "remark": "娴嬭瘯",
-    },
-    {
-      "materialCode": 700900000000941,
-      "materialName": "涓濊闃叉檼鎵嬪濂楄",
-      "origin": "00",
-      "width": "00",
-      "height": "00",
-      "thickness":'00',
-      "model": "鏈嶉グ",
-      "conversionRate": "1000",
-      "unit": "鍙�",
-      "conversionUnit": "1",
-      "shelfLife": "12涓湀",
-      "weight": "0.0000",
-      "quantity": "10000",
-      "inventoryOrganization": "浜哄伐搴�",
-      "remark": "娴嬭瘯",
-    },
-  ],//table body瀹為檯鏁版嵁
-  footerMethod ({ columns, data }) {//椤佃剼鍑芥暟
-    return[
-      columns.map((column, columnIndex) => {
-        if (columnIndex === 0) {
-          return '鍚堣:'
-        }
-        // if (props.tableProp.footList.includes(column.field)) {
-        //   return sumNum(data, column.field)
-        // }
-        return ''
-      })
-    ]
-  }
-
-})
-
-
-
-</script>
-
-<template>
-  <div class="main-div-customer">
-    <vxe-grid
-        max-height="100%"
-        @filter-change="filterChanged"
-        class="mytable-scrollbar"
-        ref="xGrid"
-        v-bind="gridOptions"
-
-    >
-      <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
-      <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
-      
-
-      <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
-      <template #button_slot="{ row }">
-        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">缂栬緫</el-button>
-        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">鍒犻櫎</el-button>
-      </template>
-      <!--      涓嬫媺璇︽儏寰幆鏄剧ず涓枃   -->
-      <template #num1_filter="{ column, $panel }">
-        <div>
-          <div v-for="(option, index) in column.filters" :key="index">
-            <input type="type" v-model="option.data" @input="changeFilterEvent($event, option, $panel)"/>
-          </div>
-        </div>
-      </template>
-
-
-    </vxe-grid>
-  </div>
-</template>
-
-<style scoped>
-.main-div-customer{
-  width: 99%;
-  height: 100%;
-}
-</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/TL/Temperedlayout/Temperedlayout.vue b/UI-Project/src/views/TL/Temperedlayout/Temperedlayout.vue
deleted file mode 100644
index 9fc3091..0000000
--- a/UI-Project/src/views/TL/Temperedlayout/Temperedlayout.vue
+++ /dev/null
@@ -1,204 +0,0 @@
-<!--  鐗╂枡璧勬枡  -->
-
-
-<script setup>
-import { ref } from "vue";
-import { ArrowLeftBold, ArrowRight, Search } from "@element-plus/icons-vue";
-import request from "@/utils/request";
-import deepClone from "@/utils/deepClone";
-import { ElMessage } from "element-plus";
-import { useRouter } from "vue-router";
-
-
-const router = useRouter()
-let indexFlag = $ref(1)
-function changeRouter(index) {
-  indexFlag = index
-}
-
-
-</script>
-
-<script>
-export default {
-  mounted() {
-    //鑾峰彇鏁版嵁
-    var data="ProcessId="+"P24032508";
-    request.get("/TidyUpGlassModule/SelectTerritoryInfo?"+data).then((res) => {
-      if (res.code == 200) {
-        var StoveCount=0;
-        var temperid;
-        for(var i=0;i<res.data.length;i++){
-          if (temperid != res.data[i].layoutid) {
-            StoveCount++;
-            temperid=res.data[i].layoutid;
-          }
-        }   
-        // console.log(res.data);
-        this.CanvaDraws("mycanvas",res.data,StoveCount);
-        
-      } else {
-        ElMessage.warning(res.msg)
-        router.push("/login")
-      }
-    });
-
-    
-
-  },
-  methods: {
-    //Canva(id,鍩虹鏁版嵁,椤甸潰闀匡細瀹為檯闀匡紝鏄剧ず琛屽唴鐗堝浘鏁帮紝 )
-    //鍩虹鏁版嵁锛氬疄闄呯倝闀�,瀹為檯鐐夊, 灏忕墖X杞�, 灏忕墖y杞�, 灏忕墖闀�, 灏忕墖瀹斤紝鏄剧ず鏁版嵁锛堝昂瀵�,ID,娴佺▼鍗″彿,鐗堝浘鍙凤級
-    CanvaDraws(id,Datas,StoveCount) {
-        //var StoveCount=43;//鐐夋暟
-        var ArrangementMode='linefeed';//鎺掑竷鏂瑰紡锛歭inefeed(鎹㈣) /Wholeline  鏁磋
-        var RowMaxCount=4;//姣忚鏈�澶氭樉绀虹殑鍥炬暟
-        var StoveWidth=3000; //瀹為檯鐐夊 2850
-        var StoveLength=5500;//瀹為檯鐐夐暱 5000
-        var StoveColor='#CFC8C5';//鐐夊瓙鑳屾櫙棰滆壊
-        
-
-        var StoveIntervalX=30; //椤甸潰姣忎竴鐐変箣闂寸殑闂磋窛X  px
-        var StoveIntervalY=50; //椤甸潰姣忎竴鐐変箣闂寸殑闂磋窛Y  px
-
-        var HtmlWidth=1800;   //椤甸潰妯悜
-        //var actualWidth=12000;//椤甸潰妯悜鎵�瀵瑰簲鐨勫疄闄呴暱搴�
-        var actualWidth=StoveWidth*RowMaxCount;//椤甸潰妯悜鎵�瀵瑰簲鐨勫疄闄呴暱搴�
-
-        var Bli = actualWidth / (HtmlWidth-StoveIntervalX*RowMaxCount);//姣斾緥锛氬疄闄呴暱搴m/椤甸潰闀垮害px
-
-        var StoveCross=StoveWidth/Bli;   //椤甸潰鐐夊瓙妯悜 鍍忕礌
-        var StoveVertical=StoveLength/Bli;//椤甸潰鐐夊瓙绾靛悜 鍍忕礌
-
-        var Font1=(StoveCross*0.05);
-        var Font2=(StoveCross*0.028);
-        // var TerritoryWidth=dataTempered.loadwidth; //瀹為檯鐗堝浘瀹�
-        //   var TerritoryLength=dataTempered.loadlength;//瀹為檯鐗堝浘闀�
-        //   var TerritoryColor='#0DB637';//鐗堝浘鑳屾櫙棰滆壊
-
-        //   var TerritoryCross=TerritoryWidth/Bli;   //椤甸潰鐗堝浘妯悜 鍍忕礌
-        //   var TerritoryVertical=TerritoryLength/Bli;//椤甸潰鐗堝浘绾靛悜 鍍忕礌
-        console.log(Font1);
-        
-        var canva = this.$refs[id];
-        var content = canva.getContext('2d');
-        canva.width = HtmlWidth;
-        canva.height = StoveCount%RowMaxCount==0?((StoveVertical+StoveIntervalY)*(StoveCount/RowMaxCount)):((StoveVertical+StoveIntervalY)*(StoveCount/RowMaxCount+1));
-        //console.log(StoveCount%RowMaxCount==0?((StoveVertical+StoveIntervalY)*(StoveCount/RowMaxCount)):((StoveVertical+StoveIntervalY)*(StoveCount/RowMaxCount+1)) );
-        var temperid;//鍒濆鐗堝浘
-        var Xlayout = 0; //鐐夊瓙X杞磋捣鐐�
-        var Ylayout = StoveIntervalY; //鐐夊瓙Y杞磋捣鐐�
-        var layoutCount = 0;//鐗堝浘鏁�
-        var row=0;
-        for (var i = 0; i < Datas.length; i++) {
-          var dataTempered = Datas[i];
-
-          var TerritoryWidth=dataTempered.loadwidth; //瀹為檯鐗堝浘瀹�
-          var TerritoryLength=dataTempered.loadlength;//瀹為檯鐗堝浘闀�
-          var TerritoryColor='#0DB637';//鐗堝浘鑳屾櫙棰滆壊
-
-          var TerritoryCross=TerritoryWidth/Bli;   //椤甸潰鐗堝浘妯悜 鍍忕礌
-          var TerritoryVertical=TerritoryLength/Bli;//椤甸潰鐗堝浘绾靛悜 鍍忕礌
-
-          if (temperid != dataTempered.layoutid) {
-            //鐢荤増鍥�  鏇存敼鍩虹鍊嶆暟
-            if(layoutCount>0){
-              Xlayout += StoveCross + StoveIntervalX;
-              if (layoutCount %RowMaxCount== 0) {
-                //鎹㈣
-                Ylayout += StoveVertical+StoveIntervalY;
-                Xlayout=0;
-                row++;
-              }
-            }
-            temperid=dataTempered.layoutid;
-            layoutCount++;
-            content.font ='bold '+Font1+'px Arial' ; //鏂囧瓧鏍峰紡锛氬姞绮� 16鍍忕礌 瀛椾綋Arial
-            content.fillStyle = '#000000'; //瀛椾綋棰滆壊
-            content.textAlign = 'center'; //鏂囧瓧灞呬腑
-            content.fillText((dataTempered.layoutid), (StoveCross / 2+ Xlayout), 50/2+(StoveVertical+50)*row+10);
-            //鐐夊瓙
-            content.fillStyle = StoveColor;
-            content.fillRect(Xlayout, Ylayout, StoveCross, StoveVertical);
-            //鐗堝浘
-            content.fillStyle = TerritoryColor;
-            content.fillRect(Xlayout, Ylayout, TerritoryCross, TerritoryVertical);
-          }
-          
-          var Rx = dataTempered.xaxis / Bli + Xlayout;
-          var Ry = dataTempered.yaxis / Bli + Ylayout;
-          var Rwidth = dataTempered.width / Bli;
-          var Rheight = dataTempered.height / Bli;
-          var Xwidth;
-          var Xheight;
-          content.fillStyle = '#5CADFE';
-          if (dataTempered.rotateangle != 0) {
-            Xwidth = Rwidth;
-            Xheight = Rheight;
-          } else {
-            Xwidth = Rheight;
-            Xheight = Rwidth;
-          }
-          content.fillRect(Rx, Ry, Xwidth, Xheight);
-          content.font = 'bold '+Font2+'px Arial' ; //鏂囧瓧鏍峰紡锛氬姞绮� 16鍍忕礌 瀛椾綋Arial
-          content.fillStyle = '#000000'; //瀛椾綋棰滆壊
-          content.textAlign = 'center'; //鏂囧瓧灞呬腑
-
-          content.fillText(('鐗堝浘:'+dataTempered.layoutid+'-'+dataTempered.sort), (Xwidth / 2) + Rx, (Xheight) / 2 + Ry-Font2);
-          content.fillText((dataTempered.width + '  *  ' + dataTempered.height), (Xwidth / 2) + Rx, (Xheight) / 2 + Ry); //fillText閲岄潰鐨勫彲濉啓鐨勫��(鏂囨湰鍐呭, x鍧愭爣, y鍧愭爣, 鏂囨湰鏈�澶у搴�)
-          content.fillText((dataTempered.processid), (Xwidth / 2) + Rx, (Xheight) / 2 + Ry+Font2);
-          //content.rotate(30*Math.PI/180);
-          content.stroke();
-        }
-    }
-  }
-}
-
-
-</script>
-
-
-
-<template>
-  <div ref="content">
-    <canvas ref="mycanvas"></canvas>
-  </div>
-</template>
-
-<style scoped>
-#main {
-  width: 100%;
-  height: 100%;
-}
-
-
-
-#div-title {
-  height: 5%;
-  width: 100%;
-}
-
-#searchButton {
-  margin-top: -5px;
-  margin-left: 1rem;
-}
-
-#searchButton1 {
-  /* margin-left: 10rem; */
-}
-
-/*main-body鏍峰紡*/
-#main-body {
-  width: 99%;
-  height: 92%;
-  margin-top: 1%;
-}
-
-#select {
-  margin-left: 0.5rem;
-}
-
-:deep(.indexTag .el-breadcrumb__inner) {
-  color: #5CADFE !important;
-}
-</style>
\ No newline at end of file
diff --git a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
index 9d6e547..2795d46 100644
--- a/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
+++ b/UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -1,38 +1,166 @@
 <script setup>
 import {Search} from "@element-plus/icons-vue";
-import {reactive} from "vue";
+import {reactive,  onMounted} from "vue";
 import {useRouter} from "vue-router"
 const router = useRouter()
 
-const dialogFormVisiblea = ref(false)
 import { ref } from 'vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import Landingindication from "./Landingindication.vue";
-// import Landingindicationtwo from "./Landingindicationtwo.vue";
+import Landingindicationtwo from "./Landingindicationtwo.vue";
+import unloadrequest from "@/utils/unloadrequest";
+const dialogFormVisiblea = ref(false)
 
-const tableData = [
-  {
-    id: '1',
-    long: '1005',
-    wide: '183.6',
-    thick: '1991',
-    state: '鏈惎鐢�',
-  },
-  {
-    id: '2',
-    long: '105',
-    wide: '183',
-    thick: '191',
-    state: '鏈惎鐢�'
-  },
-  {
-    id: '2',
-    long: '105',
-    wide: '183',
-    thick: '191',
-    state: '鏈惎鐢�'
-  },
-]
+
+
+const dialogFormVisiblea2 = ref(false)
+
+
+const tableData = reactive([]);
+
+
+
+
+
+// 鏁版嵁
+const loading = ref(false);
+
+
+// 寮规鏄剧ず鎺у埗
+
+const dialogFormVisible = ref(false);
+
+// 琛ㄥ崟鏁版嵁
+const workstationId = ref('');
+const flowCardId = ref('');
+const flowCardOptions = ref([]);
+
+
+// 鏂规硶
+const handleSelectionChange = () => {
+  // 澶勭悊琛ㄦ牸琛岄�夋嫨浜嬩欢
+};
+
+const handleBindRack = (row) => {
+  workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕
+
+  // 鍙戣捣鎺ュ彛璇锋眰鑾峰彇娴佺▼鍗″彿
+    fetchFlowCardId(); 
+
+
+  dialogFormVisiblea.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+};
+
+
+
+//鑾峰彇娴佺▼鍗″彿
+const fetchFlowCardId = async () => {
+  try {
+    const response = await unloadrequest.get('/api/downWorkstation/getflowCardId');
+    console.log(response)
+    if (response.code === 200) {
+      flowCardOptions.value = response.data.map(item => ({ flowcard_id: item.flowcard_id }));
+    } else {
+      ElMessage.error(response.msg);
+    }
+  } catch (error) {
+    console.error(error);
+  }
+};
+//纭
+const handleConfirm = async () => {
+  try {
+    const response = await unloadrequest.post('/api/downWorkstation/updateFlowCardId', {
+      workstationId: workstationId.value,
+      flowCardId: flowCardId.value
+    }); 
+
+    console.log(response)
+    if (response.code == 200) {
+      // 缁戝畾鎴愬姛锛屽鐞嗛�昏緫
+      console.log('缁戝畾鎴愬姛');
+      ElMessage.success(response.message);
+      dialogFormVisiblea.value = false;
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.msg);
+    }
+  } catch (error) {
+    // 澶勭悊閿欒
+    console.error(error);
+  }
+};
+
+
+
+const handleBindRack2 = (row) => {
+  workstationId.value = row.workstationId; // 鍋囪rackNumber鏄灦鍙峰瓧娈电殑灞炴�у悕
+
+
+
+
+  dialogFormVisiblea2.value = true; // 鎵撳紑缁戝畾鏋跺瓙瀵硅瘽妗�
+};
+//娓呴櫎鍐呭
+const handleclear = async () => {
+    try {
+        const response = await unloadrequest.post('/api/downWorkstation/clear', {
+            workstationId: workstationId.value,
+        });
+
+        console.log(response);
+
+        if (response.code === 200) {
+            // 娓呴櫎鎴愬姛鐨勯�昏緫
+            console.log('娓呴櫎鎴愬姛');
+            ElMessage.success(response.message);
+            dialogFormVisiblea2.value = false;
+        } else if (response.code === 400) {
+            // 娓呴櫎澶辫触鐨勯�昏緫
+            console.log('娓呴櫎澶辫触');
+            console.log(response.message); // 鎵撳嵃鏈嶅姟鍣ㄨ繑鍥炵殑閿欒淇℃伅
+            ElMessage.error(response.message);
+            dialogFormVisiblea2.value = false;
+        }
+    } catch (error) {
+        // console.log(error);
+         ElMessage.error("娓呴櫎澶辫触");
+            dialogFormVisiblea2.value = false;
+    }
+};
+
+
+
+
+
+// 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰
+const fetchTableData = async () => {
+  try {
+    // 鍙戦�佽幏鍙栬〃鏍兼暟鎹殑璇锋眰锛屽苟绛夊緟鍝嶅簲
+    const response = await unloadrequest.get('/api/downWorkstation/getone');
+
+    // 妫�鏌ュ搷搴旂姸鎬�
+    if (response.code === 200) {
+      // 鏇存柊琛ㄦ牸鏁版嵁
+      console.log('鎴愬姛鑾峰彇琛ㄦ牸鏁版嵁:', response.data);
+      tableData.splice(0, tableData.length, ...response.data);
+    } else {
+      // 璇锋眰澶辫触锛屾樉绀洪敊璇秷鎭�
+      ElMessage.error(response.msg);
+    }
+  } catch (error) {
+    // 澶勭悊璇锋眰澶辫触鐨勬儏鍐�
+    ElMessage.error('鑾峰彇琛ㄦ牸鏁版嵁澶辫触锛岃閲嶈瘯');
+  }
+};
+
+
+
+
+// initWebSocket();
+onMounted(fetchTableData);
+ setInterval(fetchTableData, 2000)
+
 const open = () => {
   ElMessageBox.confirm(
     '鏄惁鍒犻櫎璇ユ潯淇℃伅?',
@@ -108,6 +236,10 @@
   ],
 })
 
+
+
+
+
 </script>
 
 <template>
@@ -117,53 +249,80 @@
         <el-table height="100%" ref="table" 
         @selection-change="handleSelectionChange"
         :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}">
-          <el-table-column prop="id" align="center" label="涓嬬墖浣�" min-width="80" />
-          <el-table-column prop="long" align="center" label="鏋跺彿" min-width="120" />
-          <el-table-column prop="wide" align="center" label="娴佺▼鍗″彿" min-width="120" />
-          <el-table-column prop="wide" align="center" label="鎬绘暟閲�" min-width="120" />
-          <el-table-column prop="wide" align="center" label="宸茶惤鏋舵暟閲�" min-width="120" />
-          <el-table-column prop="state" align="center" label="鍚敤鐘舵��" min-width="120" />
+          <el-table-column prop="workstationId" align="center" label="涓嬬墖浣�" min-width="80" />
+          <el-table-column prop="workstationId" align="center" label="鏋跺彿" min-width="120" />
+          <el-table-column prop="flowCardId" align="center" label="娴佺▼鍗″彿" min-width="120" />
+          <el-table-column prop="totalquantity" align="center" label="鎬绘暟閲�" min-width="120" />
+          <el-table-column prop="racksnumber" align="center" label="宸茶惤鏋舵暟閲�" min-width="120" />
+          <el-table-column prop="work_state" align="center" label="鐘舵��" min-width="120" />
+          <el-table-column prop="deviceId" align="center" label="璁惧鍙�" min-width="120" />
+          <el-table-column prop="enableState" align="center" label="鍚敤鐘舵��" min-width="120" />
           <el-table-column fixed="right" label="鎿嶄綔" align="center" width="200">
-            <template #default>
-              <el-button size="mini" type="text" plain v-show="state !== '宸插惎鐢�' " @click="dialogFormVisiblea = true">缁戝畾鏋跺瓙</el-button>
-              <el-button size="mini" type="text" plain  @click="dialogFormVisible = true">娓呯┖</el-button>
-            </template>
+            <template #default="scope">
+            <el-button size="mini" type="text" plain v-show="scope.row.enableState !== '宸插惎鐢�' " @click="handleBindRack(scope.row)">缁戝畾鏋跺瓙</el-button>
+            <el-button size="mini" type="text" plain  @click="handleBindRack2(scope.row)">娓呯┖</el-button>
+          </template>
         </el-table-column>
         </el-table>
       </div>
     </el-card>
-   
-  </div>
-  <div style="display: flex;">
-  <div id="main-body">
-      <Landingindication></Landingindication>
-    </div>
-  <!-- <div id="main-bodya">
-    <Landingindicationtwo></Landingindicationtwo>
-    </div> -->
-    </div>
+
+
     <el-dialog v-model="dialogFormVisiblea" top="21vh" width="30%" title="缁戝畾鏋跺瓙" >
     <div style="margin-left: 50px;margin-top: 10px;margin-bottom: 10px;">
-            <el-form  size="mini" label-width="150px">
-      <el-form  label-width="100px" label-position="right">
-              <el-form-item label="鏋跺彿锛�" :required="true" style="width: 18vw">
-                <el-input  autocomplete="off"/>
-              </el-form-item>
-              <el-form-item label="娴佺▼鍗″彿锛�" :required="true" style="width: 18vw;">
-                <el-input autocomplete="off" />
-              </el-form-item>
-        </el-form>
-            </el-form>
-          </div>
+      <el-form  size="mini" label-width="150px">
+        <el-form  label-width="100px" label-position="right">
+          <el-form-item label="鏋跺彿锛�" :required="true" style="width: 18vw">
+            <el-input v-model="workstationId" autocomplete="off"/>
+          </el-form-item>
+          <el-form-item label="娴佺▼鍗″彿锛�" :required="true" style="width: 18vw;">
+          <el-select v-model="flowCardId" placeholder="璇烽�夋嫨娴佺▼鍗″彿">
+            <el-option v-for="item in flowCardOptions" :key="item.flowcard_id" :label="item.flowcard_id" :value="item.flowcard_id" />
+          </el-select>
+        </el-form-item>
+      </el-form>
+      </el-form>
+    </div>
     <template #footer>
       <div id="dialog-footer">
-        <el-button type="primary" @click="dialogFormVisiblea = false">
+        <el-button type="primary" @click="handleConfirm">
           纭
         </el-button>
         <el-button @click="dialogFormVisiblea = false">鍙栨秷</el-button>
       </div>
     </template>
   </el-dialog>
+
+
+
+
+  <el-dialog v-model="dialogFormVisiblea2" top="21vh" width="30%" title="娓呴櫎鏋跺瓙鐜荤拑" >
+
+    <template #footer>
+      <div id="dialog-footer">
+        <el-button type="primary" @click="handleclear">
+          纭
+        </el-button>
+        <el-button @click="dialogFormVisiblea2 = false">鍙栨秷</el-button>
+      </div>
+    </template>
+  </el-dialog>
+
+
+    <!-- workstationId: '1',
+    workstationId: '1005',
+    flowCardId: '183.6',
+    totalquantity: '1991',
+    racksnumber:"1",
+    work_state: '寰呰瘑鍒�', -->
+  </div>
+  <div style="display: flex;">
+  <div id="main-body">
+      <Landingindication></Landingindication>
+    </div>
+  <div id="main-bodya">
+    <Landingindicationtwo></Landingindicationtwo>
+    </div></div>
 </template>
 
 <style scoped>
@@ -188,6 +347,10 @@
 }
 #main-body{
   margin-top: -20px;
-  margin-left: 450px;
+  margin-left: 300px;
+}
+#main-bodya{
+  margin-top: -10px;
+  margin-left: 100px;
 }
 </style>
\ No newline at end of file
diff --git a/UI-Project/src/views/UnLoadGlass/loadmachineracktwo.vue b/UI-Project/src/views/UnLoadGlass/loadmachineracktwo.vue
index cd181fc..7219413 100644
--- a/UI-Project/src/views/UnLoadGlass/loadmachineracktwo.vue
+++ b/UI-Project/src/views/UnLoadGlass/loadmachineracktwo.vue
@@ -26,7 +26,21 @@
     state: '鏈惎鐢�'
   },
   {
-    id: '2',
+    id: '3',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    state: '鏈惎鐢�'
+  },
+  {
+    id: '4',
+    long: '105',
+    wide: '183',
+    thick: '191',
+    state: '鏈惎鐢�'
+  },
+  {
+    id: '5',
     long: '105',
     wide: '183',
     thick: '191',
diff --git a/UI-Project/vite.config.js b/UI-Project/vite.config.js
index b0685b2..d4d6ee2 100644
--- a/UI-Project/vite.config.js
+++ b/UI-Project/vite.config.js
@@ -16,25 +16,36 @@
     }
   }, 
   server: {
-    port: 801,//绔彛鍙�
-    host: true,//ip鍦板潃 鎴� '0.0.0.0' 鎴� "loaclhost"
-    open: false, //鍚姩鍚庢槸鍚﹁嚜鍔ㄦ墦寮�娴忚鍣�
-    https: false, // 鏄惁寮�鍚� https
+    port: 801,
+    host: true,
+    open: false,
+    https: false,
     proxy: {
-      '^/api': {
-        target: 'localhost:8080/mesModuleTools', //鐩爣婧愶紝鐩爣鏈嶅姟鍣紝鐪熷疄璇锋眰鍦板潃
-        changeOrigin: true, //鏀寔璺ㄥ煙
-        rewrite: (path) => path.replace(/^\/api/, "/mesModuleTools"), //閲嶅啓鐪熷疄璺緞,鏇挎崲/api
-      //   pathRewrite: {
-      //     '^/api': ''
-      // }
-        // rewrite: (path) => path.replace(/^\/api/, "/mesModuleTools"), //閲嶅啓鐪熷疄璺緞,鏇挎崲/api
+      '/api': {
+        target: 'http://localhost:8080/mesModuleTools',
+        changeOrigin: true,
+        rewrite: (path) => path.replace(/^\/api/, '/mesModuleTools'),
       },
       '/api2': {
-        target: 'localhost:8080/mesModuleTools',
+        target: 'http://localhost:8081/mesModuleTools',
         changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/api2/, "mesModuleTools"),
+        pathRewrite: {
+          '^/api2': '',
+        },
       },
-    }
-  }
-})
+    },
+  },
+  configureServer: ({ middlewares }) => {
+    middlewares.use(
+      '/mesModuleTools',
+      createProxyMiddleware({
+        target: 'ws://localhost:8081',
+        ws: true,
+        changeOrigin: true,
+        pathRewrite: {
+          '^/mesModuleTools': '',
+        },
+      })
+    );
+  },
+});
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java b/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
index d62cad3..f3c1215 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/common/PlcTools/S7control.java
@@ -427,6 +427,11 @@
         }
 
     };
+
+
+    public void writeString(String addr,String data) {
+        s7PLC.writeString(addr,data);
+    }
     
     
 
diff --git a/UnLoadGlassModule/src/main/java/com/mes/controller/DownGlassInfoController.java b/UnLoadGlassModule/src/main/java/com/mes/controller/DownGlassInfoController.java
index 085e400..01870af 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/controller/DownGlassInfoController.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/controller/DownGlassInfoController.java
@@ -15,7 +15,12 @@
     @Autowired
     private DownGlassInfoService downGlassInfoService;
 
-    // 鑾峰彇鎸囧畾ID鐨凞ownGlassInfo淇℃伅
+    /**
+     * @param id
+     * @return
+     * // 鑾峰彇鎸囧畾ID鐨凞ownGlassInfo淇℃伅
+     */
+
     @GetMapping("/{id}")
     public DownGlassInfo getDownGlassInfoById(@PathVariable Integer id) {
         return downGlassInfoService.getDownGlassInfoById(id);
diff --git a/UnLoadGlassModule/src/main/java/com/mes/controller/DownWorkstationController.java b/UnLoadGlassModule/src/main/java/com/mes/controller/DownWorkstationController.java
new file mode 100644
index 0000000..46f7085
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/controller/DownWorkstationController.java
@@ -0,0 +1,125 @@
+package com.mes.controller;
+
+import com.mes.entity.DownWorkstation;
+import com.mes.service.DownWorkstationService;
+import com.mes.service.GlassInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/api/downWorkstation")
+public class DownWorkstationController {
+
+    @Autowired
+    private DownWorkstationService downWorkstationService;
+    @Autowired
+    private GlassInfoService glassInfoService;
+
+    @GetMapping("/getone")
+    public ResponseEntity<?> getOneDownWorkstations() {
+        try {
+            List<DownWorkstation> data = downWorkstationService.getoneDownWorkstations();
+            // 鏋勫缓绗﹀悎棰勬湡鏍煎紡鐨勫搷搴旀暟鎹�
+            Map<String, Object> responseData = new HashMap<>();
+            responseData.put("code", 200);
+            responseData.put("msg", "鎴愬姛");
+            responseData.put("data", data);
+            // 杩斿洖 ResponseEntity 瀵硅薄锛屽寘鍚搷搴旀暟鎹拰鐘舵�佺爜
+            return ResponseEntity.ok(responseData);
+        } catch (Exception e) {
+            e.printStackTrace();
+            // 濡傛灉鍑虹幇寮傚父锛岃繑鍥為敊璇俊鎭�
+            Map<String, Object> errorResponse = new HashMap<>();
+            errorResponse.put("code", 500);
+            errorResponse.put("msg", "鏈嶅姟鍣ㄥ唴閮ㄩ敊璇�");
+            return ResponseEntity.status(500).body(errorResponse);
+        }
+    }
+
+    @GetMapping("/gettwo")
+    public List<DownWorkstation> gettwoDownWorkstations() {
+        return downWorkstationService.gettwoDownWorkstations();
+    }
+    @GetMapping("/getflowCardId")
+    public ResponseEntity<Map<String, Object>> getflowCardId() {
+        Map<String, Object> responseData = new HashMap<>();
+        try {
+            List<Map<String, Object>> data = downWorkstationService.getflowCardId();
+            responseData.put("code", 200);
+            responseData.put("msg", "鎴愬姛");
+            responseData.put("data", data);
+            return ResponseEntity.ok(responseData);
+        } catch (Exception e) {
+            responseData.put("code", 500);
+            responseData.put("msg", "澶辫触");
+            responseData.put("data", null);
+            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(responseData);
+        }
+    }
+
+
+
+
+    @PostMapping("/updateFlowCardId")
+    public ResponseEntity<Map<String, Object>> updateFlowCardId(@RequestBody Map<String, Object> requestData) {
+        // 浠� requestData 涓幏鍙栦紶鍏ョ殑 flowCardId
+        String flowCardId = (String) requestData.get("flowCardId");
+        int workstationId = (int) requestData.get("workstationId");
+
+        // 鏌ヨ瀵瑰簲 flowCardId 鐨勭幓鐠冧俊鎭�绘暟閲�
+        int glassInfoCount = glassInfoService.getGlassInfoCountByFlowCardId(flowCardId);
+
+        // 鏇存柊 down_workstation 琛ㄤ腑鐨勬�绘暟閲�
+        glassInfoService.updateFlowCardIdAndCount(flowCardId, glassInfoCount, workstationId);
+
+        // 鏋勫缓鍝嶅簲鏁版嵁
+        Map<String, Object> responseData = new HashMap<>();
+        responseData.put("message", "updated successfully");
+        responseData.put("code", 200);
+        // 杩斿洖澶勭悊缁撴灉
+        return ResponseEntity.ok(responseData);
+    }
+
+
+    @PostMapping("/clear")
+    public ResponseEntity<Map<String, Object>> clearWorkstationInfo(@RequestBody Map<String, Object> requestData) {
+        // 璋冪敤 DownWorkstationService 涓殑鏂规硶娓呴櫎鎸囧畾宸ヤ綅ID鐨勪俊鎭�
+        int workstationId = (int) requestData.get("workstationId");
+
+        int totalWorkstations = downWorkstationService.getTotalQuantity(workstationId);
+        int downWorkstations = downWorkstationService.getRacksNumber(workstationId);
+
+
+        if (downWorkstations == totalWorkstations) {
+            downWorkstationService.clearFlowCardId(workstationId);
+            Map<String, Object> responseData = new HashMap<>();
+            responseData.put("message", "cleared successfully");
+            responseData.put("code", 200);
+            // 杩斿洖澶勭悊缁撴灉
+            return ResponseEntity.ok(responseData);
+        }
+        else {
+            // 濡傛灉鎬绘暟閲忓拰钀芥灦鏁伴噺涓嶄竴鑷达紝杩斿洖閿欒鍝嶅簲
+            Map<String, Object> errorResponse = new HashMap<>();
+            errorResponse.put("message", "Total workstations count does not match down workstations count.");
+            errorResponse.put("code", 400);
+            return ResponseEntity.badRequest().body(errorResponse);
+        }
+
+
+        // 鏋勫缓鍝嶅簲鏁版嵁
+
+    }
+
+
+
+
+
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/controller/OrderTestController.java b/UnLoadGlassModule/src/main/java/com/mes/controller/OrderTestController.java
deleted file mode 100644
index aecbd7f..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/controller/OrderTestController.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.mes.controller;
-
-import com.mes.mapper.OrderTestMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-
-//@CrossOrigin  //瑙e喅鍗曚釜controller 璺ㄥ煙闂
-@RestController
-@RequestMapping("/order11111111")
-
-public class OrderTestController {
-    @Autowired
-    private OrderTestMapper orderMapper;
-
-//    @GetMapping //鏌ヨorder琛ㄧ粨鏋滈泦
-//    public Result index(){
-//        return Result.seccess(orderMapper.findAll());
-//
-//    }
-//
-//    @PostMapping  //鎻掑叆
-//    public Integer save(@RequestBody Order order) {
-//        return orderMapper.insert(order);
-//    }
-//
-//    @PostMapping("/update")
-//    public Integer updateOrder(@RequestBody Order order) {
-//        return orderMapper.update(order.getId(),order.getOrderid());
-//    }
-//
-//    @DeleteMapping("/{id}") //鍒犻櫎鏁版嵁
-//    public Integer delete(@PathVariable Integer id) {
-//        return orderMapper.deleteById(id);
-//    }
-
-    
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCageDetails.java b/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCageDetails.java
index 8e6b6a7..4f631dc 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCageDetails.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/DownStorageCageDetails.java
@@ -2,24 +2,89 @@
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
-
+/**
+ * 涓嬬墖鍓嶇悊鐗囩鏄庣粏瀹炰綋绫�
+ */
+/**
+ * 涓嬬墖鍓嶇悊鐗囩鏄庣粏瀹炰綋绫�
+ * @author SNG-012
+ */
 @Data
 public class DownStorageCageDetails {
 
     @TableId(type = IdType.AUTO)
-    private int id; // 涓嬬墖鍓嶇悊鐗囩鏄庣粏琛╥d
+    /**
+     * 涓嬬墖鍓嶇悊鐗囩鏄庣粏琛╥d
+     */
+    private int id;
 
-    private int deviceId; // 璁惧id
-    private int slot; // 鏍呮牸鍙�
-    private int glassId; // 鐜荤拑id
-    private int sequence; // 灏忕墖鍦ㄦ牸鍐呯殑椤哄簭
-    private String flowCardId; // 娴佺▼鍗″彿
-    private int glassType; // 鐜荤拑绫诲瀷
-    private double width; // 瀹�
-    private double height; // 楂�
-    private double thickness; // 鍘氬害
-    private int temperingLayoutId; // 閽㈠寲鐗堝浘id
-    private int temperingFeedSequence; // 閽㈠寲鐗堝浘鐗囧簭
-    private int state; // 鐘舵��
-    private int gap; // 鐜荤拑闂撮殭
-}
\ No newline at end of file
+    /**
+     * 璁惧id
+     */
+    private int deviceId;
+
+    /**
+     * 鏍呮牸鍙�
+     */
+    private int slot;
+
+    /**
+     * 鐜荤拑id
+     */
+    private int glassId;
+
+    /**
+     * 灏忕墖鍦ㄦ牸鍐呯殑椤哄簭
+     */
+    private int sequence;
+
+    /**
+     * 娴佺▼鍗″彿
+     */
+    private String flowCardId;
+
+    /**
+     * 鑶滅郴id
+     */
+    private int filmsid;
+    /**
+     * 鐜荤拑绫诲瀷
+     */
+    private int glassType;
+
+    /**
+     * 瀹�
+     */
+    private double width;
+
+    /**
+     * 楂�
+     */
+    private double height;
+
+    /**
+     * 鍘氬害
+     */
+    private double thickness;
+
+    /**
+     * 閽㈠寲鐗堝浘id
+     */
+    private int temperingFeedSequence;
+
+    /**
+     * 閽㈠寲鐗堝浘鐗囧簭
+     */
+    private int temperingLayoutId;
+
+    /**
+     * 鐘舵��
+     */
+    private int state;
+
+    /**
+     * 鐜荤拑闂撮殭
+     */
+    private int gap;
+}
+
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java b/UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
index 524d865..3c15a9d 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/DownWorkstation.java
@@ -1,20 +1,56 @@
 package com.mes.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
-        import com.baomidou.mybatisplus.annotation.TableId;
-        import lombok.Data;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
 
 @Data
 public class DownWorkstation {
 
+    /**
+     * // 涓嬬墖宸ヤ綅琛�
+     */
     @TableId(type = IdType.AUTO)
-    private int id; // 涓嬬墖宸ヤ綅琛╥d
-    private Integer workstationId; // 宸ヤ綅id
-    private String flowCardId; // 娴佺▼鍗″彿
-    private Integer deviceId; // 璁惧id
-    private Integer enableState; // 鍚敤鐘舵��
-    private Integer workState; // 宸ヤ綔鐘舵��
-    private Integer racks_number; // 宸茶惤鏋舵暟閲�
-    private Integer total_quantity; // 鎬绘暟閲�
+    private int id;
+
+    /**
+     * // 宸ヤ綅id
+     */
+    private Integer workstationId;
+
+    /**
+     *  // 娴佺▼鍗″彿
+     */
+    private String flowCardId;
+
+    /**
+     *  // 璁惧id
+     */
+    private Integer deviceId;
+
+    /**
+     *   // 鍚敤鐘舵��
+     */
+    private Integer enableState;
+
+
+
+    /**
+     *    // 宸ヤ綔鐘舵��
+     */
+    private Integer workState;
+
+    /**
+     *  // 宸茶惤鏋舵暟閲�
+     */
+    @TableField(value = "racks_number")
+    private int racksnumber;
+
+    /**
+     *     // 鎬绘暟閲�
+     */
+    @TableField(value = "total_quantity")
+    private Integer totalquantity;
 
 }
\ No newline at end of file
diff --git a/TemperingGlassModule/src/main/java/com/mes/entity/EdgStorageCageDetails.java b/UnLoadGlassModule/src/main/java/com/mes/entity/EdgStorageCageDetails.java
similarity index 100%
rename from TemperingGlassModule/src/main/java/com/mes/entity/EdgStorageCageDetails.java
rename to UnLoadGlassModule/src/main/java/com/mes/entity/EdgStorageCageDetails.java
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/GlassInfo.java b/UnLoadGlassModule/src/main/java/com/mes/entity/GlassInfo.java
new file mode 100644
index 0000000..4a46f60
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/GlassInfo.java
@@ -0,0 +1,34 @@
+package com.mes.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.math.BigInteger;
+
+@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
+@TableName("`glass_info`")
+public class GlassInfo {
+    @TableId(type = IdType.AUTO)
+    private  BigInteger id;//鐜荤拑淇℃伅琛╥d
+    private  String flowcardid;//娴佺▼鍗�
+    private  Integer glasstype;//娴佺▼鍗$幓鐠冪被鍨�
+    private  Double width;//瀹�
+    private  Double height;//楂�
+    private  Double thickness;//鍘氬害
+    private  Integer filmsid;//鑶滅郴
+    private  Double edgwidth;//纾ㄥ墠瀹�
+    private  Double edgheight;//纾ㄥ墠楂�
+    private  Integer ismultiple;//鏄惁閰嶇墖
+    private  Double maxwidth;//閰嶇墖鏈�澶у
+    private  Double maxheight;//閰嶇墖鏈�澶ч珮
+    private  Integer ishorizontal;//閽㈠寲鏄惁鎺ュ彈妯斁
+    private  Integer patternsequence;//鍘熺墖椤哄簭
+    private  Integer temperinglayoutid;//閽㈠寲鐗堝浘id
+    private  Integer temperingfeedsequence;//閽㈠寲鐗堝浘鐗囧簭
+    private  Integer xcoordinate;//x鍧愭爣
+    private  Integer ycoordinate;//y鍧愭爣
+    private  Integer angle;//鏃嬭浆瑙掑害锛堥�嗘椂閽堬級
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/OrderTest.java b/UnLoadGlassModule/src/main/java/com/mes/entity/OrderTest.java
deleted file mode 100644
index e8ea030..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/OrderTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.mes.entity;
-
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
-@TableName("`order`")
-public class OrderTest {
-    @TableId(type = IdType.AUTO)
-    private  Integer id;
-    private  String orderId;
-    private  String recipeNo;
-    private  String largeglassNo;
-    private  String largeglassCompleted;
-    private  String smallglassNo;
-    private  String smallglassCompleted;
-    private  String smallglassProcessing;
-    private  String smallglassWorn;
-    private  String orderStatus;
-    private  String orderMaker;
-    private  String makeTime;
-    private  String updateTime;
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/TaskCache.java b/UnLoadGlassModule/src/main/java/com/mes/entity/TaskCache.java
new file mode 100644
index 0000000..3e02731
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/TaskCache.java
@@ -0,0 +1,22 @@
+package com.mes.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+@Data  //lombok 绠�鍐檍ava浠g爜 瀹炰綋绫荤殑get涓巗et
+
+public class TaskCache {
+    @TableId(type = IdType.AUTO)
+    private int id;//id
+    private String startCell;//璧峰
+    private String endCell;//缁撴潫
+    private String taskType;//绫诲瀷
+    private double width;//瀹�
+    private double height;//鎼�
+    private String filmsId;//鑶滅郴
+    private double thickness;//鍘氬害
+    private String flowCardId;//娴佺▼鍗″彿
+    private int taskStatus;//鐘舵��
+   
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java
index 0cc7116..4d41978 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/entity/device/PlcParameterInfo.java
@@ -121,4 +121,8 @@
 
         return addressIndex;
     }
+
+    public String getAddress() {
+        return getAddress(this.addressIndex);
+    }
 }
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java
index dbd519c..0d213a7 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownGlassInfoMapper.java
@@ -16,10 +16,10 @@
 public interface DownGlassInfoMapper extends BaseMapper<DownGlassInfo> {
 
     // 鏌ヨ涓嬬墖浠诲姟琛ㄤ腑鐘舵�佷负1鐨勪笅鐗囦俊鎭�
-    @Select("SELECT flow_card_id,filmsid,width,height,thickness FROM down_glass_task WHERE state = 1;")
+    @Select("SELECT flow_card_id,filmsid,width,height,thickness FROM down_glass_task WHERE task_stauts = 1;")
     List<DownGlassInfo> selectunloadingtaskstate();
 
-    @Update("UPDATE down_glass_task SET state = 0 WHERE flow_card_id = #{flowCardId}")
+    @Update("UPDATE down_glass_task SET task_stauts = 0 WHERE flow_card_id = #{flowCardId}")
     void updateTaskStateToZero(@Param("flowCardId") String flowCardId);
 
     @Select("SELECT MAX(sequence) FROM down_glass_info WHERE flow_card_id = #{flowCardId} LIMIT 1")
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java
index 163348d..beb867d 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/mapper/DownWorkstationMapper.java
@@ -10,6 +10,7 @@
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 @Component
@@ -38,22 +39,58 @@
 //浠庢満姊版墜浠诲姟琛ㄦ煡璇㈢姸鎬佷负1鐨勬祦绋嬪崱鍙�
 //    @Select("SELECT *  FROM down_workstation_task WHERE state = 1")
 //    List<DownWorkstation> selectdownWorkstationstate();
-
-    @Select("SELECT dw.flow_card_id,dw.racks_number FROM down_workstation_task dwt JOIN down_workstation dw ON dwt.flow_card_id = dw.flow_card_id WHERE dwt.state = 1 LIMIT 1")
+//鏌ヨ宸ヤ綅琛ㄥ拰浠诲姟琛ㄤ腑鐘舵�佷负1鐨勬祦绋嬪崱鍙峰拰宸茶惤鏋舵暟閲�
+    @Select("SELECT dwt.flow_card_id,dw.id,dw.racks_number FROM down_workstation_task dwt JOIN down_workstation dw ON dwt.flow_card_id = dw.flow_card_id WHERE dwt.state = 1 LIMIT 1")
     List<DownWorkstation> selectdownWorkstationstate();
-
+//鏇存柊钀芥灦鏁伴噺
     @Update("UPDATE down_workstation SET racks_number = #{racksNumber} " +
             "WHERE flow_card_id = #{flowCardId}")
     void  update_racks_number(@Param("flowCardId") String flowCardId,
                                    @Param("racksNumber") Integer racksNumber);
 
-
+//鎻掑叆鏈烘浠诲姟琛�
     @Insert("INSERT INTO down_workstation_task (flow_card_id, width, height, thickness, filmsid,state) " +
             "VALUES (#{flowCardId}, #{width}, #{height}, #{thickness}, #{filmsid},1)")
     void insertdownWorkstationtask(DownGlassInfo downGlassInfo);
 
+//鏍规嵁宸ヤ綅id鏇存柊瀹炰綋绫绘帴鏀剁殑鏁版嵁
+@Update("UPDATE down_workstation SET width = #{width}, height = #{height}, flow_card_id = #{flowCardId} WHERE workstation_id = #{workstationId}")
+void updateFlowCardId(DownWorkstation downWorkstation);
 
 
 
+//婊℃灦鎷夎蛋锛屾竻绌轰俊鎭�
+    @Update("UPDATE down_workstation SET width = null, height = null, flow_card_id = null WHERE workstation_id = #{workstationId}")
+    void clearFlowCardId(DownWorkstation downWorkstation);
+
+
+
+    @Update("UPDATE down_workstation_task SET state = 0 WHERE flow_card_id = #{flowCardId}")
+    void update_task_state_to_zero(@Param("flowCardId") String flowCardId);
+
+
+@Select(" SELECT * FROM down_workstation WHERE workstation_id >= 1 AND workstation_id <= 5")
+    List<DownWorkstation> getoneDownWorkstations();
+
+
+    @Select(" SELECT * FROM down_workstation WHERE workstation_id >= 6 AND workstation_id <= 10")
+    List<DownWorkstation> gettwoDownWorkstations();
+
+
+
+    @Select("SELECT DISTINCT  flowcard_id from glass_info")
+    @ResultType(Map.class)
+    List<Map<String, Object>> getflowCardId();
+
+    @Update("UPDATE down_workstation SET flow_card_id = NULL, total_quantity = 0, racks_number = 0 WHERE workstation_id = #{workstationId}")
+    void clearFlowCardInfoByWorkstationId(@Param("workstationId") int workstationId);
+
+    // 鑾峰彇鎬绘暟閲�
+    @Select("SELECT total_quantity FROM down_workstation WHERE workstation_id = #{workstationId}")
+    int getTotalQuantity(@Param("workstationId") int workstationId);
+
+    // 鑾峰彇钀芥灦鏁伴噺
+    @Select("SELECT racks_number FROM down_workstation WHERE workstation_id = #{workstationId}")
+    int getRacksNumber(@Param("workstationId") int workstationId);
 
 }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/GlassInfoMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/GlassInfoMapper.java
new file mode 100644
index 0000000..9dcc0e6
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/mapper/GlassInfoMapper.java
@@ -0,0 +1,18 @@
+package com.mes.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+
+@Mapper
+public interface GlassInfoMapper {
+
+    @Select("SELECT COUNT(*) FROM glass_info WHERE flowcard_id = #{flowCardId}")
+    int getGlassInfoCountByFlowCardId(@Param("flowCardId") String flowCardId);
+
+    @Update("UPDATE down_workstation SET  total_quantity = #{glassInfoCount},flow_card_id=#{flowCardId} WHERE workstation_id = #{workstationId}")
+    int updateFlowCardIdAndCount(@Param("flowCardId") String flowCardId, @Param("glassInfoCount") int glassInfoCount,@Param("workstationId")int workstationId);
+
+    // 杩欓噷鍙互娣诲姞鍏朵粬 SQL 璇彞
+}
\ No newline at end of file
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/OrderTestMapper.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/OrderTestMapper.java
deleted file mode 100644
index d12d4ce..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/mapper/OrderTestMapper.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.mes.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.mes.entity.OrderTest;
-import org.apache.ibatis.annotations.*;
-
-@Mapper
-public interface OrderTestMapper extends BaseMapper<OrderTest> {
-
-//    @Select("select * from `order`")
-//    List<Order> findAll();
-//
-//    @Insert("INSERT `order`(order_id)VALUES(#{order_id})")
-//    Integer insert(Order order);
-//
-//    @Delete("delete from `order` where id=#{id}")
-//    Integer deleteById(@Param("id") Integer id);
-//
-//    @Update("update `order` set order_id=#{order_id} where id=#{id}")
-//    Integer update(@Param("id") Integer id,@Param("order_id") String order_id);
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/mapper/SelectInfo.java b/UnLoadGlassModule/src/main/java/com/mes/mapper/SelectInfo.java
new file mode 100644
index 0000000..beee154
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/mapper/SelectInfo.java
@@ -0,0 +1,74 @@
+package com.mes.mapper;
+
+import com.mes.entity.DownStorageCageDetails;
+import com.mes.entity.GlassInfo;
+import com.mes.entity.TaskCache;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface SelectInfo {
+    // 鐜荤拑淇℃伅 鎸塈D鏌ヨ
+    @Select("select * from `glass_info` where id=#{id}")
+    GlassInfo SelectGlassId(String id);
+
+    // 閽㈠寲鎸夊伐绋嬫煡璇�
+  //  @Select("select * from `v_optimize_heat_layout` where project_no=#{projeceid} ")
+//    List<Tempered> SelectTemperedTerritory(String projeceid);
+//
+//    // 鍒囧壊鐗堝浘鎸夊伐绋嬫煡璇�
+//    @Select("select * from optimize_detail where project_no=#{projeceid} ")
+//    List<Map> SelectCutTerritory(String projeceid);
+//
+//    // 鏌ヨ纾ㄨ竟淇℃伅
+//    @Select("select * from task_cache where task_type='2' and task_stauts='2' and end_cell=#{EndCell}")
+//    List<Map> SelectEdgInfo(String EndCell);
+
+    // 鏌ヨ绗煎瓙鍐呯┖闂�
+    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is null order by escd.slot")
+    List<DownStorageCageDetails> SelectCacheLeisure();
+
+    // 鏌ヨ绗煎瓙鍐呭嚭鐗囦换鍔�
+    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot WHERE escd.slot IS NOT NULL order by escd.tempering_layout_id,escd.tempering_feed_sequence")
+    List<DownStorageCageDetails> SelectCacheOut();
+
+    // 鏌ヨ绗煎瓙鍐呬俊鎭�
+    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot order by esc.slot")
+    List<DownStorageCageDetails> SelectCachInfo();
+
+    // 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿
+    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is not null escd.tempering_layout_id=#{tempering_layout_id} and escd.tempering_feed_sequence<#{tempering_feed_sequence} and esc.remain_width-#{width}>0 order by escd.tempering_feed_sequence")
+    List<DownStorageCageDetails> SelectIsExistIntoCache(Integer tempering_layout_id, Integer tempering_feed_sequence,
+            double width);
+
+    // 鏌ヨ鍙繘姝ょ墖鐜荤拑鐨勬爡鏍煎彿
+    @Select("select escd.* from down_storage_cage as esc LEFT JOIN down_storage_cage_details as escd on esc.slot=escd.slot where escd.slot is not null escd.tempering_layout_id<#{tempering_layout_id} and esc.remain_width-#{width}>0 order by escd.tempering_layout_id desc,escd.tempering_feed_sequence")
+    List<DownStorageCageDetails> SelectIsExistIntoCache(Integer tempering_layout_id, double width);
+
+    // 鏌ヨ鍏ㄩ儴浠诲姟
+    @Select("select * from down_glass_task")
+    List<TaskCache> SelectCacheInfoAll();
+
+    // 鏌ヨ杩涚墖浠诲姟
+    @Select("select * from down_glass_task where task_type='1' and task_stauts='0'")
+    List<TaskCache> SelectInputCacheInfo();
+
+    // 鏌ヨ鍑虹墖浠诲姟
+    @Select("select * from down_glass_task where task_type='2' and task_stauts='0'")
+    List<TaskCache> SelectOutCacheInfo();
+
+    // 鏌ヨ  A06  鎴� A11 鏈�鏂扮殑涓�鐗� 鍑虹墖浠诲姟
+    @Select("select * from down_glass_task where task_type='2' and task_stauts='2' and end_cell=#{EndCell} limit 1")
+    GlassInfo SelectLastOutCacheInfo(String EndCell);
+
+    // 淇敼绗煎瓙鍐呬俊鎭�
+    @Update("update")
+    Integer UpdateCache(@Param("id") Integer id, @Param("order_id") String order_id);
+
+    // 娣诲姞涓嬬墖浠诲姟
+    @Insert("INSERT into down_glass_task VALUES(#{id},#{start},#{end},#{type},0,)")
+    Integer insertCacheTask(String id, String start, String end, String type,double width,double height,Integer filmsId,double thickness,String flowCardId);
+
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassCacheLogic.java b/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassCacheLogic.java
new file mode 100644
index 0000000..9197e0b
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassCacheLogic.java
@@ -0,0 +1,233 @@
+package com.mes.service;
+
+import com.mes.common.PlcTools.S7control;
+import com.mes.entity.GlassInfo;
+import com.mes.entity.DownStorageCageDetails;
+import com.mes.entity.device.PlcParameterObject;
+import com.mes.mapper.SelectInfo;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Data
+@Service
+public class DownGlassCacheLogic {
+    @Autowired
+    private SelectInfo selectInfo;
+
+    /**
+     * @param Number
+     *    //璇嗗埆閫昏緫    涓嶄氦浜�
+     */
+
+    public void identify(String Number){
+        //鏌ヨ浠诲姟
+        PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
+        S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
+        String s=S7control.getinstance().ReadWord("DB14.26", 1).get(0)+"";
+        boolean isexist=isExist(Number);
+        if (isexist) {
+            //瀛樺湪閫昏緫    1.娣诲姞淇℃伅 2.鍥炲PLC瀛樺湪
+            //S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
+        }else {
+            //涓嶅瓨鍦ㄩ�昏緫  1.鍥炲PLC涓嶅瓨鍦�
+            //S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 2);
+        }
+    }
+    //涓嬬墖鍓嶇悊鐗�
+    public static final String RESULT_IN = "1";
+    public static final String RESULT_OUT = "2";
+    public static final String RESULT_IN_OUT = "3";
+
+    public void process() {
+        String result = S7control.getinstance().ReadWord("DB14.0", 1).get(0) + "";
+        String number = S7control.getinstance().ReadWord("DB14.2", 1).get(0) + "";
+
+        // 杩涚墖璇锋眰
+        if (RESULT_IN.equals(result)) {
+            processInto(number);
+        }
+        // 鍑虹墖璇锋眰
+        else if (RESULT_OUT.equals(result)) {
+            processOut();
+        }
+        // 杩涘嚭鐗囪姹�
+        else if (RESULT_IN_OUT.equals(result)) {
+            // 鍏堝嚭鍚庤繘
+            if (!processOut()) {
+                processInto(number);
+            }
+        }
+    }
+
+
+    /**
+     * @param Number
+     * @return
+     *   //涓嬬墖鍓嶇悊鐗� 杩�
+     */
+
+    public boolean processInto(String Number){
+        //鎸塱d鏌ヨ鐜荤拑淇℃伅琛ㄩ噷鐨勭幓鐠�
+        GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
+        PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
+        //瀛樺湪姝ょ幓鐠冪紪鍙�
+        if(GlassInfo!=null){
+            //鍚岄挗鍖栫増鍥惧唴鐨勬爡鏍煎彿
+            List<DownStorageCageDetails> list=selectInfo.SelectIsExistIntoCache(GlassInfo.getTemperinglayoutid(),GlassInfo.getTemperingfeedsequence(),GlassInfo.getWidth());
+            //绌烘爡鏍煎彿
+            if (list.size()==0) {
+                list=selectInfo.SelectCacheLeisure();
+            }
+            //灏忎簬姝ょ幓鐠冮挗鍖栫増鍥惧簭鍙风殑鏍呮牸鍙�
+            if(list.size()==0){
+                list=selectInfo.SelectIsExistIntoCache(GlassInfo.getTemperinglayoutid(),GlassInfo.getWidth());
+            }
+            if(list.size()>0){
+                //瀛樺湪绌烘牸  
+                //1.鐢熸垚浠诲姟锛�  璧峰浣嶇疆0   缁撴潫浣嶇疆this.slot  浠诲姟绫诲瀷 1   锛堣繘鐗囦换鍔★級
+                //2.鍥炲 1杩涚墖
+                DownStorageCageDetails item=list.get(0);
+                selectInfo.insertCacheTask(GlassInfo.getId()+"","0",item.getSlot()+"","1",GlassInfo.getWidth(),GlassInfo.getHeight(),GlassInfo.getFilmsid(),GlassInfo.getThickness(),GlassInfo.getFlowcardid());
+                S7control.getinstance().WriteWord(plcmes.getPlcParameter("MESToGaStatus").getAddress(),(short) 1);
+                return true;
+            }
+            
+        }else{
+            // ID缂栧彿涓嶅瓨鍦�   涓嶅鐞�/鍥炲PLC  杩涜鎶ヨ鎻愮ず
+        }
+        //杩斿洖缁撴灉
+        return false;
+    }
+    //鐞嗙墖 鍑�
+    public boolean processOut(){
+        //鏌ヨ浠诲姟
+        String G06=S7control.getinstance().ReadWord("DB14.56", 1).get(0)+"";
+        String G11=S7control.getinstance().ReadWord("DB14.58", 1).get(0)+"";
+        String G13=S7control.getinstance().ReadWord("DB14.58", 1).get(0)+"";
+        PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
+        List<DownStorageCageDetails> list=selectInfo.SelectCacheOut();
+        //鍏朵粬鎯呭喌鏉′欢 濡傦細鍚庣画璁惧鏁呴殰绂佹鐞嗙墖鍑虹墖 绛�
+        boolean isOut=true;
+        if (list.size()>0&&isOut) {
+            DownStorageCageDetails item=list.get(0);
+           //
+            if(G06=="0"&&G11=="1"){
+                //鍑哄埌  G06
+
+                selectInfo.insertCacheTask(item.getGlassId()+"","0","06","2",item.getWidth(),item.getHeight(),item.getFilmsid(),item.getThickness(),item.getFlowCardId());
+                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "1");
+                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
+                return true;
+            }else if(G06=="1"&&G11=="0"){
+                //鍑哄埌  G11
+
+                selectInfo.insertCacheTask(item.getGlassId()+"","0","11","2",item.getWidth(),item.getHeight(),item.getFilmsid(),item.getThickness(),item.getFlowCardId());
+                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), "2");
+                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
+                return true;
+            }else if(G06=="0"&&G11=="0"){
+                //閮藉厑璁�    G04/G05  涓婁竴鐗囨槸鍚﹀拰姝ょ墖鐜荤拑灏哄灏哄鐩稿悓
+                String endcell="06";
+                String SendEndcell="1";
+                boolean If_=false;
+                GlassInfo glassInfo06= selectInfo.SelectLastOutCacheInfo("06");
+                GlassInfo glassInfo11= selectInfo.SelectLastOutCacheInfo("11");
+                GlassInfo glassInfo13= selectInfo.SelectLastOutCacheInfo("13");
+                if(glassInfo06!=null&&glassInfo11.getWidth()==item.getWidth()&&glassInfo06.getHeight()==item.getHeight()){
+                    endcell="11";
+                    SendEndcell="2";
+                }else if(item.getHeight()>=3440&&item.getWidth()>=1440){
+                    //鍏朵粬鏉′欢浜哄伐澶勭悊
+
+                }
+
+                selectInfo.insertCacheTask(item.getGlassId()+"","0",endcell,"2",item.getWidth(),item.getHeight(),item.getFilmsid(),item.getThickness(),item.getFlowCardId());
+                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(), SendEndcell);
+                S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");
+                return true;
+            }
+        }
+        //杩斿洖缁撴灉
+        return false;
+    }
+
+    /**
+     * @param Number
+     *  //纾ㄨ竟   涓嶄氦浜�  鐞嗙墖鍜岀(杈规満鑷繁浜や簰
+     */
+
+    public void processMb(String Number){
+          //鎸塱d鏌ヨ鐜荤拑淇℃伅琛ㄩ噷鐨勭幓鐠�
+        GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
+        PlcParameterObject plcmes=PLCAutoMes.PlcMesObject;
+        if(GlassInfo!=null){
+            //鍙戦�佷换鍔�   ID   闀� 瀹� 鍘� 鍊掕 宸ヨ壓鍔熻兘绛�
+            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.22").getAddress(),"N10000");  
+            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.24").getAddress(), "1000");  
+            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.26").getAddress(),"800");  
+            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.28").getAddress(),"60");  
+            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.30").getAddress(), "2");  
+            S7control.getinstance().writeString(plcmes.getPlcParameter("DB14.20").getAddress(), "1");   
+        }
+        //杩斿洖缁撴灉
+    }
+
+
+    /**
+     * @param Number
+     * @return
+     * 鏌ヨ娑堟伅闃熷垪閲屾鐜荤拑ID鐨勬暟鎹�
+     */
+    public boolean selectMessageId(String Number){
+        //鏌ヨ鏄惁瀛樺湪
+
+        GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
+        if(GlassInfo==null){
+            //杩斿洖 涓嶅瓨鍦�
+            return false;
+
+        }
+        //杩斿洖 瀛樺湪
+        return true;
+    }
+
+    /**
+     * @param Number
+     * @return
+     *   鍒犻櫎娑堟伅闃熷垪閲屾鐜荤拑ID鐨勬暟鎹�
+     */
+
+    public boolean deleteMessageId(String Number){
+        //鏌ヨ鏄惁瀛樺湪
+        GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
+        if(GlassInfo==null){
+            //杩斿洖 涓嶅瓨鍦�
+            return false;
+        }
+        //杩斿洖 瀛樺湪
+        return true;
+    }
+
+
+
+    /**
+     * @param Number
+     * @return
+     *   //鏄惁瀛樺湪姝ょ紪鍙风幓鐠�
+     */
+    public boolean isExist(String Number){
+        //鏌ヨ鏄惁瀛樺湪
+        GlassInfo GlassInfo=selectInfo.SelectGlassId(Number);
+        if(GlassInfo==null){
+            //杩斿洖 涓嶅瓨鍦�
+            return false;
+        }
+        //杩斿洖 瀛樺湪
+        return true;
+    }
+    
+}
+
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassLogic.java b/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassLogic.java
new file mode 100644
index 0000000..a2f03a6
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/DownGlassLogic.java
@@ -0,0 +1,154 @@
+package com.mes.service;
+
+import com.mes.entity.DownGlassInfo;
+import com.mes.entity.DownStorageCageDetails;
+import com.mes.entity.DownWorkstation;
+import com.mes.entity.device.PlcParameterObject;
+import com.mes.mapper.DownGlassInfoMapper;
+import com.mes.mapper.DownWorkstationMapper;
+import com.mes.tools.WebSocketServer;
+import lombok.Data;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Data
+@Service
+public class DownGlassLogic {
+
+    PlcParameterObject plcread = PLCAutoMes.PlcReadObject;
+    /**
+     * // 鏈烘鎵�1PLC璇锋眰瀛�
+     */
+    String robot1PLCrequestword = plcread.getPlcParameter("A01Position").getValue();
+    /**
+     * // 鏈烘鎵�2PLC璇锋眰瀛�
+     */
+    String robot2PLCrequestword = plcread.getPlcParameter("A01Position").getValue();
+    /**
+     * // 鐜荤拑id
+     */
+    String glassID = plcread.getPlcParameter("A01Position").getValue();
+    String glasswidth = plcread.getPlcParameter("A01Position").getValue();
+    String glassheight = plcread.getPlcParameter("A01Position").getValue();
+    //
+    String glassthickness = plcread.getPlcParameter("A01Position").getValue();
+    String pLcwancheng = plcread.getPlcParameter("A01Position").getValue();
+    @Autowired
+    private DownWorkstationMapper downWorkstationMapper;
+    private DownGlassInfo downGlassInfo;
+    private DownWorkstation downWorkstation;
+    private DownGlassInfoMapper downGlassInfoMapper;
+    private DownGlassInfoService downGlassInfoService;
+    /**
+     * // 瀛樻斁寰呭鐞嗙殑鐜荤拑淇℃伅
+     */
+    private List<DownGlassInfo> glassList;
+    /**
+     * 瀛樻斁鐜荤拑鏀剧疆鍦ㄧ紦瀛樼涓殑璇︾粏淇℃伅
+     */
+    private List<DownStorageCageDetails> cageDetailsList;
+
+    /**
+     * //褰撲笅鐗囦换鍔¤〃鐘舵�佷负1鏃跺�欏皢鏁版嵁鎻掑叆鍒颁笅鐗囩幓鐠冧俊鎭〃
+     */
+
+    public void insertdownglassinfo() {
+
+
+        downWorkstationMapper = WebSocketServer.applicationContext.getBean(DownWorkstationMapper.class);
+        downGlassInfoService = WebSocketServer.applicationContext.getBean(DownGlassInfoService.class);
+        downGlassInfoMapper = WebSocketServer.applicationContext.getBean(DownGlassInfoMapper.class);
+        List<DownGlassInfo> taskdownGlassInf = downGlassInfoMapper.selectunloadingtaskstate();
+//
+        if (taskdownGlassInf != null && !taskdownGlassInf.isEmpty()) {
+
+//
+
+
+            for (DownGlassInfo downGlassInfo : taskdownGlassInf) {
+                // 鍒涘缓鏂扮殑 DownGlassInfo 瀵硅薄骞惰缃浉鍏冲睘鎬�
+                DownGlassInfo newdownGlassInfo = new DownGlassInfo();
+
+                newdownGlassInfo.setFlowCardId(downGlassInfo.getFlowCardId());
+                Integer maxSequence = downGlassInfoMapper.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
+                // 鍒濆鍖栭『搴忓瓧娈靛��
+                int sequence = maxSequence != null ? maxSequence + 1 : 1;
+
+                newdownGlassInfo.setWidth(downGlassInfo.getWidth());
+                newdownGlassInfo.setHeight(downGlassInfo.getHeight());
+                newdownGlassInfo.setThickness(downGlassInfo.getThickness());
+                newdownGlassInfo.setFilmsid(downGlassInfo.getFilmsid());
+                // 璁剧疆椤哄簭瀛楁鍊�
+                newdownGlassInfo.setSequence(sequence);
+
+                // 鎻掑叆鏁版嵁鍒颁笅鐗囩幓鐠冧俊鎭〃
+                downGlassInfoMapper.insert(newdownGlassInfo);
+                //鎻掑叆鏁版嵁鍒版満姊版墜浠诲姟琛�
+                downWorkstationMapper.insertdownWorkstationtask(newdownGlassInfo);
+                //鏇存柊涓嬬墖浠诲姟琛ㄧ姸鎬佷负0
+                downGlassInfoMapper.updateTaskStateToZero(downGlassInfo.getFlowCardId());
+
+                sequence++; // 閫掑椤哄簭瀛楁鍊�
+
+
+            }
+        }
+    }
+
+
+    /**
+     * //褰撴満姊版墜浠诲姟琛ㄤ腑鐘舵�佷负1锛屽伐浣嶈〃娴佺▼鍗$粦瀹氫簡鏋跺瓙 鏇存柊宸茬粡钀芥灦鏁伴噺锛屽苟涓旀妸涓嬬墖浠诲姟琛ㄧ殑瀵瑰簲璁板綍鍒犳帀
+     */
+
+    public void downWorkstation() {
+
+
+        try {
+            //鏌ヨ涓嬬墖宸ヤ綅琛ㄤ腑鏋跺瓙鏄惁缁戝畾浜嗘祦绋嬪崱鍙� 宸ヤ綅琛ㄥ拰浠诲姟琛ㄤ腑鐘舵�佷负1鐨勬祦绋嬪崱鍙峰拰宸茶惤鏋舵暟閲�
+            List<DownWorkstation> taskdownWorkstation = downWorkstationMapper.selectdownWorkstationstate();
+            if (taskdownWorkstation != null && !taskdownWorkstation.isEmpty()) {
+                //锛屽鏋滃凡缁忕粦瀹氬垯鏇存柊宸茶惤鏋舵暟閲�,骞朵笖鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
+                for (DownWorkstation downWorkstation : taskdownWorkstation) {
+
+                    //鏇存柊涓嬬墖宸ヤ綅琛ㄤ腑宸茶惤鏋舵暟閲�
+                    downWorkstationMapper.update_racks_number(downWorkstation.getFlowCardId(), downWorkstation.getRacksnumber() + 1);
+
+                    //鏇存柊鏈烘浠诲姟琛ㄤ腑鐘舵�佷负0
+                    downWorkstationMapper.update_task_state_to_zero(downWorkstation.getFlowCardId());
+                    //鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
+                    downGlassInfoMapper.deletetask(downWorkstation.getFlowCardId());
+
+                }
+            }
+        } catch (Exception e) {
+            // 鎵撳嵃寮傚父淇℃伅
+            e.printStackTrace();
+            // 鎴栬�呭彲浠ヨ繘琛屽叾浠栧紓甯稿鐞嗭紝姣斿璁板綍鏃ュ織鎴栬�呰繑鍥炵壒瀹氱殑閿欒淇℃伅
+        }
+
+
+    }
+
+
+    /**
+     * @param downWorkstation // 缁戝畾娴佺▼鍗″彿鏋跺瓙
+     */
+
+    public void bindingshelf(DownWorkstation downWorkstation) {
+        downWorkstationMapper.updateFlowCardId(downWorkstation);
+    }
+
+
+    /**
+     * @param downWorkstation // 婊℃灦鎷夎蛋 娓呴櫎娴佺▼鍗′俊鎭�
+     */
+
+    public void clearFlowCardId(DownWorkstation downWorkstation) {
+
+        downWorkstationMapper.clearFlowCardId(downWorkstation);
+    }
+
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/DownWorkstationService.java b/UnLoadGlassModule/src/main/java/com/mes/service/DownWorkstationService.java
new file mode 100644
index 0000000..9dca11e
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/DownWorkstationService.java
@@ -0,0 +1,56 @@
+package com.mes.service;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.mes.entity.DownWorkstation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+@Service
+@DS("hangzhoumes")
+public  class DownWorkstationService {
+    @Autowired
+    private com.mes.mapper.DownWorkstationMapper DownWorkstationMapper;
+
+
+    public List<DownWorkstation> getoneDownWorkstations() {
+
+   return DownWorkstationMapper.getoneDownWorkstations();
+    }
+
+    public List<DownWorkstation> gettwoDownWorkstations() {
+
+        return DownWorkstationMapper.gettwoDownWorkstations();
+    }
+    public List<Map<String, Object>> getflowCardId() {
+
+        return DownWorkstationMapper.getflowCardId();
+    }
+
+
+    public int getTotalQuantity(int workstationId) {
+        // 鎵ц鑾峰彇鎬绘暟閲忕殑閫昏緫锛屽彲浠ユ槸鏁版嵁搴撴煡璇㈡垨鍏朵粬涓氬姟閫昏緫
+        Integer totalQuantity = DownWorkstationMapper.getTotalQuantity(workstationId);
+        return totalQuantity != null ? totalQuantity : 0;
+    }
+
+    public int getRacksNumber(int workstationId) {
+        // 鎵ц鑾峰彇钀芥灦鏁伴噺鐨勯�昏緫锛屽彲浠ユ槸鏁版嵁搴撴煡璇㈡垨鍏朵粬涓氬姟閫昏緫
+        Integer racksNumber = DownWorkstationMapper.getRacksNumber(workstationId);
+        return racksNumber != null ? racksNumber : 0;
+    }
+
+    public void clearFlowCardId(int workstationId) {
+        // 鎵ц娓呴櫎鎸囧畾宸ヤ綅ID鐨勬祦绋嬪崱淇℃伅鐨勯�昏緫锛屽彲浠ユ槸鏁版嵁搴撴搷浣滄垨鍏朵粬涓氬姟閫昏緫
+        // 鍒ゆ柇濡傛灉钀芥灦鏁伴噺绛変簬鎬绘暟閲忔墽琛屾竻闄わ紝鍚﹀垯涓嶆墽琛�
+        DownWorkstationMapper.clearFlowCardInfoByWorkstationId(workstationId);
+    }
+
+
+
+
+
+
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/GlassInfoService.java b/UnLoadGlassModule/src/main/java/com/mes/service/GlassInfoService.java
new file mode 100644
index 0000000..83ca461
--- /dev/null
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/GlassInfoService.java
@@ -0,0 +1,28 @@
+package com.mes.service;
+
+import com.mes.mapper.GlassInfoMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class GlassInfoService {
+
+    @Autowired
+    private GlassInfoMapper glassInfoMapper;
+
+    public int getGlassInfoCountByFlowCardId(String flowCardId) {
+        return glassInfoMapper.getGlassInfoCountByFlowCardId(flowCardId);
+    }
+
+    public void updateFlowCardIdAndCount(String flowCardId, int glassInfoCount,int workstationId) {
+        // 璋冪敤 GlassInfoMapper 鐨� updateFlowCardIdAndCount 鏂规硶
+        int rowsAffected = glassInfoMapper.updateFlowCardIdAndCount(flowCardId, glassInfoCount,workstationId);
+        if (rowsAffected > 0) {
+            System.out.println("鏇存柊鏋跺瓙涓婃祦绋嬪崱 ID 鍜屾暟閲忔垚鍔�");
+        } else {
+            System.out.println("鏇存柊鏋跺瓙涓婃祦绋嬪崱 ID 鍜屾暟閲忓け璐�");
+        }
+    }
+
+    // 杩欓噷鍙互娣诲姞鍏朵粬涓氬姟閫昏緫鏂规硶
+}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/IOrderService.java b/UnLoadGlassModule/src/main/java/com/mes/service/IOrderService.java
deleted file mode 100644
index 9e44ceb..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/IOrderService.java
+++ /dev/null
@@ -1,2 +0,0 @@
-package com.mes.service;public interface IOrderService {
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java
index 40af511..f33714f 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleA.java
@@ -8,7 +8,8 @@
 
     public ModuleA(String QUEUENAME) {
         QUEUE_NAME = QUEUENAME;
-        receiver = new RabbitMQUtils(); // 瀹炰緥鍖� RabbitMQUtils 瀵硅薄
+        // 瀹炰緥鍖� RabbitMQUtils 瀵硅薄
+        receiver = new RabbitMQUtils();
     }
 
     public static void main(String[] argv) throws Exception {
@@ -16,11 +17,11 @@
 //        String message = "Your message to send666";
 //        String messageId = "5"; // 娑堟伅ID
 //        receiver.sendMessageWithId(QUEUE_NAME, message, messageId); // 璋冪敤 sendMessageWithId 鏂规硶鍙戦�佹秷鎭�
-        receiver.sendMessageWithId("hangzhou2", "Hello RabbitMQ!", "1");
-        receiver.sendMessageWithId("hangzhou2", "Another message", "2");
-        receiver.sendMessageWithId("hangzhou2", "Another message", "3");
-        receiver.sendMessageWithId("hangzhou2", "Another message", "4");
-        receiver.sendMessageWithId("hangzhou2", "Another message", "5");
+        RabbitMQUtils.sendMessageWithId("hangzhou2", "Hello RabbitMQ!", "1");
+        RabbitMQUtils.sendMessageWithId("hangzhou2", "Another message", "2");
+        RabbitMQUtils.sendMessageWithId("hangzhou2", "Another message", "3");
+        RabbitMQUtils.sendMessageWithId("hangzhou2", "Another message", "4");
+        RabbitMQUtils.sendMessageWithId("hangzhou2", "Another message", "5");
       //  receiver.sendMessageWithId("hangzhou2", "Yet another message", "1"); // 杩欐潯娑堟伅浼氭墦鍗伴噸澶嶆秷鎭殑閿欒淇℃伅
 
     }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java
index 2cd57e4..6c0dfba 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/ModuleB.java
@@ -18,7 +18,7 @@
             //receiver.consumeMessageById("5",QUEUE_NAME);
 
            // String receivedMessage = receiver.consumeSelectedMessage(1,QUEUE_NAME);
-        List<String> receivedMessage = receiver.browseMessages(QUEUE_NAME);
+        List<String> receivedMessage = RabbitMQUtils.browseMessages(QUEUE_NAME);
           System.out.println("Received message: " + receivedMessage);
         } catch (Exception e) {
             e.printStackTrace();
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/PlcService.java b/UnLoadGlassModule/src/main/java/com/mes/service/PlcService.java
deleted file mode 100644
index 581cfe8..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/PlcService.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package com.mes.service;
-
-import com.mes.entity.DownGlassInfo;
-import com.mes.entity.DownStorageCageDetails;
-import com.mes.entity.DownWorkstation;
-import com.mes.entity.device.PlcParameterObject;
-import com.mes.mapper.DownGlassInfoMapper;
-import com.mes.mapper.DownWorkstationMapper;
-import com.mes.tools.WebSocketServer;
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-@Data
-@Service
-public class PlcService {
-
-    @Autowired
-    private DownWorkstationMapper downWorkstationMapper;
-    private DownGlassInfo downGlassInfo;
-    private DownWorkstation downWorkstation;
-    private DownGlassInfoMapper downGlassInfoMapper;
-
-    private DownGlassInfoService downGlassInfoService;
-
-
-
-
-
-    private List<DownGlassInfo> glassList; // 瀛樻斁寰呭鐞嗙殑鐜荤拑淇℃伅
-    private List<DownStorageCageDetails> cageDetailsList; // 瀛樻斁鐜荤拑鏀剧疆鍦ㄧ紦瀛樼涓殑璇︾粏淇℃伅
-    PlcParameterObject plcread=PLCAutoMes.PlcReadObject;
-    String Robot1PLCrequestword=plcread.getPlcParameter("A01Position").getValue();// 鏈烘鎵�1PLC璇锋眰瀛�
-    String Robot2PLCrequestword=plcread.getPlcParameter("A01Position").getValue();// 鏈烘鎵�2PLC璇锋眰瀛�
-    String GlassID=plcread.getPlcParameter("A01Position").getValue();// 鐜荤拑id
-    String Glasswidth=plcread.getPlcParameter("A01Position").getValue();//鐜荤拑瀹藉害
-    String Glassheight=plcread.getPlcParameter("A01Position").getValue();//鐜荤拑楂樺害
-    String Glassthickness=plcread.getPlcParameter("A01Position").getValue();//鍘氬害
-    String PLCwancheng = plcread.getPlcParameter("A01Position").getValue();// plc瀹屾垚瀛�
-
-
-    //褰撲笅鐗囦换鍔¤〃鐘舵�佷负1鏃跺�欏皢鏁版嵁鎻掑叆鍒颁笅鐗囩幓鐠冧俊鎭〃
-    public void insertdownglassinfo() {
-
-
-        downWorkstationMapper = WebSocketServer.applicationContext.getBean(DownWorkstationMapper.class);
-        downGlassInfoService = WebSocketServer.applicationContext.getBean(DownGlassInfoService.class);
-        downGlassInfoMapper = WebSocketServer.applicationContext.getBean(DownGlassInfoMapper.class);
-        List<DownGlassInfo> taskdownGlassInf = downGlassInfoMapper.selectunloadingtaskstate();
-//
-        if (taskdownGlassInf != null && !taskdownGlassInf.isEmpty()) {
-
-
-
-
-            for (DownGlassInfo downGlassInfo : taskdownGlassInf) {
-                // 鍒涘缓鏂扮殑 DownGlassInfo 瀵硅薄骞惰缃浉鍏冲睘鎬�
-                DownGlassInfo newdownGlassInfo = new DownGlassInfo();
-
-                newdownGlassInfo.setFlowCardId(downGlassInfo.getFlowCardId());
-                Integer maxSequence = downGlassInfoMapper.getMaxSequenceByFlowCardId(downGlassInfo.getFlowCardId());
-                int sequence = maxSequence != null ? maxSequence + 1 : 1; // 鍒濆鍖栭『搴忓瓧娈靛��
-
-                newdownGlassInfo.setWidth(downGlassInfo.getWidth());
-                newdownGlassInfo.setHeight(downGlassInfo.getHeight());
-                newdownGlassInfo.setThickness(downGlassInfo.getThickness());
-                newdownGlassInfo.setFilmsid(downGlassInfo.getFilmsid());
-                newdownGlassInfo.setSequence(sequence); // 璁剧疆椤哄簭瀛楁鍊�
-
-                // 鎻掑叆鏁版嵁鍒颁笅鐗囩幓鐠冧俊鎭〃
-                downGlassInfoMapper.insert(newdownGlassInfo);
-                //鎻掑叆鏁版嵁鍒版満姊版墜浠诲姟琛�
-                downWorkstationMapper.insertdownWorkstationtask(newdownGlassInfo);
-                //鏇存柊浠诲姟琛ㄧ姸鎬佷负0
-                downGlassInfoMapper.updateTaskStateToZero(downGlassInfo.getFlowCardId());
-
-                sequence++; // 閫掑椤哄簭瀛楁鍊�
-
-
-
-
-            }
-        }
-    }
-
-
-    //褰撴満姊版墜浠诲姟琛ㄤ腑鐘舵�佷负1锛屽伐浣嶈〃娴佺▼鍗$粦瀹氫簡鏋跺瓙 鏇存柊宸茬粡钀芥灦鏁伴噺锛屽苟涓旀妸涓嬬墖浠诲姟琛ㄧ殑瀵瑰簲璁板綍鍒犳帀
-    public void down_workstation(){
-
-        //downWorkstationMapper = WebSocketServer.applicationContext.getBean(DownWorkstationMapper.class);
-        //downGlassInfoMapper = WebSocketServer.applicationContext.getBean(DownGlassInfoMapper.class);
-        try {
-            List<DownWorkstation> taskdownWorkstation = downWorkstationMapper.selectdownWorkstationstate();
-            if (taskdownWorkstation != null && !taskdownWorkstation.isEmpty()) {
-                //鏌ヨ涓嬬墖宸ヤ綅琛ㄤ腑鏄惁缁戝畾浜嗘灦瀛愭槸鍚︾粦瀹氫簡娴佺▼鍗″彿锛屽鏋滃凡缁忕粦瀹氬垯鏇存柊宸茶惤鏋舵暟閲�,骞朵笖鍒犻櫎涓嬬墖浠诲姟琛ㄤ腑鐨勮褰�
-                for (DownWorkstation downWorkstation : taskdownWorkstation) {
-                    downWorkstationMapper.update_racks_number(downWorkstation.getFlowCardId(),6 );
-                    downGlassInfoMapper.deletetask(downWorkstation.getFlowCardId());
-
-                }
-            }
-        } catch (Exception e) {
-            // 鎵撳嵃寮傚父淇℃伅
-            e.printStackTrace();
-            // 鎴栬�呭彲浠ヨ繘琛屽叾浠栧紓甯稿鐞嗭紝姣斿璁板綍鏃ュ織鎴栬�呰繑鍥炵壒瀹氱殑閿欒淇℃伅
-        }
-
-
-    }
-
-
-
-    //缁戝畾娴佺▼鍗″彿鏋跺瓙
-    public void bindingshelf(DownWorkstation downWorkstation){
-
-        String FlowCardId=downWorkstation.getFlowCardId();
-        int WorkstationId=downWorkstation.getWorkstationId();
-
-
-
-    }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/Plchome.java b/UnLoadGlassModule/src/main/java/com/mes/service/Plchome.java
index eba16ae..266169e 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/service/Plchome.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/service/Plchome.java
@@ -1,17 +1,22 @@
 package com.mes.service;
 
+import cn.hutool.json.JSONObject;
 import com.mes.tools.WebSocketServer;
 import org.springframework.stereotype.Component;
-
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import java.util.ArrayList;
 import java.util.function.Supplier;
 
 @Component
 public class Plchome extends Thread {
     private int i = 1;
-    private final Supplier<PlcService> plcServiceSupplier;
+    private static final Logger log = LogManager.getLogger(Plchome.class);
+
+    private final Supplier<DownGlassLogic> plcServiceSupplier;
 
     public Plchome() {
-        this.plcServiceSupplier = () -> WebSocketServer.applicationContext.getBean(PlcService.class);
+        this.plcServiceSupplier = () -> WebSocketServer.applicationContext.getBean(DownGlassLogic.class);
     }
 
 
@@ -22,7 +27,7 @@
             try {
                 i++;
                 Thread.sleep(100);
-                PlcService plcService = plcServiceSupplier.get();
+                DownGlassLogic plcService = plcServiceSupplier.get();
                // plcService.performPlcActions();
                 //plcService.unloadpush();
 
@@ -32,13 +37,24 @@
 
 
                 //褰撴満姊版墜浠诲姟琛ㄤ腑鐘舵�佷负1 鏇存柊宸茬粡钀芥灦鏁伴噺锛屽苟涓旀妸涓嬬墖浠诲姟琛ㄧ殑閭f潯璁板綍鍒犳帀 宸ヤ綅琛ㄦ祦绋嬪崱缁戝畾浜嗘灦瀛�
-                plcService.down_workstation();
+                plcService.downWorkstation();
 
 
             } catch (InterruptedException e) {
                 Thread.currentThread().interrupt();
                 e.printStackTrace();
             }
+
+            JSONObject jsonObject = new JSONObject();
+            // System.out.println(arraylist6);
+            jsonObject.append("data", 1);
+            ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("unloadglass");
+            if (sendwServer != null) {
+                for (WebSocketServer webserver : sendwServer) {
+                    webserver.sendMessage(jsonObject.toString());
+                    log.info("鍑嗗鍚� WebSocket 鏈嶅姟鍣ㄥ彂閫佹秷鎭�: {}", jsonObject.toString());
+                }}
+
         }
     }
 }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/service/impl/OrderServiceImpl.java b/UnLoadGlassModule/src/main/java/com/mes/service/impl/OrderServiceImpl.java
deleted file mode 100644
index 5274aa6..0000000
--- a/UnLoadGlassModule/src/main/java/com/mes/service/impl/OrderServiceImpl.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.mes.service.impl;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.mes.entity.OrderTest;
-import com.mes.mapper.OrderTestMapper;
-import com.mes.service.IOrderService;
-import org.springframework.stereotype.Service;
-
-@Service
-@DS("erp_sd")
-public class OrderServiceImpl extends ServiceImpl<OrderTestMapper, OrderTest> implements IOrderService {
-}
diff --git a/UnLoadGlassModule/src/main/java/com/mes/tools/Configuration.java b/UnLoadGlassModule/src/main/java/com/mes/tools/Configuration.java
index 0b4ac1a..1f64390 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/tools/Configuration.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/tools/Configuration.java
@@ -5,11 +5,24 @@
 import java.io.InputStream;
 import java.util.Properties;
 
-// Configuration 绫荤敤浜庡姞杞介厤缃枃浠跺苟鎻愪緵璁块棶閰嶇疆椤圭殑鏂规硶銆�
+/**
+ * @author SNG-012
+ *
+ *  Configuration 绫荤敤浜庡姞杞介厤缃枃浠跺苟鎻愪緵璁块棶閰嶇疆椤圭殑鏂规硶銆�
+ */
 public class Configuration {
-    private Properties properties; // Properties 瀵硅薄锛岀敤浜庡瓨鍌ㄩ厤缃枃浠朵腑鐨勯敭鍊煎銆�
 
-    // 鏋勯�犲嚱鏁帮紝鏍规嵁浼犲叆鐨勬枃浠跺悕鍔犺浇閰嶇疆鏂囦欢銆�
+    /**
+     * // Properties 瀵硅薄锛岀敤浜庡瓨鍌ㄩ厤缃枃浠朵腑鐨勯敭鍊煎銆�
+     */
+    private Properties properties;
+
+    /**
+     * @param fileName
+     * @throws IOException
+     *     // 鏋勯�犲嚱鏁帮紝鏍规嵁浼犲叆鐨勬枃浠跺悕鍔犺浇閰嶇疆鏂囦欢銆�
+     */
+
     public Configuration(String fileName) throws IOException {
         // 浣跨敤绫诲姞杞藉櫒鑾峰彇璧勬簮鏂囦欢鐨勮緭鍏ユ祦銆�
         InputStream inputStream = getClass().getClassLoader().getResourceAsStream(fileName);
@@ -17,11 +30,18 @@
         if (inputStream == null) {
             throw new FileNotFoundException("Property file '" + fileName + "' not found in the classpath");
         }
-        properties = new Properties(); // 瀹炰緥鍖朠roperties瀵硅薄銆�
-        properties.load(inputStream); // 浠庤緭鍏ユ祦鍔犺浇閰嶇疆椤广��
+        // 瀹炰緥鍖朠roperties瀵硅薄銆�
+        properties = new Properties();
+        // 浠庤緭鍏ユ祦鍔犺浇閰嶇疆椤广��
+        properties.load(inputStream);
     }
 
-    // 鏍规嵁閰嶇疆椤圭殑閿幏鍙栧叾瀵瑰簲鐨勫�笺��
+    /**
+     * @param key
+     * @return
+     *     // 鏍规嵁閰嶇疆椤圭殑閿幏鍙栧叾瀵瑰簲鐨勫�笺��
+     */
+
     public String getProperty(String key) {
         return properties.getProperty(key);
     }
diff --git a/UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java b/UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java
index aa4b161..13a3bde 100644
--- a/UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java
+++ b/UnLoadGlassModule/src/main/java/com/mes/tools/WebSocketServer.java
@@ -157,4 +157,8 @@
     public void clearMessages() {
         messages.clear();
     }
+
+
+
+
 }
diff --git a/UnLoadGlassModule/src/main/resources/application.yml b/UnLoadGlassModule/src/main/resources/application.yml
index 8ba75c8..328e464 100644
--- a/UnLoadGlassModule/src/main/resources/application.yml
+++ b/UnLoadGlassModule/src/main/resources/application.yml
@@ -10,7 +10,6 @@
       primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
       strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
       datasource:
-
         hangzhoumes:
             url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
             username: root
diff --git a/UnLoadGlassModule/target/MES-UnLoadGlassModule-0.0.1-SNAPSHOT.jar.original b/UnLoadGlassModule/target/MES-UnLoadGlassModule-0.0.1-SNAPSHOT.jar.original
deleted file mode 100644
index 2be3c8d..0000000
--- a/UnLoadGlassModule/target/MES-UnLoadGlassModule-0.0.1-SNAPSHOT.jar.original
+++ /dev/null
Binary files differ
diff --git a/UnLoadGlassModule/target/classes/application.yml b/UnLoadGlassModule/target/classes/application.yml
index 8ba75c8..328e464 100644
--- a/UnLoadGlassModule/target/classes/application.yml
+++ b/UnLoadGlassModule/target/classes/application.yml
@@ -10,7 +10,6 @@
       primary: hangzhoumes #璁剧疆榛樿鐨勬暟鎹簮鎴栬�呮暟鎹簮缁�,榛樿鍊煎嵆涓簃aster
       strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
       datasource:
-
         hangzhoumes:
             url: jdbc:mysql://10.153.19.150:3306/hangzhoumes?serverTimezone=GMT%2b8
             username: root
diff --git a/UnLoadGlassModule/target/maven-archiver/pom.properties b/UnLoadGlassModule/target/maven-archiver/pom.properties
deleted file mode 100644
index 91a82d4..0000000
--- a/UnLoadGlassModule/target/maven-archiver/pom.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-artifactId=MES-UnLoadGlassModule
-groupId=com.MES-Module
-version=0.0.1-SNAPSHOT
diff --git a/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
deleted file mode 100644
index ac32ba0..0000000
--- a/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ /dev/null
@@ -1,46 +0,0 @@
-com\mes\controller\OrderTestController.class
-com\mes\service\ModuleB.class
-com\mes\common\PlcTools\S7object2.class
-com\mes\entity\userInfo\SysMenuItem.class
-com\mes\entity\userInfo\User.class
-com\mes\config\MyCorsConfig.class
-com\mes\MesApplication.class
-com\mes\tools\TokenTools.class
-com\mes\controller\userInfo\SysMenuItemController.class
-com\mes\exception\ServiceException.class
-com\mes\service\impl\OrderServiceImpl.class
-com\mes\exception\GlobalExceptionHandle.class
-com\mes\service\userInfo\SysMenuService.class
-com\mes\service\userInfo\SysErrorService.class
-com\mes\tools\WebSocketServer.class
-com\mes\config\MyCorsConfig$1.class
-com\mes\common\Result.class
-com\mes\controller\userInfo\SysMenuController.class
-com\mes\common\PlcTools\S7control.class
-com\mes\service\IOrderService.class
-com\mes\mapper\userInfo\UserMapper.class
-com\mes\common\Constants.class
-com\mes\entity\DownWorkstation.class
-com\mes\entity\userInfo\SysMenu.class
-com\mes\config\AppRunnerConfig.class
-com\mes\entity\DownStorageCageDetails.class
-com\mes\entity\DownStorageCage.class
-com\mes\config\MybatisPlusConfig.class
-com\mes\mapper\userInfo\SysMenuItemMapper.class
-com\mes\controller\dto\UserDTO.class
-com\mes\common\CacheUtil.class
-com\mes\common\PlcTools\S7object.class
-com\mes\service\userInfo\UserService.class
-com\mes\entity\DownGlassInfo.class
-com\mes\config\InterceptorConfig.class
-com\mes\entity\userInfo\SysError.class
-com\mes\service\ModuleA.class
-com\mes\config\WebSocketConfig.class
-com\mes\service\userInfo\SysMenuItemService.class
-com\mes\config\SwaggerConfig.class
-com\mes\controller\userInfo\UserController.class
-com\mes\mapper\userInfo\SysMenuMapper.class
-com\mes\entity\OrderTest.class
-com\mes\mapper\OrderTestMapper.class
-com\mes\mapper\userInfo\SysErrorMapper.class
-com\mes\common\interceptor\JwtInterceptor.class
diff --git a/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
deleted file mode 100644
index ae89025..0000000
--- a/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ /dev/null
@@ -1,45 +0,0 @@
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\userInfo\User.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\MesApplication.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\config\SwaggerConfig.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\DownStorageCage.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\CacheUtil.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\interceptor\JwtInterceptor.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\PlcTools\S7control.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\config\MybatisPlusConfig.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\config\WebSocketConfig.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\userInfo\SysMenu.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\PlcTools\S7object.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\controller\userInfo\SysMenuController.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\exception\ServiceException.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\mapper\userInfo\SysErrorMapper.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\config\InterceptorConfig.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\config\AppRunnerConfig.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\mapper\userInfo\SysMenuItemMapper.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\mapper\userInfo\SysMenuMapper.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\userInfo\SysMenuItemService.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\Result.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\DownWorkstation.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\userInfo\SysError.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\tools\WebSocketServer.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\PlcTools\S7object2.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\ModuleA.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\userInfo\SysErrorService.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\config\MyCorsConfig.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\OrderTest.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\userInfo\UserService.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\controller\userInfo\SysMenuItemController.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\IOrderService.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\common\Constants.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\controller\OrderTestController.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\exception\GlobalExceptionHandle.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\tools\TokenTools.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\ModuleB.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\mapper\userInfo\UserMapper.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\DownGlassInfo.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\controller\userInfo\UserController.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\DownStorageCageDetails.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\userInfo\SysMenuService.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\entity\userInfo\SysMenuItem.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\service\impl\OrderServiceImpl.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\controller\dto\UserDTO.java
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\main\java\com\mes\mapper\OrderTestMapper.java
diff --git a/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
deleted file mode 100644
index 9c25a83..0000000
--- a/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
+++ /dev/null
@@ -1 +0,0 @@
-com\mes\MesApplicationTests.class
diff --git a/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
deleted file mode 100644
index 2feec22..0000000
--- a/UnLoadGlassModule/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
+++ /dev/null
@@ -1 +0,0 @@
-D:\xm4\HangZhouMes\UnLoadGlassModule\src\test\java\com\mes\MesApplicationTests.java
diff --git a/UnLoadGlassModule/target/surefire-reports/TEST-com.mes.MesApplicationTests.xml b/UnLoadGlassModule/target/surefire-reports/TEST-com.mes.MesApplicationTests.xml
deleted file mode 100644
index 0a62c8b..0000000
--- a/UnLoadGlassModule/target/surefire-reports/TEST-com.mes.MesApplicationTests.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" name="com.mes.MesApplicationTests" time="7.757" tests="1" errors="0" skipped="0" failures="0">
-  <properties>
-    <property name="sun.desktop" value="windows"/>
-    <property name="awt.toolkit" value="sun.awt.windows.WToolkit"/>
-    <property name="file.encoding.pkg" value="sun.io"/>
-    <property name="java.specification.version" value="1.8"/>
-    <property name="sun.cpu.isalist" value="amd64"/>
-    <property name="sun.jnu.encoding" value="GBK"/>
-    <property name="java.class.path" value="D:\xm4\HangZhouMes\UnLoadGlassModule\target\test-classes;D:\xm4\HangZhouMes\UnLoadGlassModule\target\classes;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.5.9\spring-boot-starter-web-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter\2.5.9\spring-boot-starter-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot\2.5.9\spring-boot-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.5.9\spring-boot-starter-logging-2.5.9.jar;C:\Users\SNG-012\.m2\repository\ch\qos\logback\logback-classic\1.2.10\logback-classic-1.2.10.jar;C:\Users\SNG-012\.m2\repository\ch\qos\logback\logback-core\1.2.10\logback-core-1.2.10.jar;C:\Users\SNG-012\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.1\log4j-to-slf4j-2.17.1.jar;C:\Users\SNG-012\.m2\repository\org\apache\logging\log4j\log4j-api\2.17.1\log4j-api-2.17.1.jar;C:\Users\SNG-012\.m2\repository\org\slf4j\jul-to-slf4j\1.7.33\jul-to-slf4j-1.7.33.jar;C:\Users\SNG-012\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\SNG-012\.m2\repository\org\yaml\snakeyaml\1.28\snakeyaml-1.28.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.5.9\spring-boot-starter-json-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.12.6\jackson-datatype-jdk8-2.12.6.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.12.6\jackson-datatype-jsr310-2.12.6.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.12.6\jackson-module-parameter-names-2.12.6.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.5.9\spring-boot-starter-tomcat-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.56\tomcat-embed-core-9.0.56.jar;C:\Users\SNG-012\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.56\tomcat-embed-el-9.0.56.jar;C:\Users\SNG-012\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.56\tomcat-embed-websocket-9.0.56.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-web\5.3.15\spring-web-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-webmvc\5.3.15\spring-webmvc-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-aop\5.3.15\spring-aop-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-context\5.3.15\spring-context-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-expression\5.3.15\spring-expression-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.3.1\mybatis-spring-boot-starter-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\2.5.9\spring-boot-starter-jdbc-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\zaxxer\HikariCP\4.0.3\HikariCP-4.0.3.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-jdbc\5.3.15\spring-jdbc-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\2.3.1\mybatis-spring-boot-autoconfigure-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\mybatis\3.5.13\mybatis-3.5.13.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\mybatis-spring\2.1.1\mybatis-spring-2.1.1.jar;C:\Users\SNG-012\.m2\repository\com\alibaba\fastjson\1.2.70\fastjson-1.2.70.jar;C:\Users\SNG-012\.m2\repository\org\springframework\data\spring-data-commons\2.3.1.RELEASE\spring-data-commons-2.3.1.RELEASE.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-core\5.3.15\spring-core-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-jcl\5.3.15\spring-jcl-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-beans\5.3.15\spring-beans-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\slf4j\slf4j-api\1.7.33\slf4j-api-1.7.33.jar;C:\Users\SNG-012\.m2\repository\mysql\mysql-connector-java\8.0.20\mysql-connector-java-8.0.20.jar;C:\Users\SNG-012\.m2\repository\org\projectlombok\lombok\1.18.22\lombok-1.18.22.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-test\2.5.9\spring-boot-starter-test-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-test\2.5.9\spring-boot-test-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-test-autoconfigure\2.5.9\spring-boot-test-autoconfigure-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\jayway\jsonpath\json-path\2.5.0\json-path-2.5.0.jar;C:\Users\SNG-012\.m2\repository\net\minidev\json-smart\2.4.7\json-smart-2.4.7.jar;C:\Users\SNG-012\.m2\repository\net\minidev\accessors-smart\2.4.7\accessors-smart-2.4.7.jar;C:\Users\SNG-012\.m2\repository\org\ow2\asm\asm\9.1\asm-9.1.jar;C:\Users\SNG-012\.m2\repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;C:\Users\SNG-012\.m2\repository\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;C:\Users\SNG-012\.m2\repository\org\hamcrest\hamcrest\2.2\hamcrest-2.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter\5.7.2\junit-jupiter-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.7.2\junit-jupiter-api-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\apiguardian\apiguardian-api\1.1.0\apiguardian-api-1.1.0.jar;C:\Users\SNG-012\.m2\repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;C:\Users\SNG-012\.m2\repository\org\junit\platform\junit-platform-commons\1.7.2\junit-platform-commons-1.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter-params\5.7.2\junit-jupiter-params-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter-engine\5.7.2\junit-jupiter-engine-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\platform\junit-platform-engine\1.7.2\junit-platform-engine-1.7.2.jar;C:\Users\SNG-012\.m2\repository\org\mockito\mockito-core\3.9.0\mockito-core-3.9.0.jar;C:\Users\SNG-012\.m2\repository\net\bytebuddy\byte-buddy\1.10.22\byte-buddy-1.10.22.jar;C:\Users\SNG-012\.m2\repository\net\bytebuddy\byte-buddy-agent\1.10.22\byte-buddy-agent-1.10.22.jar;C:\Users\SNG-012\.m2\repository\org\objenesis\objenesis\3.2\objenesis-3.2.jar;C:\Users\SNG-012\.m2\repository\org\mockito\mockito-junit-jupiter\3.9.0\mockito-junit-jupiter-3.9.0.jar;C:\Users\SNG-012\.m2\repository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;C:\Users\SNG-012\.m2\repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-test\5.3.15\spring-test-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\xmlunit\xmlunit-core\2.8.4\xmlunit-core-2.8.4.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter-test\2.3.1\mybatis-spring-boot-starter-test-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-test-autoconfigure\2.3.1\mybatis-spring-boot-test-autoconfigure-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-tx\5.3.15\spring-tx-5.3.15.jar;C:\Users\SNG-012\.m2\repository\com\auth0\java-jwt\3.10.3\java-jwt-3.10.3.jar;C:\Users\SNG-012\.m2\repository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;C:\Users\SNG-012\.m2\repository\org\assertj\assertj-core\3.19.0\assertj-core-3.19.0.jar;C:\Users\SNG-012\.m2\repository\cn\hutool\hutool-all\5.4.0\hutool-all-5.4.0.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-boot-starter\3.5.1\mybatis-plus-boot-starter-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus\3.5.1\mybatis-plus-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-extension\3.5.1\mybatis-plus-extension-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-core\3.5.1\mybatis-plus-core-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-annotation\3.5.1\mybatis-plus-annotation-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\github\jsqlparser\jsqlparser\4.3\jsqlparser-4.3.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.5.9\spring-boot-autoconfigure-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\dynamic-datasource-spring-boot-starter\3.5.1\dynamic-datasource-spring-boot-starter-3.5.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-aop\2.5.9\spring-boot-starter-aop-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\aspectj\aspectjweaver\1.9.7\aspectjweaver-1.9.7.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-swagger2\2.9.2\springfox-swagger2-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\swagger\swagger-models\1.5.20\swagger-models-1.5.20.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-spi\2.9.2\springfox-spi-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-core\2.9.2\springfox-core-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-schema\2.9.2\springfox-schema-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-swagger-common\2.9.2\springfox-swagger-common-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-spring-web\2.9.2\springfox-spring-web-2.9.2.jar;C:\Users\SNG-012\.m2\repository\com\google\guava\guava\20.0\guava-20.0.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;C:\Users\SNG-012\.m2\repository\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;C:\Users\SNG-012\.m2\repository\org\mapstruct\mapstruct\1.2.0.Final\mapstruct-1.2.0.Final.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-swagger-ui\2.9.2\springfox-swagger-ui-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\swagger\swagger-annotations\1.5.20\swagger-annotations-1.5.20.jar;C:\Users\SNG-012\.m2\repository\com\github\xingshuangs\iot-communication\1.4.2\iot-communication-1.4.2.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-cache\2.5.9\spring-boot-starter-cache-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-context-support\5.3.15\spring-context-support-5.3.15.jar;C:\Users\SNG-012\.m2\repository\com\rabbitmq\amqp-client\5.13.1\amqp-client-5.13.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-amqp\2.5.9\spring-boot-starter-amqp-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-messaging\5.3.15\spring-messaging-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\amqp\spring-rabbit\2.3.14\spring-rabbit-2.3.14.jar;C:\Users\SNG-012\.m2\repository\org\springframework\amqp\spring-amqp\2.3.14\spring-amqp-2.3.14.jar;C:\Users\SNG-012\.m2\repository\org\springframework\retry\spring-retry\1.3.1\spring-retry-1.3.1.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.13.0\jackson-databind-2.13.0.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.13.0\jackson-core-2.13.0.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.0\jackson-annotations-2.13.0.jar;C:\Users\SNG-012\.m2\repository\io\netty\netty-all\4.1.36.Final\netty-all-4.1.36.Final.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa\2.5.9\spring-boot-starter-data-jpa-2.5.9.jar;C:\Users\SNG-012\.m2\repository\jakarta\transaction\jakarta.transaction-api\1.3.3\jakarta.transaction-api-1.3.3.jar;C:\Users\SNG-012\.m2\repository\jakarta\persistence\jakarta.persistence-api\2.2.3\jakarta.persistence-api-2.2.3.jar;C:\Users\SNG-012\.m2\repository\org\hibernate\hibernate-core\5.4.33\hibernate-core-5.4.33.jar;C:\Users\SNG-012\.m2\repository\org\jboss\logging\jboss-logging\3.4.3.Final\jboss-logging-3.4.3.Final.jar;C:\Users\SNG-012\.m2\repository\org\javassist\javassist\3.27.0-GA\javassist-3.27.0-GA.jar;C:\Users\SNG-012\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\SNG-012\.m2\repository\org\jboss\jandex\2.2.3.Final\jandex-2.2.3.Final.jar;C:\Users\SNG-012\.m2\repository\org\dom4j\dom4j\2.1.3\dom4j-2.1.3.jar;C:\Users\SNG-012\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.1.2.Final\hibernate-commons-annotations-5.1.2.Final.jar;C:\Users\SNG-012\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.5\jaxb-runtime-2.3.5.jar;C:\Users\SNG-012\.m2\repository\org\glassfish\jaxb\txw2\2.3.5\txw2-2.3.5.jar;C:\Users\SNG-012\.m2\repository\com\sun\istack\istack-commons-runtime\3.0.12\istack-commons-runtime-3.0.12.jar;C:\Users\SNG-012\.m2\repository\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;C:\Users\SNG-012\.m2\repository\org\springframework\data\spring-data-jpa\2.5.8\spring-data-jpa-2.5.8.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-orm\5.3.15\spring-orm-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-aspects\5.3.15\spring-aspects-5.3.15.jar;"/>
-    <property name="java.vm.vendor" value="Oracle Corporation"/>
-    <property name="sun.arch.data.model" value="64"/>
-    <property name="user.variant" value=""/>
-    <property name="java.vendor.url" value="http://java.oracle.com/"/>
-    <property name="user.timezone" value="Asia/Shanghai"/>
-    <property name="java.vm.specification.version" value="1.8"/>
-    <property name="os.name" value="Windows 10"/>
-    <property name="user.country" value="CN"/>
-    <property name="sun.java.launcher" value="SUN_STANDARD"/>
-    <property name="sun.boot.library.path" value="C:\Program Files\Java\jdk1.8.0_121\jre\bin"/>
-    <property name="sun.java.command" value="C:\Users\SNG-012\AppData\Local\Temp\surefire6753504794343487260\surefirebooter2512628117312458217.jar C:\Users\SNG-012\AppData\Local\Temp\surefire6753504794343487260 2024-02-26T10-31-20_305-jvmRun1 surefire218270707117368528tmp surefire_05038678481118318350tmp"/>
-    <property name="surefire.test.class.path" value="D:\xm4\HangZhouMes\UnLoadGlassModule\target\test-classes;D:\xm4\HangZhouMes\UnLoadGlassModule\target\classes;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.5.9\spring-boot-starter-web-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter\2.5.9\spring-boot-starter-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot\2.5.9\spring-boot-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.5.9\spring-boot-starter-logging-2.5.9.jar;C:\Users\SNG-012\.m2\repository\ch\qos\logback\logback-classic\1.2.10\logback-classic-1.2.10.jar;C:\Users\SNG-012\.m2\repository\ch\qos\logback\logback-core\1.2.10\logback-core-1.2.10.jar;C:\Users\SNG-012\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.1\log4j-to-slf4j-2.17.1.jar;C:\Users\SNG-012\.m2\repository\org\apache\logging\log4j\log4j-api\2.17.1\log4j-api-2.17.1.jar;C:\Users\SNG-012\.m2\repository\org\slf4j\jul-to-slf4j\1.7.33\jul-to-slf4j-1.7.33.jar;C:\Users\SNG-012\.m2\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;C:\Users\SNG-012\.m2\repository\org\yaml\snakeyaml\1.28\snakeyaml-1.28.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.5.9\spring-boot-starter-json-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.12.6\jackson-datatype-jdk8-2.12.6.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.12.6\jackson-datatype-jsr310-2.12.6.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.12.6\jackson-module-parameter-names-2.12.6.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\2.5.9\spring-boot-starter-tomcat-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.56\tomcat-embed-core-9.0.56.jar;C:\Users\SNG-012\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.56\tomcat-embed-el-9.0.56.jar;C:\Users\SNG-012\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.56\tomcat-embed-websocket-9.0.56.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-web\5.3.15\spring-web-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-webmvc\5.3.15\spring-webmvc-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-aop\5.3.15\spring-aop-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-context\5.3.15\spring-context-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-expression\5.3.15\spring-expression-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.3.1\mybatis-spring-boot-starter-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\2.5.9\spring-boot-starter-jdbc-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\zaxxer\HikariCP\4.0.3\HikariCP-4.0.3.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-jdbc\5.3.15\spring-jdbc-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\2.3.1\mybatis-spring-boot-autoconfigure-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\mybatis\3.5.13\mybatis-3.5.13.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\mybatis-spring\2.1.1\mybatis-spring-2.1.1.jar;C:\Users\SNG-012\.m2\repository\com\alibaba\fastjson\1.2.70\fastjson-1.2.70.jar;C:\Users\SNG-012\.m2\repository\org\springframework\data\spring-data-commons\2.3.1.RELEASE\spring-data-commons-2.3.1.RELEASE.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-core\5.3.15\spring-core-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-jcl\5.3.15\spring-jcl-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-beans\5.3.15\spring-beans-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\slf4j\slf4j-api\1.7.33\slf4j-api-1.7.33.jar;C:\Users\SNG-012\.m2\repository\mysql\mysql-connector-java\8.0.20\mysql-connector-java-8.0.20.jar;C:\Users\SNG-012\.m2\repository\org\projectlombok\lombok\1.18.22\lombok-1.18.22.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-test\2.5.9\spring-boot-starter-test-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-test\2.5.9\spring-boot-test-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-test-autoconfigure\2.5.9\spring-boot-test-autoconfigure-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\jayway\jsonpath\json-path\2.5.0\json-path-2.5.0.jar;C:\Users\SNG-012\.m2\repository\net\minidev\json-smart\2.4.7\json-smart-2.4.7.jar;C:\Users\SNG-012\.m2\repository\net\minidev\accessors-smart\2.4.7\accessors-smart-2.4.7.jar;C:\Users\SNG-012\.m2\repository\org\ow2\asm\asm\9.1\asm-9.1.jar;C:\Users\SNG-012\.m2\repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;C:\Users\SNG-012\.m2\repository\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;C:\Users\SNG-012\.m2\repository\org\hamcrest\hamcrest\2.2\hamcrest-2.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter\5.7.2\junit-jupiter-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.7.2\junit-jupiter-api-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\apiguardian\apiguardian-api\1.1.0\apiguardian-api-1.1.0.jar;C:\Users\SNG-012\.m2\repository\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;C:\Users\SNG-012\.m2\repository\org\junit\platform\junit-platform-commons\1.7.2\junit-platform-commons-1.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter-params\5.7.2\junit-jupiter-params-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\jupiter\junit-jupiter-engine\5.7.2\junit-jupiter-engine-5.7.2.jar;C:\Users\SNG-012\.m2\repository\org\junit\platform\junit-platform-engine\1.7.2\junit-platform-engine-1.7.2.jar;C:\Users\SNG-012\.m2\repository\org\mockito\mockito-core\3.9.0\mockito-core-3.9.0.jar;C:\Users\SNG-012\.m2\repository\net\bytebuddy\byte-buddy\1.10.22\byte-buddy-1.10.22.jar;C:\Users\SNG-012\.m2\repository\net\bytebuddy\byte-buddy-agent\1.10.22\byte-buddy-agent-1.10.22.jar;C:\Users\SNG-012\.m2\repository\org\objenesis\objenesis\3.2\objenesis-3.2.jar;C:\Users\SNG-012\.m2\repository\org\mockito\mockito-junit-jupiter\3.9.0\mockito-junit-jupiter-3.9.0.jar;C:\Users\SNG-012\.m2\repository\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;C:\Users\SNG-012\.m2\repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-test\5.3.15\spring-test-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\xmlunit\xmlunit-core\2.8.4\xmlunit-core-2.8.4.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-starter-test\2.3.1\mybatis-spring-boot-starter-test-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\mybatis\spring\boot\mybatis-spring-boot-test-autoconfigure\2.3.1\mybatis-spring-boot-test-autoconfigure-2.3.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-tx\5.3.15\spring-tx-5.3.15.jar;C:\Users\SNG-012\.m2\repository\com\auth0\java-jwt\3.10.3\java-jwt-3.10.3.jar;C:\Users\SNG-012\.m2\repository\commons-codec\commons-codec\1.15\commons-codec-1.15.jar;C:\Users\SNG-012\.m2\repository\org\assertj\assertj-core\3.19.0\assertj-core-3.19.0.jar;C:\Users\SNG-012\.m2\repository\cn\hutool\hutool-all\5.4.0\hutool-all-5.4.0.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-boot-starter\3.5.1\mybatis-plus-boot-starter-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus\3.5.1\mybatis-plus-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-extension\3.5.1\mybatis-plus-extension-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-core\3.5.1\mybatis-plus-core-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\mybatis-plus-annotation\3.5.1\mybatis-plus-annotation-3.5.1.jar;C:\Users\SNG-012\.m2\repository\com\github\jsqlparser\jsqlparser\4.3\jsqlparser-4.3.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\2.5.9\spring-boot-autoconfigure-2.5.9.jar;C:\Users\SNG-012\.m2\repository\com\baomidou\dynamic-datasource-spring-boot-starter\3.5.1\dynamic-datasource-spring-boot-starter-3.5.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-aop\2.5.9\spring-boot-starter-aop-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\aspectj\aspectjweaver\1.9.7\aspectjweaver-1.9.7.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-swagger2\2.9.2\springfox-swagger2-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\swagger\swagger-models\1.5.20\swagger-models-1.5.20.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-spi\2.9.2\springfox-spi-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-core\2.9.2\springfox-core-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-schema\2.9.2\springfox-schema-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-swagger-common\2.9.2\springfox-swagger-common-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-spring-web\2.9.2\springfox-spring-web-2.9.2.jar;C:\Users\SNG-012\.m2\repository\com\google\guava\guava\20.0\guava-20.0.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;C:\Users\SNG-012\.m2\repository\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;C:\Users\SNG-012\.m2\repository\org\mapstruct\mapstruct\1.2.0.Final\mapstruct-1.2.0.Final.jar;C:\Users\SNG-012\.m2\repository\io\springfox\springfox-swagger-ui\2.9.2\springfox-swagger-ui-2.9.2.jar;C:\Users\SNG-012\.m2\repository\io\swagger\swagger-annotations\1.5.20\swagger-annotations-1.5.20.jar;C:\Users\SNG-012\.m2\repository\com\github\xingshuangs\iot-communication\1.4.2\iot-communication-1.4.2.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-cache\2.5.9\spring-boot-starter-cache-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-context-support\5.3.15\spring-context-support-5.3.15.jar;C:\Users\SNG-012\.m2\repository\com\rabbitmq\amqp-client\5.13.1\amqp-client-5.13.1.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-amqp\2.5.9\spring-boot-starter-amqp-2.5.9.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-messaging\5.3.15\spring-messaging-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\amqp\spring-rabbit\2.3.14\spring-rabbit-2.3.14.jar;C:\Users\SNG-012\.m2\repository\org\springframework\amqp\spring-amqp\2.3.14\spring-amqp-2.3.14.jar;C:\Users\SNG-012\.m2\repository\org\springframework\retry\spring-retry\1.3.1\spring-retry-1.3.1.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.13.0\jackson-databind-2.13.0.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.13.0\jackson-core-2.13.0.jar;C:\Users\SNG-012\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.0\jackson-annotations-2.13.0.jar;C:\Users\SNG-012\.m2\repository\io\netty\netty-all\4.1.36.Final\netty-all-4.1.36.Final.jar;C:\Users\SNG-012\.m2\repository\org\springframework\boot\spring-boot-starter-data-jpa\2.5.9\spring-boot-starter-data-jpa-2.5.9.jar;C:\Users\SNG-012\.m2\repository\jakarta\transaction\jakarta.transaction-api\1.3.3\jakarta.transaction-api-1.3.3.jar;C:\Users\SNG-012\.m2\repository\jakarta\persistence\jakarta.persistence-api\2.2.3\jakarta.persistence-api-2.2.3.jar;C:\Users\SNG-012\.m2\repository\org\hibernate\hibernate-core\5.4.33\hibernate-core-5.4.33.jar;C:\Users\SNG-012\.m2\repository\org\jboss\logging\jboss-logging\3.4.3.Final\jboss-logging-3.4.3.Final.jar;C:\Users\SNG-012\.m2\repository\org\javassist\javassist\3.27.0-GA\javassist-3.27.0-GA.jar;C:\Users\SNG-012\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\SNG-012\.m2\repository\org\jboss\jandex\2.2.3.Final\jandex-2.2.3.Final.jar;C:\Users\SNG-012\.m2\repository\org\dom4j\dom4j\2.1.3\dom4j-2.1.3.jar;C:\Users\SNG-012\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.1.2.Final\hibernate-commons-annotations-5.1.2.Final.jar;C:\Users\SNG-012\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.5\jaxb-runtime-2.3.5.jar;C:\Users\SNG-012\.m2\repository\org\glassfish\jaxb\txw2\2.3.5\txw2-2.3.5.jar;C:\Users\SNG-012\.m2\repository\com\sun\istack\istack-commons-runtime\3.0.12\istack-commons-runtime-3.0.12.jar;C:\Users\SNG-012\.m2\repository\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;C:\Users\SNG-012\.m2\repository\org\springframework\data\spring-data-jpa\2.5.8\spring-data-jpa-2.5.8.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-orm\5.3.15\spring-orm-5.3.15.jar;C:\Users\SNG-012\.m2\repository\org\springframework\spring-aspects\5.3.15\spring-aspects-5.3.15.jar;"/>
-    <property name="sun.cpu.endian" value="little"/>
-    <property name="user.home" value="C:\Users\SNG-012"/>
-    <property name="user.language" value="zh"/>
-    <property name="java.specification.vendor" value="Oracle Corporation"/>
-    <property name="java.home" value="C:\Program Files\Java\jdk1.8.0_121\jre"/>
-    <property name="basedir" value="D:\xm4\HangZhouMes\UnLoadGlassModule"/>
-    <property name="file.separator" value="\"/>
-    <property name="line.separator" value="&#10;"/>
-    <property name="java.vm.specification.vendor" value="Oracle Corporation"/>
-    <property name="java.specification.name" value="Java Platform API Specification"/>
-    <property name="java.awt.graphicsenv" value="sun.awt.Win32GraphicsEnvironment"/>
-    <property name="surefire.real.class.path" value="C:\Users\SNG-012\AppData\Local\Temp\surefire6753504794343487260\surefirebooter2512628117312458217.jar"/>
-    <property name="sun.boot.class.path" value="C:\Program Files\Java\jdk1.8.0_121\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_121\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_121\jre\classes"/>
-    <property name="user.script" value=""/>
-    <property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
-    <property name="java.runtime.version" value="1.8.0_121-b13"/>
-    <property name="user.name" value="SNG-012"/>
-    <property name="path.separator" value=";"/>
-    <property name="os.version" value="10.0"/>
-    <property name="java.endorsed.dirs" value="C:\Program Files\Java\jdk1.8.0_121\jre\lib\endorsed"/>
-    <property name="java.runtime.name" value="Java(TM) SE Runtime Environment"/>
-    <property name="file.encoding" value="GBK"/>
-    <property name="java.vm.name" value="Java HotSpot(TM) 64-Bit Server VM"/>
-    <property name="localRepository" value="C:\Users\SNG-012\.m2\repository"/>
-    <property name="java.vendor.url.bug" value="http://bugreport.sun.com/bugreport/"/>
-    <property name="java.io.tmpdir" value="C:\Users\SNG-012\AppData\Local\Temp\"/>
-    <property name="idea.version" value="2021.1.3"/>
-    <property name="java.version" value="1.8.0_121"/>
-    <property name="user.dir" value="D:\xm4\HangZhouMes\UnLoadGlassModule"/>
-    <property name="os.arch" value="amd64"/>
-    <property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
-    <property name="java.awt.printerjob" value="sun.awt.windows.WPrinterJob"/>
-    <property name="sun.os.patch.level" value=""/>
-    <property name="java.library.path" value="C:\Program Files\Java\jdk1.8.0_121\jre\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;D:\vm\bin\;D:\jdk17.0.8\bin;D:\apache-jmeter-5.4.1\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;D:/benxiaohai/mysql8/mysql8/mysql8\bin;C:\Program Files\Java\jdk1.8.0_121\bin;C:\Program Files\Tomcat\apache-tomcat-8.0.39\bin;D:\涓嬭浇\ADB;D;\github\platform-tools;C:\Program Files\python;C:\Program Files\python\Scripts;D:\BtSoft\panel\script;C:\Program Files\Google\Chrome\Application;C:\Program Files\apache-maven-3.9.1\bin;D:\寰俊web寮�鍙戣�呭伐鍏穃dll;C:\Pro;ram Files (x86)\NetSarang\Xshell 7\;C:\Program Files\Git\cmd;C:\Program Files\TortoiseGit\bin;D:\宸ヤ綔\apache-ant-1.9.16-bin\apache-ant-1.9.16\bin;D:\宸ヤ綔\Microsoft VS Code\bin;C:\Program Files (x86)\nodejs\;C:\Program Files\Tomcat2\apache-tomcat2\bin;C:\Program Files\Docker;C:\Program Files\Docker\Docker\resources\bin;D:\Erlang OTP\bin;D:\MQ\rabbitmq_server-3.12.12\sbin;D:\python\Scripts\;D:\python\;C:\Users\SNG-012\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Google\Chrome\Application;C:\Users\SNG-012\AppData\Roaming\npm;."/>
-    <property name="java.vm.info" value="mixed mode"/>
-    <property name="java.vendor" value="Oracle Corporation"/>
-    <property name="java.vm.version" value="25.121-b13"/>
-    <property name="java.ext.dirs" value="C:\Program Files\Java\jdk1.8.0_121\jre\lib\ext;C:\Windows\Sun\Java\lib\ext"/>
-    <property name="sun.io.unicode.encoding" value="UnicodeLittle"/>
-    <property name="java.class.version" value="52.0"/>
-  </properties>
-  <testcase name="contextLoads" classname="com.mes.MesApplicationTests" time="0.09"/>
-</testsuite>
\ No newline at end of file
diff --git a/UnLoadGlassModule/target/surefire-reports/com.mes.MesApplicationTests.txt b/UnLoadGlassModule/target/surefire-reports/com.mes.MesApplicationTests.txt
deleted file mode 100644
index 92fc39e..0000000
--- a/UnLoadGlassModule/target/surefire-reports/com.mes.MesApplicationTests.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--------------------------------------------------------------------------------
-Test set: com.mes.MesApplicationTests
--------------------------------------------------------------------------------
-Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.757 s - in com.mes.MesApplicationTests

--
Gitblit v1.8.0