UI-Project/src/lang/zh.js
@@ -93,9 +93,11 @@ disable:'禁用', start:'启用', deficiencieste:'报缺', updown:'人工下片', operate:'操作', prompt:'提示', information:'是否报缺该条信息?', infor:'是否人工下片该条信息?', yes:'是', cancel:'取消', }, @@ -198,6 +200,12 @@ fin:'是否完成任务?', sureadd:'确认添加', sureadda:'是否确认添加?', zailong:'在笼中', rengongxp:'人工下片', up:'上一页', down:'下一页', now:'当前页显示', tit:'条数据', }, workOrder:{ glassID:'玻璃ID', UI-Project/src/views/Caching/cachingun.vue
@@ -30,6 +30,7 @@ <el-table-column fixed="right" :label="$t('sorter.operate')" align="center" width="200"> <template #default="scope"> <el-button size="mini" type="text" plain @click="open(scope.row)">{{ $t('sorter.deficiencieste') }}</el-button> <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('sorter.updown') }}</el-button> </template> </el-table-column> </el-table> @@ -105,7 +106,7 @@ ); if (confirmResult === 'confirm') { // 用户点击了“是”,现在调用删除接口 var url="/cacheGlass/edgStorageCage/edgStorageCageGlass?edgStorageCageId="+row.id; var url="/unLoadGlass/downStorage/deleteDownStorageCage?edgStorageCageId="+row.id; console.log(url); const response = await request.post(url, { esdId: row.esdId @@ -114,13 +115,41 @@ ElMessage.success(response.message); } else { // 删除失败,您可以处理错误或显示错误信息给用户 ElMessage.error(response.msg); ElMessage.error(response.message); // alert('删除失败:' + deleteResponse.message); } } } catch (error) { // 处理可能出现的错误,比如 ElMessageBox 抛出的异常等 console.error('发生错误:', error); } }; // 人工下片 const opena = async(row) => { try { const confirmResult = await ElMessageBox.confirm( t('sorter.infor'), t('sorter.prompt'), { confirmButtonText: t('sorter.yes'), cancelButtonText: t('sorter.cancel'), type: 'warning', } ); if (confirmResult === 'confirm') { const response = await request.post("/unLoadGlass/downGlassTask/generateOutGlassTask", { glassId: row.glass_id }) if (response.code === 200) { ElMessage.success(response.message); } else { // 删除失败,您可以处理错误或显示错误信息给用户 ElMessage.error(response.message); // alert('删除失败:' + deleteResponse.message); } } } catch (error) { // 处理可能出现的错误,比如 ElMessageBox 抛出的异常等 console.error('发生错误:', error); UI-Project/src/views/Slicecage/slicecage.vue
@@ -7,7 +7,7 @@ const router = useRouter() import request from "@/utils/request" import { WebSocketHost ,host} from '@/utils/constants' import { ref, onMounted , onBeforeUnmount, reactive} from "vue"; import { ref, onMounted , onBeforeUnmount, reactive, computed } from "vue"; import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; import { ElMessage, ElMessageBox } from 'element-plus' import { tr } from "element-plus/es/locale"; @@ -70,8 +70,93 @@ const cell7=ref(true); const cell8=ref(true); const selectedRow = ref(null); // 存储选中的行数据 const currentPage4 = ref(4) const pageSize4 = ref(100) // 当前页码和每页显示的条数 const currentPage = ref(1); const itemsPerPage = computed(() => { if (currentPage.value === 1) { return 21; } else if (currentPage.value === 2) { return 21; } else if (currentPage.value === 3) { return 21; } else if (currentPage.value === 4) { return 21; } else if (currentPage.value === 5) { return 21; } else if (currentPage.value === 6) { return 21; } else if (currentPage.value === 7) { return 21; } else { return 21; // 默认值,可以根据实际需求修改 } }); // 计算分页后的数据 const paginatedUsers = computed(() => { const startIndex = calculateStartIndex(); const endIndex = startIndex + itemsPerPage.value; return tableData.value.slice(startIndex, endIndex); }); // 计算当前页的起始索引 function calculateStartIndex() { let index = 0; for (let i = 1; i < currentPage.value; i++) { if (i === 1) { index += 21; } else if (i === 2) { index += 21; } else if (i === 3) { index += 21; }else if (i === 4) { index += 21; }else if (i === 5) { index += 21; }else if (i === 6) { index += 21; }else if (i === 7) { index += 21; } else { index += 31; } } return index; } // 上一页和下一页方法 const prevPage = () => { if (currentPage.value > 1) { currentPage.value--; } }; const nextPage = () => { if (currentPage.value < totalPages.value) { currentPage.value++; } }; // 总页数计算 const totalPages = computed(() => { // let total = 0; // for (let i = 1; i <= users.value.length; i++) { // if (i === 1) { // total += 1; // } else if (i === 2) { // total += 2; // } else if (i === 3) { // total += 5; // } else { // total += 10; // } // } return 8; }); const getTableRow = (row,type) =>{ switch (type) { @@ -90,12 +175,9 @@ selectedRow.value = row; // 更新选中的行数据 currentRow.deviceId = row.deviceId; // 直接设置响应式属性 currentRow.slot = row.slot; console.log(row.deviceId); console.log(row.slot); window.localStorage.setItem('deviceId', row.deviceId) window.localStorage.setItem('slot', row.slot) add.value = true; // 打开绑定架子对话框 }; // 搜索 const searchout = async () => { @@ -148,6 +230,7 @@ // 用户点击了“是”,现在调用删除接口 const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/deleteBigStorageCageDetails",row) if (response.code === 200) { tableData.value = response.data; ElMessage.success(response.message); } else { // 删除失败,您可以处理错误或显示错误信息给用户 @@ -175,6 +258,7 @@ if (confirmResult === 'confirm') { const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/damageBigStorageCageDetails?status="+0, row) if (response.code === 200) { tableData.value = response.data; ElMessage.success(response.message); } else { ElMessage.error(response.message); @@ -199,6 +283,7 @@ if (confirmResult === 'confirm') { const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/damageBigStorageCageDetails?status="+1, row) if (response.code === 200) { tableData.value = response.data; ElMessage.success(response.message); } else { ElMessage.error(response.message); @@ -355,8 +440,12 @@ }; const response = await request.post("/cacheVerticalGlass/bigStorageCageDetails/insertBigStorageCageDetails", dataToSend) if (response.code === 200) { tableData.value = response.data; add.value = false; ElMessage.success(response.message); glassId.value = ''; tableDataf.value = ''; } else { ElMessage.error(response.message); } @@ -369,7 +458,6 @@ function handleRowClick(row) { selectedRow.value = row; // 更新选中的行数据 } const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheVerticalGlass/api/talk/slicecage`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { @@ -428,23 +516,23 @@ // 初始化 WebSocket,并传递消息处理函数 onMounted(() => { // fetchFlowCardId(); // fetchTableData(); // 获取数据 initializeWebSocket(socketUrl, handleMessage); }); function getStatusType(enableState: number) { switch (enableState) { case 0: return 'warning'; case 1: case 100: return 'success'; case 102: return 'warning'; } } function getStatusText(enableState: number) { switch (enableState) { case 0: return t('searchOrder.disable'); case 1: return t('searchOrder.enable'); case 100: return t('searchOrder.zailong'); case 102: return t('searchOrder.rengongxp'); } } function getStatusTypea(ishorizontal: number) { @@ -906,7 +994,7 @@ </el-dialog> <el-dialog v-model="dialogFormVisiblea" top="5vh" width="97%" :title="$t('searchOrder.cageinformation')"> <el-table :data="tableData" :data="paginatedUsers" @row-click="handleRowClick" height="500" @expand-change="handleExpandChange" @@ -925,8 +1013,8 @@ :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}" > <!-- <el-table-column prop="menuName" label="二级菜单栏" align="center" min-width="140" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"/> --> <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="80"/> <el-table-column prop="sequence" align="center" :label="$t('searchOrder.pieceingrid')" min-width="100" /> <el-table-column prop="glassId" :label="$t('searchOrder.glassID')" align="center" min-width="90"/> <el-table-column prop="sequence" align="center" :label="$t('searchOrder.pieceingrid')" min-width="110" /> <el-table-column prop="flowCardId" align="center" :label="$t('searchOrder.cardnumber')" min-width="120" /> <el-table-column prop="glassType" align="center" :label="$t('searchOrder.typeglass')" min-width="80" /> <el-table-column prop="width" align="center" :label="$t('searchOrder.width')" min-width="80" /> @@ -939,6 +1027,7 @@ :label="$t('searchOrder.startstatus')" min-width="80" prop="state" > <template #default="scope"> <el-tag :type="getStatusType(scope.row.state)"> @@ -952,7 +1041,11 @@ <el-button size="mini" type="text" plain @click="broke(scope.row)">{{ $t('searchOrder.breakage') }}</el-button> <el-button size="mini" type="text" plain @click="brokec(scope.row)">{{ $t('searchOrder.takeout') }}</el-button> <el-button size="mini" type="text" plain @click="opena(scope.row)">{{ $t('searchOrder.delete') }}</el-button> <el-button size="mini" type="text" plain @click="outfil(scope.row)">{{ $t('searchOrder.outfilm') }}</el-button> <el-button size="mini" type="text" :disabled="!((props.row.bigStorageCageDetails[0].state !== 102 && scope.$index == 0 ) || (props.row.bigStorageCageDetails[(scope.$index - 1)<0?0:scope.$index-1].state==102)&&(scope.row.state!=102))" plain @click="outfil(scope.row)"> {{ $t('searchOrder.outfilm') }} </el-button> </template> </el-table-column> </el-table> @@ -985,22 +1078,20 @@ </template> </el-table-column> </el-table> <div id="demo-pagination-block"> <el-pagination style="margin-left: 850px;" v-model:current-page="currentPage4" v-model:page-size="pageSize4" :page-sizes="[100, 200, 300, 400]" :small="small" :disabled="disabled" :background="background" layout="total, sizes, prev, pager, next, jumper" :total="400" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> <div> <div style="margin-top: 20px; text-align: center;"> <!-- 上一页按钮 --> <el-button @click="prevPage" :disabled="currentPage === 1">{{ $t('searchOrder.up') }}</el-button> <!-- 下一页按钮 --> <el-button @click="nextPage" :disabled="currentPage >= totalPages">{{ $t('searchOrder.down') }}</el-button> <!-- 当前页显示的条数 --> <span style="margin-left: 10px;">{{ $t('searchOrder.now') }} {{ itemsPerPage }} {{ $t('searchOrder.tit') }}</span> </div> </div> </el-dialog> <!-- </el-dialog> --> <el-dialog v-model="dialogFormVisibleb" top="5vh" width="85%" :title="$t('searchOrder.productionqueue')"> <!-- <div style="display: flex;"> <p style="margin-top: 3px;">队列状态:</p> hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -28,7 +28,7 @@ * 卧式理片笼详情表玻璃状态 * 识别后成功状态100 * 出片任务101 * 人工下片101 * 人工下片102 * 拿走200 * 破损201 */ @@ -150,5 +150,11 @@ public static final List<Integer> G11_WORK_STATION = Arrays.asList(4, 5, 6); public static final List<Integer> G13_WORK_STATION = Arrays.asList(7); /** * 启用 1 * 禁用 0 */ public static final Integer SLOT_ON = 1; public static final Integer SLOT_OFF = 0; } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -229,6 +229,7 @@ MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>(BigStorageCage.class) .selectAll(BigStorageCage.class) .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot) .eq(BigStorageCage::getEnableState, Const.SLOT_ON) .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId()) .gt(BigStorageCage::getRemainWidth, glassInfo.getWidth()) .last("limit 1"); @@ -245,6 +246,7 @@ return bigStorageDTO; } bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() .eq(BigStorageCage::getEnableState, Const.SLOT_ON) .eq(BigStorageCage::getRemainWidth, slotWidth) .inSql(BigStorageCage::getDeviceId, "select distinct device_id from big_storage_cage_details where tempering_layout_id = " + glassInfo.getTemperingLayoutId()) @@ -257,6 +259,7 @@ } bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() .eq(BigStorageCage::getRemainWidth, slotWidth) .eq(BigStorageCage::getEnableState, Const.SLOT_ON) .last("limit 1")); Assert.isTrue(null != bigStorageCage, "没有空余的笼子存放玻璃"); bigStorageDTO = new BigStorageDTO(); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageFeedTaskMapper.java
@@ -1,9 +1,8 @@ package com.mes.bigstoragetask.mapper; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.mes.bigstorage.entity.BigStorageDTO; import com.github.yulichang.base.MPJBaseMapper; import com.mes.bigstorage.entity.BigStorageDTO; import com.mes.bigstoragetask.entity.BigStorageCageFeedTask; import org.apache.ibatis.annotations.Param; @@ -17,7 +16,7 @@ * @author zhoush * @since 2024-04-16 */ @DS("salve_hangzhoumes") @DS("salve_hangzhoumes_1") public interface BigStorageCageFeedTaskMapper extends MPJBaseMapper<BigStorageCageFeedTask> { List<Integer> querySitToUpGlass(); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstoragetask/mapper/BigStorageCageOutTaskMapper.java
@@ -15,7 +15,7 @@ * @author zhoush * @since 2024-04-16 */ @DS("salve_hangzhoumes") @DS("salve_hangzhoumes_1") public interface BigStorageCageOutTaskMapper extends BaseMapper<BigStorageCageOutTask> { boolean saveBatch(@Param(value = "list") List<BigStorageCageOutTask> list); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/controller/TaskCacheController.java
File was deleted hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/entity/TaskCache.java
File was deleted hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/mapper/TaskCacheMapper.java
File was deleted hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/service/TaskCacheService.java
File was deleted hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgstoragetask/service/impl/TaskCacheServiceImpl.java
File was deleted hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -72,8 +72,11 @@ @Value("${mes.slotWidth}") private Integer slotWidth; @Value("${mes.carMaxSize}") private Integer carMaxSize; @Value("${mes.inCarMaxSize}") private Integer inCarMaxSize; @Value("${mes.outCarMaxSize}") private Integer outCarMaxSize; @Value("${mes.galssGap}") private Integer galssGap; @@ -309,7 +312,7 @@ Integer widthSecond = edgGlassTaskInfoList.get(1).getWidth(); if (remainWidth >= widthFirst) { if (remainWidth - widthFirst - galssGap >= widthSecond) { if (glassCount <= carMaxSize - 1) { if (glassCount <= inCarMaxSize - 1) { addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst); } else { addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst); @@ -433,7 +436,7 @@ //打车剩余尺寸 Integer remainWidth = carWidth; for (T e : list) { if (bigStorageCageOutTaskList.size() > carMaxSize || e.getWidth() > remainWidth) { if (bigStorageCageOutTaskList.size() > outCarMaxSize || e.getWidth() > remainWidth) { break; } remainWidth = remainWidth - (int) e.getWidth() - galssGap; hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application-cz.yml
@@ -14,6 +14,10 @@ username: sa password: beibo.123/ driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver salve_hangzhoumes_1: url: jdbc:sqlserver://192.168.20.2:1433;databasename=hangzhoumes username: sa password: beibo.123/ cloud: nacos: discovery: hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/application.yml
@@ -16,5 +16,6 @@ minCount: 5 carWidth: 5000 #大车宽度 slotWidth: 5000 #大车宽度 carMaxSize: 6 #大车最大存放玻璃数量 galssGap: 20 #玻璃间距 inCarMaxSize: 6 #进片大车最大存放玻璃数量 outCarMaxSize: 1 #出片大车最大存放玻璃数量 galssGap: 300 #玻璃间距 hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageDetailsMapper.xml
@@ -37,7 +37,7 @@ ) T2 INNER JOIN (SELECT ENGINEER_ID, TEMPERING_LAYOUT_ID, COUNT(TEMPERING_FEED_SEQUENCE) AS COUNT FROM BIG_STORAGE_CAGE_DETAILS WHERE STATE = 100 WHERE STATE in (100, 101, 102) GROUP BY ENGINEER_ID, TEMPERING_LAYOUT_ID) T3 ON T2.ENGINEER_ID = T3.ENGINEER_ID AND T2.TEMPERING_LAYOUT_ID = T3.TEMPERING_LAYOUT_ID AND T2.COUNT = T3.COUNT LIMIT 1 hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/AppRunnerConfig.java
@@ -1,6 +1,6 @@ package com.mes; //import com.mes.common.S7object; import com.mes.common.S7object; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.ApplicationArguments; @@ -14,7 +14,6 @@ @Slf4j @Component @Order(1) public class AppRunnerConfig implements ApplicationRunner { @@ -22,6 +21,5 @@ public void run(ApplicationArguments args) throws Exception { log.info("启动完成"); S7object.getinstance().start(); } }