UI-Project/src/utils/constants.js
@@ -1 +1,3 @@ export const WebSocketHost = "localhost"; // export const WebSocketHost = "192.168.1.199"; export const WebSocketHost = "10.153.19.150"; export const host = "88"; UI-Project/src/views/Caching/cachingbefore.vue
@@ -4,6 +4,7 @@ import {useRouter} from "vue-router" const router = useRouter() const adda = ref(false) import { WebSocketHost ,host} from '@/utils/constants' import request from "@/utils/request" import { ref, onMounted , onBeforeUnmount} from "vue"; @@ -15,7 +16,6 @@ const tableData = ref([]) const slot = ref('') const adjustedRects = ref([]); onMounted(async () => { try { const response = await request.post('/cacheGlass/edgStorageCage/selectEdgStorageCage'); // 替换为你的API端点 @@ -78,7 +78,7 @@ console.error('发生错误:', error); } }; const socketUrl = `ws://10.153.19.150:88/api/cacheGlass/api/talk/cacheGlass`; const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { // 更新 tableData 的数据 UI-Project/src/views/Caching/cachingun.vue
@@ -1,35 +1,42 @@ <script setup> import { initializeWebSocket } from '@/utils/WebSocketService'; import { WebSocketHost } from '@/utils/constants'; import {Search} from "@element-plus/icons-vue"; import {reactive} from "vue"; import {useRouter} from "vue-router" const router = useRouter() const adda = ref(false) import { WebSocketHost ,host} from '@/utils/constants' import request from "@/utils/request" import { ref, onMounted } from "vue"; import { ref, onMounted , onBeforeUnmount} from "vue"; import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; // import { ref } from 'vue' import { ElMessage, ElMessageBox } from 'element-plus' // import LanguageMixin from './lang/LanguageMixin' const tableData = ref([]) const slot = ref('') const adjustedRects = ref([]); const updatetable = async () => { await request.get("/unLoadGlass/downStorage/selectStorageCage").then((res) => { if (res.code == 200) { console.log(res.data); tableData.value = res.data console.log(res.data[0].slot); } else { ElMessage.warning(res.msg) } }); } onMounted(async () => { try { const response = await request.get('/unLoadGlass/downStorage/selectStorageCage'); // 替换为你的API端点 if (response.code === 200) { const rawRects = response.data; // 设置矩形数据 tableData.value = response.data console.log(response.data); adjustedRects.value = rawRects.map(rect => ({ ...rect, // 复制原始对象的其他属性 width: rect.width * 0.5 , id: rect.id * 10, })); console.log(adjustedRects.value); } else { ElMessage.warning(res.msg) } } catch (error) { // console.error('Error fetching rects :', error); } }); const open = async(row) => { try { const confirmResult = await ElMessageBox.confirm( @@ -43,7 +50,7 @@ ); if (confirmResult === 'confirm') { // 用户点击了“是”,现在调用删除接口 var url="/unLoadGlass/downStorage/deleteDownStorageCage?downStorageCageId="+row.id; var url="/cacheGlass/edgStorageCage/edgStorageCageGlass?edgStorageCageId="+row.id; console.log(url); const response = await request.post(url, { esdId: row.esdId @@ -61,26 +68,44 @@ console.error('发生错误:', error); } }; const socketUrl = `ws://${WebSocketHost}:88/api/unLoadGlass/api/talk/downcache`; const toggleEnableState = async (row) => { const newState = row.enable_state === 1 ? 0 : 1; // 发送请求到后端更新状态(这里省略了实际的请求逻辑) const response = await request.post('/unLoadGlass/downStorage/updateDownStorageCage', { id: row.id, enablestate: newState }); if (response.code === 200) { ElMessage.success(response.message); } else { ElMessage.error(response.message); } row.enable_state = newState; }; const socketUrl = `ws://${WebSocketHost}:${host}/api/unLoadGlass/api/talk/unloadglass`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { // 更新 tableData 的数据 // tableData.splice(0, tableData.length, ...data.params2[0]); tableData.value = data.params2[0] console.log("更新后数据", data.params2[0]); tableData.splice(0, tableData.length, ...data.params[0]); // tableData.value = data.params[0] // adjustedRects.value = data.EdgStorageCageinfos[0] adjustedRects.value = data.params[0].map(rect => ({ ...rect, // 复制原始对象的其他属性 width: rect.width * 0.5 , id: rect.id * 10, })); }; // 初始化 WebSocket,并传递消息处理函数 onMounted(() => { updatetable() // fetchFlowCardId(); // fetchTableData(); // 获取数据 initializeWebSocket(socketUrl, handleMessage); }); onBeforeUnmount(() => { console.log("关闭了") closeWebSocket(); }); </script> <template> <div> <el-card style="flex: 1;margin-left: 10px;margin-top: 20px;" v-loading="loading"> @@ -93,14 +118,22 @@ <el-table-column prop="width" align="center" label="宽" min-width="120" /> <el-table-column prop="height" align="center" label="高" min-width="120" /> <el-table-column align="center" align="center" label="启用状态" min-width="80" prop="enable_state" > <template #default="scope"> <template #default="scope"> <el-tag :type="scope.row.enable_state === 1 ? 'success' : 'danger'" @click="toggleEnableState(scope.row)" > {{ scope.row.enable_state === 1 ? '启用' : '禁用' }} </el-tag> </template> <!-- <template #default="scope"> <el-tag type="success" >{{ scope.row.enable_state==1?"启用":"未启用" }}</el-tag> </template> </template> --> </el-table-column> <el-table-column fixed="right" label="操作" align="center" width="200"> <template #default="scope"> @@ -111,27 +144,25 @@ </el-table> </div> </el-card> <!-- <el-dialog v-model="adda" top="30vh" width="25%" title="是否删除该条信息?" > <template #footer> <div id="dialog-footer"> <el-button type="primary" @click="handleConfirma"> 确认 </el-button> <el-button @click="adda = false">取消</el-button> </div> </template> </el-dialog> --> </div> <div id="awatch"> <img src="../../assets/woshihuancun.png" alt="" style="width: 60%;height: 90%;margin-left: 260px;margin-top: 20px;"> <div style="width: 100px;height: 10px;background-color: #409EFF;margin-top: -124px;margin-left: 480px;"></div> <div style="width: 100px;height: 10px;background-color: #409EFF;margin-top: -30px;margin-left: 850px;"></div> <div style="width: 100px;height: 10px;background-color: #409EFF;margin-top: 30px;margin-left: 695px;"></div> <img src="../../assets/woshihuancun.png" alt="" style="width: 60%;height: 90%;margin-left: 260px;margin-top: 20px;position: relative;"> <div style="position: absolute; width: 500px;height: 95px;margin-top: -165px;margin-left: 450px;"> <div v-for="(rect, index) in adjustedRects" :key="rect" :style="{ position: 'absolute', top: `${rect.id}px`, left: `10px`, width: `${rect.width}px`, height: `5px`, backgroundColor: '#409EFF' }" > </div> </div> </div> </template> <style scoped> #dt { display:block; float:left;line-height: 20px;margin-left: 100px;} #dta { display:block; float:left;line-height: 20px;margin-left: 80%;} #dialog-footer{ @@ -149,6 +180,7 @@ } #awatch{ height: 460px; width: 1500px; /* margin-top: -60px; */ } </style> UI-Project/src/views/Identify/identify.vue
@@ -38,12 +38,12 @@ </el-scrollbar> </el-card> </template> <script setup lang="ts"> import { Delete, Upload } from '@element-plus/icons-vue' import { ElMessage, ElMessageBox } from 'element-plus' import { ref, onMounted, onBeforeUnmount } from 'vue'; import request from "@/utils/request" import { WebSocketHost ,host} from '@/utils/constants' import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; const blind = ref(false) const olWidth = ref(); @@ -175,7 +175,7 @@ } }); } const socketUrl = `ws://10.153.19.150:88/api/cacheGlass/api/talk/cacheGlass`; const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { // 更新 tableData 的数据 UI-Project/src/views/PurchaseReturn/purchaseReturn.vue
@@ -3,10 +3,10 @@ import {reactive} from "vue"; import {useRouter} from "vue-router" import request from "@/utils/request" import { ref, onMounted } from 'vue'; // import { ref } from 'vue' import { ref, onMounted, onBeforeUnmount } from 'vue'; import { WebSocketHost ,host} from '@/utils/constants' import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; const dialogFormVisible = ref(true) const dialogFormVisiblea = ref(false) const dialogFormVisibleb = ref(false) @@ -16,96 +16,137 @@ const adjustedRectsa = ref([]); const adjustedRectsb = ref([]); // 进炉中 onMounted(async () => { try { const response = await request.get('/temperingGlass/temperingGlassInfo/SelectIntoGlass'); if (response.code === 200) { const rawRects = response.data; // 设置矩形数据 console.log(response.data); const { height: newheight,width: newwidth } = response.data; // 获取尺寸 height.value = newheight; width.value = newwidth; adjustedRects.value = rawRects.map(rect => ({ const socketUrl = `ws://${WebSocketHost}:${host}/api/temperingGlass/api/talk/temperingGlass`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { // 更新 tableData 的数据 adjustedRects.value = data.intoGlass[0].map(rect => ({ ...rect, // 复制原始对象的其他属性 xcoordinate: rect.xcoordinate, // 将x值除以3 ycoordinate: rect.ycoordinate, width: rect.width , height: rect.height , })); adjustedRectsa.value = data.waitingGlass[0].map(rect => ({ ...rect, // 复制原始对象的其他属性 xcoordinate: rect.xcoordinate, // 将x值除以3 ycoordinate: rect.ycoordinate, width: rect.width , height: rect.height , })); console.log(rect); adjustedRectsb.value = data.outGlass[0].map(rect => ({ ...rect, // 复制原始对象的其他属性 xcoordinate: rect.xcoordinate, // 将x值除以3 ycoordinate: rect.ycoordinate, width: rect.width , height: rect.height , })); }; // console.log( (rect.width*100) / 300 ); } else { // console.error('Failed to fetch rectangles from API.'); console.error('Failed to fetch rects from API.'); } } catch (error) { // console.error('Error fetching rectangles :', error); console.error('Error fetching rects :', error); } }); // 初始化 WebSocket,并传递消息处理函数 onMounted(() => { // fetchFlowCardId(); // fetchTableData(); // 获取数据 initializeWebSocket(socketUrl, handleMessage); }); onBeforeUnmount(() => { console.log("关闭了") closeWebSocket(); }); // onMounted(async () => { // try { // const response = await request.get('/temperingGlass/temperingGlassInfo/SelectIntoGlass'); // if (response.code === 200) { // const rawRects = response.data; // 设置矩形数据 // console.log(response.data); // const { height: newheight,width: newwidth } = response.data; // 获取尺寸 // height.value = newheight; // width.value = newwidth; // adjustedRects.value = rawRects.map(rect => ({ // ...rect, // 复制原始对象的其他属性 // xcoordinate: rect.xcoordinate, // 将x值除以3 // ycoordinate: rect.ycoordinate, // width: rect.width , // height: rect.height , // })); // console.log(rect); // // console.log( (rect.width*100) / 300 ); // } else { // // console.error('Failed to fetch rectangles from API.'); // console.error('Failed to fetch rects from API.'); // } // } catch (error) { // // console.error('Error fetching rectangles :', error); // console.error('Error fetching rects :', error); // } // }); // 进炉前 const handleConfirm = async () => { try { const response = await request.post('/temperingGlass/temperingGlassInfo/SelectWaitingGlass'); if (response.code === 200) { const rawRects = response.data; // 设置矩形数据 console.log(response.data); const { height: newheight,width: newwidth } = response.data; // 获取尺寸 height.value = newheight; width.value = newwidth; // const handleConfirm = async () => { // try { // const response = await request.post('/temperingGlass/temperingGlassInfo/SelectWaitingGlass'); // if (response.code === 200) { // const rawRects = response.data; // 设置矩形数据 // console.log(response.data); // const { height: newheight,width: newwidth } = response.data; // 获取尺寸 // height.value = newheight; // width.value = newwidth; adjustedRectsa.value = rawRects.map(rect => ({ ...rect, // 复制原始对象的其他属性 xcoordinate: rect.xcoordinate, // 将x值除以3 ycoordinate: rect.ycoordinate, width: rect.width , height: rect.height , })); console.log(rect); // adjustedRectsa.value = rawRects.map(rect => ({ // ...rect, // 复制原始对象的其他属性 // xcoordinate: rect.xcoordinate, // 将x值除以3 // ycoordinate: rect.ycoordinate, // width: rect.width , // height: rect.height , // })); // console.log(rect); // console.log( (rect.width*100) / 300 ); } else { // console.error('Failed to fetch rectangles from API.'); console.error('Failed to fetch rects from API.'); } } catch (error) { // console.error('Error fetching rectangles :', error); console.error('Error fetching rects :', error); } }; // // console.log( (rect.width*100) / 300 ); // } else { // // console.error('Failed to fetch rectangles from API.'); // console.error('Failed to fetch rects from API.'); // } // } catch (error) { // // console.error('Error fetching rectangles :', error); // console.error('Error fetching rects :', error); // } // }; // 已出炉 const handleConfirma = async () => { try { const response = await request.get('/temperingGlass/temperingGlassInfo/SelectOutGlass'); if (response.code === 200) { const rawRects = response.data; // 设置矩形数据 console.log(response.data); const { height: newheight,width: newwidth } = response.data; // 获取尺寸 height.value = newheight; width.value = newwidth; // const handleConfirma = async () => { // try { // const response = await request.get('/temperingGlass/temperingGlassInfo/SelectOutGlass'); // if (response.code === 200) { // const rawRects = response.data; // 设置矩形数据 // console.log(response.data); // const { height: newheight,width: newwidth } = response.data; // 获取尺寸 // height.value = newheight; // width.value = newwidth; adjustedRectsb.value = rawRects.map(rect => ({ ...rect, // 复制原始对象的其他属性 xcoordinate: rect.xcoordinate, // 将x值除以3 ycoordinate: rect.ycoordinate, width: rect.width , height: rect.height , })); console.log(rect); // adjustedRectsb.value = rawRects.map(rect => ({ // ...rect, // 复制原始对象的其他属性 // xcoordinate: rect.xcoordinate, // 将x值除以3 // ycoordinate: rect.ycoordinate, // width: rect.width , // height: rect.height , // })); // console.log(rect); // console.log( (rect.width*100) / 300 ); } else { // console.error('Failed to fetch rectangles from API.'); console.error('Failed to fetch rects from API.'); } } catch (error) { // console.error('Error fetching rectangles :', error); console.error('Error fetching rects :', error); } }; // // console.log( (rect.width*100) / 300 ); // } else { // // console.error('Failed to fetch rectangles from API.'); // console.error('Failed to fetch rects from API.'); // } // } catch (error) { // // console.error('Error fetching rectangles :', error); // console.error('Error fetching rects :', error); // } // }; const gridOptions = reactive({ border: "full",//表格加边框 keepSource: true,//保持源数据 @@ -173,7 +214,7 @@ <el-scrollbar height="630px"> <div style="position: relative;width: 1400px;"> <div v-for="(rect, index) in adjustedRects" v-for="(rect, index) in adjustedRectsa" :key="index" class="rect" :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px` }" @@ -191,7 +232,7 @@ <el-scrollbar height="630px"> <div style="position: relative;width: 1400px;"> <div v-for="(rect, index) in adjustedRects" v-for="(rect, index) in adjustedRectsb" :key="index" class="rect" :style="{ position: 'absolute', top: `${rect.ycoordinate}px`, left: `${rect.xcoordinate}px`, width: `${rect.width}px`, height: `${rect.height}px` }" UI-Project/src/views/Returns/returns.vue
@@ -13,7 +13,7 @@ const adda = ref(false) const flake = ref(false) const flakea = ref(false) import { WebSocketHost } from '@/utils/constants' import { WebSocketHost ,host} from '@/utils/constants' import request from "@/utils/request" const ida = ref(null); import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; @@ -25,9 +25,9 @@ const selectedValuea = ref(''); const selectedValueb = ref(''); const selectedValuec = ref(''); const upstatus = ref(''); // 假设这个用于显示自动/手动状态 const upstatus = ref('上片机手动状态:'); // 假设这个用于显示自动/手动状态 const cuttingMachine = ref(''); // 假设这个用于存储后端返回的状态值(0或1) const cuttingMachineStatusColor = ref(''); // 用于动态设置i标签的背景色 const cuttingMachineStatusColor = ref('#911005'); // 用于动态设置i标签的背景色 const inKageWord = ref(0); // 用于存储要传递给接口的inKageWord值 const options = ref<any[]>([]); // 下拉选项列表 const selectOptions = ref<Array<any>>([]); // 下拉选选项数组 @@ -102,7 +102,7 @@ const titleSelectJsona = ref({ processTypea: [], }) const socketUrl = `ws://10.153.19.150:88/api/loadGlass/api/talk/loadGlass`; const socketUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { // 更新 tableData 的数据 @@ -497,7 +497,7 @@ const wsUrl = 'ws://10.153.19.150:88/api/loadGlass/api/talk/loadGlass'; const wsUrl = `ws://${WebSocketHost}:${host}/api/loadGlass/api/talk/loadGlass`; const ws = new WebSocket(wsUrl); ws.onopen = () => { console.log('WebSocket连接已打开'); @@ -519,16 +519,14 @@ // 监听WebSocket的消息事件 ws.onmessage = (event) => { // 假设服务器发送的是JSON格式的字符串 try { const data = JSON.parse(event.data); // 解析消息为JSON // 假设服务器发送的数据结构是 { InkageStatus: ["1"] } if (data && Array.isArray(data.InkageStatus) && data.InkageStatus.length > 0) { const status = data.InkageStatus[0]; cuttingMachine.value = status; upstatus.value = status === '1' ? '上片机联机状态:' : '上片机手动状态:'; cuttingMachineStatusColor.value = status === '1' ? '#911005' : 'green'; cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005'; inKageWord.value = status === '1' ? 0 : 1; } else { // 处理错误情况或无效数据 @@ -546,7 +544,7 @@ if (response.code == 200) { const status = response.data.status; upstatus.value = status === '1' ? '上片机联机状态:' : '上片机手动状态:'; cuttingMachineStatusColor.value = status === '1' ? '#911005' : 'green'; cuttingMachineStatusColor.value = status === '1' ? 'green' : '#911005'; // 显示成功消息 ElMessage.success(response.message); } else { @@ -558,25 +556,6 @@ ElMessage.error('请求时发生错误'); } }; // const confirmCutting = async () => { // try { // const response = await request.post('/loadGlass/LoadGlass/updateMesInkageLoad', { // inKageWord: inKageWord.value // }) // if (response.code == 200) { // inKageWord == '1' ? '上片机联机状态:' : '上片机手动状态:'; // inKageWord.value == '1' ? '#911005' : 'green'; // ElMessage.success(response.message); // } else { // // 请求失败,显示错误消息 // ElMessage.error(response.msg); // } // } // catch (error) { // // 处理错误 // console.error(error); // } // } </script> <template> @@ -596,7 +575,7 @@ <el-button style="margin-top: 5px;margin-left: 15px;" id="searchButton" type="primary" @click="dialogFormVisible = true">选择工程</el-button> <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="primary" @click="handleBind">开始上片</el-button> <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="warning" @click="handleBinda">暂停</el-button> <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="danger" @click="handleBindb">停止任务</el-button> <!-- <el-button style="margin-top: 5px;margin-left: 20px;" id="searchButton" type="danger" @click="handleBindb">停止任务</el-button> --> <el-card style="flex: 1;margin-left: 10px;margin-top: 15px;" v-loading="loading"> <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;"> UI-Project/src/views/Slicecage/slicecage.vue
@@ -3,13 +3,21 @@ import {reactive} from "vue"; import {useRouter} from "vue-router" const router = useRouter() import { ref } from 'vue' import { WebSocketHost ,host} from '@/utils/constants' import { ref, onMounted , onBeforeUnmount} from "vue"; import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; import { ElMessage, ElMessageBox } from 'element-plus' import { tr } from "element-plus/es/locale"; const dialogFormVisible = ref(false) const dialogFormVisiblea = ref(false) const dialogFormVisibleb = ref(false) const tableData = ref([]) const tableDatab = ref([]) const tableDatac = ref([]) const tableDatad = ref([]) const tableDatae = ref([]) const adjustedRects = ref([]); const height = ref([]); const carposition1 = ref(60); const carposition2 = ref(220); @@ -19,7 +27,6 @@ const timers2 =ref(true); const timers3 =ref(true); const timers4 =ref(true); const cellshow=ref(false); const cellshow5=ref(false); const c1=ref(false); const c2=ref(false); @@ -31,33 +38,18 @@ const million1=ref(0); const million3=ref(0); const million4=ref(0); const cell1=ref(true); const cell2=ref(true); const cell3=ref(true); const cell4=ref(true); const cell5=ref(true); const cell6=ref(true); const cell7=ref(true); const cell8=ref(true); const currentPage4 = ref(4) const pageSize4 = ref(100) const tableData = [ { id: '1', a: '1', b: '1', c: '123456789', d: '1568251', e: '1', f: '100*100', g: '', }, ] const tableDatab = [ { id: '2', a: '2', b: '2', c: '123456789', d: '1568251', e: '1', f: '100*100', g: '', } ] const dialogForm = () => { ElMessageBox.confirm( '确定要急停吗?', @@ -83,7 +75,7 @@ } var timer=setInterval(() => { console.log(million.value,million1.value); // console.log(million.value,million1.value); million.value+=1; if(million.value-million1.value!==12){ @@ -115,13 +107,7 @@ } }else{ million1.value=million.value; if(cellshow.value==true){ cellshow.value=false; }else{ cellshow.value=true; } if(cellshow1.value==true){ cellshow1.value=false; }else{ @@ -137,7 +123,7 @@ }, 1000); var timer=setInterval(() => { console.log(million3.value,million4.value); // console.log(million3.value,million4.value); million3.value+=1; if(million3.value-million4.value!==12){ @@ -204,69 +190,120 @@ } } const gridOptions = reactive({ border: "full",//表格加边框 keepSource: true,//保持源数据 align: 'center',//文字居中 stripe:true,//斑马纹 rowConfig: {isCurrent: true, isHover: true,height: 50},//鼠标移动或选择高亮 id: 'OrderList', showFooter: true,//显示脚 printConfig: {}, importConfig: {}, exportConfig: {}, scrollY:{ enabled: true },//开启虚拟滚动 showOverflow:true, columnConfig: { resizable: true, useKey: true }, filterConfig: { //筛选配置项 remote: true }, customConfig: { storage: true }, editConfig: { trigger: 'click', mode: 'row', showStatus: true }, data: [ { 'id': '1', 'long': '5', 'wide': '1005', 'thick': '183.6', } ], }) const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheVerticalGlass/api/talk/slicecage`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { // 更新 tableData 的数据 tableDatac.value = data.bigStorageCageDetailsOutTask[0] tableDatad.value = data.bigStorageCageDetailsFeedTask[0] tableData.value = data.bigStorageCageInfo[0] tableDatab.value = data.temperingGlassInfoList[0] tableDatae.value = data.bigStorageCageUsage[0] adjustedRects.value = data.bigStorageCageInfo1[0] // adjustedRects.value = data.bigStorageCageInfo1[0].map(rect => ({ // ...rect, // 复制原始对象的其他属性 // height: rect.length *0.5, // })); window.localStorage.setItem('length', data.bigStorageCageInfo1[0].length) let length = window.localStorage.getItem('length') console.log(length); }; // function getRectHeight(length: number) { // return length > 0 ? 29 / length : 29; // } // 初始化 WebSocket,并传递消息处理函数 onMounted(() => { // fetchFlowCardId(); // fetchTableData(); // 获取数据 initializeWebSocket(socketUrl, handleMessage); }); function getStatusType(enableState: number) { switch (enableState) { case 0: return 'warning'; case 1: return 'success'; } } function getStatusText(enableState: number) { switch (enableState) { case 0: return '禁用'; case 1: return '启用'; } } function getStatusTypea(ishorizontal: number) { switch (ishorizontal) { case 0: return 'warning'; case 1: return 'success'; } } function getStatusTexta(ishorizontal: number) { switch (ishorizontal) { case 0: return '不接受'; case 1: return '接受'; } } function getStatusTypeb(state: number) { switch (state) { case 0: return 'success'; case 1: return 'primary'; } } function getStatusTextb(state: number) { switch (state) { case 0: return '出片完成'; case 1: return '等待中'; case 2: return '等待中'; } } onBeforeUnmount(() => { console.log("关闭了") closeWebSocket(); }); </script> <template> <div style="height: 700px;"> <!-- <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="primary" @click="dialogFormVisible = true">手动进片</el-button> --> <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true">订单信息</el-button> <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="primary" @click="dialogFormVisiblea = true">理片笼信息</el-button> <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="success" @click="dialogFormVisibleb = true">出片队列</el-button> <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="danger">终止进片</el-button> <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="danger">终止出片</el-button> <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="danger" @click="dialogForm">软急停</el-button> <!-- <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="danger">终止进片</el-button> --> <!-- <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="danger">终止出片</el-button> --> <!-- <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="danger" @click="dialogForm">软急停</el-button> --> <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading"> <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;"> <el-table height="100%" ref="table" @selection-change="handleSelectionChange" :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="id" align="center" label="出片玻璃ID" min-width="80" /> <el-table-column prop="a" align="center" label="笼子" min-width="120" /> <el-table-column prop="b" align="center" label="格子" min-width="120" /> <el-table-column prop="c" align="center" label="工程号" min-width="120" /> <el-table-column prop="d" align="center" label="流程卡号" min-width="120" /> <el-table-column prop="e" align="center" label="钢化版图号" min-width="157" /> <el-table-column prop="f" align="center" label="尺寸" min-width="120" /> <el-table-column prop="g" align="center" label="结束任务" min-width="120"> <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="text">完成任务</el-button> </el-table-column> :data="tableDatac" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="bigStorageCageOutTask.glassId" align="center" label="出片玻璃ID" min-width="80" /> <el-table-column prop="bigStorageCageOutTask.startSlot" align="center" label="起始位置" min-width="120" /> <el-table-column prop="bigStorageCageOutTask.endSlot" align="center" label="目标位置" min-width="120" /> <el-table-column prop="bigStorageCageOutTask.trainNumber" align="center" label="车次" min-width="120" /> <el-table-column prop="bigStorageCageOutTask.serialNumber" align="center" label="序号" min-width="120" /> <el-table-column prop="bigStorageCageOutTask.taskState" align="center" label="任务状态" min-width="157"> <template #default="scope"> <el-tag type="success" >{{ scope.row.bigStorageCageOutTask.taskState==0?"等待进片":"进行中" }}</el-tag> </template> </el-table-column> <el-table-column fixed="right" label="结束任务" align="center" width="150"> <template #default="scope"> <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">完成任务</el-button> </template> </el-table-column> </el-table> </div> </el-card> @@ -274,111 +311,35 @@ <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;"> <el-table height="100%" ref="table" @selection-change="handleSelectionChange" :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="id" align="center" label="进片玻璃ID" min-width="80" /> <el-table-column prop="a" align="center" label="笼子" min-width="120" /> <el-table-column prop="b" align="center" label="格子" min-width="120" /> <el-table-column prop="c" align="center" label="工程号" min-width="120" /> <el-table-column prop="d" align="center" label="流程卡号" min-width="120" /> <el-table-column prop="e" align="center" label="钢化版图号" min-width="157" /> <el-table-column prop="f" align="center" label="尺寸" min-width="120" /> <el-table-column prop="g" align="center" label="结束任务" min-width="120"> <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="text">完成任务</el-button> </el-table-column> :data="tableDatad" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="bigStorageCageFeedTask.glassId" align="center" label="进片玻璃ID" min-width="80" /> <el-table-column prop="bigStorageCageFeedTask.tragetSlot" align="center" label="目标位置" min-width="120" /> <!-- <el-table-column prop="task_type" align="center" label="任务类型" min-width="120" />没有返回字段 --> <el-table-column prop="bigStorageCageFeedTask.taskState" align="center" label="任务状态" min-width="120"> <template #default="scope"> <el-tag type="success" >{{ scope.row.bigStorageCageFeedTask.taskState==0?"等待进片":"进行中" }}</el-tag> </template> </el-table-column> <el-table-column prop="bigStorageCageFeedTask.line" align="center" label="线路" min-width="120" /> <el-table-column fixed="right" label="结束任务" align="center" width="150"> <template #default="scope"> <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">完成任务</el-button> </template> </el-table-column> </el-table> </div> </el-card> <div style="padding: 10px;display: flex;height:110px;"> <div id="occupy"> <el-col style="text-align:left;font-weight: bold;">#1</el-col> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">使用率</span><span id="zhi">35%</span> </el-col> <hr style="width:80%;margin: 0 auto;" /> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">空闲(格子数)</span><span id="zhi">555</span> </el-col> </div> <div id="occupy"> <el-col style="text-align:left;font-weight: bold;">#2</el-col> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">使用率</span><span id="zhi">35%</span> </el-col> <hr style="width:80%;margin: 0 auto;" /> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">空闲(格子数)</span><span id="zhi">555</span> </el-col> </div> <div id="occupy"> <el-col style="text-align:left;font-weight: bold;">#3</el-col> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">使用率</span><span id="zhi">35%</span> </el-col> <hr style="width:80%;margin: 0 auto;" /> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">空闲(格子数)</span><span id="zhi">555</span> </el-col> </div> <div id="occupy"> <el-col style="text-align:left;font-weight: bold;">#4</el-col> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">使用率</span><span id="zhi">35%</span> </el-col> <hr style="width:80%;margin: 0 auto;" /> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">空闲(格子数)</span><span id="zhi">555</span> </el-col> </div> <div id="occupy"> <el-col style="text-align:left;font-weight: bold;">#5</el-col> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">使用率</span><span id="zhi">35%</span> </el-col> <hr style="width:80%;margin: 0 auto;" /> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">空闲(格子数)</span><span id="zhi">555</span> </el-col> </div> <div id="occupy"> <el-col style="text-align:left;font-weight: bold;">#6</el-col> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">使用率</span><span id="zhi">35%</span> </el-col> <hr style="width:80%;margin: 0 auto;" /> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">空闲(格子数)</span><span id="zhi">555</span> </el-col> </div> <div id="occupy"> <el-col style="text-align:left;font-weight: bold;">#7</el-col> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">使用率</span><span id="zhi">35%</span> </el-col> <hr style="width:80%;margin: 0 auto;" /> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">空闲(格子数)</span><span id="zhi">555</span> </el-col> </div> <div id="occupy"> <el-col style="text-align:left;font-weight: bold;">#8</el-col> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">使用率</span><span id="zhi">35%</span> </el-col> <hr style="width:80%;margin: 0 auto;" /> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">空闲(格子数)</span><span id="zhi">555</span> </el-col> </div> <!-- <div v-for="n in 8" :key="n" id="occupy"> <el-col style="text-align:left;font-weight: bold;">#1</el-col> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">使用率</span><span id="zhi">35%</span> </el-col> <hr style="width:80%;margin: 0 auto;" /> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span id="biao">空闲(格子数)</span><span id="zhi">555</span> </el-col> </div> --> <div v-for="(item, index) in tableDatae" :key="index" id="occupy"> <el-col style="text-align:left;font-weight: bold;">#{{ item.device_id }}</el-col> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span>使用率</span><span>{{ item.percentage }}</span> </el-col> <hr style="width:80%;margin: 0 auto;" /> <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;"> <span>空闲(格子数)</span><span>{{ item.count }}</span> </el-col> </div> </div> <!-- <div id="awatch"> <img src="../../assets/cp.png" alt="" style="width: 70%;height: 70%;margin-left: 160px;"> @@ -393,15 +354,49 @@ </div> <div v-show="c2" class="img-car3" :style="'z-index:999;left:247px;top:' + carposition3 + 'px;position:absolute;'"> <div v-show="cellshow3" style="margin-top:10px;width:200px;height:5px;background-color:#409EFF;"></div> <div v-show="cellshow3" style="margin-top:10px;width:220px;height:5px;background-color:#409EFF;"></div> </div> <div class="img-car4" :style="'z-index:999;left:704px;top:' + carposition4 + 'px;position:absolute;'"> <div v-show="cellshow4" style="margin-top:10px;width:200px;height:5px;background-color:#409EFF;"></div> </div> <div v-show="cellshow" style="width: 200px;height: 5px;position: absolute;top:70px;left: 480px;background-color: #409EFF;"> <div v-show="cell1" style="width: 227px;height: 29px;position: absolute;top:55px;left: 465px;"> <div v-for="(item, index) in adjustedRects" :key="index" :style="{ top: `1px`, width: `227px`, backgroundColor: '#409EFF', height: `height`+ `px` }" > </div> <div v-show="cellshow5" style="width: 200px;height: 5px;position: absolute;top:70px;left: 480px;background-color: #409EFF;"> <!-- <div v-for="(item, index) in adjustedRects" height: `${rect.height}px`, :key="index" :style="{ width: '227px', height: '1px', backgroundColor: '#409EFF', top: '1px' }" > </div> --> </div> <!-- <div v-show="cell2" style="width: 227px;height: 29px;position: absolute;top:86px;left: 465px;background-color: #409EFF;"> </div> <div v-show="cell3" style="width: 227px;height: 29px;position: absolute;top:117px;left: 465px;background-color: #409EFF;"> </div> <div v-show="cell4" style="width: 227px;height: 29px;position: absolute;top:148px;left: 465px;background-color: #409EFF;"> </div> <div v-show="cell5" style="width: 227px;height: 29px;position: absolute;top:208px;left: 465px;background-color: #409EFF;"> </div> <div v-show="cell6" style="width: 227px;height: 29px;position: absolute;top:238px;left: 465px;background-color: #409EFF;"> </div> <div v-show="cell7" style="width: 227px;height: 29px;position: absolute;top:269px;left: 465px;background-color: #409EFF;"> </div> <div v-show="cell8" style="width: 227px;height: 29px;position: absolute;top:300px;left: 465px;background-color: #409EFF;"> </div> --> </div> </div> @@ -527,17 +522,28 @@ </div> </template> </el-dialog> <el-dialog v-model="dialogFormVisiblea" top="10vh" width="85%" title="订单信息" > <el-input placeholder="请输入工程号" style="width: 180px;size: mini;"></el-input> <el-button style="margin-left: 10px;size: mini;" type="primary">查询</el-button> <el-dialog v-model="dialogFormVisiblea" top="10vh" width="85%" title="理片笼信息" > <!-- <el-input placeholder="请输入工程号" style="width: 180px;size: mini;"></el-input> --> <!-- <el-button style="margin-left: 10px;size: mini;" type="primary">查询</el-button> --> <el-table ref="table" style="margin-top: 20px;height: 500px;" @selection-change="handleSelectionChange" :data="tableDataa" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="ida" align="center" label="玻璃id" min-width="80" /> <el-table-column prop="typea" align="center" label="工程号" min-width="120" /> <el-table-column prop="typea" align="center" label="长" min-width="120" /> <el-table-column prop="typea" align="center" label="宽" min-width="120" /> <el-table-column prop="typea" align="center" label="厚" min-width="120" /> :data="tableData" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="id" align="center" label="大理片笼表ID" min-width="80" /> <el-table-column prop="deviceId" align="center" label="设备ID" min-width="120" /> <el-table-column prop="slot" align="center" label="栅格号" min-width="120" /> <el-table-column align="center" label="启用状态" min-width="80" prop="enableState" > <template #default="scope"> <el-tag :type="getStatusType(scope.row.enableState)"> {{ getStatusText(scope.row.enableState) }} </el-tag> </template> </el-table-column> <el-table-column prop="remainWidth" align="center" label="剩余宽度" min-width="120" /> </el-table> <div id="demo-pagination-block"> <el-pagination @@ -557,25 +563,58 @@ </el-dialog> <el-dialog v-model="dialogFormVisibleb" top="10vh" width="85%" title="出片队列" > <div style="display: flex;"> <p style="margin-top: 4px;">队列状态:</p> <p style="margin-top: 4px;">开始</p> <p style="margin-top: 3px;">队列状态:</p> <p style="margin-top: 3px;">开始</p> <el-button style="margin-left: 10px;size: mini;" type="danger">停止</el-button> <el-button style="margin-left: 10px;size: mini;" type="primary">添加</el-button> </div> <el-table ref="table" style="margin-top: 20px;height: 500px;" @selection-change="handleSelectionChange" :data="tableDatab" :header-cell-style="{background:'#F2F3F5 ',color:'#1D2129'}"> <el-table-column prop="id" align="center" label="铝框id" min-width="80" /> <el-table-column prop="type" align="center" label="玻璃id" min-width="120" /> <el-table-column prop="type" align="center" label="订单编号" min-width="120" /> <el-table-column prop="type" align="center" label="列表编号" min-width="120" /> <el-table-column prop="type" align="center" label="箱子编号" min-width="120" /> <el-table-column prop="type" align="center" label="长" min-width="120" /> <el-table-column prop="type" align="center" label="宽" min-width="120" /> <el-table-column prop="type" align="center" label="玻璃状态" min-width="120" /> <el-table-column prop="type" align="center" label="顺序" min-width="120" /> <el-table-column prop="type" align="center" label="完成" min-width="120" /> <el-table-column prop="type" align="center" label="操作" min-width="120" /> <el-table-column prop="id" fixed align="center" label="钢化小片信息表id" min-width="150"/> <!-- <el-table-column prop="glass_id" align="center" label="玻璃id" min-width="120" /> --> <el-table-column prop="flowcardId" fixed align="center" label="流程卡" min-width="120" /> <el-table-column prop="glassType" align="center" label="流程卡玻璃类型" min-width="150" /> <el-table-column prop="width" align="center" label="宽" min-width="80" /> <el-table-column prop="height" align="center" label="高" min-width="80" /> <el-table-column prop="thickness" align="center" label="厚度" min-width="80" /> <el-table-column prop="filmsid" align="center" label="膜系" min-width="80" /> <!-- <el-table-column prop="ishorizontal" align="center" label="钢化是否接受横放" min-width="150" /> --> <el-table-column align="center" label="钢化是否接受横放" min-width="150" prop="ishorizontal" > <template #default="scope"> <el-tag :type="getStatusTypea(scope.row.ishorizontal)"> {{ getStatusTexta(scope.row.ishorizontal) }} </el-tag> </template> </el-table-column> <el-table-column prop="temperingLayoutId" align="center" label="钢化版图id" min-width="120" /> <el-table-column prop="temperingFeedSequence" align="center" label="钢化版图片序" min-width="120" /> <el-table-column prop="xCoordinate" align="center" label="x坐标" min-width="80" /> <el-table-column prop="yCoordinate" align="center" label="y坐标" min-width="80" /> <el-table-column prop="angle" align="center" label="旋转角度(逆时针)" min-width="150" /> <!-- <el-table-column prop="state" align="center" label="状态" min-width="80" /> --> <el-table-column align="center" label="状态" min-width="80" prop="state" > <template #default="scope"> <el-tag :type="getStatusTypeb(scope.row.state)"> {{ getStatusTextb(scope.row.state) }} </el-tag> </template> </el-table-column> <el-table-column fixed="right" label="操作" align="center" width="150"> <template #default="scope"> <el-button size="mini" type="text" plain @click="handleBindRack(scope.row)">添加</el-button> <el-button size="mini" type="text" plain @click="handleBindRacka(scope.row)">删除</el-button> </template> </el-table-column> </el-table> </el-dialog> UI-Project/src/views/StockBasicData/stockBasicData.vue
@@ -4,7 +4,7 @@ import {useRouter} from "vue-router" const router = useRouter() const adda = ref(false) import { WebSocketHost ,host} from '@/utils/constants' import request from "@/utils/request" import { ref, onMounted , onBeforeUnmount} from "vue"; import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; @@ -94,7 +94,7 @@ } }; const socketUrl = `ws://10.153.19.150:88/api/cacheGlass/api/talk/cacheGlass`; const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { // 更新 tableData 的数据 UI-Project/src/views/StockBasicData/stockBasicDatatwo.vue
@@ -4,7 +4,7 @@ import {useRouter} from "vue-router" const router = useRouter() const adda = ref(false) import { WebSocketHost ,host} from '@/utils/constants' import request from "@/utils/request" import { ref, onMounted , onBeforeUnmount} from "vue"; import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; @@ -95,7 +95,7 @@ }; const socketUrl = `ws://10.153.19.150:88/api/cacheGlass/api/talk/cacheGlass`; const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/cacheGlass`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { // 更新 tableData 的数据 UI-Project/src/views/UnLoadGlass/Landingindicationtwo.vue
@@ -37,7 +37,7 @@ import Swal from 'sweetalert2' import request from "@/utils/request"; import { initializeWebSocket } from '@/utils/WebSocketService'; import { WebSocketHost } from '@/utils/constants'; import { WebSocketHost ,host} from '@/utils/constants' const racks = ref([ { x: 50, y: 100, height: 100, width: 60, fillColor: '#6a6da9', item: { height: 90, width: 10, fillColor: 'yellow', content: 'NG123456' } }, @@ -112,7 +112,7 @@ } }; const socketUrl = `ws://${WebSocketHost}:88/api/unLoadGlass/api/talk/unloadglass3`; const socketUrl = `ws://${WebSocketHost}:${host}/api/unLoadGlass/api/talk/unloadglass3`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -11,9 +11,7 @@ import Landingindicationtwo from "./Landingindicationtwo.vue"; import request from "@/utils/request"; import { initializeWebSocket, closeWebSocket } from '@/utils/WebSocketService'; import { WebSocketHost } from '@/utils/constants'; import { WebSocketHost ,host} from '@/utils/constants' const dialogFormVisiblea = ref(false) const dialogFormVisiblea2 = ref(false) @@ -148,7 +146,7 @@ }; const socketUrl = `ws://${WebSocketHost}:88/api/unLoadGlass/api/talk/unloadglass`; const socketUrl = `ws://${WebSocketHost}:${host}/api/unLoadGlass/api/talk/unloadglass`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { hangzhoumesParent/moduleService/LoadGlassModule/src/main/java/com/mes/job/PlcLoadGlassTask.java
@@ -5,7 +5,6 @@ import com.mes.device.PlcParameterObject; import com.mes.engineering.entity.Engineering; import com.mes.engineering.service.EngineeringService; import com.mes.pp.entity.OptimizeProject; import com.mes.pp.service.OptimizeProjectService; import com.mes.tools.WebSocketServer; import com.mes.uppattenusage.entity.UpPattenUsage; @@ -130,11 +129,11 @@ for (WebSocketServer webserver : sendwServer) { if (webserver != null) { webserver.sendMessage(jsonObject.toString()); List<String> messages = webserver.getMessages(); if (!messages.isEmpty()) { // // 将最后一个消息转换为整数类型的列表 webserver.clearMessages(); } // List<String> messages = webserver.getMessages(); // if (!messages.isEmpty()) { // // // 将最后一个消息转换为整数类型的列表 // webserver.clearMessages(); // } } else { log.info("Home is closed"); } @@ -145,19 +144,14 @@ public void loadGlassStatus(){ JSONObject jsonObject = new JSONObject(); //正在进行的任务 //String inkageStatus =plcParameterObject.getPlcParameter("MesToPlc").getValue(); String inkageStatus ="1"; String inkageStatus =plcParameterObject.getPlcParameter("MesToPlc").getValue(); //String inkageStatus ="1"; jsonObject.append("InkageStatus", inkageStatus); ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("loadGlass"); if (sendwServer != null) { for (WebSocketServer webserver : sendwServer) { if (webserver != null) { webserver.sendMessage(jsonObject.toString()); List<String> messages = webserver.getMessages(); if (!messages.isEmpty()) { // // 将最后一个消息转换为整数类型的列表 webserver.clearMessages(); } } else { log.info("Home is closed"); } hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
@@ -23,7 +23,7 @@ @Autowired private DownStorageCageService downStorageCageService; @Scheduled(fixedDelay = 1000) @Scheduled(fixedDelay = 2000) public void sendDownWorkstations() { log.info("发送工位玻璃信息"); JSONObject jsonObject = new JSONObject(); @@ -76,7 +76,7 @@ } } @Scheduled(fixedDelay = 1000) @Scheduled(fixedDelay = 2000) public void sendDownStorageCages() { log.info("发送缓存玻璃信息"); JSONObject jsonObject4 = new JSONObject();