From 3eaf0f2f1b909ac429cac9fc26af767ddecda065 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期三, 22 十月 2025 18:54:17 +0800
Subject: [PATCH] 上片接口返回信息国际化,添加定时任务线程池配置类

---
 UI-Project/src/views/Returns/upreturns3.vue                                                                                                           |    7 
 UI-Project/src/views/GlassStorage/rawfilmstorage2.vue                                                                                                 |   13 +
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/I18nConfig.java                                                                      |    2 
 UI-Project/src/utils/constants.js                                                                                                                     |    4 
 hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages_en_US.properties                                                                |    9 
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java                           |   33 ++++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/opctask/service/impl/LoadGlassDeviceTaskHistoryServiceImpl.java                            |    8 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/SchedulerConfig.java                                                                 |   39 +++++
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketExecutorConfig.java                                                         |   35 +++++
 hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages_zh_CN.properties                                                                |   36 ++--
 hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages.properties                                                                      |   34 ++--
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/controller/LoadGlassDeviceTaskHistoryController.java |   22 ++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java                                                 |   14 +
 hangzhoumesParent/common/servicebase/target/classes/mapper/UpPattenUsageMapper.xml                                                                    |   34 +++-
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java                                                       |    2 
 UI-Project/src/views/Returns/upreturnhistory.vue                                                                                                      |    2 
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java             |   34 +++-
 hangzhoumesParent/common/servicebase/pom.xml                                                                                                          |   13 +
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java                                                       |   47 +++++-
 hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java                               |   10 +
 20 files changed, 298 insertions(+), 100 deletions(-)

diff --git a/UI-Project/src/utils/constants.js b/UI-Project/src/utils/constants.js
index 12b64aa..dd5bb47 100644
--- a/UI-Project/src/utils/constants.js
+++ b/UI-Project/src/utils/constants.js
@@ -1,6 +1,6 @@
-// export const WebSocketHost = "192.168.10.86";
+export const WebSocketHost = "192.168.10.86";
 // export const WebSocketHost = "192.168.0.39";
-export const WebSocketHost = "10.153.19.179";
+// export const WebSocketHost = "10.153.19.179";
 // export const WebSocketHost = "10.153.19.47";
 // export const WebSocketHost = "10.153.19.162";
 // export const WebSocketHost = "127.0.0.1";
diff --git a/UI-Project/src/views/GlassStorage/rawfilmstorage2.vue b/UI-Project/src/views/GlassStorage/rawfilmstorage2.vue
index 46de24a..4beb51b 100644
--- a/UI-Project/src/views/GlassStorage/rawfilmstorage2.vue
+++ b/UI-Project/src/views/GlassStorage/rawfilmstorage2.vue
@@ -9,6 +9,9 @@
 import { closeWebSocket, initializeWebSocket } from '@/utils/WebSocketService';
 import { inject } from 'vue';
 const router = useRouter()
+// 琛ㄦ牸鍔犺浇鐘舵�侊紙杞湀锛�
+const loading = ref(true)
+
 const tableDataa = ref([])
 const tableDatab = ref([])
 const tableDatad = ref([])
@@ -136,6 +139,7 @@
   rawTableData.value = formattedTasks;
   tableDataa.value = formattedTasks;
   if (data.rawStationDetailsList != null) {
+    loading.value = false
     tableDatab.value = data.rawStationDetailsList[0]
     if (data.rawStationDetailsList[0][0].patternThickness != null) {
       card1.value = true
@@ -289,6 +293,11 @@
 const handleEdit = (row) => {
   window.localStorage.setItem('deviceId', row.deviceId)
   window.localStorage.setItem('slot', row.slot)
+  patternWidth.value = row.patternWidth;
+  patternHeight.value = row.patternHeight;
+  patternThickness.value = row.patternThickness;
+  filmsId.value = row.filmsId;
+  remainQuantity.value = row.remainQuantity;
   Edit.value = true;
 };
 const handleBinda = (row) => {
@@ -475,7 +484,7 @@
 
   tableDataa.value = filteredData;
 
-  ElMessage.success(`鏌ヨ鎴愬姛锛屽叡 ${filteredData.length} 鏉℃暟鎹甡);
+  ElMessage.success(t('film.inquire') + ` ${filteredData.length} ` + t('searchOrder.tit'));
 };
 
 // 鏄惁绂佺敤
@@ -805,7 +814,7 @@
     </div>
 
     <el-dialog v-model="dialogFormVisiblea" top="5vh" width="85%">
-      <el-table ref="table" style="margin-top: 20px;height: 700px;" :data="tableDatab"
+      <el-table ref="table" style="margin-top: 20px;height: 700px;" :data="tableDatab" v-loading="loading"
         :header-cell-style="{ background: '#F2F3F5 ', color: '#1D2129' }">
         <!-- <el-table-column prop="deviceId" fixed align="center" :label="$t('film.station')" min-width="80" /> -->
         <el-table-column prop="slot" fixed align="center" :label="$t('film.slot')" min-width="80" />
diff --git a/UI-Project/src/views/Returns/upreturnhistory.vue b/UI-Project/src/views/Returns/upreturnhistory.vue
index 443da5d..af28abb 100644
--- a/UI-Project/src/views/Returns/upreturnhistory.vue
+++ b/UI-Project/src/views/Returns/upreturnhistory.vue
@@ -299,7 +299,7 @@
     case 2:  
       return t('searchOrder.endtask');
     case 3:  
-      return t('film.fail');
+      return t('searchOrder.breakage');
   }  
 }
 function getStatusTypea(taskRunning: number) {  
diff --git a/UI-Project/src/views/Returns/upreturns3.vue b/UI-Project/src/views/Returns/upreturns3.vue
index 4270039..a61ef31 100644
--- a/UI-Project/src/views/Returns/upreturns3.vue
+++ b/UI-Project/src/views/Returns/upreturns3.vue
@@ -678,10 +678,10 @@
           <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="270">
             <template #default="scope">
               <el-input v-model="inputQuantities[scope.row.slot]" type="number" min="0" @input="handleInput(scope.row)"
-                :placeholder="$t('basicData.selectquantity')" v-if ="scope.row.slot < 99"
+                :placeholder="$t('basicData.selectquantity')" v-if ="scope.row.slot != 99"
                 style="width: 120px; margin-right: 10px;">
               </el-input>
-              <el-button type="text" v-if = "scope.row.slot < 99"  :disabled="isPaused || hasRunningTask" @click="handleBind(scope.row)">
+              <el-button type="text" v-if = "scope.row.slot != 99"  :disabled="isPaused || hasRunningTask" @click="handleBind(scope.row)">
                 {{ $t('basicData.startloading') }} </el-button>
             </template>
           </el-table-column>
@@ -700,9 +700,10 @@
         <!-- 宸ョ▼鍒楄〃灞曠ず -->
         <div v-if="pauseEngineeringList.length > 0">
           <div style="text-align: center; margin-bottom: 10px;">
-          {{ $t('basicData.isEnable')}}{{ pauseEngineeringList[0].engineerId }}{{ $t('basicData.project') }}
+          {{ $t('basicData.isEnable')}} {{ pauseEngineeringList[0].engineerId }} {{ $t('basicData.project') }}
           </div>
         </div>
+        
         <!-- 鏃犳殏鍋滃伐绋嬫椂鐨勬彁绀� -->
         <div v-else class="no-data" style="text-align: center; padding: 20px;">
           <el-empty description="No pause engineering" />
diff --git a/hangzhoumesParent/common/servicebase/pom.xml b/hangzhoumesParent/common/servicebase/pom.xml
index 4bb9465..40ac034 100644
--- a/hangzhoumesParent/common/servicebase/pom.xml
+++ b/hangzhoumesParent/common/servicebase/pom.xml
@@ -46,5 +46,16 @@
 
 
     </dependencies>
-
+    <build>
+        <resources>
+            <resource>
+                <!-- 婧愯祫婧愮洰褰曪紙榛樿鏄� src/main/resources锛� -->
+                <directory>src/main/resources</directory>
+                <!-- 鎺掗櫎 i18n 鏂囦欢澶瑰強鍏舵墍鏈夊唴瀹� -->
+                <excludes>
+                    <exclude>i18n/**/*</exclude> <!-- **琛ㄧず閫掑綊鍖归厤鎵�鏈夊瓙鐩綍锛�*琛ㄧず鎵�鏈夋枃浠� -->
+                </excludes>
+            </resource>
+        </resources>
+    </build>
 </project>
\ No newline at end of file
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/opctask/service/impl/LoadGlassDeviceTaskHistoryServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/opctask/service/impl/LoadGlassDeviceTaskHistoryServiceImpl.java
index c8c3972..fb2fbde 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/opctask/service/impl/LoadGlassDeviceTaskHistoryServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/opctask/service/impl/LoadGlassDeviceTaskHistoryServiceImpl.java
@@ -29,10 +29,10 @@
         }
         Page<LoadGlassDeviceTaskHistory> page = new Page<>(request.getPageNo(), request.getPageSize());
         LambdaQueryWrapper<LoadGlassDeviceTaskHistory> wrapper = new LambdaQueryWrapper<LoadGlassDeviceTaskHistory>()
-                .like(StringUtils.isNotBlank(request.getRawGlassWidth()), LoadGlassDeviceTaskHistory::getRawGlassWidth, "%" + request.getRawGlassWidth() + "%")
-                .like(StringUtils.isNotBlank(request.getRawGlassHeight()), LoadGlassDeviceTaskHistory::getRawGlassHeight, "%" + request.getRawGlassHeight() + "%")
-                .like(StringUtils.isNotBlank(request.getRawGlassThickness()), LoadGlassDeviceTaskHistory::getRawGlassThickness, "%" + request.getRawGlassThickness() + "%")
-                .like(StringUtils.isNotBlank(request.getRawGlassfilmsId()), LoadGlassDeviceTaskHistory::getRawGlassFilmsId, "%" + request.getRawGlassfilmsId() + "%")
+                .like(StringUtils.isNotBlank(request.getRawGlassWidth()), LoadGlassDeviceTaskHistory::getRawGlassWidth,  request.getRawGlassWidth())
+                .like(StringUtils.isNotBlank(request.getRawGlassHeight()), LoadGlassDeviceTaskHistory::getRawGlassHeight, request.getRawGlassHeight())
+                .like(StringUtils.isNotBlank(request.getRawGlassThickness()), LoadGlassDeviceTaskHistory::getRawGlassThickness,  request.getRawGlassThickness())
+                .like(StringUtils.isNotBlank(request.getRawGlassfilmsId()), LoadGlassDeviceTaskHistory::getRawGlassFilmsId,  request.getRawGlassfilmsId())
                 .eq(request.getEngineeringId() != null, LoadGlassDeviceTaskHistory::getEngineeringId, request.getEngineeringId())
                 .eq(request.getStation() != 0, LoadGlassDeviceTaskHistory::getStation, request.getStation())
                 .eq(request.getSlot() != 0, LoadGlassDeviceTaskHistory::getSlot, request.getSlot())
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/I18nConfig.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/I18nConfig.java
index 42671f0..de02749 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/I18nConfig.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/I18nConfig.java
@@ -22,7 +22,7 @@
     public ReloadableResourceBundleMessageSource  messageSource() {
         ReloadableResourceBundleMessageSource  messageSource = new ReloadableResourceBundleMessageSource();
         // 閰嶇疆鏂囦欢i18n鐩綍涓嬬殑messages寮�澶存枃浠�
-        messageSource.setBasename("file:D:/mes/aerjiliya/i18n/messages");
+        messageSource.setBasename("file:D:/MES/i18n/messages");
         messageSource.setDefaultEncoding("UTF-8");
         messageSource.setCacheSeconds(20);
         return messageSource;
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/SchedulerConfig.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/SchedulerConfig.java
new file mode 100644
index 0000000..65adb38
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/SchedulerConfig.java
@@ -0,0 +1,39 @@
+package com.mes.tools;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.SchedulingConfigurer;
+import org.springframework.scheduling.config.ScheduledTaskRegistrar;
+
+import java.util.concurrent.*;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * @author huang
+ * @since 2025/10/22
+ */
+@Configuration
+public class SchedulerConfig implements SchedulingConfigurer {
+
+    @Override
+    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
+        // 浣跨敤 ScheduledThreadPoolExecutor锛堟敮鎸佸畾鏃惰皟搴︾殑绾跨▼姹狅級
+        ScheduledThreadPoolExecutor schedulerPool = new ScheduledThreadPoolExecutor(
+                // 鏍稿績绾跨▼鏁帮細鏍规嵁瀹氭椂浠诲姟鏁伴噺璁剧疆
+                5,
+                new ThreadFactory() {
+                    private final AtomicInteger count = new AtomicInteger(1);
+                    @Override
+                    public Thread newThread(Runnable r) {
+                        return new Thread(r, "scheduler-thread-" + count.getAndIncrement());
+                    }
+                },
+                new ThreadPoolExecutor.CallerRunsPolicy()
+        );
+        // 璁剧疆绌洪棽绾跨▼瀛樻椿鏃堕棿锛堥潪鏍稿績绾跨▼锛岄粯璁�60绉掞紝鍙寜闇�璋冩暣锛�
+        schedulerPool.setKeepAliveTime(60, TimeUnit.SECONDS);
+        // 鍏佽鏍稿績绾跨▼瓒呮椂閿�姣侊紙濡傛灉浠诲姟涓嶉绻侊紝鍙妭鐪佽祫婧愶級
+        schedulerPool.allowCoreThreadTimeOut(true);
+
+        taskRegistrar.setScheduler(schedulerPool);
+    }
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketExecutorConfig.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketExecutorConfig.java
new file mode 100644
index 0000000..6f70d6b
--- /dev/null
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/tools/WebSocketExecutorConfig.java
@@ -0,0 +1,35 @@
+package com.mes.tools;
+
+import liquibase.pro.packaged.C;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.concurrent.*;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * @author huang
+ * @since 2025/10/22
+ */
+@Configuration
+public class WebSocketExecutorConfig {
+    @Bean("webSocketSenderPool")
+    public ExecutorService webSocketSenderPool() {
+        return new ThreadPoolExecutor(
+                2, // 鏍稿績绾跨▼鏁帮細鏍规嵁瀹㈡埛绔暟閲忚缃紙涓�鑸�2-5瓒冲锛�
+                4, // 鏈�澶х嚎绋嬫暟锛氬鎴风宄板�兼椂涓存椂鎵╁
+                30L, TimeUnit.SECONDS,
+                new SynchronousQueue<>(), // 鍚屾闃熷垪锛氭棤缂撳啿锛岀洿鎺ユ彁浜ょ粰绾跨▼鎵ц
+                new ThreadFactory() {
+                    private final AtomicInteger count = new AtomicInteger(1);
+                    @Override
+                    public Thread newThread(Runnable r) {
+                        Thread thread = new Thread(r, "ws-sender-thread-" + count.getAndIncrement());
+                        thread.setDaemon(true); // 瀹堟姢绾跨▼锛氬簲鐢ㄩ��鍑烘椂鑷姩閿�姣�
+                        return thread;
+                    }
+                },
+                new ThreadPoolExecutor.DiscardOldestPolicy() // 闃熷垪婊℃椂锛氫涪寮冩渶鏃х殑浠诲姟锛屾墽琛屾柊浠诲姟锛堥伩鍏嶆秷鎭爢绉繃涔咃級
+        );
+    }
+}
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages.properties b/hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages.properties
index a11c0c8..a43625e 100644
--- a/hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages.properties
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages.properties
@@ -1,19 +1,19 @@
-#鍩虹閫氱敤
-rawglass.success=浠诲姟涓嬪彂鎴愬姛锛岀瓑寰呬换鍔℃墽琛�
-rawglass.details.success=褰曞叆淇℃伅鎴愬姛
-rawglass.error=浠诲姟澶辫触锛岃绋嶅悗閲嶈瘯
-rawglass.task.generate.error=鐢熸垚浠诲姟寮傚父
-rawglass.no.empty.shelf=褰撳墠宸ヤ綅涓嶅瓨鍦ㄥ彲鐢ㄧ殑鏋跺瓙
-rawglass.modify.success=淇敼鎴愬姛
-rawglass.query.success=鏌ヨ鎴愬姛
-rawglass.delete.success=鍒犻櫎鎴愬姛
-rawglass.enable=鍚敤
-rawglass.unenable=绂佺敤
+#????
+rawglass.success=?????????????
+rawglass.details.success=??????
+rawglass.error=??????????
+rawglass.task.generate.error=??????
+rawglass.no.empty.shelf=????????????
+rawglass.modify.success=????
+rawglass.query.success=????
+rawglass.delete.success=????
+rawglass.enable=??
+rawglass.disable=??
 
-#鍚婅浣嶈姹�
-rawglass.warehousing.request.error=鍚婅浣嶈姹傚け璐�
-rawglass.warehousing.slot.occupied=褰撳墠鍚婅浣嶆湁鏋跺瓙锛岃姹傚け璐�
-rawglass.warehousing.task.exists=褰撳墠鍚婅浣嶅凡缁忓瓨鍦ㄤ换鍔�
+#?????
+rawglass.warehousing.request.error=???????
+rawglass.warehousing.slot.occupied=?????????????
+rawglass.warehousing.task.exists=???????????
 
-#鍑哄簱璇锋眰
-rawglass.outWarehousing.error=褰撳墠鏋跺瓙涓嶅湪搴撳唴锛堢姸鎬佸紓甯革級锛屾棤娉曟墽琛屽嚭搴撴搷浣�
\ No newline at end of file
+#????
+rawglass.outWarehousing.error=???????????????????????
\ No newline at end of file
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages_en_US.properties b/hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages_en_US.properties
index c1d72d4..c608a97 100644
--- a/hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages_en_US.properties
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages_en_US.properties
@@ -1,4 +1,4 @@
-#鍩虹閫氱敤
+#????
 rawglass.success=The task is successfully issued and waiting for the task to be executed
 rawglass.details.success=Successfully entered information
 rawglass.error=The task failed, please try again later
@@ -8,11 +8,12 @@
 rawglass.query.success=Query successfully
 rawglass.delete.success=Deleted successfully
 rawglass.enable=Enable
-rawglass.Disable=Disable
-#鍚婅浣嶈姹�
+rawglass.disable=Disable
+
+#?????
 rawglass.warehousing.request.error=Hoisting position request failed, please check parameters
 rawglass.warehousing.slot.occupied=Current hoisting position has a shelf, request failed
 rawglass.warehousing.task.exists=Task already exists for the current hanger
 
-#鍑哄簱璇锋眰
+#????
 rawglass.outWarehousing.error=The current shelf is not in the library (abnormal status), and the checkout operation cannot be performed
\ No newline at end of file
diff --git a/hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages_zh_CN.properties b/hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages_zh_CN.properties
index 46df140..3938776 100644
--- a/hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages_zh_CN.properties
+++ b/hangzhoumesParent/common/servicebase/src/main/resources/i18n/messages_zh_CN.properties
@@ -1,19 +1,21 @@
-#鍩虹閫氱敤
-rawglass.success=浠诲姟涓嬪彂鎴愬姛锛岀瓑寰呬换鍔℃墽琛�
-rawglass.details.success=褰曞叆淇℃伅鎴愬姛
-rawglass.error=浠诲姟澶辫触锛岃绋嶅悗閲嶈瘯
-rawglass.task.generate.error=鐢熸垚浠诲姟寮傚父
-rawglass.no.empty.shelf=褰撳墠宸ヤ綅涓嶅瓨鍦ㄥ彲鐢ㄧ殑鏋跺瓙
-rawglass.modify.success=淇敼鎴愬姛
-rawglass.query.success=鏌ヨ鎴愬姛
-rawglass.delete.success=鍒犻櫎鎴愬姛
-rawglass.enable=鍚敤
-rawglass.disable=绂佺敤
+#????
+rawglass.success=?????????????
+rawglass.details.success=??????
+rawglass.error=??????????
+rawglass.task.generate.error=??????
+rawglass.no.empty.shelf=????????????
+rawglass.modify.success=????
+rawglass.query.success=????
+query.error=????
 
-#鍚婅浣嶈姹�
-rawglass.warehousing.request.error=鍚婅浣嶈姹傚け璐�
-rawglass.warehousing.slot.occupied=褰撳墠鍚婅浣嶆湁鏋跺瓙锛岃姹傚け璐�
-rawglass.warehousing.task.exists=褰撳墠鍚婅浣嶅凡缁忓瓨鍦ㄤ换鍔�
+rawglass.delete.success=????
+rawglass.enable=??
+rawglass.disable=??
 
-#鍑哄簱璇锋眰
-rawglass.outWarehousing.error=褰撳墠鏋跺瓙涓嶅湪搴撳唴锛堢姸鎬佸紓甯革級锛屾棤娉曟墽琛屽嚭搴撴搷浣�
\ No newline at end of file
+#?????
+rawglass.warehousing.request.error=???????
+rawglass.warehousing.slot.occupied=?????????????
+rawglass.warehousing.task.exists=???????????
+
+#????
+rawglass.outWarehousing.error=???????????????????????
\ No newline at end of file
diff --git a/hangzhoumesParent/common/servicebase/target/classes/mapper/UpPattenUsageMapper.xml b/hangzhoumesParent/common/servicebase/target/classes/mapper/UpPattenUsageMapper.xml
index e19a528..6af689e 100644
--- a/hangzhoumesParent/common/servicebase/target/classes/mapper/UpPattenUsageMapper.xml
+++ b/hangzhoumesParent/common/servicebase/target/classes/mapper/UpPattenUsageMapper.xml
@@ -14,17 +14,29 @@
         <result column="group_number" property="groupNumber"/>
     </resultMap>
     <select id="queryRawGlassByEngineeringId" resultMap="baseMap">
-        SET @prev_width := NULL;
-        SET @prev_height := NULL;
-        SET @counter := 0;
-        SELECT t.*,
-               @counter := IF(@prev_width = width and @prev_height = height, @counter, @counter + 1) AS group_number,
-               @prev_width := width,
-               @prev_height := height
-        FROM up_patten_usage t
-        where t.engineering_id = #{engineeringId}
-          and t.state = 0
-        ORDER BY t.layout_sequence
+        SELECT
+            t.*,
+            t.group_number
+        FROM (
+                 SELECT
+                     upu.*,
+                     -- 璁$畻缁勫彿
+                     @counter := IF(@prev_width = upu.width AND @prev_height = upu.height,
+                                    @counter,
+                                    @counter + 1) AS group_number,
+                     -- 鍙橀噺璧嬪��
+                     @prev_width := upu.width,
+                     @prev_height := upu.height
+                 FROM
+                     up_patten_usage upu,
+                     -- 鍏抽敭锛氱敤铏氭嫙琛ㄥ垵濮嬪寲鍙橀噺锛屾浛浠e崟鐙殑SET璇彞
+                     (SELECT @prev_width := NULL, @prev_height := NULL, @counter := 0) AS init_var
+                 WHERE
+                     upu.engineering_id = #{engineeringId}
+                   AND upu.state = 0
+                 ORDER BY
+                     upu.layout_sequence
+             ) AS t
     </select>
     <select id="queryFinishByEngineering" resultType="java.lang.Integer">
         SELECT id
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java
index 26234d0..9f1f915 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassPushMessage.java
@@ -17,11 +17,14 @@
 import com.mes.rawglasstask.service.RawGlassStorageTaskService;
 import com.mes.tools.WebSocketServer;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
 import java.util.List;
+import java.util.concurrent.ExecutorService;
 
 /**
  * @author wangfei
@@ -42,7 +45,11 @@
     @Resource
     private OrdersService ordersService;
 
-    @Scheduled(fixedDelay = 2000)
+    @Autowired
+    @Qualifier("webSocketSenderPool")
+    private ExecutorService webSocketSenderPool;
+
+    @Scheduled(fixedDelay = 5000)
     public void sendRawGlassMessage() {
         log.info("鍙戦�佷换鍔′俊鎭拰鏋跺瓙淇℃伅");
         JSONObject jsonObject = new JSONObject();
@@ -51,11 +58,10 @@
         List<RawGlassStorageTask> tasks = rawGlassStorageTaskService.listRawGlassTask();
         jsonObject.append("rawStationDetailsList", rawStationDetailsList);
         jsonObject.append("tasks", tasks);
+        String message = String.valueOf(jsonObject);
         List<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("rawGlass");
         if (CollectionUtil.isNotEmpty(sendwServer)) {
-            sendwServer.stream().forEach(e -> {
-                e.sendMessage(String.valueOf(jsonObject));
-            });
+            sendwServer.forEach(ws -> webSocketSenderPool.submit(() -> ws.sendMessage(message)));
         }
     }
 
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java
index 1021977..ac15c80 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java
@@ -77,23 +77,33 @@
     @ApiOperation("鏇存柊鍓╀綑鏁伴噺")
     @PostMapping("/updateQuantity")
     public Result<Object> updateQuantity(@Validated @RequestBody RawGlassRequest request) {
-        String successMsg = messageSource.getMessage(
-                "rawglass.modify.success",
-                null,
-                LocaleContextHolder.getLocale()
-        );
-        return Result.build(200, successMsg, rawGlassStorageDetailsService.updateQuantity(request));
+        String result = rawGlassStorageDetailsService.updateQuantity(request);
+        if ("success".equals(result)) {
+            String successMsg = messageSource.getMessage(
+                    "rawglass.modify.success",
+                    null,
+                    LocaleContextHolder.getLocale()
+            );
+            return Result.build(200, successMsg, null);
+        } else {
+            return Result.build(500, "fail", null);
+        }
     }
 
     @ApiOperation("鍒犻櫎鍘熺墖")
     @PostMapping("/deleteWarehousing")
     public Result<Object> deleteWarehousing(Long slot) {
-        String successMsg = messageSource.getMessage(
-                "rawglass.delete.success",
-                null,
-                LocaleContextHolder.getLocale()
-        );
-        return Result.build(200, successMsg, rawGlassStorageDetailsService.deleteWarehousing(slot));
+        String result = rawGlassStorageDetailsService.deleteWarehousing(slot);
+        if ("success".equals(result)) {
+            String successMsg = messageSource.getMessage(
+                    "rawglass.delete.success",
+                    null,
+                    LocaleContextHolder.getLocale()
+            );
+            return Result.build(200, successMsg, null);
+        } else {
+            return Result.build(500, "fail", null);
+        }
     }
 
     @ApiOperation("鍑哄簱")
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
index 00fbbe4..57cd55d 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/engineering/controller/EngineeringController.java
@@ -16,9 +16,12 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.MessageSource;
+import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
@@ -44,6 +47,9 @@
     @Autowired
     DamageService damageService;
 
+    // 鍥介檯璇█搴�
+    @Resource
+    private MessageSource messageSource;
 
     @ApiOperation("寮�濮�/鏆傚仠浠诲姟/浼犻�掑伐绋嬪彿鍜岀姸鎬�,寮�濮嬫槸1 鏆傚仠鏄�0")
     @PostMapping("/pauseTask") //鏆傚仠涓婄墖浠诲姟
@@ -65,9 +71,9 @@
         boolean work = engineeringService.pauseTask(engineering.getEngineerId(),engineering.getState());
 //        List<UpPattenUsage> glass = upPattenUsageService.prioritylist();String message;
         if(work){
-            return Result.build(200, "鎴愬姛", null);
+            return Result.build(200, "success", null);
         }else {
-            return Result.build(100, "澶辨晽", null);
+            return Result.build(500, "fail", null);
         }
     }
 
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
index 395506a..096f86d 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/OpcLoadGlassTask.java
@@ -159,11 +159,23 @@
         }
 
         List<UpPattenUsageVO> pattenUsageList = upPattenUsageMapper.queryRawGlassByEngineeringId(engineering.getEngineerId());
-        log.info("鎸夌収褰撳墠鑾峰彇鍒版鍦ㄩ渶瑕佷笂鐗囩殑鍘熺墖淇℃伅鏈夛細{}", pattenUsageList);
+        log.info("鑾峰彇姝e湪闇�瑕佷笂鐗囩殑鍘熺墖淇℃伅鏈夛細{}", pattenUsageList);
         if (CollectionUtils.isEmpty(pattenUsageList)) {
             log.info("褰撳墠宸ョ▼闇�瑕佷笂鐗囩殑鍘熺墖淇℃伅涓虹┖锛屼换鍔″凡缁撴潫");
             return;
         }
+        // 鏈夋棤姝e湪鎵ц鐨勪换鍔�
+        UpPattenUsage runningTask = upPattenUsageMapper.selectOne(
+                new LambdaQueryWrapper<UpPattenUsage>()
+                        .eq(UpPattenUsage::getEngineeringId, engineering.getEngineerId())
+                        .eq(UpPattenUsage::getState, 101)
+                        .last("limit 1") // 鍙彇涓�鏉�
+        );
+        if (runningTask != null) {
+            log.info("褰撳墠宸ョ▼瀛樺湪姝e湪鎵ц鐨勪笂鐗囦换鍔★紝璺宠繃鏈澶勭悊");
+            return;
+        }
+
         Map<String, List<UpPattenUsageVO>> upListMap = pattenUsageList.stream()
                 .collect(Collectors.groupingBy(UpPattenUsageVO::getGroupNumber));
         log.info("鑾峰彇褰撳墠闇�瑕佷笂鐗囩殑鍘熺墖鏁版嵁");
@@ -192,7 +204,7 @@
             task.setTaskRunning(1);
             task.setRawGlassWidth((int) usageVOS.get(0).getWidth());
             task.setRawGlassHeight((int) usageVOS.get(0).getHeight());
-            task.setSlot(loadStation.get(0));
+            task.setSlot(1);
             task.setRawGlassFilmsId(usageVOS.get(0).getFilmsId());
             task.setEngineeringId(usageVOS.get(0).getEngineeringId());
             saveHistoryTask(task, deviceId);
@@ -201,7 +213,7 @@
             s7DataSPWrite.setMesSend(1);
             s7DataSPWrite.setRawGlassWidth((int) usageVOS.get(0).getWidth());
             s7DataSPWrite.setRawGlassHeight((int) usageVOS.get(0).getHeight());
-            s7DataSPWrite.setSlot(loadStation.get(1));
+            s7DataSPWrite.setSlot(1);
             if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) {
                 s7SerializerSPOne.write(s7DataSPWrite);
             } else {
@@ -222,7 +234,7 @@
         task.setRawGlassWidth((int) usageVOS.get(0).getWidth());
         task.setRawGlassHeight((int) usageVOS.get(0).getHeight());
         task.setRawGlassThickness((int) usageVOS.get(0).getThickness());
-        task.setSlot(loadStation.get(0));
+        task.setSlot(1);
         task.setRawGlassFilmsId(usageVOS.get(0).getFilmsId());
         task.setEngineeringId(usageVOS.get(0).getEngineeringId());
         saveHistoryTask(task, deviceId);
@@ -235,7 +247,7 @@
         s7DataSPWrite.setMesSend(1);
         s7DataSPWrite.setRawGlassWidth((int) usageVOS.get(0).getWidth());
         s7DataSPWrite.setRawGlassHeight((int) usageVOS.get(0).getHeight());
-        s7DataSPWrite.setSlot(loadStation.get(0));
+        s7DataSPWrite.setSlot(1);
         if (LOAD_GLASS_ONE_DEVICE.equals(deviceId)) {
             s7SerializerSPOne.write(s7DataSPWrite);
         } else {
@@ -285,11 +297,28 @@
             unconfirmedTask.setTaskState(Const.RAW_GLASS_TASK_SUCCESS);
             unconfirmedTask.setFinishCount(unconfirmedTask.getFinishCount() + 1);
             log.info("{}涓婄墖绾匡紝浠诲姟姹囨姤鎴愬姛锛屾洿鏂颁笂鐗囪褰昜{}]涓烘垚鍔�", deviceId, upUsageId);
+
+            // PLC纭瀛�1
+            s7DataSP.setMesConfirm(1);
+            s7SerializerSPOne.write(s7DataSP);
         } else if (s7DataSP.getPlcReport() == 2) {
+            // 姹囨姤澶辫触
+            unconfirmedTask.setTaskState(2);
+//            unconfirmedTask.setDamageCount(unconfirmedTask.getDamageCount() + 1);
+            log.warn("{}涓婄墖绾匡紝浠诲姟姹囨姤澶辫触锛屼笂鐗囪褰昜{}]鏍囪涓哄け璐�", deviceId,  upUsageId);
+
+            // PLC纭瀛�2
+            s7DataSP.setMesConfirm(2);
+            s7SerializerSPOne.write(s7DataSP);
+        }else if (s7DataSP.getPlcReport() == 3) {
             // 姹囨姤鐮存崯
-            unconfirmedTask.setTaskState(200);
+            unconfirmedTask.setTaskState(3);
             unconfirmedTask.setDamageCount(unconfirmedTask.getDamageCount() + 1);
             log.warn("{}涓婄墖绾匡紝浠诲姟姹囨姤鐮存崯锛屼笂鐗囪褰昜{}]鏍囪涓虹牬鎹�", deviceId,  upUsageId);
+
+            // PLC纭瀛�3
+            s7DataSP.setMesConfirm(3);
+            s7SerializerSPOne.write(s7DataSP);
         }
         unconfirmedTask.setUpdateTime(new Date());
         loadGlassDeviceTaskHistoryService.updateById(unconfirmedTask);
@@ -298,13 +327,9 @@
         rawGlassStorageDetailsService.update(new UpdateWrapper<RawGlassStorageDetails>()
                 .inSql("slot", "select slot from raw_glass_storage_station where enable_state = 1")
 //                .eq("slot", task.getSlot())
-                .eq("slot", unconfirmedTask.getSlot())
+                .eq("slot", 101)
                 .eq("state", Const.RAW_GLASS_STATE_IN)
                 .setSql("remain_quantity = GREATEST(remain_quantity - 1, 0)"));
-        //姹囨姤瀛楃粰1
-        S7DataSP s7DataSPWrite = new S7DataSP();
-        s7DataSPWrite.setMesConfirm(1);
-        s7SerializerSPOne.write(s7DataSPWrite);
     }
 
     private boolean saveHistoryTask(LoadGlassDeviceTaskHistory task, Integer deviceId) {
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 057ac54..0419583 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
@@ -137,7 +137,7 @@
         loadGlassChild("loadGlassRequestOne", 5, LOAD_GLASS_DEVICE_ONE_TASK, "loadGlassOne");
     }
 
-    @Scheduled(fixedDelay = 10000)
+//    @Scheduled(fixedDelay = 10000)
     public void loadTwoGlass() {
         loadGlassChild("loadGlassRequestTwo", 6, LOAD_GLASS_DEVICE_TWO_TASK, "loadGlassTwo");
     }
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/controller/LoadGlassDeviceTaskHistoryController.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/controller/LoadGlassDeviceTaskHistoryController.java
index 36aa0c8..c0b1e98 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/controller/LoadGlassDeviceTaskHistoryController.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/loadglassdevicetaskhistory/controller/LoadGlassDeviceTaskHistoryController.java
@@ -5,15 +5,15 @@
 import com.mes.opctask.entity.LoadGlassDeviceTaskHistory;
 import com.mes.opctask.entity.request.LoadGlassDeviceTaskHistoryRequest;
 import com.mes.opctask.service.LoadGlassDeviceTaskHistoryService;
-import com.mes.pp.service.OptimizeProjectService;
-import com.mes.uppattenusage.entity.UpPattenUsage;
 import com.mes.utils.Result;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.MessageSource;
+import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.List;
+import javax.annotation.Resource;
 
 /**
  * <p>
@@ -30,10 +30,24 @@
     @Autowired
     private LoadGlassDeviceTaskHistoryService loadGlassDeviceTaskHistoryService;
 
+    // 鍥介檯璇█搴�
+    @Resource
+    private MessageSource messageSource;
+
     @ApiOperation("鎸夌収鏌ヨ鏉′欢鏌ヨ涓婄墖鍘嗗彶浠诲姟")
     @PostMapping("/queryLoadGlassHistoryTask") //鏌ヨ鐜板湪涓婄墖鏈虹殑鐜荤拑淇℃伅
     public Result<Page<LoadGlassDeviceTaskHistory>> queryBigStorageCageHistoryTask(@RequestBody @Validated LoadGlassDeviceTaskHistoryRequest request) {
-        return Result.build(200, "鏌ヨ鎴愬姛", loadGlassDeviceTaskHistoryService.queryLoadGlassHistoryTask(request));
+        Page<LoadGlassDeviceTaskHistory> result = loadGlassDeviceTaskHistoryService.queryLoadGlassHistoryTask(request);
+        if (result != null) {
+            String successMsg = messageSource.getMessage(
+                    "rawglass.query.success",
+                    null,
+                    LocaleContextHolder.getLocale()
+            );
+            return Result.build(200, successMsg, result);
+        }else {
+            return Result.build(500, "fail", result);
+        }
     }
 
 }
diff --git a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
index d7454fd..e21a75b 100644
--- a/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
+++ b/hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/uppattenusage/controller/UpPattenUsageController.java
@@ -10,13 +10,16 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.MessageSource;
+import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
  * <p>
- *  鍓嶇鎺у埗鍣�
+ * 鍓嶇鎺у埗鍣�
  * </p>
  *
  * @author zhoush
@@ -35,6 +38,10 @@
     private EngineeringService engineeringService;
     @Autowired
     private OptimizeProjectService optimizeProjectService;
+
+    // 鍥介檯璇█搴�
+    @Resource
+    private MessageSource messageSource;
 
 
     @ApiOperation("鏄剧ず閫夋嫨鐨勫伐绋嬩俊鎭�")
@@ -98,13 +105,33 @@
     @ApiOperation("娣诲姞浠诲姟")
     @PostMapping("/insertTask")
     public Result insertTask(Integer quantity, Integer slot) {
-        return Result.build(200, "娣诲姞鎴愬姛", upPattenUsageService.insertTask(quantity, slot));
+        Boolean result = upPattenUsageService.insertTask(quantity, slot);
+        String successMsg = messageSource.getMessage(
+                "rawglass.success",
+                null,
+                LocaleContextHolder.getLocale()
+        );
+        if (result) {
+            return Result.build(200, successMsg, true);
+        } else {
+            return Result.build(500, "fail", false);
+        }
     }
 
     @ApiOperation("鍒犻櫎浠诲姟")
     @PostMapping("/deleteTask")
     public Result deleteUpPattenTask(String id) {
-        return Result.build(200, "鍒犻櫎鎴愬姛", upPattenUsageService.deleteUpPattenTask(id));
+        Boolean result = upPattenUsageService.deleteUpPattenTask(id);
+        String successMsg = messageSource.getMessage(
+                "rawglass.delete.success",
+                null,
+                LocaleContextHolder.getLocale()
+        );
+        if (result) {
+            return Result.build(200, successMsg, true);
+        } else {
+            return Result.build(500, "fail", false);
+        }
     }
 }
 

--
Gitblit v1.8.0