Merge remote-tracking branch 'gitee/master'

master
wangh 3 years ago
commit ba92d8956e

@ -58,6 +58,11 @@ public class AllBroadHTMLController {
public String week() {
return "broad/week";
}
//5 周
@GetMapping("/month")
public String month() {
return "broad/month";
}

@ -0,0 +1,47 @@
body {
height: auto;
width: auto;
background: url(../../img/board/month/backgroundImg.jpg) no-repeat center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: 100% 100%;
color: rgba(255, 255, 255, .95);
font: normal 100% Arial, sans-serif;
}
.manpowerAttendance{
position: absolute;
width: 25%;
height: 35%;
top: 15%;
left: 71.5%;
}
.IQC{
position: absolute;
width: 40%;
height: 35%;
top: 15%;
left: 30%;
}
.productionEfficiency{
position: absolute;
width: 25%;
height: 35%;
top: 60%;
left: 3%;
}
.equipmentPower{
position: absolute;
width: 39%;
height: 34%;
top: 60%;
left: 30.5%;
}
.topLeft{
position: absolute;
width: 25%;
height: 34%;
top: 15.5%;
left: 3.5%;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

@ -0,0 +1,174 @@
$(() => {
moduleTitle()
safe('#safe')
// 公共请求地址
let url = '/broad/zhou'
// 轮询间隔时间
const INTERVAL = 30000
const orderDetailsTable = new AutoScrollTable(document.getElementById("IQC"), ["编号", "型号", "计划数量", "完成数量", "差异值"], {width: ['13%', '40%', null, null, '9%']}, 8)
//每日人力出勤轮询
autoUpdate("/broad/mtk/team6s ", INTERVAL, data => {
data.sort((a, b) => {
return b.teamNumber - a.teamNumber
})
singleVerticalBarChartTwo({
xName: data.map(val => val.teamName),
yData: data.map(val => val.teamNumber),
yImg: data.map(val => val.path),
}, document.getElementById("manpowerAttendance"))
})
// 三日订单执行情况
autoUpdate(url + "/selectOrderRateInfo", INTERVAL, data => {
let newData = []
data.forEach((val,index) => {
if (val.actual_number !== 0){
newData.push(data[index])
}
})
singleVerticalBarChart({
xName: newData.map(val => val.name_sub),
yData: newData.map(val => val.actual_number),
}, document.getElementById("productionEfficiency"), -20)
orderDetailsTable.loadData(data.map(value => [value.plan_code, value.name, value.plan_number, value.actual_number, value.plan_number - value.actual_number]), Object.keys(["编号", "型号", "计划数量", "完成数量", "差异值"]))
})
// autoUpdate(url + "/mtk_selectOrderInfoBy3dTatle", INTERVAL, data => {
// total(data.find(val => val.name === '入库订单统计').qty, '#total')
// Tips(data.find(val => val.name === '订单数量').qty, data.find(val => val.name === '完成数量').qty, data.find(val => val.name === '清单率').qty, '#Tips')
// })
autoUpdate(url+"/selectOrderRateInfoTatle", INTERVAL, data => {
Tips(data.find(val => val.name === '订单数量').qty, data.find(val => val.name === '完成数量').qty, data.find(val => val.name === '清单率').qty, '#Tips')
})
// 当日订单入库统计
autoUpdate(url + "/zhou_selectQaItemInfo", INTERVAL, data => {
let arr = [0, 0, 0, 0, 0, 0]
let yDataOne = [...(data.find(val => val.code == '内胆检漏')?.list.map(val => val.rate) || []), ...arr]
let yDataTwo = [...(data.find(val => val.code == '安全检测')?.list.map(val => val.rate) || []), ...arr]
let yDataThree = [...(data.find(val => val.code == '成品检漏')?.list.map(val => val.rate) || []), ...arr]
let yDataFour = [...(data.find(val => val.code == '测温性能')?.list.map(val => val.rate) || []), ...arr]
let yDataFive = [...(data.find(val => val.code == '成品外观')?.list.map(val => val.rate) || []), ...arr]
multipleBrokenLineAreaDiagramTwo(
{
xData: data.find(val => val.code == '横坐标')?.list.map(val => val.name),
yDataOne: yDataOne,
yDataTwo: yDataTwo,
yDataThree: yDataThree,
yDataFour: yDataFour,
yDataFive: yDataFive,
yDataOneName: '内胆检漏',
yDataTwoName: '安全检测',
yDataThreeName: '成品检漏',
yDataFourName: '测温性能',
yDataFiveName: '成品外观',
}, document.getElementById("equipmentPower"))
// pieChart(data.map((val, index) => {
// if (index == 0 ) {
// return {
// name: val.type,
// value: val.qty,
// itemStyle: {
// color: 'red',
// }
// }
// }
// if (index == 1) {
// return {
// name: val.type,
// value: val.qty,
// itemStyle: {
// color: 'yellow',
// }
// }
// }
// return {
// name: val.type,
// value: val.qty,
// }
//
// }
// ), document.getElementById("equipmentPower"));
})
autoUpdate(url + "/selectProductInStore", INTERVAL, data => {
let list = data.map(val => val.list)
let yDataOne = []
let yDataTwo = []
list.forEach(val => {
yDataOne.push(val.find(val => val.name == '计划')?.qty || 0)
yDataTwo.push(val.find(val => val.name == '产量')?.qty || 0)
})
total(yDataTwo.reduce((val1,val2) => val1 + val2 , 0),'#total')
multipleVerticalBarChartTwo({
xName: data.map(val => val.code),
yDataOne: yDataOne,
yDataOneName: '计划',
yDataTwo: yDataTwo,
yDataTwoName: "产量",
}, document.getElementById("topLeft"), -20)
})
})
const today = () => {
const currentYear = new Date().getFullYear().toString();
const hasTimestamp = new Date() - new Date(currentYear);
const hasDays = Math.ceil(hasTimestamp / 86400000);
return hasDays
}
const curWeek = () => {
let today = new Date();
let firstDayOfYear = new Date(today.getFullYear(), 0, 1);
let dayOfWeek = firstDayOfYear.getDay();
let spendDay = 1;
if (dayOfWeek != 0) {
spendDay = 7 - dayOfWeek + 1;
}
firstDayOfYear = new Date(today.getFullYear(), 0, spendDay);
let d = Math.ceil((today.valueOf() - firstDayOfYear.valueOf()) / 86400000);
return Math.ceil((d / 7) + 1);
}
const moduleTitle = () => {
const html = `
<span style="position: absolute;top: 0.9%;left: 50%;color: #fff;font-size: 1.3vw;transform: translateX(-50%);letter-spacing: 0.3vw">第${curWeek()} 生产数据分析平台</span>
<span style="position: absolute;top: 10%;left: 5.5%;color: #CFD2D0;font-size: 1.0vw">第${curWeek()} 产量统计 </span>
<span style="position: absolute;top: 10%;left: 32%;color: #CFD2D0;font-size: 1.0vw">周订单执行情况</span>
<span style="position: absolute;top: 10%;left: 73.5%;color: #CFD2D0;font-size: 1.0vw">班组 6s 排行榜</span>
<span style="position: absolute;top: 54.5%;left: 5.5%;color: #CFD2D0;font-size: 1.0vw">周生产型号统计</span>
<span style="position: absolute;top: 54.5%;left: 32%;color: #CFD2D0;font-size: 1.0vw">周质量分析</span>
<span style="position: absolute;top: 54.5%;left: 73.6%;color: #CFD2D0;font-size: 1.0vw">安全生产</span>
`
$('body').append(html)
}
const safe = (el) => {
const html = `
<span style="position: absolute;top: 66%;left: 84%;white-space:nowrap;color: #CBE6F7;font-size: 1.3vw;font-weight:600;transform: translateX(-50%);letter-spacing: 0.3vw">${new Date().getFullYear().toString()}年连续安全生产天数</span>
<span style="position: absolute;top: 74%;left: 84%;color: #08F580;font-size: 2.5vw;transform: translateX(-50%);letter-spacing: 0.3vw">${today()}<span style="font-size: 0.5vw"></span> </span>
<span style="position: absolute;top: 89%;left: 84%;color: #CBE6F7;font-size: 1vw;transform: translateX(-50%);letter-spacing: 0.3vw">智能冷柜互联工厂</span>
`
$(el).html(html)
}
const Tips = (val1 = 0, val2 = 0, val3 = 0, el) => {
const html = `
<span style="position: absolute;top: 10%;left: 44%;color: #fff;font-size: 1vw;">订单数量${val1}&nbsp;&nbsp;完成数量${val2}&nbsp;&nbsp;清单率${val3}%</span>
`
$(el).html(html)
}
const total = (val1 = 0, el) => {
const html = `
<span style="position: absolute;top: 10%;left: 17.7%;color: #fff;font-size: 1vw;">合计${val1} </span>
`
$(el).html(html)
}

@ -509,7 +509,7 @@
}
getTable(classes,dataOne)
total(
Number((data.filter(val => val.status === '生产中').length / 28) * 100).toFixed(4) + '%',
Number((data.filter(val => val.status === '生产中').length / 28) * 100).toFixed(2) + '%',
totalNum,
eval(data.map(val => val.qty).join('+')),
(Number(eval(data.map(val => val.qty).join('+')) / totalNum) * 100).toFixed(2)+ '%',

@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no"
name="viewport">
<title>箱壳成型数据监控平台</title>
<meta content="箱壳成型数据监控平台" name="description">
<link href="../../static/css/board/month.css" rel="stylesheet" th:href="@{/css/board/month.css}"/>
<link href="../../static/css/materialdesignicons.min.css" rel="stylesheet"
th:href="@{/css/materialdesignicons.min.css}"/>
<link href="../../static/css/autoscroll-table.css" rel="stylesheet" th:href="@{/css/autoscroll-table.css}">
<!-- 360浏览器急速模式 -->
<meta content="webkit" name="renderer">
<!-- 避免IE使用兼容模式 -->
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<script src="../../static/js/jquery.min.js" th:src="@{/js/jquery.min.js}"></script>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: echarts-js"/>
<script src="../../static/js/date-time-common.js" th:src="@{/js/date-time-common.js}"></script>
<script src="../../static/js/autoscroll-table.js" th:src="@{/js/autoscroll-table.js}"></script>
<script src="../../static/js/echartsCommon.js" th:src="@{/js/echartsCommon.js}"></script>
<script src="../../static/js/update-split-blocks.js" th:src="@{/js/update-split-blocks.js}"></script>
<script src="../../static/js/auto-update.js" th:src="@{/js/auto-update.js}"></script>
<script src="../../static/js/data-merger.js" th:src="@{/js/data-merger.js}"></script>
</head>
<body style="display:flex;">
<div id="safe"></div>
<div id="Tips"></div>
<div id="total"></div>
<div id="importData"></div>
<div id="top3Data"></div>
<!--每日人力出勤-->
<div class="manpowerAttendance" id="manpowerAttendance"></div>
<!--IQC-->
<div class="IQC" id="IQC"></div>
<!--生产效率-->
<div class="productionEfficiency" id="productionEfficiency"></div>
<!--设备功率-->
<div class="equipmentPower" id="equipmentPower"></div>
<!--设备功率-->
<div class="topLeft" id="topLeft"></div>
</body>
<script src="../../static/js/board/month.js" th:src="@{/js/board/month.js}"></script>
<script>
</script>
</html>
Loading…
Cancel
Save