From 69e3dd71185b1cdaf524a4d2a25bf9648bd02ff4 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期五, 10 五月 2024 17:01:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java                  |   16 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java          |   33 +
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java                                   |   29 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java                   |    2 
 hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java                    |   51 ++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml                      |    0 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java              |   95 +++++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java                      |   20 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java                                   |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java                           |    2 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java                        |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java                               |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java                   |   15 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java                                   |   30 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java                            |   10 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java          |   12 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/WebSocketServer.java                            |  160 +++++++++
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java |   57 ++-
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java                       |   28 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java                   |    5 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/controller/EngineeringController.java                 |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java                                    |   20 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java                         |    0 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java             |  124 ++++---
 /dev/null                                                                                                                    |   30 -
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json                                |   71 ++++
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java                              |   88 ++++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java                       |   78 ++++
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java                  |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java                           |    4 
 30 files changed, 810 insertions(+), 180 deletions(-)

diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/controller/EngineeringController.java
similarity index 89%
rename from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/controller/EngineeringController.java
index 6b2c34c..f80d3c0 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/controller/EngineeringController.java
@@ -2,9 +2,7 @@
 
 
 import com.mes.engineering.entity.Engineering;
-import com.mes.engineering.service.impl.EngineeringServiceImpl;
 import com.mes.utils.Result;
-import com.mes.workstation.service.UpWorkstationService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java
similarity index 97%
rename from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java
index 4e68183..586a7b3 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/entity/Engineering.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/Engineering.java
@@ -89,7 +89,7 @@
     /**
      * 鑶滅郴id
      */
-    private Integer filmsId;
+    private String filmsId;
 
     /**
      * 澶囨敞
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java
new file mode 100644
index 0000000..38b62f7
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/entity/OptimizeEngineering.java
@@ -0,0 +1,78 @@
+package com.mes.engineering.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author SNG-010
+ */
+@Setter
+@Getter
+public class OptimizeEngineering {
+
+    // Getter methods
+    // Setter methods
+    /**
+     * 宸ョ▼鍙�
+     */
+    private String projectNo;
+
+    /**
+     * 宸ョ▼鍚�
+     */
+    private String projectName;
+
+    /**
+     * 骞冲潎鍒╃敤鐜�
+     */
+    private Double avgCutPct;
+
+    /**
+     * 鏈夋晥鍒╃敤鐜�
+     */
+    private Double validCutPct;
+
+    /**
+     * 灏剧墖鍒╃敤鐜�
+     */
+    private Double lastCutPct;
+
+    /**
+     * 鐘舵��
+     */
+    private Integer state;
+
+    /**
+     * 灏忕墖鎬绘暟
+     */
+    private Integer glassTotal;
+    /**
+     * 灏忕墖鎬婚潰绉�
+     */
+    private Double glassTotalArea;
+    /**
+     * 璁″垝鍘熺墖鎬绘暟
+     */
+    private Integer rawStockQty;
+    /**
+     * 璁″垝鍘熺墖鎬婚潰绉�
+     */
+    private Double rawStockArea;
+    /**
+     * 瀹為檯鍘熺墖鎬绘暟
+     */
+    private Integer actualStockQty;
+    /**
+     * 瀹為檯鍘熺墖鎬婚潰绉�
+     */
+    private Double actualStockArea;
+    /**
+     * 鑶滅郴
+     */
+    private  String glassType;
+    /**
+     * 澶囨敞
+     */
+    private  String remark;
+
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
similarity index 100%
rename from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/EngineeringMapper.java
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml
similarity index 100%
rename from hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml
rename to hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/mapper/xml/EngineeringMapper.xml
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java
new file mode 100644
index 0000000..7c01553
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/EngineeringService.java
@@ -0,0 +1,28 @@
+package com.mes.engineering.service;
+
+import com.mes.engineering.entity.Engineering;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-04-22
+ */
+public interface EngineeringService extends IService<Engineering> {
+
+
+
+    boolean  changeTask(String projectId, Integer state);
+
+
+    List<Engineering> selectEngineering(String engineeringId);
+
+    void saveEngineering(List<Engineering> engineerings);
+
+    Engineering selectInitiate(Integer state);
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
new file mode 100644
index 0000000..968cd59
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
@@ -0,0 +1,95 @@
+package com.mes.engineering.service.impl;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
+import com.mes.engineering.entity.Engineering;
+import com.mes.engineering.mapper.EngineeringMapper;
+import com.mes.engineering.service.EngineeringService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.pp.entity.OptimizeProject;
+import com.mes.pp.mapper.OptimizeProjectMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * <p>
+ *  鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author wu
+ * @since 2024-04-22
+ */
+@Service
+@Slf4j
+public class EngineeringServiceImpl extends ServiceImpl<EngineeringMapper, Engineering> implements EngineeringService {
+
+    @Autowired
+    OptimizeProjectMapper optimizeProjectMapper;
+    //寮�濮�/鏆傚仠浠诲姟
+    @Override
+    public  boolean  changeTask(String projectId, Integer state) {
+        //浣跨敤projectId浣滀负鏉′欢淇敼state瀛楁
+        LambdaUpdateChainWrapper<Engineering> wrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper());
+        wrapper.set(Engineering::getState,state);
+        wrapper.eq(Engineering::getEngineerId,projectId);
+        return  wrapper.update();
+    }
+
+    @Override
+    @DS("pp")
+    public List<Engineering> selectEngineering(String engineeringId) {
+        //鏌ヨ閽㈠寲宸ョ▼淇℃伅
+        List<OptimizeProject> optimizeEngineerings = null;
+        if (engineeringId != null) {
+            QueryWrapper<OptimizeProject> wrapper = new QueryWrapper<>();
+            wrapper.select("project_no,project_name,avg_cut_pct,valid_cut_pct,last_cut_pct,glass_total,glass_total_area,raw_stock_qty,raw_stock_area,glass_type,remark ")
+                    .eq("project_no", engineeringId);
+            optimizeEngineerings = optimizeProjectMapper.selectList(wrapper);
+
+        }
+        List<Engineering> resultList=new ArrayList<>();
+// 閬嶅巻鏌ヨ缁撴灉璧嬪��
+        if (optimizeEngineerings != null) {
+            for (OptimizeProject map : optimizeEngineerings) {
+                // 鍒涘缓涓�涓柊鐨� OptimizeProject 瀵硅薄
+                Engineering engineering = new Engineering();
+                // 灏� Map 涓殑姣忎釜閿�煎鏄犲皠鍒� OptimizeProject 瀵硅薄鐨勭浉搴斿瓧娈典笂
+                engineering.setEngineerId( map.getProjectNo());//宸ョ▼id
+                engineering.setEngineerName( map.getProjectName());//宸ョ▼鍚嶇О
+                engineering.setAvgAvailability( map.getAvgCutPct());//骞冲潎浼樺寲鐜�
+                engineering.setValidAvailability( map.getValidCutPct());//鏈夋晥浼樺寲鐜�
+                engineering.setLastAvailability( map.getLastCutPct());//灏剧墖浼樺寲鐜�
+                engineering.setState(0);//鐘舵��
+                engineering.setGlassTotal( map.getGlassTotal());//灏忕墖鐜荤拑鎬绘暟
+                engineering.setGlassTotalArea( map.getGlassTotalArea());//灏忕墖鎬婚潰绉�
+                engineering.setPlanPatternTotal( map.getRawStockQty());//璁″垝鍘熺墖鎬绘暟
+                engineering.setPlanPatternTotalArea( map.getRawStockArea());//璁″垝鍘熺墖鎬婚潰绉�
+                engineering.setFilmsId( map.getGlassType());//鑶滅郴
+                engineering.setNotes( map.getRemark());//澶囨敞
+                // 灏嗘槧灏勫悗鐨勫璞℃坊鍔犲埌缁撴灉鍒楄〃涓�
+                resultList.add(engineering);
+            }
+        }
+        log.info("鏌ヨ鍑洪挗鍖栧伐绋嬮泦鍚堜繚瀛樺埌瀹炰綋绫粄}",resultList);
+        return resultList;
+    }
+
+    @Override
+    public void saveEngineering(List<Engineering> engineerings) {
+        this.saveBatch(engineerings);
+        //淇濆瓨閽㈠寲宸ョ▼淇℃伅
+    }
+
+    @Override
+    public  Engineering selectInitiate(Integer state) {
+        //鏌ヨ鏄惁鏈夊紑濮嬩笂鐗囩殑宸ョ▼浠诲姟
+        QueryWrapper<Engineering> wrapper = new QueryWrapper<>();
+            wrapper.eq("state", state);
+        return this.getOne(wrapper);
+    }
+
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
index dfa7b6e..f1fa50d 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
@@ -34,7 +34,7 @@
     /**
      * 娴佺▼鍗$幓鐠冪被鍨�
      */
-    private Integer glassType;
+    private String glassType;
 
     /**
      * 瀹�
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java
index 8f50981..622197a 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/OptimizeGlassinfo.java
@@ -15,7 +15,7 @@
     /**
      * 娴佺▼鍗″彿
      */
-    private String projectId;
+    private String processId;
 
     /**
      * 宸ョ▼绉嶇被
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
index 746b5f4..9fad7a7 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/GlassInfoService.java
@@ -1,7 +1,6 @@
 package com.mes.glassinfo.service;
 
 import com.mes.glassinfo.entity.GlassInfo;
-import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.yulichang.base.MPJBaseService;
 import java.util.List;
 
@@ -16,4 +15,7 @@
 public interface GlassInfoService extends MPJBaseService<GlassInfo> {
 
       List<GlassInfo> selectGlassInfo(String engineeringId);
+
+      void saveGlassInfo(List<GlassInfo> glassinfo);
 }
+
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
index 88838b9..25fada5 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/service/impl/GlassInfoServiceImpl.java
@@ -6,17 +6,14 @@
 import com.mes.glassinfo.entity.OptimizeGlassinfo;
 import com.mes.glassinfo.mapper.GlassInfoMapper;
 import com.mes.glassinfo.service.GlassInfoService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mes.pp.entity.OptimizeProject;
 import com.mes.pp.mapper.OptimizeProjectMapper;
-import com.mes.uppattenusage.entity.UpPattenUsage;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 /**
@@ -34,14 +31,13 @@
     OptimizeProjectMapper optimizeProjectMapper;
     @Override
     @DS("pp")
-
     public List<GlassInfo> selectGlassInfo(String engineeringId) {
         List<OptimizeGlassinfo> optimizeGlassinfos=null;
         if (engineeringId != null) {
             optimizeGlassinfos = optimizeProjectMapper.selectJoinList(OptimizeGlassinfo.class, new MPJQueryWrapper<OptimizeProject>()
                     .select("b.process_id,t.type,b.width,b.height,t.glass_thickness,t.glass_type,b.p_width,b.p_height,b.stock_id,b.heat_layout_id,b.heat_layout_sort,b.x_axis,b.y_axis,b.project_no,b.glass_id")
                     .leftJoin("optimize_detail b on t.project_no=b.project_no")
-                    .eq("t.state",200)
+                    .eq("t.state",100)
                     .eq("t.project_no", engineeringId));
         }
 
@@ -54,10 +50,13 @@
                 GlassInfo glassInfo = new GlassInfo();
                 // 灏� Map 涓殑姣忎釜閿�煎鏄犲皠鍒� OptimizeGlassinfo 瀵硅薄鐨勭浉搴斿瓧娈典笂
                 glassInfo.setEngineerId(map.getProjectNo());
-                glassInfo.setFlowCardId(map.getProjectId());
+                glassInfo.setFlowCardId(map.getProcessId());
                 glassInfo.setFilmsid(map.getGlassType());
+                glassInfo.setGlassType(map.getType());
                 glassInfo.setWidth(map.getWidth());
                 glassInfo.setHeight(map.getHeight());
+                glassInfo.setEdgWidth(map.getPWidth());
+                glassInfo.setEdgHeight(map.getPHeight());
                 glassInfo.setThickness(map.getGlassThickness());
                 glassInfo.setPatternSequence(map.getStockId());//
                 glassInfo.setTemperingLayoutId(map.getHeatLayoutId());//閽㈠寲鐗堝浘id
@@ -74,4 +73,9 @@
         log.info("鏌ヨ鍑篻lassinfopro鐨勬暟鎹畕}:",optimizeGlassinfos);
         return resultList;
     }
+
+    @Override
+    public void saveGlassInfo(List<GlassInfo> glassinfo) {
+        this.saveBatch(glassinfo);
+    }
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java
index 222759c..6b97fc2 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/controller/OptimizeProjectController.java
@@ -41,16 +41,16 @@
         return Result.build(200, "", glass);
     }
 
-    @ApiOperation("淇濆瓨宸ョ▼淇℃伅")
-    @PostMapping("/saveProject") //鏄剧ず宸ョ▼閫夋嫨淇℃伅
-    public Result<List<OptimizeProject>> saveProject(@RequestBody OptimizeRequest optimizeRequest) {
-        log.info("鑾峰彇閫夋嫨濂界殑宸ョ▼id杩涜鏌ヨ鏁版嵁鍚庝繚瀛�");
-        List<OptimizeProject> glass = optimizeProjectService.selectSaveProject(optimizeRequest);
-        log.info("鏄剧ず宸ョ▼閫夋嫨淇℃伅鍚庝繚瀛樺埌upPattenUsage琛�:{}", glass);
-        optimizeProjectService.insetupPattenUsage(glass);
-        //void insetProject(glass);
-        return Result.build(200, "", glass);
-    }
+//    @ApiOperation("淇濆瓨宸ョ▼淇℃伅")
+//    @PostMapping("/saveProject") //鏄剧ず宸ョ▼閫夋嫨淇℃伅
+//    public Result<List<OptimizeProject>> saveProject(@RequestBody OptimizeRequest optimizeRequest) {
+//        log.info("鑾峰彇閫夋嫨濂界殑宸ョ▼id杩涜鏌ヨ鏁版嵁鍚庝繚瀛�");
+//        List<OptimizeProject> glass = optimizeProjectService.selectSaveProject(optimizeRequest);
+//        log.info("鏄剧ず宸ョ▼閫夋嫨淇℃伅鍚庝繚瀛樺埌upPattenUsage琛�:{}", glass);
+//        optimizeProjectService.insetupPattenUsage(glass);
+//        //void insetProject(glass);
+//        return Result.build(200, "", glass);
+//    }
 
 }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java
index beb015c..032b7c5 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/entity/OptimizeProject.java
@@ -87,7 +87,7 @@
     /**
      * 绗竴娆″钩鍧囧垏瑁佺巼
      */
-    private String fristCutPct;
+    private Double fristCutPct;
 
     /**
      * 浣跨敤鐨勫師鏂欐暟
@@ -97,22 +97,22 @@
     /**
      * 浣跨敤鐨勫師鏂欓潰绉�
      */
-    private String rawStockArea;
+    private Double rawStockArea;
 
     /**
      * 骞冲潎鍒囪鐜�
      */
-    private String avgCutPct;
+    private Double avgCutPct;
 
     /**
      * 鏈夋晥鍒囪鐜�
      */
-    private String validCutPct;
+    private Double validCutPct;
 
     /**
      * 灏剧墖鍒囪鐜�
      */
-    private String lastCutPct;
+    private Double lastCutPct;
 
     /**
      * g娣锋帓绋嬪害
@@ -137,27 +137,27 @@
     /**
      * g涓婄墖瀹�
      */
-    private Float loadWidth;
+    private Double loadWidth;
 
     /**
      * g涓婄墖闀�
      */
-    private Float loadLength;
+    private Double loadLength;
 
     /**
      * x闂撮殧
      */
-    private Float xSpace;
+    private Double xSpace;
 
     /**
      * y闂撮殧
      */
-    private Float ySpace;
+    private Double ySpace;
 
     /**
      * g骞冲潎瑁呰浇鐜�
      */
-    private Float loadRate;
+    private Double loadRate;
 
     /**
      * 娴佺▼鍗¢泦鍚�
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java
index 0fb765e..e12e67f 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/OptimizeProjectService.java
@@ -23,13 +23,13 @@
      */
     List<OptimizeProject> listByState(OptimizeRequest optimizeRequest);
     /**
-     * 鏌ヨ淇濆瓨鍒板師鐗囦娇鐢ㄨ鎯呰〃鐨勬暟鎹�
-     * @return
-     */
-    List<OptimizeProject> selectSaveProject(OptimizeRequest optimizeRequest);
-    /**
      * 灏嗗伐绋嬩俊鎭繚瀛樺埌鍘熺墖浣跨敤璇︽儏琛�
      * @return
      */
     void insetupPattenUsage(List<OptimizeProject> glass);
+    /**
+     * 灏嗗伐绋嬩俊鎭洿鏂扮姸鎬佷负宸查鍙�
+     * @return
+     */
+    void changeTask(String engineeringId, int i);
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java
index 5df4ef4..20a4b32 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/pp/service/impl/OptimizeProjectServiceImpl.java
@@ -2,8 +2,8 @@
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.mes.pp.entity.OptimizeProject;
 import com.mes.pp.entity.request.OptimizeRequest;
@@ -15,7 +15,6 @@
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.Collections;
 import java.util.List;
 
 /**
@@ -59,11 +58,15 @@
     }
 
     @Override
-    public List<OptimizeProject> selectSaveProject(OptimizeRequest optimizeRequest) {
-        log.info("灏嗗弬鏁颁紶鍏ュ埌鏌ヨ绫婚噷,宸ョ▼鍙峰仛闈炵┖鍒ゆ柇妯$硦鏌ヨ");
+    public void changeTask(String engineeringId, int state) {
+        UpdateWrapper<OptimizeProject> wrapper = new UpdateWrapper<>();
+        wrapper.eq("project_no",engineeringId)
+                .set("state",state);
+        boolean updateSuccess = this.update(wrapper);
+        log.info("宸ョ▼琛ㄦ洿鏂扮姸鎬亄}",updateSuccess);
 
-        log.info("杩斿洖宸ョ▼淇℃伅");
-        return this.baseMapper.saveProject(optimizeRequest);
     }
 
+
+
 }
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
index 48e78f1..a8a3edf 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
@@ -1,56 +1,74 @@
 package com.mes.uppattenusage.controller;
+import com.mes.engineering.entity.Engineering;
+import com.mes.engineering.service.EngineeringService;
+import com.mes.glassinfo.service.GlassInfoService;
+import com.mes.pp.entity.OptimizeProject;
+import com.mes.pp.service.OptimizeProjectService;
+import com.mes.uppattenusage.entity.UpPattenUsage;
+import com.mes.glassinfo.entity.GlassInfo;
+import com.mes.uppattenusage.service.UpPattenUsageService;
+import com.mes.utils.Result;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
-//
-//import com.mes.uppattenusage.service.GlassInfoService;
-//import com.mes.uppattenusage.entity.OptimizeUpPattenUsage;
-//import com.mes.uppattenusage.entity.UpPattenUsage;
-//import com.mes.glassinfo.entity.GlassInfo;
-//import com.mes.uppattenusage.service.UpPattenUsageService;
-//import com.mes.utils.Result;
-//import io.swagger.annotations.ApiOperation;
-//import lombok.extern.slf4j.Slf4j;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.web.bind.annotation.GetMapping;
-//import org.springframework.web.bind.annotation.RequestBody;
-//import org.springframework.web.bind.annotation.RequestMapping;
-//import org.springframework.web.bind.annotation.RestController;
-//
-//import java.util.List;
-//
-///**
-// * <p>
-// *  鍓嶇鎺у埗鍣�
-// * </p>
-// *
-// * @author zhoush
-// * @since 2024-04-18
-// */
-//@RestController
-//@RequestMapping("/up-patten-usage")
-//@Slf4j
-//public class UpPattenUsageController {
-//
-//    @Autowired
-//    private UpPattenUsageService upPattenUsageService;
-//    @Autowired
-//    private  GlassInfoService glassInfoService;
-//    @ApiOperation("鏄剧ず姝e湪鍑虹墖鐨勫伐绋嬩俊鎭�")
-//    @GetMapping("/prioritylist") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
-//    public Result<List<UpPattenUsage>> prioritylist() {
-//        List<UpPattenUsage> glass = upPattenUsageService.prioritylist(1);
-//        log.info("鏄剧ず宸ヤ綅涓婄殑鐜荤拑淇℃伅:{}", glass);
-//        return Result.build(200, "", glass);
-//    }
-//
-//    @ApiOperation("鐐瑰嚮閫夋嫨宸ョ▼淇濆瓨鍚庤繘琛岃皟鐢�,浼犲叆宸ョ▼鍙�")
-//    @GetMapping("/saveUpPattenUsage") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
-//    public Result<Integer> saveUpPattenUsage(String engineeringId) {
-//        List<UpPattenUsage> upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineeringId);
-//        log.info("灏嗘煡璇㈠嚭鐨刄pPattenUsage鏁版嵁淇濆瓨鍒版暟鎹簱琛ㄩ噷");
-//        upPattenUsageService.saveUpPattenUsage(upPattenUsages);
-//        log.info("浠嶱P琛ㄦ煡璇lassinfo鐨勬暟鎹苟淇濆瓨鍒拌〃閲�");
-//        List<GlassInfo> glassinfo=glassInfoService.selectGlassInfo(engineeringId);
-//        return Result.build(200, "", 200);
-//    }
-//}
+import java.util.List;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author zhoush
+ * @since 2024-04-18
+ */
+@RestController
+@RequestMapping("/up-patten-usage")
+@Slf4j
+public class UpPattenUsageController {
+
+    @Autowired
+    private UpPattenUsageService upPattenUsageService;
+    @Autowired
+    private  GlassInfoService glassInfoService;
+    @Autowired
+    private  EngineeringService engineeringService;
+    @Autowired
+    private OptimizeProjectService optimizeProjectService;
+    @ApiOperation("鏄剧ず姝e湪鍑虹墖鐨勫伐绋嬩俊鎭�")
+    @GetMapping("/prioritylist") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
+    public Result<List<UpPattenUsage>> prioritylist() {
+        List<UpPattenUsage> glass = upPattenUsageService.prioritylist(1);
+        log.info("鏄剧ず宸ヤ綅涓婄殑鐜荤拑淇℃伅:{}", glass);
+        return Result.build(200, "", glass);
+    }
+
+    @ApiOperation("鐐瑰嚮閫夋嫨宸ョ▼淇濆瓨鍚庤繘琛岃皟鐢�,浼犲叆宸ョ▼鍙�")
+    @GetMapping("/saveUpPattenUsage") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
+    public Result<Integer> saveUpPattenUsage(String engineeringId) {
+        log.info("浼犲叆宸ョ▼鍙峰垽鏂槸鍚﹀凡淇濆瓨:{}", engineeringId);
+        UpPattenUsage upPattenUsage= upPattenUsageService.selectedEngineering(engineeringId);
+        if (upPattenUsage!=null){
+            log.info("宸蹭繚瀛樿繃");
+            return Result.build(200, "宸蹭繚瀛樿繃", 200);
+        }else {
+            List<UpPattenUsage> upPattenUsages = upPattenUsageService.selectSaveUpPattenUsage(engineeringId);
+            log.info("灏嗘煡璇㈠嚭鐨刄pPattenUsage鏁版嵁淇濆瓨鍒版暟鎹簱琛ㄩ噷");
+            upPattenUsageService.saveUpPattenUsage(upPattenUsages);
+            log.info("浠嶱P琛ㄦ煡璇lassinfo鐨勬暟鎹苟淇濆瓨鍒拌〃閲�");
+            List<GlassInfo> glassinfo=glassInfoService.selectGlassInfo(engineeringId);
+            glassInfoService.saveGlassInfo(glassinfo);
+            log.info("浠嶱P琛ㄦ煡璇ngineering鐨勬暟鎹苟淇濆瓨鍒拌〃閲�");
+            List<Engineering> engineerings= engineeringService.selectEngineering(engineeringId);
+            engineeringService.saveEngineering(engineerings);
+            log.info("鏇存敼pp琛ㄧ姸鎬佷负宸查鍙�");
+            optimizeProjectService.changeTask(engineeringId, 200);
+            return Result.build(200, "", 200);
+        }
+
+    }
+}
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java
index 7882159..d4aca93 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/entity/OptimizeUpPattenUsage.java
@@ -40,7 +40,7 @@
     /**
      * 鍘熺墖鐗堝浘鐗囧簭
      */
-    private Integer heatLayoutSort;
+    private Integer stockId;
 
     /**
      * 鐘舵��
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java
index 37427e8..7bc799b 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/UpPattenUsageService.java
@@ -19,5 +19,10 @@
      List<UpPattenUsage> selectSaveUpPattenUsage(String engineeringId);
 
      void saveUpPattenUsage(List<UpPattenUsage> upPattenUsages);
+
+     void updateupPattenUsageState(UpPattenUsage upPattenUsage, Integer state);
+
+     UpPattenUsage selectedEngineering(String engineeringId);
+
 }
 
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
index 59a06be..ecff14b 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/uppattenusage/service/impl/UpPattenUsageServiceImpl.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.query.MPJQueryWrapper;
 import com.mes.pp.entity.OptimizeProject;
@@ -46,7 +47,7 @@
         List<OptimizeUpPattenUsage> upPattenUsageList = null;
         if (engineeringId != null) {
             upPattenUsageList = optimizeProjectMapper.selectJoinList(OptimizeUpPattenUsage.class, new MPJQueryWrapper<OptimizeProject>()
-                    .select("t.project_no,t.glass_type,b.width,b.height,REGEXP_REPLACE(t.glass_thickness,'\\D','')as glass_thickness,b.heat_layout_sort")
+                    .select("t.project_no,t.glass_type,b.width,b.height,REGEXP_REPLACE(t.glass_thickness,'\\D','')as glass_thickness,b.stock_id")
                     .leftJoin("optimize_layout b on t.project_no=b.project_no")
                     .eq("b.project_no", engineeringId));
         }
@@ -59,12 +60,12 @@
                 // 鍒涘缓涓�涓柊鐨� OptimizeProject 瀵硅薄
                 UpPattenUsage optimizeProject = new UpPattenUsage();
                 // 灏� Map 涓殑姣忎釜閿�煎鏄犲皠鍒� OptimizeProject 瀵硅薄鐨勭浉搴斿瓧娈典笂
-                optimizeProject.setEngineeringId((String) map.getProjectNo());
-                optimizeProject.setFilmsId((String) map.getGlassType());
-                optimizeProject.setWidth((Double) map.getWidth());
-                optimizeProject.setHeight((Double) map.getHeight());
-                optimizeProject.setThickness((Double)map.getHeight());
-                optimizeProject.setLayoutSequence((Integer) map.getHeatLayoutSort());
+                optimizeProject.setEngineeringId(map.getProjectNo());
+                optimizeProject.setFilmsId( map.getGlassType());
+                optimizeProject.setWidth(map.getWidth());
+                optimizeProject.setHeight( map.getHeight());
+                optimizeProject.setThickness(map.getGlassThickness());
+                optimizeProject.setLayoutSequence( map.getStockId());
                 optimizeProject.setState(0);
                 // 灏嗘槧灏勫悗鐨勫璞℃坊鍔犲埌缁撴灉鍒楄〃涓�
                 resultList.add(optimizeProject);
@@ -80,10 +81,20 @@
         //淇濆瓨鍘熺墖浣跨敤璇︽儏琛�
     }
 
-    //@Override
-    public void selectSaveGlassinfo(String engineeringId) {
-        //淇濆瓨鐜荤拑淇℃伅琛�
-        //optimizeProjectMapper.selectJoinList();
+    @Override
+    public void updateupPattenUsageState(UpPattenUsage upPattenUsage, Integer state) {
+        upPattenUsage.setState(state);
+        boolean updateSuccess=this.updateById(upPattenUsage);
+        log.info("鏇存柊鐘舵�亄}",updateSuccess);
+        //鏇存柊鐘舵��
+    }
+
+    @Override
+    public UpPattenUsage selectedEngineering(String engineeringId) {
+        QueryWrapper<UpPattenUsage>wrapper = new QueryWrapper<>();
+        wrapper.eq("engineering_id",engineeringId)
+                .last("limit 1");
+        return this.getOne(wrapper);
     }
 
 
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java
new file mode 100644
index 0000000..4f6a172
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java
@@ -0,0 +1,29 @@
+package com.mes;
+
+import com.mes.common.S7object;
+import com.mes.job.PlcLoadGlassTask;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+@Order(1)
+
+public class AppRunnerConfig implements ApplicationRunner {
+
+    private final PlcLoadGlassTask plcLoadGlassTask;
+
+    public AppRunnerConfig(PlcLoadGlassTask plcLoadGlassTask) {
+        this.plcLoadGlassTask = plcLoadGlassTask;
+    }
+
+    @Override
+    public void run(ApplicationArguments args) throws Exception {
+        log.info("鍚姩瀹屾垚");
+        S7object.getinstance().start();
+
+    }
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java
index 2634690..593308c 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/LoadGlassModuleApplication.java
@@ -5,6 +5,7 @@
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.scheduling.annotation.EnableScheduling;
 import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
 /**
@@ -16,6 +17,7 @@
 @SpringBootApplication
 @EnableSwagger2
 @EnableDiscoveryClient
+@EnableScheduling
 @MapperScan(basePackages = "com.mes.*.mapper")
 public class LoadGlassModuleApplication {
     public static void main(String[] args) {
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/JsonFile/PlcLoadGlass.json b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/JsonFile/PlcLoadGlass.json
deleted file mode 100644
index eed5688..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/JsonFile/PlcLoadGlass.json
+++ /dev/null
@@ -1,414 +0,0 @@
-{
-   "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/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java
index 45e5467..2ad66f4 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/S7object.java
@@ -1,24 +1,34 @@
 package com.mes.common;
 
 import com.github.xingshuangs.iot.protocol.s7.enums.EPlcType;
+import com.mes.device.PlcParameterObject;
+import com.mes.tools.InitUtil;
 import com.mes.tools.S7control;
+
+
 
 /**
  * @Author : zhoush
  * @Date: 2024/4/9 15:13
  * @Description:
  */
-public class S7object {
+public class S7object extends Thread {
     public S7control plccontrol; // PLC閫氳绫诲疄渚�
-    private EPlcType plcType = EPlcType.S1500; // 瑗块棬瀛怭LC绫诲瀷
+    private EPlcType plcType = EPlcType.S1200; // 瑗块棬瀛怭LC绫诲瀷
     private String ip = "192.168.10.1"; // plc ip鍦板潃
     private int port = 102; // plc 绔彛鍙�
 
+
+    public PlcParameterObject PlcMesObject;
     private static volatile S7object instance = null;
 
     private S7object() {
         if (plccontrol == null) {
             plccontrol = new S7control(plcType, ip, port, 0, 0);
+
+            String PlcLoadGlass=S7object.class.getResource("/JsonFile/PlcLoadGlass.json").getPath();
+            //log.info(PLCAutoMes.class.getResource("").getPath());
+            PlcMesObject = InitUtil.initword(PlcLoadGlass);
         }
     }
 
@@ -33,4 +43,20 @@
         }
         return instance;
     }
+
+    @Override
+    public void run() {
+        while (this != null) {
+            try {
+                Thread.sleep(100);
+
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+
+            byte[] getplcvlues=   plccontrol.ReadByte(PlcMesObject.getPlcAddressBegin(),PlcMesObject.getPlcAddressLength());
+            PlcMesObject.setPlcParameterList(getplcvlues);
+
+        }
+    }
 }
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/WebSocketServer.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/WebSocketServer.java
new file mode 100644
index 0000000..5fabafa
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/common/WebSocketServer.java
@@ -0,0 +1,160 @@
+package com.mes.common;
+
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.stereotype.Component;
+
+import javax.websocket.*;
+import javax.websocket.server.PathParam;
+import javax.websocket.server.ServerEndpoint;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@ServerEndpoint(value = "/api/talk/{username}")
+@Component("webSocketServer")
+public class WebSocketServer {
+
+
+    public static ConfigurableApplicationContext applicationContext;
+
+    // 瑙e喅鏃犳硶娉ㄥ叆mapper闂 //浣跨敤鏂规硶
+    // homeMapper=WebSocketServer.applicationContext.getBean(HomeMapper.class);
+    public static void setApplicationContext(ConfigurableApplicationContext configurableApplicationContext) {
+        WebSocketServer.applicationContext = configurableApplicationContext;
+    }
+
+    private static final Logger log = LoggerFactory.getLogger(WebSocketServer.class);
+    private List<String> messages;
+    /**
+     * 璁板綍褰撳墠鍦ㄧ嚎杩炴帴鏁�
+     */
+    public static final Map<String, ArrayList<WebSocketServer>> sessionMap = new ConcurrentHashMap<>();
+
+    String username;
+    Session session;
+
+    public WebSocketServer() {
+        this.messages = new ArrayList<>();
+    }
+
+    /**
+     * 杩炴帴寤虹珛鎴愬姛璋冪敤鐨勬柟娉�
+     */
+    @OnOpen
+    public void onOpen(Session session, @PathParam("username") String username) {
+        this.username = username;
+        this.session = session;
+        List<WebSocketServer> webSocketServers = sessionMap.get(username);
+        if (webSocketServers == null) {
+            ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
+            arrayListwebserver.add(this);
+            sessionMap.put(username, arrayListwebserver);
+        } else {
+            webSocketServers.add(this);
+        }
+
+        log.info("鏈夋柊鐢ㄦ埛鍔犲叆锛寀sername={}, 褰撳墠鍦ㄧ嚎浜烘暟涓猴細{}", username, sessionMap.get(username).size());
+
+        // JSONObject result = new JSONObject();
+        // JSONArray array = new JSONArray();
+        // result.set("users", array);
+        // for (Object key : sessionMap.keySet()) {
+        // JSONObject jsonObject = new JSONObject();
+        // jsonObject.set("username", key);
+        // array.add(jsonObject);
+        // }
+
+        // sendAllMessage(JSONUtil.toJsonStr(result)); // 鍚庡彴鍙戦�佹秷鎭粰鎵�鏈夌殑瀹㈡埛绔�
+    }
+
+    /**
+     * 杩炴帴鍏抽棴璋冪敤鐨勬柟娉�
+     */
+    @OnClose
+    public void onClose(Session session, @PathParam("username") String username) {
+        List<WebSocketServer> webSocketServers = sessionMap.get(username);
+        ArrayList<WebSocketServer> arrayListwebserver = new ArrayList<WebSocketServer>();
+        if (webSocketServers.size() > 1) {
+            for (WebSocketServer webSocketServer : webSocketServers) {
+                if (webSocketServer != this) {
+                    arrayListwebserver.add(webSocketServer);
+                }
+            }
+            sessionMap.put(username, arrayListwebserver);
+            log.info("绉婚櫎username={}涓�鍚嶇敤鎴穝ession, {}鐨勫綋鍓嶅湪绾夸汉鏁颁负锛歿}", username, username, sessionMap.get(username).size());
+        } else {
+            sessionMap.remove(username);
+            log.info("绉婚櫎username={}涓�鍚嶇敤鎴穝ession, {}杩炴帴鍏抽棴, 褰撳墠杩炴帴鏁颁负锛歿}", username, username, sessionMap.size());
+        }
+
+    }
+
+    /**
+     * 鏀跺埌瀹㈡埛绔秷鎭悗璋冪敤鐨勬柟娉�
+     * 鍚庡彴鏀跺埌瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
+     * onMessage 鏄竴涓秷鎭殑涓浆绔�
+     * 鎺ュ彈 娴忚鍣ㄧ socket.send 鍙戦�佽繃鏉ョ殑 json鏁版嵁
+     *
+     * @param message 瀹㈡埛绔彂閫佽繃鏉ョ殑娑堟伅
+     */
+    @OnMessage
+    public void onMessage(String message, Session session, @PathParam("username") String username) {
+        log.info("鏈嶅姟绔敹鍒扮敤鎴穟sername={}鐨勬秷鎭�:{}", username, message);
+        JSONObject obj = JSONUtil.parseObj(message);
+        String text = obj.getStr("data");
+
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.set("message", text);
+        this.messages.add(text);
+        this.sendMessage(jsonObject.toString()); // JSONUtil.toJsonStr(jsonObject)
+
+    }
+
+    @OnError
+    public void onError(Session session, Throwable error) {
+        log.error("鍙戠敓閿欒");
+        error.printStackTrace();
+    }
+
+    /**
+     * 鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔�
+     */
+    public void sendMessage(String message) {
+        try {
+            // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
+            this.session.getBasicRemote().sendText(message);
+        } catch (Exception e) {
+            log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e);
+        }
+    }
+
+    // /**
+    //  * 鏈嶅姟绔彂閫佹秷鎭粰鎵�鏈夊鎴风
+    //  */
+    // public void sendAllMessage(String message) {
+    //     try {
+    //         for (WebSocketServer webSocketServer : sessionMap.values()) {
+    //             // log.info("鏈嶅姟绔粰瀹㈡埛绔痆{}]鍙戦�佹秷鎭瘂}", this.session.getId(), message);
+    //             webSocketServer.sendMessage(message);
+    //         }
+    //     } catch (Exception e) {
+    //         log.error("鏈嶅姟绔彂閫佹秷鎭粰瀹㈡埛绔け璐�", e);
+    //     }
+    // }
+
+    public List<String> getMessages() {
+        return messages;
+
+    }
+
+    public void clearMessages() {
+        messages.clear();
+    }
+
+
+}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java
deleted file mode 100644
index ebca48c..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/EngineeringService.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.mes.engineering.service;
-
-import com.mes.engineering.entity.Engineering;
-import com.baomidou.mybatisplus.extension.service.IService;
-
-/**
- * <p>
- *  鏈嶅姟绫�
- * </p>
- *
- * @author wu
- * @since 2024-04-22
- */
-public interface EngineeringService extends IService<Engineering> {
-
-    boolean  changeTask(String projectId,Integer state);
-}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
deleted file mode 100644
index fa3ec49..0000000
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/service/impl/EngineeringServiceImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.mes.engineering.service.impl;
-
-import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
-import com.mes.engineering.entity.Engineering;
-import com.mes.engineering.mapper.EngineeringMapper;
-import com.mes.engineering.service.EngineeringService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- *  鏈嶅姟瀹炵幇绫�
- * </p>
- *
- * @author wu
- * @since 2024-04-22
- */
-@Service
-public class EngineeringServiceImpl extends ServiceImpl<EngineeringMapper, Engineering> implements EngineeringService {
-    //寮�濮�/鏆傚仠浠诲姟
-    @Override
-    public  boolean  changeTask(String projectId, Integer state) {
-        //浣跨敤projectId浣滀负鏉′欢淇敼state瀛楁
-        LambdaUpdateChainWrapper<Engineering> wrapper = new LambdaUpdateChainWrapper<>(this.getBaseMapper());
-        wrapper.set(Engineering::getState,state);
-        wrapper.eq(Engineering::getEngineerId,projectId);
-        return  wrapper.update();
-    }
-
-}
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
index d3c4324..4d3f240 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
@@ -1,33 +1,113 @@
 package com.mes.job;
 
 import cn.hutool.json.JSONObject;
+import com.mes.common.S7object;
+import com.mes.device.PlcParameterObject;
+import com.mes.engineering.entity.Engineering;
+import com.mes.engineering.service.EngineeringService;
+import com.mes.uppattenusage.entity.UpPattenUsage;
+import com.mes.uppattenusage.service.UpPattenUsageService;
+import com.mes.workstation.entity.UpWorkstation;
 import com.mes.workstation.service.UpWorkstationService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+/**
+ * @author SNG-010
+ */
 @Component
 @Slf4j
 public class PlcLoadGlassTask {
 
     @Autowired
     private UpWorkstationService upWorkstationService;
+    @Autowired
+    private EngineeringService  engineeringService;
+    @Autowired
+    private UpPattenUsageService upPattenUsageService;
 
-
+    PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
     /**
      * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級
      * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃�
      */
+
     @Scheduled(fixedDelay = 300)
     public void plcLoadGlassTask() throws InterruptedException {
-        JSONObject jsonObject = new JSONObject();
         try {
-            Thread.sleep(300);
-            upWorkstationService.selectPriority();
+            log.info("寮�濮嬩笂鐗�");
+            //鑾峰彇鏄惁鏈変笂鐗囪姹�
+            String loadRequest = plcParameterObject.getPlcParameter("loadRequest").getValue();
+            //鍒ゆ柇寮�濮嬩笂鐗囩殑宸ョ▼鍙�
+            Engineering engineering=engineeringService.selectInitiate(1);
+            if("1".equals(loadRequest)&&engineering!=null){
+                UpPattenUsage upPattenUsage=upWorkstationService.selectPriority(engineering);
+                log.info("褰撴湁璇锋眰鏃舵煡璇㈠綋鍓嶄笂鐗囬『搴忕殑鐜荤拑淇℃伅{}",upPattenUsage);
+                UpWorkstation upwork=upWorkstationService.selectworkstation(upPattenUsage);
+                log.info("绗﹀悎鐨勫昂瀵哥殑宸ヤ綅鐜荤拑锛歿}",upwork);
+                if(upwork!=null){
+                    int workId=upwork.getWorkstationId();//宸ヤ綅id
+                    double width=upwork.getPatternWidth();//瀹藉害
+                    double height=upwork.getPatternHeight();//楂樺害
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("WorkId").getAddress(),workId);
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("GlassWidth").getAddress(), (long) width);
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("GlassHeight").getAddress(), (long) height);
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlc").getAddress(),1);
+                    //鍑忓皯宸ヤ綅鏁伴噺
+                    upWorkstationService.reduceWorkstationNumber(upwork);
+                    //瀹屾垚涓婄墖琛ㄧ姸鎬�
+                    upPattenUsageService.updateupPattenUsageState(upPattenUsage,1);
+
+                }
+            }
+            //鑾峰彇鏄惁鏈夋眹鎶�
+            String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue();
+            if (loadStatus!=null) {
+                log.info(loadStatus);
+                if ("1".equals(loadStatus)) {
+                    log.info("鏀跺埌姹囨姤浠诲姟瀹屾垚");
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
+                } else if ("2".equals(loadStatus)) {
+                    log.info("鏀跺埌姹囨姤鏈畬鎴愪换鍔�");
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
+                } else if ("3".equals(loadStatus)) {
+                    log.info("鏀跺埌姹囨姤鐜荤拑鐮存崯");
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 1);
+                } else {
+                    log.info("鏀跺埌姹囨姤娓�0鐘舵��");
+                    S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(), 0);
+                }
+            }
+            //鎵ц鍚庝紤鐪�300姣
+            //Thread.sleep(300);
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
+//    @Scheduled(fixedDelay = 300)
+//    public void plcLoadGlassOver() throws InterruptedException {
+//        try {
+//            //鑾峰彇鏄惁鏈夋眹鎶�
+//            String loadStatus = plcParameterObject.getPlcParameter("PlcStatus").getValue();
+//            if ("1".equals(loadStatus)){
+//                log.info("鏀跺埌姹囨姤浠诲姟瀹屾垚");
+//                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(),1);
+//            }else if ("2".equals(loadStatus)) {
+//                log.info("鏀跺埌姹囨姤鏈畬鎴愪换鍔�");
+//                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(),1);
+//            }else if("3".equals(loadStatus)){
+//                log.info("鏀跺埌姹囨姤鐜荤拑鐮存崯");
+//                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(),1);
+//            }else {
+//                log.info("鏀跺埌姹囨姤娓�0鐘舵��");
+//                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("MesToPlcStatus").getAddress(),0);
+//            }
+//
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
 
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java
index 74f6cce..b5265de 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/entity/UpWorkstation.java
@@ -56,7 +56,7 @@
     /**
      * 鍘熺墖楂�
      */
-    private Double patternHeigth;
+    private Double patternHeight;
 
     /**
      * 鍘熺墖鍘氬害
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java
index 4c2638b..ca6f827 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/UpWorkstationService.java
@@ -1,6 +1,8 @@
 package com.mes.workstation.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.mes.engineering.entity.Engineering;
+import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.workstation.entity.UpWorkSequence;
 import com.mes.workstation.entity.UpWorkstation;
 
@@ -17,10 +19,12 @@
 
 
 
-    //鍒ゆ柇浼樺厛鍚哥墖浣嶇疆鍚庡彂閫佸嚭鐗囦换鍔�
-    UpWorkSequence selectPriority();
-
-    //鏌ヨ姝e湪杩涜鐨勫伐绋�
+    //鍒ゆ柇浼樺厛鍚哥墖鐜荤拑
+    UpPattenUsage selectPriority(Engineering engineering);
+    //鏌ヨ姝e湪杩涜鐨勫崟鐗囦俊鎭�
+    UpWorkstation selectworkstation(UpPattenUsage upPattenUsage);
+    //鍑忓皯宸ヤ綅鏁伴噺
+    void reduceWorkstationNumber(UpWorkstation upwork);
 
 
     /**
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java
index ffd6491..1e24d13 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/workstation/service/impl/UpWorkstationServiceImpl.java
@@ -1,7 +1,9 @@
 package com.mes.workstation.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.mes.engineering.entity.Engineering;
 import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.uppattenusage.mapper.UpPattenUsageMapper;
 import com.mes.workstation.entity.UpWorkSequence;
@@ -27,36 +29,47 @@
 public class UpWorkstationServiceImpl extends ServiceImpl<UpWorkstationMapper, UpWorkstation> implements UpWorkstationService {
     @Resource
     UpPattenUsageMapper upPattenUsageMapper;
-    public static final String DB_100_10 = "DB_100_10";
-
-    //鍒ゆ柇鏄惁鍙互鍚哥墖杩涜浠诲姟
-    public boolean isCanLoadGlass() {
-        String loadstart = "鍚哥墖淇″彿";//plcmes.getPlcParameter("鍚哥墖淇″彿").getValue();
-        return "1".equals(loadstart);
-
-    }
-    //鏄剧ず姝e湪杩涜浠诲姟鐨勫伐绋嬩俊鎭�
+    @Resource
+    UpWorkstationMapper upWorkstationMapper;
 
 
     //鍒ゆ柇浼樺厛鍚哥墖浣嶇疆鍚庡彂閫佸嚭鐗囦换鍔�
 
-    public UpWorkSequence selectPriority() {
-        UpWorkSequence upwork= this.baseMapper.selectPriority(1);
-        String start = "1";//plcmes.getPlcParameter("鍚哥墖淇″彿").getValue();
-        UpPattenUsage uplist=new UpPattenUsage();
-        if(start.equals("1")){
-            //鍙戦�佸嚭鐗囦换鍔�
-            UpdateWrapper<UpPattenUsage> updateWrapper = new UpdateWrapper<>();
-            updateWrapper.eq("state",1).last("LIMIT 1");
-            uplist= upPattenUsageMapper.selectOne(updateWrapper);
-            log.info("鏌ヨ鍑烘湰娆″嚭鐗囩殑鐜荤拑淇℃伅[]",uplist);
-        }
-        return upwork;
+    public UpPattenUsage selectPriority(Engineering engineering) {
+        QueryWrapper<UpPattenUsage> wrapper=new QueryWrapper<>();
+        wrapper.eq("state", 0)
+                .eq("engineering_id",engineering.getEngineerId())
+                .orderByAsc("layout_sequence")
+                .last("limit 1");
+        return upPattenUsageMapper.selectOne(wrapper);
+    }
+
+    //鍒ゆ柇宸ヤ綅鏄惁鏈夌鍚堟潯浠剁殑鐜荤拑
+    @Override
+    public UpWorkstation selectworkstation(UpPattenUsage upPattenUsage) {
+        QueryWrapper<UpWorkstation> wrapper = new QueryWrapper<>();
+        wrapper.eq("pattern_width", upPattenUsage.getWidth())
+                .eq("pattern_height", upPattenUsage.getHeight())
+                .eq("pattern_thickness", upPattenUsage.getThickness())
+                .eq("films_id", upPattenUsage.getFilmsId())
+                .gt("number", 0)
+                .orderByAsc("number")
+                .last("limit 1");
+        return this.baseMapper.selectOne(wrapper);
+    }
+
+    @Override
+    public void reduceWorkstationNumber(UpWorkstation upwork) {
+        UpdateWrapper<UpWorkstation> wrapper = new UpdateWrapper<>();
+        wrapper.eq("id", upwork.getWorkstationId())
+                .setSql("number = number - 1");
+        boolean updateResult = upWorkstationMapper.update(null, wrapper) > 0;
+        log.info("鍑忓皯宸ヤ綅鏁伴噺{}",updateResult);
+
     }
 
     /**
      * 澧炲姞浜哄伐杈撳叆鐨勫伐浣嶇幓鐠冧俊鎭�/鍒犻櫎浜哄伐鎼蛋鐨勭幓鐠冧俊鎭�
-     * @param upwork
      */
     @Override
     public void updateGlassMessage(UpWorkstation upwork) {
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json
new file mode 100644
index 0000000..1a32fde
--- /dev/null
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/resources/JsonFile/PlcLoadGlass.json
@@ -0,0 +1,71 @@
+{
+  "plcAddressBegin":"DB14.0",
+  "plcAddressLenght":"98",
+  "dataType":"word",
+  "parameteInfor":[
+    {
+      "codeId": "loadRequest",
+      "addressIndex":"0",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":"m/min"
+    },
+    {
+      "codeId": "PlcStatus",
+      "addressIndex":"10",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "MesToPlc",
+      "addressIndex":"20",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "WorkId",
+      "addressIndex":"24",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "GlassWidth",
+      "addressIndex":"26",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "GlassHeight",
+      "addressIndex":"28",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    }
+  ,
+    {
+      "codeId": "MesToPlcStatus",
+      "addressIndex":"40",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "MesToPlcStatusId",
+      "addressIndex":"42",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    },
+    {
+      "codeId": "MesTaskStatus",
+      "addressIndex":"56",
+      "addressLenght":"2",
+      "ratio":"1",
+      "unit":""
+    }
+  ]
+}
\ No newline at end of file
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java
index afb83c3..c4d40db 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/test/java/com/mes/LoadGlassModuleApplicationTest.java
@@ -1,11 +1,15 @@
 package com.mes;
 
+import com.mes.engineering.entity.Engineering;
+import com.mes.engineering.service.EngineeringService;
 import com.mes.glassinfo.entity.GlassInfo;
 import com.mes.glassinfo.service.GlassInfoService;
 import com.mes.pp.mapper.OptimizeProjectMapper;
-import com.mes.uppattenusage.entity.OptimizeUpPattenUsage;
+import com.mes.pp.service.OptimizeProjectService;
 import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.uppattenusage.service.impl.UpPattenUsageServiceImpl;
+import com.mes.workstation.entity.UpWorkstation;
+import com.mes.workstation.service.UpWorkstationService;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -16,24 +20,27 @@
 import javax.annotation.Resource;
 import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
 
 /**
- * @Author : zhoush
- * @Date: 2024/3/27 16:37
- * @Description:
+
  */
 @Slf4j
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = LoadGlassModuleApplication.class)
 public class LoadGlassModuleApplicationTest {
 
-    @Resource
-    private OptimizeProjectMapper optimizeProjectMapper;
+//    @Resource
+//    private OptimizeProjectMapper optimizeProjectMapper;
     @Autowired
     private UpPattenUsageServiceImpl upPattenUsageService;
     @Autowired
     private GlassInfoService glassInfoService;
+    @Autowired
+    private EngineeringService engineeringService;
+    @Autowired
+    private UpWorkstationService workstationService;
+    @Autowired
+    private OptimizeProjectService optimizeProjectService;
     @Test
     public void test() {
 //        List<OptimizeProject> list = optimizeProjectMapper.saveProject("P24032204");
@@ -48,12 +55,38 @@
 
     @Test
     public void testFindPa() {
-        List<UpPattenUsage> glass = upPattenUsageService.selectSaveUpPattenUsage("P24032204");
-        log.info("瀹屾暣璺緞锛歿}", Arrays.asList(glass));
+        Engineering  engineering= engineeringService.selectInitiate(1);
+        log.info("寮�濮嬩笂鐗囩殑宸ョ▼锛歿}", Arrays.asList(engineering));
+        UpPattenUsage upPattenUsage = workstationService.selectPriority(engineering);
+        log.info("涓婄墖椤哄簭锛歿}", Arrays.asList(upPattenUsage));
+        UpWorkstation glass2=workstationService.selectworkstation(upPattenUsage);
+        log.info("绗﹀悎鐨勫伐浣嶇幓鐠儃}",glass2);
+        workstationService.reduceWorkstationNumber(glass2);
+        //鍑忓皯鏁伴噺
+        upPattenUsageService.updateupPattenUsageState(upPattenUsage,1);
+        //鏇存柊鐘舵��
     }
+
     @Test
     public  void  textglassinfo(){
         List<GlassInfo> glass= glassInfoService.selectGlassInfo("P24032204");
         log.info("glassinfo锛歿}", Arrays.asList(glass));
+        glassInfoService.saveGlassInfo(glass);
+    }
+    @Test
+    public  void  textengineering(){
+        List<Engineering> glass= engineeringService.selectEngineering("P24032204");
+        engineeringService.saveEngineering(glass);
+        log.info("glassinfo锛歿}", Arrays.asList(glass));
+    }
+    @Test
+    public  void  textengineering2(){
+        //鏇存柊宸ョ▼琛ㄧ姸鎬佷负宸查鍙�
+        optimizeProjectService.changeTask("P24050801",200);
+    }
+    @Test
+    public  void  textengineering3(){
+        //鍒ゆ柇鏄惁宸蹭繚瀛樿繃宸ョ▼鍙峰埌涓婄墖琛�
+        upPattenUsageService.selectedEngineering("P24050801");
     }
 }

--
Gitblit v1.8.0