From 2f9b947344a9218390b30dd2d5d141c1f6d319b9 Mon Sep 17 00:00:00 2001
From: huang <1532065656@qq.com>
Date: 星期五, 07 十一月 2025 08:17:41 +0800
Subject: [PATCH] 仓储异常情况断联,任务无法执行,添加clear按钮可手动清除异常状态任务,

---
 UI-Project/src/views/GlassStorage/rawfilmstorage2.vue                                                                                     |   95 +++++++++++++++++++++++++++++++
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java |   17 ++++-
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglasstask/service/impl/RawGlassRawGlassStorageTaskServiceImpl.java          |    4 +
 hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java                                            |   11 +--
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java                     |    2 
 hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java            |   18 ++++--
 6 files changed, 126 insertions(+), 21 deletions(-)

diff --git a/UI-Project/src/views/GlassStorage/rawfilmstorage2.vue b/UI-Project/src/views/GlassStorage/rawfilmstorage2.vue
index 226e18a..ccc8956 100644
--- a/UI-Project/src/views/GlassStorage/rawfilmstorage2.vue
+++ b/UI-Project/src/views/GlassStorage/rawfilmstorage2.vue
@@ -387,6 +387,75 @@
 // catch (error) {
 //   }
 // }
+const dialogVisible = ref(false);
+const detailsList = ref([]);
+const selectedIds = ref<string[]>([]);
+
+// 鏂板锛氬姞杞藉紓甯告暟鎹垪琛�
+const loadDetails = async () => {
+  try {
+    const response = await request.get("/glassStorage/rawGlassStorageDetails/selectDetails");
+    if (response.code === 200) {
+      detailsList.value = response.data;
+    } else {
+      ElMessage.error("鏁版嵁鍔犺浇澶辫触锛�" + response.msg);
+    }
+  } catch (error) {
+    ElMessage.error("璇锋眰澶辫触锛�" + (error as Error).message);
+  }
+};
+
+// 鏂板锛氬鐞嗚〃鏍奸�夋嫨鍙樺寲
+const handleSelectionChange = (selection: any[]) => {
+  selectedIds.value = selection.map(item => item.id);
+};
+
+// 鏂板锛氱‘璁ゅ垹闄ら�変腑鏁版嵁
+const confirmDelete = async () => {
+  if (selectedIds.value.length === 0) {
+    ElMessage.warning("Select the data you want to delete first");
+    return;
+  }
+
+  try {
+    const confirmResult = await ElMessageBox.confirm(
+      t('searchOrder.deletemessage'),
+      t('customer.prompt'),
+      {
+        confirmButtonText: t('workOrder.yes'),
+        cancelButtonText: t('workOrder.cancel'),
+        type: "warning"
+      }
+    );
+
+    if (confirmResult === "confirm") {
+      // 鎵归噺鍒犻櫎璇锋眰
+      const deletePromises = selectedIds.value.map(id => 
+        request.post(`/glassStorage/rawGlassStorageDetails/deleteData?id=${id}`)
+      );
+      
+      const results = await Promise.all(deletePromises);
+      const allSuccess = results.every(res => res.code === 200);
+      
+      if (allSuccess) {
+        ElMessage.success("success");
+        dialogVisible.value = false;
+        loadDetails(); // 鍒锋柊鏁版嵁
+        selectedIds.value = [];
+      } else {
+        ElMessage.error("error");
+      }
+    }
+  } catch (error) {
+    if (error !== "cancel") {
+      ElMessage.error("鍒犻櫎澶辫触锛�" + (error as Error).message);
+    }
+  }
+};
+const handleClearClick = () => {
+  dialogVisible.value = true;
+  loadDetails(); // 鎵撳紑寮圭獥鏃跺姞杞芥暟鎹�
+};
 // 浠诲姟鎴愬姛澶勭悊
 const successfull = async (row) => {
   try {
@@ -511,6 +580,9 @@
         $t('searchOrder.historicaltasks')
         }}
       </el-button>
+      <el-button style="margin-left: 20px;" id="searchButton" type="success" @click="handleClearClick">
+        clear
+      </el-button>
       <el-date-picker style="margin-left: 10px;" v-model="timeRange" type="datetimerange" format="YYYY/MM/DD HH:mm:ss"
         value-format="YYYY-MM-DD HH:mm:ss" :start-placeholder="$t('film.starttime')"
         :end-placeholder="$t('film.endtime')" :default-time="defaultTime" />
@@ -557,9 +629,9 @@
           <el-table-column prop="createTime" align="center" :label="$t('film.createtime')" />
           <el-table-column fixed="right" :label="$t('film.operate')" align="center">
             <template #default="scope">
-              <el-button :disabled="(scope.row.taskState >2)" type="text" plain @click="successfull(scope.row)">{{
+              <el-button type="text" plain @click="successfull(scope.row)">{{
                 $t('searchOrder.successfullyprocessed') }}</el-button>
-              <el-button :disabled="(scope.row.taskState >2)" type="text" plain @click="handleptask(scope.row)">{{
+              <el-button type="text" plain @click="handleptask(scope.row)">{{
                 $t('searchOrder.taskfailure') }}</el-button>
             </template>
           </el-table-column>
@@ -603,6 +675,25 @@
       }" v-show="cards[45]">
       </div>
     </div>
+    <el-dialog title="Select the data you want to delete first" v-model="dialogVisible" width="60%" @close="selectedIds = []">
+      <el-table :data="detailsList" border style="width: 100%; margin-bottom: 20px;"
+        @selection-change="handleSelectionChange">
+        <el-table-column prop="id" label="ID" width="80"></el-table-column>
+        <el-table-column type="selection" width="55"></el-table-column>
+        <el-table-column prop="slot" :label="$t('film.slot')"></el-table-column>
+        <el-table-column prop="shelf" :label="$t('reportWork.shelfnumbera')"></el-table-column>
+        <el-table-column prop="state" :label="$t('reportWork.state')" :formatter="formatState"></el-table-column>
+        <!-- 鍙牴鎹渶瑕佹坊鍔犲叾浠栧瓧娈靛垪 -->
+      </el-table>
+
+      <template #footer>
+        <el-button @click="dialogVisible = false">{{t('workOrder.cancel')}}</el-button>
+        <el-button type="danger" @click="confirmDelete" :disabled="selectedIds.length === 0">
+         {{t('reportWork.sure')}}
+        </el-button>
+      </template>
+    </el-dialog>
+
 
     <el-dialog v-model="dialogFormVisiblea" top="5vh" width="85%">
       <el-table ref="table" style="margin-top: 20px;height: 700px;" :data="tableDatab" v-loading="loading"
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
index 9f83829..c224e20 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
@@ -49,4 +49,6 @@
     List<RawGlassStorageDetailsDTO> patternUsage(String width, String height, String thickness, String films);
 
     RawGlassStorageDetails generateDetails(RawGlassStorageDetails details, Integer targetSlot);
+
+    boolean deleteDetails(String id);
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
index d774ad7..c6e84ea 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
@@ -57,16 +57,15 @@
     public boolean deleteRawGlassStorageDetails(String device_id) {
         QueryWrapper<RawGlassStorageDetails> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("device_id", device_id);
-        return remove(queryWrapper);//remove鎵嶆槸鍒犻櫎锛宒elete寰楃敤鍙﹀鐨勪緷璧栵紝榛樿鏂规硶鏄痳emove杩斿洖bool
+        return remove(queryWrapper);
     }
 
     @Override
-    //杩斿洖绫诲瀷                    鏂规硶鍚�              浼犺緭鍊�
     public List<RawGlassStorageDetails> selectDetails() {
-//        QueryWrapper<RawGlassStorageDetails>queryWrapper=new QueryWrapper<>();
-//         queryWrapper.eq("id",rs.getId());
-//        return list(queryWrapper);
-        return list();
+        QueryWrapper<RawGlassStorageDetails> queryWrapper = new QueryWrapper<>();
+        queryWrapper.in("state", Const.RAW_GLASS_STATE_CAR,
+                Const.RAW_GLASS_STATE_WAIT_OUT, Const.RAW_GLASS_STATE_RUNNING);
+        return list(queryWrapper);
     }
 
     // 绌烘灦瀛愬埌鍚婅浣�
@@ -336,4 +335,11 @@
         targetDetails.setState(Const.RAW_GLASS_STATE_IN);
         return targetDetails;
     }
+
+
+
+    @Override
+    public boolean deleteDetails(String id) {
+        return removeById(id);
+    }
 }
\ No newline at end of file
diff --git a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglasstask/service/impl/RawGlassRawGlassStorageTaskServiceImpl.java b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglasstask/service/impl/RawGlassRawGlassStorageTaskServiceImpl.java
index ca03f36..3abdfd5 100644
--- a/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglasstask/service/impl/RawGlassRawGlassStorageTaskServiceImpl.java
+++ b/hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglasstask/service/impl/RawGlassRawGlassStorageTaskServiceImpl.java
@@ -102,6 +102,7 @@
                     .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()));
             log.info("浠诲姟鐘舵�佸凡鏇存敼涓猴細宸插畬鎴�");
             this.update(new LambdaUpdateWrapper<RawGlassStorageTask>()
+                    .eq(RawGlassStorageTask::getId, taskId)
                     .in(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW, Const.RAW_GLASS_TASK_RUNNING)
                     .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_SUCCESS));
             switch (taskType) {
@@ -138,7 +139,7 @@
         if (taskType.equals(Const.RAW_GLASS_TASK_TYPE_IN_REQUEST)) {
             rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                     .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
-                    .eq(RawGlassStorageDetails::getSlot, task.getStartSlot())
+                    .eq(RawGlassStorageDetails::getSlot, task.getEndSlot())
                     .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING, Const.RAW_GLASS_STATE_CAR));
         } else {
             rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
@@ -147,6 +148,7 @@
                     .in(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING, Const.RAW_GLASS_STATE_CAR));
         }
         this.update(new LambdaUpdateWrapper<RawGlassStorageTask>()
+                .eq(RawGlassStorageTask::getId, taskId)
                 .in(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_NEW, Const.RAW_GLASS_TASK_RUNNING)
                 .set(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_FAILURE));
         return Boolean.TRUE;
diff --git a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
index d08724d..fbf2587 100644
--- a/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
+++ b/hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
@@ -206,7 +206,8 @@
             log.info("灏嗚鎯呰〃鐨勭姸鎬佹敼涓哄凡鍑哄簱");
             rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
                     .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_OUT)
-                    .eq(RawGlassStorageDetails::getSlot, task.getStartSlot()).eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR));
+                    .eq(RawGlassStorageDetails::getSlot, task.getStartSlot())
+                    .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_CAR));
             log.info("浠诲姟鐘舵�佸凡鏇存敼涓猴細宸插畬鎴�");
             rawGlassStorageTaskService.update(new LambdaUpdateWrapper<RawGlassStorageTask>()
                     .eq(RawGlassStorageTask::getTaskState, Const.RAW_GLASS_TASK_RUNNING)
@@ -301,7 +302,7 @@
         // 姝ラ2锛氭鏌ヤ换鍔″叧鑱旂殑绌烘灦瀛愮姸鎬侊紙闇�涓衡�滃緟鍏ュ簱鈥濓紝涓旂‘瀹炴槸绌烘灦瀛愶級
         RawGlassStorageDetails emptyShelf = rawGlassStorageDetailsService.getOne(new LambdaQueryWrapper<RawGlassStorageDetails>()
                 .eq(RawGlassStorageDetails::getSlot, inRequestTask.getStartSlot()) // 璧峰浣嶏細浠撳簱绌烘灦瀛愪綅
-                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING)); // 寰呭叆搴撶姸鎬�);
+                .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING));
 
         if (emptyShelf == null) {
             log.info("绌烘灦瀛愬埌鍚婅浣嶈姹備换鍔″叧鑱旂殑鏋跺瓙寮傚父锛堥潪绌烘灦瀛愭垨鐘舵�侀敊璇級锛岃烦杩囨墽琛�");
@@ -317,12 +318,6 @@
             log.info("鍚婅浣峽}宸叉湁鍏宠仈鏋跺瓙锛屾棤娉曟墽琛岀┖鏋跺瓙鍒板悐瑁呬綅璇锋眰", inRequestTask.getEndSlot());
             return Boolean.FALSE;
         }
-
-        // 姝ラ4锛氭洿鏂扮┖鏋跺瓙鐘舵�佷负鈥滄墽琛屼腑鈥�
-        rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>()
-                .eq(RawGlassStorageDetails::getSlot, emptyShelf.getSlot())
-                .eq(RawGlassStorageDetails::getState, Const.GLASS_STATE_IN)
-                .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING));
 
         // 姝ラ5锛氭洿鏂颁换鍔$姸鎬佷负鈥滄墽琛屼腑鈥濓紝閬垮厤閲嶅鎵ц
         rawGlassStorageTaskService.update(new LambdaUpdateWrapper<RawGlassStorageTask>()
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 ac15c80..99b0fa8 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
@@ -1,5 +1,6 @@
 package com.mes.rawglassdetails.controller;
 
+import com.mes.rawglassdetails.entity.RawGlassStorageDetails;
 import com.mes.rawglassdetails.entity.dto.RawGlassStorageDetailsDTO;
 import com.mes.rawglassdetails.entity.request.RawGlassRequest;
 import com.mes.rawglassdetails.service.RawGlassStorageDetailsService;
@@ -9,10 +10,7 @@
 import org.springframework.context.MessageSource;
 import org.springframework.context.i18n.LocaleContextHolder;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -151,5 +149,16 @@
         return Result.build(200, "鏌ヨ鎴愬姛", rawGlassStorageDetailsService.patternUsage(width, height, thickness, films));
     }
 
+    @ApiOperation("鏌ヨ鍘熺墖瀛樺偍璇︽儏")
+    @GetMapping("/selectDetails")
+    public Result<List<RawGlassStorageDetails>> selectDetails() {
+        return Result.build(200, "鏌ヨ鎴愬姛", rawGlassStorageDetailsService.selectDetails());
+    }
+
+    @ApiOperation("娓呴櫎寮傚父鏁版嵁")
+    @PostMapping("/deleteData")
+    public Result<Boolean> deleteDetails(String id) {
+        return Result.success(rawGlassStorageDetailsService.deleteDetails(id));
+    }
 
 }

--
Gitblit v1.8.0