Merge remote-tracking branch 'origin/master'
| | |
| | | historicaltasks9:'中空大理片', |
| | | historicaltasks10:'生产统计', |
| | | date:'日期', |
| | | countOutOne: '切割一线数量', |
| | | countOutOne: '切割一线', |
| | | totalAreaOutOne: '切割一线面积', |
| | | countOutTwo: '切割二线数量', |
| | | countOutTwo: '切割二线', |
| | | totalAreaOutTwo: '切割二线面积', |
| | | countIn: '钢化前大理片数量', |
| | | countIn: '钢化前大理片', |
| | | totalAreaIn: '钢化前大理片面积', |
| | | countOut: '钢化数量', |
| | | countOut: '钢化', |
| | | totalAreaOut: '钢化面积', |
| | | hollowCountOutOne: '中空一线数量', |
| | | hollowCountOutOne: '中空一线', |
| | | hollowTotalAreaOutOne: '中空一线面积', |
| | | hollowCountOutTwo: '中空二线数量', |
| | | hollowCountOutTwo: '中空二线', |
| | | hollowTotalAreaOutTwo: '中空二线面积', |
| | | }, |
| | | reportmanage:{ |
| | |
| | | const tableData = []; |
| | | if (tableDatax.length > 0) { |
| | | tableDatax.forEach((item, index) => { |
| | | const time1 = new Date(index == 0 ? item.startTimestamp : tableDatax[index - 1].secondTimestamp); |
| | | const time2 = new Date(index == tableDatax.length - 1 ? item.endTimestamp : item.firstTimestamp); |
| | | |
| | | const diffInSeconds = Math.abs(time2 - time1) / 1000; |
| | | if (diffInSeconds > 60) { |
| | | tableData.push({ |
| | | firstTimestamp: index == 0 ? item.startTimestamp : tableDatax[index - 1].secondTimestamp, |
| | | secondTimestamp: index == tableDatax.length - 1 ? item.endTimestamp : item.firstTimestamp, |
| | | diffMinutes: item.diffMinutes, |
| | | startTimestamp: item.startTimestamp, |
| | | endTimestamp: item.endTimestamp, |
| | | state: 1 |
| | | }); |
| | | if (result) { |
| | | tableData.push({ |
| | | firstTimestamp: index == 0 ? item.startTimestamp : tableDatax[index - 1].secondTimestamp, |
| | | secondTimestamp: index == tableDatax.length - 1 ? item.endTimestamp : item.firstTimestamp, |
| | | diffMinutes: item.diffMinutes, |
| | | startTimestamp: item.startTimestamp, |
| | | endTimestamp: item.endTimestamp, |
| | | state: 1 |
| | | }); |
| | | if (result) { |
| | | tableData.push({ |
| | | firstTimestamp: item.firstTimestamp, |
| | | secondTimestamp: item.secondTimestamp, |
| | |
| | | state: 2 |
| | | }); |
| | | } |
| | | // console.log("间隔超过60秒", diffInSeconds, time1, time2); |
| | | } else { |
| | | if(index>0){ |
| | | // console.log(tableData,index); |
| | | } |
| | | // console.log("间隔不超过60秒", diffInSeconds, time1, time2); |
| | | } |
| | | |
| | | }); |
| | | } |
| | | |
| | |
| | | backgroundColor: 'rgba(50,50,50,0.7)', |
| | | textStyle: { color: '#fff' }, |
| | | formatter: (params) => { |
| | | const seen = new Set(); |
| | | const items = params |
| | | .filter(p => { |
| | | const key = p.data?.extra?.start + '|' + p.data?.extra?.end; |
| | | if (seen.has(key)) return false; |
| | | seen.add(key); |
| | | return true; |
| | | }) |
| | | .map(p => { |
| | | const start = p.data?.extra?.start; |
| | | const end = p.data?.extra?.end; |
| | |
| | | ] |
| | | }; |
| | | |
| | | mychart.setOption(optionOne,true); |
| | | mychart.setOption(optionOne, true); |
| | | }; |
| | | |
| | | let socket4 = null; |
| | |
| | | let socket5 = null; |
| | | let myChart = null; |
| | | let myChart2 = null; |
| | | const switchNoorAreaLeft = ref(true) |
| | | const switchNoorAreaRight = ref(true) |
| | | const productionVO = ref([]) |
| | | const socketUrl5 = `ws://${WebSocketHost}:${host}/api/cacheGlass/api/talk/largenScreenProduction`; |
| | | const handleMessage5 = (data) => { |
| | | productionVO.value = data.productionVO[0]; |
| | | // 将原始数据转换为 ECharts 图表所需格式 |
| | | const createchart = (productionVO) => { |
| | | categories = productionVO.value.map(item => item.date); // 获取日期作为 x 轴 |
| | | totalAreaOutOne = productionVO.value.map(item => item.totalAreaOutOne); |
| | | countIn = productionVO.value.map(item => item.countIn); |
| | |
| | | if (!myChart) { |
| | | myChart = echarts.init(chartDom); |
| | | } |
| | | |
| | | let loadOneData; |
| | | let loadTwoData; |
| | | let tempfontData; |
| | | if (switchNoorAreaLeft.value) { |
| | | loadOneData = countOutOne; |
| | | loadTwoData = countOutTwo; |
| | | tempfontData = countIn; |
| | | } else { |
| | | loadOneData = totalAreaOutOne; |
| | | loadTwoData = totalAreaOutTwo; |
| | | tempfontData = totalAreaIn; |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | legend: { |
| | | data: [ |
| | | t('large.countOutOne'), |
| | | t('large.totalAreaOutOne'), |
| | | // t('large.totalAreaOutOne'), |
| | | t('large.countOutTwo'), |
| | | t('large.totalAreaOutTwo'), |
| | | // t('large.totalAreaOutTwo'), |
| | | t('large.countIn'), |
| | | t('large.totalAreaIn') |
| | | // t('large.totalAreaIn') |
| | | ] |
| | | }, |
| | | grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, |
| | | toolbox: { feature: { saveAsImage: {} } }, |
| | | grid: { top: '20%', left: '3%', right: '4%', bottom: '3%', containLabel: true }, |
| | | toolbox: { |
| | | feature: { |
| | | saveAsImage: {}, |
| | | myTool1: { |
| | | show: true, |
| | | title: t('large.switch'), |
| | | icon: 'path://M512 0C229.234 0 0 229.234 0 512s229.234 512 512 512 512-229.234 512-512S794.766 0 512 0z m0 960C264.602 960 64 759.398 64 512S264.602 64 512 64s448 200.602 448 448-200.602 448-448 448z m0-768c-176.448 0-320 143.552-320 320s143.552 320 320 320 320-143.552 320-320-143.552-320-320-320z', // 圆形按钮图标(可换) |
| | | onclick: function () { |
| | | switchNoorAreaLeft.value = !switchNoorAreaLeft.value; |
| | | createchart(productionVO); |
| | | // customButtonClick(); // 调用你自定义的方法 |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | boundaryGap: false, |
| | | boundaryGap: true, |
| | | data: categories // 这是日期数据 |
| | | }, |
| | | yAxis: { type: 'value' }, |
| | | yAxis: { |
| | | type: 'value', |
| | | name: switchNoorAreaLeft.value==true?t('large.quantity'):t('large.are'), // 坐标轴名称 |
| | | axisLabel: { |
| | | formatter: '{value}' |
| | | } |
| | | }, |
| | | series: [ |
| | | { name: t('large.countOutOne'), type: 'bar', data: countOutOne }, |
| | | { name: t('large.totalAreaOutOne'), type: 'bar', data: totalAreaOutOne }, |
| | | { name: t('large.countOutTwo'), type: 'bar', data: countOutTwo }, |
| | | { name: t('large.totalAreaOutTwo'), type: 'bar', data: totalAreaOutTwo }, |
| | | { name: t('large.countIn'), type: 'bar', data: countIn }, |
| | | { name: t('large.totalAreaIn'), type: 'bar', data: totalAreaIn } |
| | | { name: t('large.countOutOne'), type: 'bar', data: loadOneData }, |
| | | // { name: t('large.totalAreaOutOne'), type: 'bar', data: totalAreaOutOne }, |
| | | { name: t('large.countOutTwo'), type: 'bar', data: loadTwoData }, |
| | | // { name: t('large.totalAreaOutTwo'), type: 'bar', data: totalAreaOutTwo }, |
| | | { name: t('large.countIn'), type: 'bar', data: tempfontData }, |
| | | // { name: t('large.totalAreaIn'), type: 'bar', data: totalAreaIn } |
| | | ] |
| | | }; |
| | | |
| | | myChart.setOption(option,true); |
| | | myChart.setOption(option, true); |
| | | |
| | | |
| | | const chartDom2 = chartRef2.value; |
| | |
| | | // else { |
| | | // myChart2.clear(); |
| | | // } |
| | | let tempData; |
| | | let hollowOneData; |
| | | let hollowTwoData; |
| | | if (switchNoorAreaRight.value) { |
| | | tempData = countOut; |
| | | hollowOneData = hollowCountOutOne; |
| | | hollowTwoData = hollowCountOutTwo; |
| | | } else { |
| | | tempData = totalAreaOut; |
| | | hollowOneData = hollowTotalAreaOutOne; |
| | | hollowTwoData = hollowTotalAreaOutTwo; |
| | | } |
| | | const option2 = { |
| | | title: { text: '' }, |
| | | tooltip: { trigger: 'axis' }, |
| | | legend: { |
| | | data: [ |
| | | t('large.totalAreaOut'), |
| | | t('large.countOut'), |
| | | t('large.hollowTotalAreaOutOne'), |
| | | // t('large.totalAreaOut'), |
| | | t('large.hollowCountOutOne'), |
| | | // t('large.hollowTotalAreaOutOne'), |
| | | t('large.hollowCountOutTwo'), |
| | | t('large.hollowTotalAreaOutTwo') |
| | | // t('large.hollowTotalAreaOutTwo') |
| | | ] |
| | | }, |
| | | grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, |
| | | toolbox: { feature: { saveAsImage: {} } }, |
| | | toolbox: { |
| | | feature: { |
| | | saveAsImage: {}, |
| | | myTool1: { |
| | | show: true, |
| | | title: t('large.switch'), |
| | | icon: 'path://M512 0C229.234 0 0 229.234 0 512s229.234 512 512 512 512-229.234 512-512S794.766 0 512 0z m0 960C264.602 960 64 759.398 64 512S264.602 64 512 64s448 200.602 448 448-200.602 448-448 448z m0-768c-176.448 0-320 143.552-320 320s143.552 320 320 320 320-143.552 320-320-143.552-320-320-320z', // 圆形按钮图标(可换) |
| | | onclick: function () { |
| | | switchNoorAreaRight.value = !switchNoorAreaRight.value; |
| | | createchart(productionVO); |
| | | // customButtonClick(); // 调用你自定义的方法 |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | boundaryGap: false, |
| | | boundaryGap: true, |
| | | data: categories // 这是日期数据 |
| | | }, |
| | | yAxis: { type: 'value' }, |
| | | yAxis: { |
| | | type: 'value', |
| | | name: switchNoorAreaRight.value==true?t('large.quantity'):t('large.are'), // 坐标轴名称 |
| | | axisLabel: { |
| | | formatter: '{value}' |
| | | } |
| | | }, |
| | | series: [ |
| | | { name: t('large.totalAreaOut'), type: 'bar', data: totalAreaOut }, |
| | | { name: t('large.countOut'), type: 'bar', data: countOut }, |
| | | { name: t('large.hollowTotalAreaOutOne'), type: 'bar', data: hollowTotalAreaOutOne }, |
| | | { name: t('large.hollowCountOutOne'), type: 'bar', data: hollowCountOutOne }, |
| | | { name: t('large.hollowCountOutTwo'), type: 'bar', data: hollowCountOutTwo }, |
| | | { name: t('large.hollowTotalAreaOutTwo'), type: 'bar', data: hollowTotalAreaOutTwo } |
| | | // { name: t('large.totalAreaOut'), type: 'bar', data: tempData }, |
| | | { name: t('large.countOut'), type: 'bar', data: tempData }, |
| | | // { name: t('large.hollowTotalAreaOutOne'), type: 'bar', data: hollowOneData }, |
| | | { name: t('large.hollowCountOutOne'), type: 'bar', data: hollowOneData }, |
| | | // { name: t('large.hollowTotalAreaOutTwo'), type: 'bar', data: hollowTwoData }, |
| | | { name: t('large.hollowCountOutTwo'), type: 'bar', data: hollowTwoData } |
| | | ] |
| | | }; |
| | | |
| | | myChart2.setOption(option2,true); |
| | | myChart2.setOption(option2, true); |
| | | } |
| | | const handleMessage5 = (data) => { |
| | | productionVO.value = data.productionVO[0]; |
| | | createchart(productionVO); |
| | | }; |
| | | // 将原始数据转换为 ECharts 图表所需格式 |
| | | let categories = ref([]); // 获取日期作为 x 轴 |
| | |
| | | |
| | | const exportToExcel = async () => { |
| | | try { |
| | | window.open('http://' + { WebSocketHost } + ':10011/largenScreen/exportDailyProduction', '_blank'); |
| | | // const response = await request.get('/cacheGlass/largenScreen/exportDailyProduction'); |
| | | // if (response.code == 200) { |
| | | // ElMessage.success(response.message); |
| | | // tableDatad.value = response.data; |
| | | // } else { |
| | | // ElMessage.error(response.message); |
| | | // } |
| | | window.open(`http://${WebSocketHost}:10011/largenScreen/exportDailyProduction`, '_blank'); |
| | | } |
| | | catch (error) { |
| | | console.error(error); |
| | |
| | | frameborder="0"></iframe> |
| | | </el-dialog> |
| | | <el-dialog v-model="iframe10" top="5vh" width="95%" @close="iframeUrl10 = ''"> |
| | | <iframe :src="iframeUrl10" marginwidth="2000px" marginheight="2000px" width="100%" |
| | | height="700px" frameborder="0"></iframe> |
| | | <iframe :src="iframeUrl10" marginwidth="2000px" marginheight="2000px" width="100%" height="700px" |
| | | frameborder="0"></iframe> |
| | | </el-dialog> |
| | | <el-dialog v-model="iframe11" top="5vh" width="95%" @close="iframeUrl11 = ''"> |
| | | <iframe :src="iframeUrl11" marginwidth="2000px" marginheight="2000px" width="100%" height="750px" |
| | |
| | | <!-- 生产统计 --> |
| | | <div style="height: 100px;width: 25%;float: right;"> |
| | | <div id="ss" style="width: 100%; display: flex; justify-content: center;"> |
| | | <div ref="chartRef" style="width: 600px; height: 400px;" @dblclick="handlehistorical10()"></div> |
| | | <div ref="chartRef" style="width: 600px; height: 400px;" @dblclick="handlehistorical10()"> |
| | | </div> |
| | | </div> |
| | | <div style="width: 100%;height: 245px;display: flex;"> |
| | | <div ref="chartLoad" style="width: 100%;" @dblclick="handlehistorical12(1)"></div> |
| | |
| | | </el-table> |
| | | </div> |
| | | </div> |
| | | |
| | | <div style="height: 100px;width: 25%;float: right;"> |
| | | <div id="ss" style="width: 100%; display: flex; justify-content: center;"> |
| | | <div ref="chartRef2" style="width: 600px; height: 400px;" @dblclick="handlehistorical10()"></div> |
| | |
| | | const chartRef = ref(null) |
| | | const chartRef2 = ref(null) |
| | | const showchart = ref(false) |
| | | const switchNoorAreaLeft = ref(true) |
| | | const switchNoorAreaRight = ref(true) |
| | | const createchart = (productionVO) => { |
| | | categories = productionVO.value.map(item => item.date); // 获取日期作为 x 轴 |
| | | totalAreaOutOne = productionVO.value.map(item => item.totalAreaOutOne); |
| | |
| | | totalAreaIn = productionVO.value.map(item => item.totalAreaIn); |
| | | countOutOne = productionVO.value.map(item => item.countOutOne); |
| | | //图表 |
| | | nextTick() // 确保 DOM 加载完成 |
| | | nextTick() // 确保 DOM 加载完成 |
| | | const chartDom = chartRef.value; |
| | | if (!chartDom) { |
| | | console.error('图表容器未找到'); |
| | |
| | | if (!myChart) { |
| | | myChart = echarts.init(chartDom); |
| | | } |
| | | let loadOneData; |
| | | let loadTwoData; |
| | | let tempfontData; |
| | | if (switchNoorAreaLeft.value) { |
| | | loadOneData = countOutOne; |
| | | loadTwoData = countOutTwo; |
| | | tempfontData = countIn; |
| | | } else { |
| | | loadOneData = totalAreaOutOne; |
| | | loadTwoData = totalAreaOutTwo; |
| | | tempfontData = totalAreaIn; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | const option = { |
| | | title: { text: '' }, |
| | |
| | | legend: { |
| | | data: [ |
| | | t('large.countOutOne'), |
| | | t('large.totalAreaOutOne'), |
| | | // t('large.totalAreaOutOne'), |
| | | t('large.countOutTwo'), |
| | | t('large.totalAreaOutTwo'), |
| | | // t('large.totalAreaOutTwo'), |
| | | t('large.countIn'), |
| | | t('large.totalAreaIn') |
| | | // t('large.totalAreaIn') |
| | | ] |
| | | }, |
| | | grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, |
| | | toolbox: { feature: { saveAsImage: {} } }, |
| | | grid: { top: '20%', left: '3%', right: '4%', bottom: '3%', containLabel: true }, |
| | | toolbox: { |
| | | feature: { |
| | | saveAsImage: {}, |
| | | myTool1: { |
| | | show: true, |
| | | title: t('large.switch'), |
| | | icon: 'path://M512 0C229.234 0 0 229.234 0 512s229.234 512 512 512 512-229.234 512-512S794.766 0 512 0z m0 960C264.602 960 64 759.398 64 512S264.602 64 512 64s448 200.602 448 448-200.602 448-448 448z m0-768c-176.448 0-320 143.552-320 320s143.552 320 320 320 320-143.552 320-320-143.552-320-320-320z', // 圆形按钮图标(可换) |
| | | onclick: function () { |
| | | switchNoorAreaLeft.value = !switchNoorAreaLeft.value; |
| | | createchart(productionVO); |
| | | // customButtonClick(); // 调用你自定义的方法 |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | boundaryGap: false, |
| | | boundaryGap: true, |
| | | data: categories // 这是日期数据 |
| | | }, |
| | | yAxis: { type: 'value' }, |
| | | series: [ |
| | | { name: t('large.countOutOne'), type: 'bar', data: countOutOne }, |
| | | { name: t('large.totalAreaOutOne'), type: 'bar', data: totalAreaOutOne }, |
| | | { name: t('large.countOutTwo'), type: 'bar', data: countOutTwo }, |
| | | { name: t('large.totalAreaOutTwo'), type: 'bar', data: totalAreaOutTwo }, |
| | | { name: t('large.countIn'), type: 'bar', data: countIn }, |
| | | { name: t('large.totalAreaIn'), type: 'bar', data: totalAreaIn } |
| | | { name: t('large.countOutOne'), type: 'bar', data: loadOneData }, |
| | | // { name: t('large.totalAreaOutOne'), type: 'bar', data: totalAreaOutOne }, |
| | | { name: t('large.countOutTwo'), type: 'bar', data: loadTwoData }, |
| | | // { name: t('large.totalAreaOutTwo'), type: 'bar', data: totalAreaOutTwo }, |
| | | { name: t('large.countIn'), type: 'bar', data: tempfontData }, |
| | | // { name: t('large.totalAreaIn'), type: 'bar', data: totalAreaIn } |
| | | ] |
| | | }; |
| | | |
| | | myChart.setOption(option); |
| | | myChart.setOption(option, true); |
| | | |
| | | |
| | | const chartDom2 = chartRef2.value; |
| | |
| | | // else { |
| | | // myChart2.clear(); |
| | | // } |
| | | let tempData; |
| | | let hollowOneData; |
| | | let hollowTwoData; |
| | | if (switchNoorAreaRight.value) { |
| | | tempData = countOut; |
| | | hollowOneData = hollowCountOutOne; |
| | | hollowTwoData = hollowCountOutTwo; |
| | | } else { |
| | | tempData = totalAreaOut; |
| | | hollowOneData = hollowTotalAreaOutOne; |
| | | hollowTwoData = hollowTotalAreaOutTwo; |
| | | } |
| | | const option2 = { |
| | | title: { text: '' }, |
| | | tooltip: { trigger: 'axis' }, |
| | | legend: { |
| | | data: [ |
| | | t('large.totalAreaOut'), |
| | | t('large.countOut'), |
| | | t('large.hollowTotalAreaOutOne'), |
| | | // t('large.totalAreaOut'), |
| | | t('large.hollowCountOutOne'), |
| | | // t('large.hollowTotalAreaOutOne'), |
| | | t('large.hollowCountOutTwo'), |
| | | t('large.hollowTotalAreaOutTwo') |
| | | // t('large.hollowTotalAreaOutTwo') |
| | | ] |
| | | }, |
| | | grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, |
| | | toolbox: { feature: { saveAsImage: {} } }, |
| | | toolbox: { |
| | | feature: { |
| | | saveAsImage: {}, |
| | | myTool1: { |
| | | show: true, |
| | | title: t('large.switch'), |
| | | icon: 'path://M512 0C229.234 0 0 229.234 0 512s229.234 512 512 512 512-229.234 512-512S794.766 0 512 0z m0 960C264.602 960 64 759.398 64 512S264.602 64 512 64s448 200.602 448 448-200.602 448-448 448z m0-768c-176.448 0-320 143.552-320 320s143.552 320 320 320 320-143.552 320-320-143.552-320-320-320z', // 圆形按钮图标(可换) |
| | | onclick: function () { |
| | | switchNoorAreaRight.value = !switchNoorAreaRight.value; |
| | | createchart(productionVO); |
| | | // customButtonClick(); // 调用你自定义的方法 |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | xAxis: { |
| | | type: 'category', |
| | | boundaryGap: false, |
| | | boundaryGap: true, |
| | | data: categories // 这是日期数据 |
| | | }, |
| | | yAxis: { type: 'value' }, |
| | | series: [ |
| | | { name: t('large.totalAreaOut'), type: 'bar', data: totalAreaOut }, |
| | | { name: t('large.countOut'), type: 'bar', data: countOut }, |
| | | { name: t('large.hollowTotalAreaOutOne'), type: 'bar', data: hollowTotalAreaOutOne }, |
| | | { name: t('large.hollowCountOutOne'), type: 'bar', data: hollowCountOutOne }, |
| | | { name: t('large.hollowCountOutTwo'), type: 'bar', data: hollowCountOutTwo }, |
| | | { name: t('large.hollowTotalAreaOutTwo'), type: 'bar', data: hollowTotalAreaOutTwo } |
| | | // { name: t('large.totalAreaOut'), type: 'bar', data: tempData }, |
| | | { name: t('large.countOut'), type: 'bar', data: tempData }, |
| | | // { name: t('large.hollowTotalAreaOutOne'), type: 'bar', data: hollowOneData }, |
| | | { name: t('large.hollowCountOutOne'), type: 'bar', data: hollowOneData }, |
| | | // { name: t('large.hollowTotalAreaOutTwo'), type: 'bar', data: hollowTwoData }, |
| | | { name: t('large.hollowCountOutTwo'), type: 'bar', data: hollowTwoData } |
| | | ] |
| | | }; |
| | | |
| | | myChart2.setOption(option2); |
| | | myChart2.setOption(option2, true); |
| | | } |
| | | |
| | | |
| | |
| | | try { |
| | | let startTime = window.localStorage.getItem('startTime') |
| | | let response; |
| | | if (key == "1" || key == "2") { |
| | | if (key == "1"||key == "2") { |
| | | response = await request.get("/cacheGlass/edgStorageDeviceTaskHistory/queryRunTimes?days=" + timeRange.value[1]) |
| | | } else if (key == "3") { |
| | | response = await request.get("/cacheVerticalGlass/bigStorageCageHistoryTask/queryRunTimes?days=" + timeRange.value[1]) |
| | |
| | | const tableData = []; |
| | | if (tableDatax.value.length > 0) { |
| | | tableDatax.value.forEach((item, index) => { |
| | | const time1 = new Date(index == 0 ? item.startTimestamp : tableDatax.value[index - 1].secondTimestamp); |
| | | const time2 = new Date(index == tableDatax.length - 1 ? item.endTimestamp : item.firstTimestamp); |
| | | |
| | | const diffInSeconds = Math.abs(time2 - time1) / 1000; |
| | | if (diffInSeconds > 60) { |
| | | tableData.push({ |
| | | firstTimestamp: index == 0 ? item.startTimestamp : tableDatax.value[index - 1].secondTimestamp, |
| | | secondTimestamp: index == tableDatax.length - 1 ? item.endTimestamp : item.firstTimestamp, |
| | | diffMinutes: item.diffMinutes, |
| | | startTimestamp: item.startTimestamp, |
| | | endTimestamp: item.endTimestamp, |
| | | state: 1 |
| | | }); |
| | | console.log("间隔超过60秒", diffInSeconds, time1, time2); |
| | | } else { |
| | | console.log("间隔不超过60秒", diffInSeconds, time1, time2); |
| | | } |
| | | |
| | | tableData.push({ |
| | | firstTimestamp: index == 0 ? item.startTimestamp : tableDatax.value[index - 1].secondTimestamp, |
| | | secondTimestamp: index == tableDatax.length - 1 ? item.endTimestamp : item.firstTimestamp, |
| | | diffMinutes: item.diffMinutes, |
| | | startTimestamp: item.startTimestamp, |
| | | endTimestamp: item.endTimestamp, |
| | | state: 1 |
| | | }); |
| | | if (result) { |
| | | tableData.push({ |
| | | firstTimestamp: item.firstTimestamp, |
| | |
| | | let page = window.localStorage.getItem('pagenumber') |
| | | let startTime = window.localStorage.getItem('startTime') |
| | | let response; |
| | | if (key == "1" || key == "2") { |
| | | if (key == "1"||key == "2") { |
| | | response = await request.get("/cacheGlass/edgStorageDeviceTaskHistory/queryRunTimes?days=" + timeRange.value[1]) |
| | | } else if (key == "3") { |
| | | response = await request.get("/cacheVerticalGlass/bigStorageCageHistoryTask/queryRunTimes?days=" + timeRange.value[1]) |
| | |
| | | let startTime = window.localStorage.getItem('startTime') |
| | | let page = window.localStorage.getItem('pagenumber') |
| | | let response; |
| | | if (key == "1" || key == "2") { |
| | | if (key == "1"||key == "2") { |
| | | response = await request.get("/cacheGlass/edgStorageDeviceTaskHistory/queryRunTimes?days=" + timeRange.value[1]) |
| | | } else if (key == "3") { |
| | | response = await request.get("/cacheVerticalGlass/bigStorageCageHistoryTask/queryRunTimes?days=" + timeRange.value[1]) |
| | |
| | | backgroundColor: 'rgba(50,50,50,0.7)', |
| | | textStyle: { color: '#fff' }, |
| | | formatter: (params) => { |
| | | const seen = new Set(); |
| | | const items = params |
| | | .filter(p => { |
| | | const key = p.data?.extra?.start + '|' + p.data?.extra?.end; |
| | | if (seen.has(key)) return false; |
| | | seen.add(key); |
| | | return true; |
| | | }) |
| | | .map(p => { |
| | | const start = p.data?.extra?.start; |
| | | const end = p.data?.extra?.end; |
| | |
| | | } |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 1000) |
| | | @Scheduled(fixedDelay = 5000) |
| | | public void querySameDayProductionTask() { |
| | | JSONObject jsonObject = new JSONObject(); |
| | | ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("largenScreenProduction"); |
| | |
| | | } |
| | | } |
| | | |
| | | @Scheduled(fixedDelay = 500) |
| | | @Scheduled(fixedDelay = 5000) |
| | | public void largenScreen() { |
| | | JSONObject jsonObject = new JSONObject(); |
| | | //磨边信息 |
| | |
| | | @Resource |
| | | private RedisUtil redisUtil; |
| | | |
| | | // @Scheduled(fixedDelay = 1000) |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void inBigStorageTask() throws Exception { |
| | | ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1A.DLP1A.mesControl"); |
| | | if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { |
| | |
| | | miloService.writeToOpcWord(list); |
| | | } |
| | | |
| | | // @Scheduled(fixedDelay = 1000) |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void outBigStorageTask() throws Exception { |
| | | Date startDate = new Date(); |
| | | ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1B.DLP1B.mesControl"); |
| | |
| | | return; |
| | | } |
| | | |
| | | // @Scheduled(fixedDelay = 1000) |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void finishInBigStorageTask() throws Exception { |
| | | ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1A.DLP1A.mesControl"); |
| | | if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { |
| | |
| | | miloService.writeToOpcWord(list); |
| | | } |
| | | |
| | | // @Scheduled(fixedDelay = 1000) |
| | | @Scheduled(fixedDelay = 1000) |
| | | public void finishOutBigStorageTask() throws Exception { |
| | | ReadWriteEntity inkageEntity = miloService.readFromOpcUa("DLP1B.DLP1B.mesControl"); |
| | | if (true != Boolean.parseBoolean(inkageEntity.getValue() + "")) { |
| | |
| | | <plugin> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-maven-plugin</artifactId> |
| | | <version>2.3.0.RELEASE</version> <!-- 根据你的Spring Boot版本调整 --> |
| | | <configuration> |
| | | <layout>ZIP</layout> |
| | | <includes> |
| | | <include> |
| | | <groupId>nothing</groupId> |
| | | <artifactId>nothing</artifactId> |
| | | </include> |
| | | </includes> |
| | | </configuration> |
| | | <executions> |
| | | <execution> |
| | | <goals> |
| | | <goal>repackage</goal> |
| | | </goals> |
| | | </execution> |
| | | </executions> |
| | | </plugin> |
| | | |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-dependency-plugin</artifactId> |
| | | <version>3.1.2</version> |
| | | <executions> |
| | | <execution> |
| | | <id>copy-dependencies</id> |
| | | <phase>package</phase> |
| | | <goals> |
| | | <goal>copy-dependencies</goal> |
| | | </goals> |
| | | <configuration> |
| | | <outputDirectory>${project.build.directory}/lib</outputDirectory> |
| | | <overWriteReleases>false</overWriteReleases> |
| | | <overWriteSnapshots>false</overWriteSnapshots> |
| | | <overWriteIfNewer>true</overWriteIfNewer> |
| | | </configuration> |
| | | </execution> |
| | | </executions> |
| | | </plugin> |
| | | |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-resources-plugin</artifactId> |
| | | <version>3.2.0</version> |
| | | <executions> |
| | | <execution> |
| | | <id>copy-resources</id> |
| | | <phase>package</phase> |
| | | <goals> |
| | | <goal>copy-resources</goal> |
| | | </goals> |
| | | <configuration> |
| | | <outputDirectory>${project.build.directory}/config</outputDirectory> |
| | | <resources> |
| | | <resource> |
| | | <directory>src/main/resources</directory> |
| | | <filtering>true</filtering> |
| | | </resource> |
| | | </resources> |
| | | </configuration> |
| | | </execution> |
| | | </executions> |
| | | </plugin> |
| | | |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-jar-plugin</artifactId> |
| | | <version>3.2.0</version> |
| | | <configuration> |
| | | <archive> |
| | | <manifest> |
| | | <addClasspath>true</addClasspath> |
| | | <classpathPrefix>lib/</classpathPrefix> |
| | | <mainClass>${java.run.main.class}</mainClass> |
| | | </manifest> |
| | | <manifestEntries> |
| | | <Class-Path>resources/</Class-Path> |
| | | </manifestEntries> |
| | | </archive> |
| | | <outputDirectory>${project.build.directory}</outputDirectory> |
| | | </configuration> |
| | | </plugin> |
| | | </plugins> |
| | | </build> |