UI-Project/src/lang/en.js
@@ -34,6 +34,8 @@ quit:"Exit", }, basicData:{ rackreset:'架子复位', prackreset:'是否架子复位?', printing:'自动打印', laserprinting:'Laser printing machine ready status:', cuttingmachine:'Cutting machine ready status:', UI-Project/src/lang/py.js
@@ -34,6 +34,8 @@ quit: "Выход", }, basicData: { rackreset:'架子复位', prackreset:'是否架子复位?', deletemessage: 'Удалить эту информацию или нет?', laserprinting: 'Машина лазерной маркировки готова:', cuttingmachine: 'Машина для резки готова:', UI-Project/src/lang/zh.js
@@ -34,7 +34,8 @@ quit:"退出", }, basicData:{ printing:'自动打印', rackreset:'架子复位', prackreset:'是否架子复位?', laserprinting:'打标机就绪状态:', cuttingmachine:'切割机就绪状态:', machine:'上片机联机状态:', UI-Project/src/views/GlassStorage/rawfilmstorage.vue
@@ -76,7 +76,7 @@ } }; const handleEdit = (row) => { window.localStorage.setItem('slotId', row.slotId) window.localStorage.setItem('slotId', row.slot) Edit.value = true; }; const handleBinda = (row) => { @@ -222,8 +222,8 @@ const response = await request.post("/glassStorage/rawGlassStorageTask/setRawGlassTaskRequest", { beginDate: (timeRange.value && timeRange.value[0]) || '', endDate: (timeRange.value && timeRange.value[1]) || '', taskState: stateList, taskType: celllist taskState: celllist, taskType: stateList }) if (response.code === 200) { // tableDataa.value = response.data; @@ -241,7 +241,7 @@ } const newState = row.state === 1 ? 0 : 1; try { var url="/glassStorage/rawGlassStorageStation/updateSlotState?slot="+row.deviceId + "&state=" + newState; var url="/glassStorage/rawGlassStorageStation/updateSlotState?slot="+row.slot + "&state=" + newState; const response = await request.post(url) if (response.code === 200) { ElMessage.success(response.message); @@ -261,12 +261,21 @@ const response = await request.post('/glassStorage/rawGlassStorageDetails/updateQuantity', { slotId: slotId, remainQuantity: remainQuantity.value, filmsId: filmsId.value, patternThickness: patternThickness.value, patternHeight: patternHeight.value, patternWidth: patternWidth.value, } ); if (response.code === 200) { ElMessage.success(response.message); Edit.value = false; tableDatab.value = response.data; patternWidth.value = ''; patternHeight.value = ''; patternThickness.value = ''; filmsId.value = ''; remainQuantity.value = ''; } else { ElMessage.error(response.message); } @@ -429,7 +438,7 @@ </el-table-column> <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="270"> <template #default="scope"> <el-button :disabled="!scope.row.remainQuantity" size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('film.exit') }}</el-button> <el-button size="mini" type="text" plain @click="handleEdit(scope.row)">{{ $t('film.exit') }}</el-button> <el-button :disabled="!scope.row.remainQuantity" size="mini" type="text" plain @click="deleteWarehousing(scope.row)">{{ $t('film.delete') }}</el-button> <el-button :disabled="!scope.row.remainQuantity || scope.row.remainQuantity === 0" size="mini" type="text" plain @click="openc(scope.row)">{{ $t('film.outbound') }}</el-button> </template> @@ -548,22 +557,65 @@ </div> </template> </el-dialog> <el-dialog v-model="Edit" top="21vh" width="40%"> <div style="margin-left: 50px;margin-top: 10px;margin-bottom: 10px;"> <el-form size="mini" label-width="100px"> <el-form label-width="210px" label-position="right"> <el-form-item :label="$t('film.thickremainquantity')" :required="true" style="width: 25vw"> <el-input v-model="remainQuantity" autocomplete="off" /> <el-dialog v-model="Edit" top="23vh" width="55%" :title="$t('film.addglass')" > <div style="margin-left: -50px;margin-top: 10px;margin-bottom: 10px;"> <el-form size="mini" label-width="150px"> <el-form label-width="100px" label-position="right"> <el-row style="margin-top: -15px;margin-bottom: -2px;"> <el-col :span="6"> <div id="dt" style="font-size: 15px;"> <div> <el-form-item :label="$t('film.widtha')" :required="true" style="width: 17vw;"> <el-input :placeholder="$t('film.inwidth')" v-model="patternWidth" autocomplete="off" /> </el-form-item> </div></div> </el-col> <el-col :span="9"> <div id="dta" style="font-size: 15px;"> <div> <el-form-item :label="$t('film.heighta')" :required="true" style="width: 17vw;"> <el-input :placeholder="$t('film.inheight')" v-model="patternHeight" autocomplete="off" /> </el-form-item></div> </div> </el-col> </el-row> <el-row style="margin-top: 10px;"> <el-col :span="6"> <div id="dt" style="font-size: 15px;"> <div> <el-form-item :label="$t('film.thicknessa')" :required="true" style="width: 17vw;"> <el-input :placeholder="$t('film.inthickness')" v-model="patternThickness" autocomplete="off" /> </el-form-item></div></div> </el-col> <el-col :span="9"> <div id="dta" style="font-size: 15px;"> <div> <el-form-item :label="$t('film.filmsa')" :required="true" style="width: 17vw;"> <el-input :placeholder="$t('film.infilms')" v-model="filmsId" autocomplete="off" /> </el-form-item></div></div> </el-col> </el-row> <el-row style="margin-top: 10px;"> <el-col :span="6"> <div id="dt" style="font-size: 15px;"> <div> <el-form label-width="210px"> <el-form-item :label="$t('film.thickremainquantity')" :required="true" style="width: 44.5vw;margin-left: -40px;"> <el-input v-model="remainQuantity" autocomplete="off" :placeholder="$t('film.inquantity')"/> </el-form-item> </el-form> </el-form> </div> </div></div> </el-col> </el-row> </el-form> </el-form> </div> <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="Editclick"> {{ $t('reportWork.sure') }} {{ $t('basicData.confirm') }} </el-button> <el-button @click="Edit = false">{{ $t('reportWork.cancel') }}</el-button> <el-button @click="Edit = false">{{ $t('basicData.cancel') }}</el-button> </div> </template> </el-dialog> UI-Project/src/views/Returns/upreturns.vue
@@ -26,8 +26,7 @@ const cuttingMachineStatusColor = ref('#911005'); const tableDataa = ref<any[]>([]); const tableDatab = ref<any[]>([]); // const tableData = ref([]) const tableData = reactive([]); const tableData = ref([]) const filteredData = computed(() => { // applyFilters 函数应该在某处定义,用于根据当前筛选条件过滤数据 return applyFilters(tableData, currentFilters); @@ -35,7 +34,6 @@ // 当前筛选条件,应该是一个响应式变量,用于存储用户选择的筛选值 const currentFilters = ref<{ state?: string }>({}); const filterTag = (value: string, row: any) => { // return String(row.state) === value; return row.state === value }; // 应用筛选条件的函数 @@ -75,7 +73,8 @@ try { const response = await request.get("/loadGlass/up-patten-usage/prioritylist"); if (response.code === 200) { tableData.splice(0, tableData.length, ...response.data); tableData.value = response.data // tableData.splice(0, tableData.length, ...response.data); ElMessage.error(response.message); window.localStorage.setItem('engineeringIda', tableData[0].engineeringId) } @@ -89,7 +88,6 @@ tableDataa.value = data.list[0].slice(0, 2); if(data.loadTask1.length !=0){ tableData.value = data.loadTask1[0] // tableData.splice(0, tableData.length, ...data.loadTask1[0]); window.localStorage.setItem('engineeringIda', tableData.value[0].engineeringId) canSelectProjecta.value = false; canSelectProjectb.value = false; @@ -363,6 +361,31 @@ console.error('发生错误:', error); } }; // 架子复位 const handleptask = async() => { try { const confirmResult = await ElMessageBox.confirm( t('basicData.prackreset'), t('workOrder.prompt'), { confirmButtonText: t('workOrder.yes'), cancelButtonText: t('workOrder.cancel'), type: 'warning', } ); if (confirmResult === 'confirm') { var url="/loadGlass/rawGlassStorageDetails/shelfReset?slot="+ 1; const response = await request.post(url) if (response.code === 200) { ElMessage.success(response.message); } else { ElMessage.error(response.msg); } } } catch (error) { console.error('发生错误:', error); } }; function getStatusType2(filmRemove) { switch (filmRemove) { case 0: @@ -463,6 +486,11 @@ <el-table-column prop="patternHeight" align="center" :label="$t('basicData.height')" min-width="80"/> <el-table-column prop="filmsId" align="center" :label="$t('basicData.coatingtypes')" min-width="80"/> <el-table-column prop="number" align="center" :label="$t('basicData.quantity')" min-width="80"/> <el-table-column fixed="right" :label="$t('film.operate')" align="center" width="70"> <template #default="scope"> <el-button size="mini" type="text" plain @click="handleptask()">{{ $t('basicData.rackreset') }}</el-button> </template> </el-table-column> </el-table> </div> </div> UI-Project/src/views/Returns/upreturns2.vue
@@ -26,8 +26,7 @@ const cuttingMachineStatusColor = ref('#911005'); const tableDataa = ref<any[]>([]); const tableDatab = ref<any[]>([]); // const tableData = ref([]) const tableData = reactive([]); const tableData = ref([]) const filteredData = computed(() => { // applyFilters 函数应该在某处定义,用于根据当前筛选条件过滤数据 return applyFilters(tableData, currentFilters); hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -247,12 +247,14 @@ * 准备出笼102 * 执行中103 * 在车上104 * 准备复位105 */ public static final Integer RAW_GLASS_STATE_IN = 100; public static final Integer RAW_GLASS_STATE_OUT = 101; public static final Integer RAW_GLASS_STATE_WAIT_OUT = 102; public static final Integer RAW_GLASS_STATE_RUNNING = 103; public static final Integer RAW_GLASS_STATE_CAR = 104; public static final Integer RAW_GLASS_STATE_RESET = 105; public static final List<Integer> RAW_GLASS_STATE_IN_ALL = Arrays.asList(100, 102, 103); public static final Integer RAW_GLASS_TASK_NEW = 0; hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/RawGlassStorageDetailsService.java
@@ -42,4 +42,6 @@ String outWarehousingRequest(int leftingStation); boolean generateTask(int startSlot, int endSlot, int shelf, int patternQuantity, int taskType) throws Exception; String shelfReset(Long slot); } hangzhoumesParent/common/servicebase/src/main/java/com/mes/rawglassdetails/service/impl/RawGlassStorageDetailsServiceImpl.java
@@ -106,8 +106,11 @@ update( new LambdaUpdateWrapper<RawGlassStorageDetails>() .set(RawGlassStorageDetails::getRemainQuantity, request.getRemainQuantity()) .eq(RawGlassStorageDetails::getSlot, request.getSlot()) .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN)); .set(RawGlassStorageDetails::getPatternWidth, request.getPatternWidth()) .set(RawGlassStorageDetails::getPatternHeight, request.getPatternHeight()) .set(RawGlassStorageDetails::getPatternThickness, request.getPatternThickness()) .set(RawGlassStorageDetails::getFilmsId, request.getFilmsId()) .eq(RawGlassStorageDetails::getSlot, request.getSlot())); return "success"; } @@ -190,4 +193,13 @@ readWriteEntity.setValue(value); return readWriteEntity; } @Override public String shelfReset(Long slot) { update(new LambdaUpdateWrapper<RawGlassStorageDetails>().eq(RawGlassStorageDetails::getSlot, slot) .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_IN) .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RESET)); //生成一条详情数据 仅记录架子状态 return "success"; } } hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/job/RawGlassTask.java
@@ -117,6 +117,11 @@ log.info("执行入库任务"); return; } flag = shelfResetTask(); if (flag) { log.info("执行复位任务"); return; } log.info("无任务执行,结束"); } @@ -280,6 +285,37 @@ return Boolean.TRUE; } /** * 复位任务:1、点复位,立马生成复位任务 2、点出库修改工位详情内的状态为架子复位,定时任务扫描生成复位任务 */ public boolean shelfResetTask() throws Exception { List<RawGlassStorageDetails> rawGlassList = rawGlassStorageDetailsService.list(new LambdaQueryWrapper<RawGlassStorageDetails>() .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RESET) .inSql(RawGlassStorageDetails::getSlot, "select slot from raw_glass_storage_station where enable_state = 1")); if (CollectionUtil.isEmpty(rawGlassList)) { log.info("系统没有需要复位的原片信息"); return Boolean.FALSE; } //生成复位任务 rawGlassStorageDetailsService.generateTask(rawGlassList.get(0).getSlot(), rawGlassList.get(0).getShelf(), rawGlassList.get(0).getShelf(), rawGlassList.get(0).getRemainQuantity(), Const.RAW_GLASS_TASK_TYPE_DISPATCH); // List<ReadWriteEntity> list = new ArrayList<>(); // list.add(generateReadWriteEntity("CC.CC.taskWord", 1)); // list.add(generateReadWriteEntity("CC.CC.taskSending", 1)); // list.add(generateReadWriteEntity("CC.CC.startSlot", startSlot)); // list.add(generateReadWriteEntity("CC.CC.endSlot", lefting)); // miloService.writeToOpcWord(list); //修改复位任务状态 rawGlassStorageDetailsService.update(new LambdaUpdateWrapper<RawGlassStorageDetails>() .eq(RawGlassStorageDetails::getSlot, rawGlassList.get(0).getSlot()) .eq(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RESET) .set(RawGlassStorageDetails::getState, Const.RAW_GLASS_STATE_RUNNING)); return Boolean.TRUE; } /** * 入库任务:吊装位有玻璃,先去工位表查询空格子,生成入库任务从吊装位到目标格子 * hangzhoumesParent/moduleService/GlassStorageModule/src/main/java/com/mes/rawglassdetails/controller/RawGlassStorageDetailsController.java
@@ -62,4 +62,10 @@ return Result.build( 200, "入库已完成,等待任务执行", rawGlassStorageDetailsService.outWarehousingRequest(leftingStation)); } @ApiOperation("架子复位") @PostMapping("/shelfReset") public Result<String> shelfReset(Long slot) { return Result.success(rawGlassStorageDetailsService.shelfReset(slot)); } }