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" 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); } 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才是删除,delete得用另外的依赖,默认方法是remove返回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); } } 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; 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>() 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)); } }