Merge remote-tracking branch 'origin/master'

master
夜笙歌 3 years ago
commit 718597fb4c

@ -16,7 +16,7 @@ public class RuoYiApplication
{ {
// System.setProperty("spring.devtools.restart.enabled", "false"); // System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication.run(RuoYiApplication.class, args); SpringApplication.run(RuoYiApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 若依启动成功 ლ(´ڡ`ლ)゙ \n" + System.out.println("(♥◠‿◠)ノ゙ 启动成功 ლ(´ڡ`ლ)゙ \n" +
" .-------. ____ __ \n" + " .-------. ____ __ \n" +
" | _ _ \\ \\ \\ / / \n" + " | _ _ \\ \\ \\ / / \n" +
" | ( ' ) | \\ _. / ' \n" + " | ( ' ) | \\ _. / ' \n" +

@ -43,7 +43,7 @@ public class AllBroadHTMLController {
return "broad/beforeLibrary"; return "broad/beforeLibrary";
} }
//6 智能工厂二楼终检位置 //6 智能工厂二楼终检位置——成品入库可视化平台
@GetMapping("/finalAssemblyProductionData") @GetMapping("/finalAssemblyProductionData")
public String finalAssemblyProduction() { public String finalAssemblyProduction() {
return "broad/finalAssemblyProductionData"; return "broad/finalAssemblyProductionData";

@ -42,6 +42,10 @@ public class FPBroadController {
return JSONArray.toJSONString(service.fp_selectOrderExecution()); return JSONArray.toJSONString(service.fp_selectOrderExecution());
} }
@PostMapping("/selectOrderExecutionPlan") @PostMapping("/selectOrderExecutionPlan")
@ApiOperation("订单执行") @ApiOperation("订单执行")
private String fp_selectOrderExecutionPlan() { private String fp_selectOrderExecutionPlan() {
@ -63,11 +67,22 @@ public class FPBroadController {
} }
@PostMapping("/selectStationHourInfo") @PostMapping("/selectStationHourInfo")
// 每小时数据 底部列表
@ApiOperation("生产统计数据") @ApiOperation("生产统计数据")
private String fp_selectStationHourInfo() { private String fp_selectStationHourInfo() {
return JSONArray.toJSONString(service.fp_selectStationHourInfo()); return JSONArray.toJSONString(service.fp_selectStationHourInfo());
} }
@PostMapping("/selectStationHourInfoDay")
@ApiOperation("底部列表白天使用")
private String selectOrderExecutionDay() {
return JSONArray.toJSONString(service.fp_selectStationHourInfoDay());
}
private Map<String, String> map; private Map<String, String> map;
{ {
map = new HashMap<>(); map = new HashMap<>();
map.put("A1", "10.10.60.176"); map.put("A1", "10.10.60.176");

@ -37,12 +37,13 @@ public class ZZJXBroadController {
private String selectProductInByTeam(@PathVariable("id") int id) { private String selectProductInByTeam(@PathVariable("id") int id) {
if (id == 0) { if (id == 0) {
int tag = service.zz_countNightProductIn(); // int tag = service.zz_countNightProductIn();
if (tag > 0) { Integer tag = service.zz_countNightProductInTag();
if (tag!=null&&tag > 0) {
return JSONArray.toJSONString(service.zz_selectProductInByTeamNight()); return JSONArray.toJSONString(service.zz_selectProductInByTeamNight());
} }
return JSONArray.toJSONString(service.zz_selectProductInByTeam()); return JSONArray.toJSONString(service.zz_selectProductInByTeam());
//return null;
} else { } else {
return JSONArray.toJSONString(service.zz_selectProductInByDay()); return JSONArray.toJSONString(service.zz_selectProductInByDay());
} }
@ -57,6 +58,7 @@ public class ZZJXBroadController {
@PostMapping("/selectLossInfo") @PostMapping("/selectLossInfo")
@ApiOperation("查询Loss和分布") @ApiOperation("查询Loss和分布")
private String selectLossInfo() { private String selectLossInfo() {
// 统计19.30之后还有没有入库的条码
int tag = service.zz_countNightProductIn(); int tag = service.zz_countNightProductIn();
if (tag > 0) { if (tag > 0) {
return JSONArray.toJSONString(service.zz_selectLossInfo(2)); return JSONArray.toJSONString(service.zz_selectLossInfo(2));

@ -264,7 +264,7 @@ body.FoamerScada {
body.Foamer2 { body.Foamer2 {
height: auto; height: auto;
width: auto; width: auto;
background: url(../img/foamer2.jpg) no-repeat center fixed; background: url(../img/foamer21.jpg) no-repeat center fixed;
-webkit-background-size: cover; -webkit-background-size: cover;
-moz-background-size: cover; -moz-background-size: cover;
-o-background-size: cover; -o-background-size: cover;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1000 KiB

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

@ -70,11 +70,11 @@ $(() => {
$.post("/broad/zz/selectLossInfo", {}, data => { $.post("/broad/zz/selectLossInfo", {}, data => {
data = JSON.parse(data) data = JSON.parse(data)
let LOSSOne = data.find(val => val.name == '1').qty let LOSSOne = data.find(val => val.name == '1').qty
let LOSSTwo = data.find(val => val.name == '4').qty LOSSOne = LOSSOne > 0 ? LOSSOne : 0
LOSS(LOSSOne) LOSS(LOSSOne)
verticalBarChart({ verticalBarChart({
xName: ["0-3分钟", "3-10分钟", ">10分钟"], xName: ["0-3分钟", "3-10分钟", ">10分钟"],
yData: [data.find(val => val.name == '2').qty, data.find(val => val.name == '3').qty, LOSSTwo], yData: [data.find(val => val.name == '2').qty, data.find(val => val.name == '3').qty, data.find(val => val.name == '4').qty],
}, document.getElementById("statisticOfAttribute")); }, document.getElementById("statisticOfAttribute"));
}) })
// 标准节拍 // 标准节拍

@ -11,7 +11,7 @@ $(() => {
// 目标 // 目标
await $.post(url + "/selectProductInTarget", {}, data => { await $.post(url + "/selectProductInTarget", {}, data => {
data = JSON.parse(data) data = JSON.parse(data)
targetTop.tips = data.find(val => val.name == "进度目标").qty targetTop.tips = data.find(val => val.name == "进度目标")?.qty
}) })
// 终检一次不合格率目标 // 终检一次不合格率目标
await $.post(url + "/selectOneBadRateMb", {}, data => { await $.post(url + "/selectOneBadRateMb", {}, data => {
@ -34,7 +34,7 @@ $(() => {
}) })
// 产量 // 产量
$.post(url + `/selectProductInByTeam/${yieldType}`, {}, data => { $.post(url + `/selectProductInByTeam/${yieldType}`, {}, data => {
data = JSON.parse(data) data = JSON.parse(data || '{}')
// 实际 // 实际
targetTop.reality = data.map(val => val.qty).reduce((val1, val2) => val1 + val2, 0) targetTop.reality = data.map(val => val.qty).reduce((val1, val2) => val1 + val2, 0)
total('#total', data.map(val => val.qty).reduce((val1, val2) => val1 + val2, 0)) total('#total', data.map(val => val.qty).reduce((val1, val2) => val1 + val2, 0))
@ -79,7 +79,7 @@ $(() => {
} else { } else {
targetTop.rate = 0 targetTop.rate = 0
} }
targetTop.gap = targetTop.progress - targetTop.reality targetTop.gap = targetTop.progress - targetTop.reality > 0 ? targetTop.progress - targetTop.reality : targetTop.reality - targetTop.progress
barChartAndLineChartThree({ barChartAndLineChartThree({
xName: xName, xName: xName,
yDataOne: data.map(val => val.qty), yDataOne: data.map(val => val.qty),

@ -1157,7 +1157,8 @@ const lineChartTwo = function (data, id, unit = '') {
}, },
textStyle: { textStyle: {
fontSize: 0.75 * vw, fontSize: 0.75 * vw,
color: () => {}, color: () => {
},
}, },
}, },
xAxis: { xAxis: {
@ -1672,6 +1673,283 @@ const verticalBarChart = function (data, id, unit = '次') {
} }
// 多个垂直柱状图 // 多个垂直柱状图
const multipleVerticalBarChart1 = function (data, id) {
let charts = echarts.init(id);
let num1 = data.yDataOne.slice(0,4)
let num2 = data.yDataTwo.slice(0,4)
let num3 = data.yDataThree.slice(0,4)
num1 = num1.map(e => {
if (e > 14) {
return 14
} else if (e < 10) {
return 10
} else {
return e
}
})
num2 = num2.map(e => {
if (e > 14) {
return 14
} else if (e < 10) {
return 10
} else {
return e
}
})
num3 = num3.map(e => {
if (e > 14) {
return 14
} else if (e < 10) {
return 10
} else {
return e
}
})
if (!data) {
data = {
xName: [
"7:00",
"8:00",
"9:00",
"10:00",
"11:00",
"12:00",
],
yDataOne: [4.9, 7.3, 9.2, 5.6, 7.7, 5.6],
yDataOneName: "制氢",
yDataTwo: [2.9, 5, 4.4, 2.7, 5.7, 4.6],
yDataTwoName: "发电",
yDataThree: [3.9, 6, 5.4, 3.7, 6.7, 5.6],
yDataThreeName: "充装",
}
}
let option = {
tooltip: {
//提示框组件
tooltip: {
trigger: "axis",
axisPointer: {
lineStyle: {
color: "#57617B",
},
},
},
},
grid: {
left: "1%",
right: "4%",
bottom: "0",
top: 30,
padding: "0 0 10 0",
containLabel: true,
},
legend: {
//图例组件,颜色和名字
right: 10,
top: 0,
itemGap: 16,
itemWidth: vw,
itemHeight: 0.6 * vw,
textStyle: {
color: "#a8aab0",
fontStyle: "normal",
fontFamily: "微软雅黑",
fontSize: 0.75 * vw,
},
},
dataZoom: [],
xAxis: [
{
type: "category",
boundaryGap: true, //坐标轴两边留白
data: ['A1', 'A2', 'A3', 'A4'],
axisLabel: {
show: true,
color: '#fff'
},
axisTick: {
//坐标轴刻度相关设置。
show: false,
},
axisLine: {
//坐标轴轴线相关设置
lineStyle: {
color: "#fff",
opacity: 0.2,
},
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: '#777777',
opacity: 0.3,
},
},
},
],
yAxis: {
type: "value",
splitNumber: 5,
min: 10,
max: 14,
axisLabel: {
show: true,
color: '#fff'
},
axisLine: {
show: false,
},
axisTick: {
show: false,
},
splitLine: {
show: true,
lineStyle: {
type: 'dashed',
color: '#777777',
opacity: 0.3,
},
},
},
series: [
{
name: data.yDataOneName,
type: "bar",
data: data.yDataOne,
barWidth: 1 * vw,
barGap: 0, //柱间距离
label: {
//图形上的文本标签
normal: {
show: true,
position: "top",
textStyle: {
color: "#a8aab0",
fontStyle: "normal",
fontFamily: "微软雅黑",
fontSize: 0.75 * vw,
},
},
},
itemStyle: {
//图形样式
normal: {
barBorderRadius: [5, 5, 0, 0],
color: {
x: 0,
y: 0,
x2: 0,
y2: 1,
type: 'linear',
global: false,
colorStops: [
{
offset: 0,
color: 'rgb(21, 148, 244)',
},
{
offset: 1,
color: 'rgb(13, 48, 243)',
},
],
},
},
},
},
{
name: data.yDataTwoName,
type: "bar",
data: data.yDataTwo,
barWidth: 1 * vw,
barGap: 0.5, //柱间距离
label: {
//图形上的文本标签
normal: {
show: true,
position: "top",
textStyle: {
color: "#a8aab0",
fontStyle: "normal",
fontFamily: "微软雅黑",
fontSize: 0.75 * vw,
},
},
},
itemStyle: {
//图形样式
normal: {
barBorderRadius: [5, 5, 0, 0],
color: {
x: 0,
y: 0,
x2: 0,
y2: 1,
type: 'linear',
global: false,
colorStops: [
{
offset: 0,
color: '#0DCEB1',
},
{
offset: 1,
color: '#14A15A',
},
],
},
},
},
},
{
name: data.yDataThreeName,
type: "bar",
data: data.yDataThree,
barWidth: 1 * vw,
barGap: 0.5, //柱间距离
label: {
//图形上的文本标签
normal: {
show: true,
position: "top",
textStyle: {
color: "#a8aab0",
fontStyle: "normal",
fontFamily: "微软雅黑",
fontSize: 0.75 * vw,
},
},
},
itemStyle: {
//图形样式
normal: {
barBorderRadius: [5, 5, 0, 0],
color: "rgba(26, 99, 74, 0.7)",
},
},
},
],
};
if (data?.xName?.length >= 4) {
option.dataZoom.push({
show: true,
type: 'slider',
bottom: '0%',
xAxisIndex: 0,
height: 12,
start: 0,
end: 1 / (data.xName.length / 4) * 100,
textStyle: {
fontSize: 0,
color: 'rgba(0,0,0,0)'
}
})
option.grid.bottom = '7%'
}
charts.setOption(option);
$(window).resize(charts.resize);
}
const multipleVerticalBarChart = function (data, id) { const multipleVerticalBarChart = function (data, id) {
let charts = echarts.init(id); let charts = echarts.init(id);
if (!data) { if (!data) {
@ -1947,7 +2225,7 @@ const multipleVerticalBarChartTwo = function (data, id, rotate = 0, unit = '',ma
grid: { grid: {
top: "20%", top: "20%",
left: "1%", left: "1%",
right: "1%", right: "5%",
bottom: "1%", bottom: "1%",
containLabel: true, containLabel: true,
}, },
@ -2005,6 +2283,7 @@ const multipleVerticalBarChartTwo = function (data, id, rotate = 0, unit = '',ma
focus: 'series' focus: 'series'
}, },
barWidth: '30%', barWidth: '30%',
barMaxWidth: '50px',
itemStyle: { itemStyle: {
//图形样式 //图形样式
normal: { normal: {
@ -2029,6 +2308,7 @@ const multipleVerticalBarChartTwo = function (data, id, rotate = 0, unit = '',ma
focus: 'series' focus: 'series'
}, },
barWidth: '30%', barWidth: '30%',
barMaxWidth: '50px',
barGap: '40%', barGap: '40%',
label: { label: {
show: true, show: true,
@ -2614,6 +2894,273 @@ const singleVerticalBarChartTwo = function (data, id) {
} }
// 多个折线面积图(直线) // 多个折线面积图(直线)
const multipleBrokenLineAreaDiagram1 = (data, ids) => {
let charts = echarts.init(ids);
function Fun() {
this.randomNum = function () {
let arr = []
for (let i = 0; i < 12; i++) {
arr.push(parseInt(Math.random() * 100))
}
return arr
}
}
if (!data) {
data = {
xData: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
yDataOne: new Fun().randomNum(),
yDataTwo: new Fun().randomNum(),
yDataOneName: '制氢量',
yDataTwoName: '发电量',
}
}
let max = 24
let min = 18
// let max = Math.round(Math.max(...data.yDataOne, ...data.yDataTwo))
// let min = Math.round(Math.min(...data.yDataOne, ...data.yDataTwo))
let option = {
tooltip: {
trigger: "axis",
axisPointer: {
lineStyle: {
color: "#57617B",
},
},
},
legend: {
icon: "rect",
itemWidth: 0.75 * vw,
itemHeight: 0.25 * vw,
itemGap: 0.75 * vw,
data: [data.yDataOneName, data.yDataTwoName, data.yDataThreeName],
right: "4%",
textStyle: {
fontSize: 0.75 * vw,
color: "#F1F1F3",
},
},
grid: {
top: "20%",
left: "3%",
right: "4%",
bottom: "3%",
containLabel: true,
},
dataZoom: [],
xAxis: [
{
show: false,
type: "category",
boundaryGap: false,
axisLine: {
lineStyle: {
color: "#57617B",
},
},
axisLabel: {
show: true,
color: '#fff',
interval: 0,
},
data: data.xData,
},
],
yAxis: [
{
type: "value",
axisTick: {
show: false,
},
max: 24,
min: 18,
axisLine: {
lineStyle: {
color: "#57617B",
},
},
axisLabel: {
show: true,
color: '#fff',
interval: 0.5,
},
splitLine: {
show: false,
lineStyle: {
color: "#57617B",
},
},
},
],
series: [
{
name: data.yDataOneName,
type: "line",
smooth: false,
lineStyle: {
normal: {
width: 1,
},
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "rgba(137, 189, 27, 0.6)",
},
{
offset: 0.8,
color: "rgba(137, 189, 27, 0.2)",
},
],
false
),
shadowColor: "rgba(0, 0, 0, 0.1)",
shadowBlur: 10,
},
},
itemStyle: {
normal: {
color: "rgb(137,189,27)",
},
},
label: {
//图形上的文本标签
normal: {
show: true,
position: "top",
textStyle: {
color: "#a8aab0",
fontStyle: "normal",
fontFamily: "微软雅黑",
fontSize: 0.75 * vw,
},
},
},
data: data.yDataOne,
},
{
name: data.yDataTwoName,
type: "line",
smooth: false,
lineStyle: {
normal: {
width: 1,
},
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "rgba(0, 136, 212, 0.6)",
},
{
offset: 0.8,
color: "rgba(0, 136, 212, 0.2)",
},
],
false
),
shadowColor: "rgba(0, 0, 0, 0.1)",
shadowBlur: 10,
},
},
itemStyle: {
normal: {
color: "rgb(0,136,212)",
},
},
label: {
//图形上的文本标签
normal: {
show: true,
position: "bottom",
textStyle: {
color: "#a8aab0",
fontStyle: "normal",
fontFamily: "微软雅黑",
fontSize: 0.75 * vw,
},
},
},
data: data.yDataTwo,
},
{
name: data.yDataThreeName,
type: "line",
smooth: false,
lineStyle: {
normal: {
width: 1,
},
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "rgba(219, 50, 51, 0.6)",
},
{
offset: 0.8,
color: "rgba(219, 50, 51, 0.2)",
},
],
false
),
shadowColor: "rgba(0, 0, 0, 0.1)",
shadowBlur: 10,
},
},
itemStyle: {
normal: {
color: "rgb(219,50,51)",
},
},
data: data.yDataThree,
},
],
};
if (data?.xData?.length >= 4) {
option.dataZoom.push({
show: true,
type: 'slider',
bottom: '0%',
xAxisIndex: 0,
height: 12,
start: 0,
end: 1 / (data.xData.length / 4) * 100,
textStyle: {
fontSize: 0,
color: 'rgba(0,0,0,0)'
}
})
option.grid.bottom = '7%'
}
charts.setOption(option);
$(window).resize(charts.resize);
}
const multipleBrokenLineAreaDiagram = (data, ids) => { const multipleBrokenLineAreaDiagram = (data, ids) => {
let charts = echarts.init(ids); let charts = echarts.init(ids);

@ -357,9 +357,11 @@
<script src="../../static/js/auto-update.js" th:src="@{/js/auto-update.js}"></script> <script src="../../static/js/auto-update.js" th:src="@{/js/auto-update.js}"></script>
<script> <script>
let practical = 0
//夹具生产计划切换 //夹具生产计划切换
let tableData = [] let tableData = []
let classes = 0 let classes = 0
let totalNum = 0
let dayClass = ['工位', '型号', '状态', '目标', '计划', '累计', '达成率', '7:30', '8:30', '9:30', '10:30', '11:30', '12:30', '13:30', '14:30', '15:30', '16:30', '17:30', '18:30'] let dayClass = ['工位', '型号', '状态', '目标', '计划', '累计', '达成率', '7:30', '8:30', '9:30', '10:30', '11:30', '12:30', '13:30', '14:30', '15:30', '16:30', '17:30', '18:30']
let nightClass = ['工位', '型号', '状态', '目标', '计划', '累计', '达成率', '19:30', '20:30', '21:30', '22:30', '23:30', '0:30', '1:30', '2:30', '3:30', '4:30', '5:30', '6:30'] let nightClass = ['工位', '型号', '状态', '目标', '计划', '累计', '达成率', '19:30', '20:30', '21:30', '22:30', '23:30', '0:30', '1:30', '2:30', '3:30', '4:30', '5:30', '6:30']
let tableWidth = ["5%", '10%', "7%", "5%", "5%", "5%", "8%", "4%", "4%", "4%", "4%", "4%", "4%", "4%", "4%", "4%", "4%", "4%", "4%"] let tableWidth = ["5%", '10%', "7%", "5%", "5%", "5%", "8%", "4%", "4%", "4%", "4%", "4%", "4%", "4%", "4%", "4%", "4%", "4%", "4%"]
@ -461,15 +463,15 @@
} }
$(async () => { $(async () => {
let totalNum = 0
area() area()
// 当班计划/实际产量/当班差异 // 当班计划/实际产量/当班差异
await autoUpdate('/broad/fp/selectFpOrderInfo', INTERVAL, data => { await autoUpdate('/broad/fp/selectFpOrderInfo', INTERVAL, data => {
// let p = [data[1], data[0][2], data[0][3]] // let p = [data[1], data[0][2], data[0][3]]
totalNum = data.find(val => val.name == '当班计划').qty totalNum = data.find(val => val.name == '当班计划').qty
let now = data.find(val => val.name == '实际产量').qty let now = data.find(val => val.name == '实际产量').qty
// let now = practical
let p = [totalNum, now, totalNum - now] let p = [totalNum, now, totalNum - now]
console.log(p)
for (let i in p) { for (let i in p) {
updateSplitBlocks(p[i], selectors[i]) updateSplitBlocks(p[i], selectors[i])
} }
@ -535,7 +537,13 @@
classes = data[`班组`] classes = data[`班组`]
}) })
// 生产统计数据 // 生产统计数据
autoUpdate('/broad/fp/selectStationHourInfo', INTERVAL, data => { const isDay = () => {
let nowTime = new Date()
let nowHour = parseFloat(`${parseInt(nowTime.toLocaleTimeString().split(':')[0])}.${parseInt(nowTime.toLocaleTimeString().split(':')[1])}`)
console.log(nowHour < 19.3 && nowHour > 7.3)
return nowHour < 19.3 && nowHour > 7.3
}
autoUpdate(isDay() ? '/broad/fp/selectStationHourInfoDay' : '/broad/fp/selectStationHourInfo', INTERVAL, data => {
tableData = data tableData = data
let dataOne = [] let dataOne = []
if (isFirst) { if (isFirst) {
@ -547,6 +555,11 @@
times++ times++
} }
getTable(classes, dataOne) getTable(classes, dataOne)
practical = eval(data.map(val => val.qty).join('+'))
console.log(selectors)
console.log(practical)
// updateSplitBlocks(totalNum - practical, selectors[2])
// updateSplitBlocks(eval(data.map(val => val.qty).join('+')), selectors[1])
total( total(
Number((data.filter(val => val.status === '生产中').length / 28) * 100).toFixed(2) + '%', Number((data.filter(val => val.status === '生产中').length / 28) * 100).toFixed(2) + '%',
totalNum, totalNum,
@ -570,16 +583,16 @@
// 右侧压力 + 右侧温度 // 右侧压力 + 右侧温度
autoUpdate('/broad/fp/selectDeviceStation', INTERVAL, data => { autoUpdate('/broad/fp/selectDeviceStation', INTERVAL, data => {
// 右侧压力 // 右侧压力
multipleVerticalBarChart( multipleVerticalBarChart1(
{ {
xName: data.map(value => value.station_no), xName: data.map(value => value.station_no),
yDataOne: data.map(value => value.pol_yl), yDataOne: data.map(value => (value.pol_yl * 1.1).toFixed(1)),
yDataOneName: "POL压力", yDataOneName: "POL压力",
yDataTwo: data.map(value => value.so_yl), yDataTwo: data.map(value => (value.so_yl * 1.3).toFixed(1)),
yDataTwoName: "ISO压力", yDataTwoName: "ISO压力",
}, document.getElementById("top-right")) }, document.getElementById("top-right"))
// 右侧温度 // 右侧温度
multipleBrokenLineAreaDiagram( multipleBrokenLineAreaDiagram1(
{ {
xData: data.map(value => value.station_no), xData: data.map(value => value.station_no),
yDataOne: data.map(value => value.pol_wd ), yDataOne: data.map(value => value.pol_wd ),

@ -92,7 +92,7 @@ $(() => {
safeTitle('#safeTitle') safeTitle('#safeTitle')
} }
day() day()
setCronTak(day, "0 * * * * * *"); setCronTak(day, "0 0/30 * * * * *");
}) })
</script> </script>
</html> </html>

@ -28,6 +28,15 @@ public class BaseProductQty extends BaseEntity
/** 目标数量 */ /** 目标数量 */
@Excel(name = "目标数量") @Excel(name = "目标数量")
private Long qty; private Long qty;
private Long qtyB;
public Long getQtyB() {
return qtyB;
}
public void setQtyB(Long qtyB) {
this.qtyB = qtyB;
}
public void setId(Long id) public void setId(Long id)
{ {

@ -27,6 +27,7 @@ public interface BroadDataMapper {
// 发泡线 // 发泡线
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
List<OrderInfo> fp_selectOrderExecution(); List<OrderInfo> fp_selectOrderExecution();
List<OrderInfo> fp_selectOrderExecutionPlan(); List<OrderInfo> fp_selectOrderExecutionPlan();
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@ -43,6 +44,7 @@ public interface BroadDataMapper {
List<DeviceStation> fp_selectDeviceStation(); List<DeviceStation> fp_selectDeviceStation();
List<FPStationHourInfo> fp_selectStationHourInfo(); List<FPStationHourInfo> fp_selectStationHourInfo();
List<FPStationHourInfo> fp_selectStationHourInfoDay();
List<OrderInfo> xk_selectStockOccupancy(); List<OrderInfo> xk_selectStockOccupancy();
@ -119,4 +121,6 @@ public interface BroadDataMapper {
void deleteWorkTime(); void deleteWorkTime();
void deleteBoxOutput(); void deleteBoxOutput();
Integer zz_countNightProductInTag();
} }

@ -43,6 +43,7 @@ public interface IBroadDataService {
List<DeviceStation> fp_selectDeviceStation(); List<DeviceStation> fp_selectDeviceStation();
List<FPStationHourInfo> fp_selectStationHourInfo(); List<FPStationHourInfo> fp_selectStationHourInfo();
List<FPStationHourInfo> fp_selectStationHourInfoDay();
List<OrderInfo> xk_selectStockOccupancy(); List<OrderInfo> xk_selectStockOccupancy();
@ -79,7 +80,7 @@ public interface IBroadDataService {
List<MTKBeen> mtk_sselectQATop3(); List<MTKBeen> mtk_sselectQATop3();
Integer zz_countNightProductInTag();
List<BoxOutput> zz_selectLossInfo(int state); List<BoxOutput> zz_selectLossInfo(int state);
List<BoxOutput> mtk_selectQAZD(); List<BoxOutput> mtk_selectQAZD();
@ -98,4 +99,6 @@ public interface IBroadDataService {
List<BoxOutput> pqk_selectProductInStore(); List<BoxOutput> pqk_selectProductInStore();
} }

@ -66,6 +66,10 @@ public class BroadDataServiceImpl implements IBroadDataService
public List<OrderInfo> fp_selectOrderExecution(){ public List<OrderInfo> fp_selectOrderExecution(){
return mapper.fp_selectOrderExecution(); return mapper.fp_selectOrderExecution();
} }
@Override @Override
public List<OrderInfo> fp_selectOrderExecutionPlan(){ public List<OrderInfo> fp_selectOrderExecutionPlan(){
return mapper.fp_selectOrderExecutionPlan(); return mapper.fp_selectOrderExecutionPlan();
@ -85,6 +89,10 @@ public class BroadDataServiceImpl implements IBroadDataService
public List<FPStationHourInfo> fp_selectStationHourInfo() { public List<FPStationHourInfo> fp_selectStationHourInfo() {
return mapper.fp_selectStationHourInfo(); return mapper.fp_selectStationHourInfo();
} }
@Override
public List<FPStationHourInfo> fp_selectStationHourInfoDay() {
return mapper.fp_selectStationHourInfoDay();
}
@Override @Override
public List<BoxOutput> selectFpStock() { public List<BoxOutput> selectFpStock() {
@ -161,6 +169,11 @@ public class BroadDataServiceImpl implements IBroadDataService
return mapper.zz_countNightProductIn(); return mapper.zz_countNightProductIn();
} }
@Override
public Integer zz_countNightProductInTag() {
return mapper.zz_countNightProductInTag();
}
@Override @Override
public List<BoxOutput> zz_selectLossInfo(int state) { public List<BoxOutput> zz_selectLossInfo(int state) {
return mapper.zz_selectLossInfo( state); return mapper.zz_selectLossInfo( state);

@ -10,10 +10,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="qty" column="qty" /> <result property="qty" column="qty" />
<result property="createTime" column="create_time" /> <result property="createTime" column="create_time" />
<result property="createBy" column="create_by" /> <result property="createBy" column="create_by" />
<result property="qtyB" column="qty_b" />
</resultMap> </resultMap>
<sql id="selectBaseProductQtyVo"> <sql id="selectBaseProductQtyVo">
select id, day, qty, create_time, create_by from base_product_qty select id, day, qty,qty_b, create_time, create_by from base_product_qty
</sql> </sql>
<select id="countDay" resultType="integer"> <select id="countDay" resultType="integer">
select count(1) from base_product_qty where day=#{day} select count(1) from base_product_qty where day=#{day}
@ -41,6 +42,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="id != null">id,</if> <if test="id != null">id,</if>
<if test="day != null">day,</if> <if test="day != null">day,</if>
<if test="qty != null">qty,</if> <if test="qty != null">qty,</if>
<if test="qtyB != null">qty_b,</if>
<if test="createTime != null">create_time,</if> <if test="createTime != null">create_time,</if>
<if test="createBy != null">create_by,</if> <if test="createBy != null">create_by,</if>
</trim> </trim>
@ -48,6 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="id != null">#{id},</if> <if test="id != null">#{id},</if>
<if test="day != null">#{day},</if> <if test="day != null">#{day},</if>
<if test="qty != null">#{qty},</if> <if test="qty != null">#{qty},</if>
<if test="qtyB != null">#{qtyB},</if>
<if test="createTime != null">#{createTime},</if> <if test="createTime != null">#{createTime},</if>
<if test="createBy != null">#{createBy},</if> <if test="createBy != null">#{createBy},</if>
</trim> </trim>
@ -58,6 +61,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=","> <trim prefix="SET" suffixOverrides=",">
<if test="day != null">day = #{day},</if> <if test="day != null">day = #{day},</if>
<if test="qty != null">qty = #{qty},</if> <if test="qty != null">qty = #{qty},</if>
<if test="qtyB != null">qty_b = #{qtyB},</if>
<if test="createTime != null">create_time = #{createTime},</if> <if test="createTime != null">create_time = #{createTime},</if>
<if test="createBy != null">create_by = #{createBy},</if> <if test="createBy != null">create_by = #{createBy},</if>
</trim> </trim>

@ -12,10 +12,14 @@
</resultMap> </resultMap>
<delete id="deleteWorkTime"> <delete id="deleteWorkTime">
delete from HAIWEI.BASE_DAY_WBTIME where CREATE_TIME &lt; sysdate - interval '15' DAY delete
from HAIWEI.BASE_DAY_WBTIME
where CREATE_TIME &lt; sysdate - interval '15' DAY
</delete> </delete>
<delete id="deleteBoxOutput"> <delete id="deleteBoxOutput">
delete from IMOS.BASE_BOX_OUTPUT_RECORD where CREATE_TIME &lt; sysdate - interval '10' DAY delete
from IMOS.BASE_BOX_OUTPUT_RECORD
where CREATE_TIME &lt; sysdate - interval '10' DAY
</delete> </delete>
<select id="selectplanCompletion" resultType="com.ruoyi.system.domain.BoxOutput"> <select id="selectplanCompletion" resultType="com.ruoyi.system.domain.BoxOutput">
@ -25,7 +29,9 @@
union union
select sum(QTY3) as qty, '实际产量' as name select sum(QTY3) as qty, '实际产量' as name
from IMOS.BASE_BOX_OUTPUT_RECORD xhq from IMOS.BASE_BOX_OUTPUT_RECORD xhq
left join (select * from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc) where ROWNUM = 1) wb left join (select *
from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc)
where ROWNUM = 1) wb
on 1 = 1 on 1 = 1
where xhq.CREATE_TIME between where xhq.CREATE_TIME between
case when sysdate &lt;= wb.W_END then W_START else W_END end case when sysdate &lt;= wb.W_END then W_START else W_END end
@ -51,7 +57,7 @@
end) as order_type end) as order_type
, Sum(Store_Qty) as stock , Sum(Store_Qty) as stock
, Store_Code , Store_Code
from IMOS_LO_STORE_DETIAL losd from IMOS_LO_BIN losd
where Store_Code = #{id} where Store_Code = #{id}
and Material_Code is not null and Material_Code is not null
and Store_Qty &gt; 0 and Store_Qty &gt; 0
@ -76,7 +82,9 @@
end) as name, end) as name,
sum(QTY3) as qty sum(QTY3) as qty
from IMOS.BASE_BOX_OUTPUT_RECORD xhq from IMOS.BASE_BOX_OUTPUT_RECORD xhq
left join (select * from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc) where ROWNUM = 1) wb left join (select *
from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc)
where ROWNUM = 1) wb
on 1 = 1 on 1 = 1
where xhq.CREATE_TIME between case when sysdate &lt;= wb.W_END then W_START else W_END end where xhq.CREATE_TIME between case when sysdate &lt;= wb.W_END then W_START else W_END end
and case when sysdate &lt;= wb.W_END then W_END else B_END end and case when sysdate &lt;= wb.W_END then W_END else B_END end
@ -124,21 +132,25 @@
from IMOS.BASE_BOX_OUTPUT_RECORD ippb from IMOS.BASE_BOX_OUTPUT_RECORD ippb
left join ( left join (
select W_END as day1, W_END + interval '1' HOUR as day2 select W_END as day1, W_END + interval '1' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where ippb.CREATE_TIME &gt;= day1 and ippb.CREATE_TIME &lt; day2 where ippb.CREATE_TIME &gt;= day1
and ippb.CREATE_TIME &lt; day2
union union
select '20:30' as name, sum(QTY3) as qty, 2 as ord select '20:30' as name, sum(QTY3) as qty, 2 as ord
from IMOS.BASE_BOX_OUTPUT_RECORD ippb from IMOS.BASE_BOX_OUTPUT_RECORD ippb
left join ( left join (
-- 2022-07-28 20:30:00 -- 2022-07-28 20:30:00
select W_END + interval '1' HOUR as day1, W_END + interval '2' HOUR as day2 select W_END + interval '1' HOUR as day1, W_END + interval '2' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where ippb.CREATE_TIME &gt; where ippb.CREATE_TIME &gt;
= day1 and ippb.CREATE_TIME &lt; = day1
and ippb.CREATE_TIME &lt;
day2 day2
union union
select '21:30' as name, sum(QTY3) as qty, 3 as ord select '21:30' as name, sum(QTY3) as qty, 3 as ord
@ -146,11 +158,13 @@
left join ( left join (
-- 2022-07-28 21:30:00 -- 2022-07-28 21:30:00
select W_END + interval '2' HOUR as day1, W_END + interval '3' HOUR as day2 select W_END + interval '2' HOUR as day1, W_END + interval '3' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where ippb.CREATE_TIME &gt; where ippb.CREATE_TIME &gt;
= day1 and ippb.CREATE_TIME &lt; = day1
and ippb.CREATE_TIME &lt;
day2 day2
union union
select '22:30' as name, sum(QTY3) as qty, 4 as ord select '22:30' as name, sum(QTY3) as qty, 4 as ord
@ -158,11 +172,13 @@
left join ( left join (
-- 2022-07-28 22:30:00 -- 2022-07-28 22:30:00
select W_END + interval '3' HOUR as day1, W_END + interval '4' HOUR as day2 select W_END + interval '3' HOUR as day1, W_END + interval '4' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where ippb.CREATE_TIME &gt; where ippb.CREATE_TIME &gt;
= day1 and ippb.CREATE_TIME &lt; = day1
and ippb.CREATE_TIME &lt;
day2 day2
union union
select '23:30' as name, sum(QTY3) as qty, 5 as ord select '23:30' as name, sum(QTY3) as qty, 5 as ord
@ -170,11 +186,13 @@
left join ( left join (
-- 2022-07-28 23:30:00 -- 2022-07-28 23:30:00
select W_END + interval '4' HOUR as day1, W_END + interval '5' HOUR as day2 select W_END + interval '4' HOUR as day1, W_END + interval '5' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where ippb.CREATE_TIME &gt; where ippb.CREATE_TIME &gt;
= day1 and ippb.CREATE_TIME &lt; = day1
and ippb.CREATE_TIME &lt;
day2 day2
union union
@ -183,11 +201,13 @@
left join ( left join (
-- 2022-07-29 00:30:00 -- 2022-07-29 00:30:00
select W_END + interval '5' HOUR as day1, W_END + interval '6' HOUR as day2 select W_END + interval '5' HOUR as day1, W_END + interval '6' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where ippb.CREATE_TIME &gt; where ippb.CREATE_TIME &gt;
= day1 and ippb.CREATE_TIME &lt; = day1
and ippb.CREATE_TIME &lt;
day2 day2
union union
@ -196,11 +216,13 @@
left join ( left join (
-- 2022-07-29 01:30:00 -- 2022-07-29 01:30:00
select W_END + interval '6' HOUR as day1, W_END + interval '7' HOUR as day2 select W_END + interval '6' HOUR as day1, W_END + interval '7' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where ippb.CREATE_TIME &gt; where ippb.CREATE_TIME &gt;
= day1 and ippb.CREATE_TIME &lt; = day1
and ippb.CREATE_TIME &lt;
day2 day2
union union
@ -208,11 +230,13 @@
from IMOS.BASE_BOX_OUTPUT_RECORD ippb from IMOS.BASE_BOX_OUTPUT_RECORD ippb
left join ( left join (
select W_END + interval '7' HOUR as day1, W_END + interval '8' HOUR as day2 select W_END + interval '7' HOUR as day1, W_END + interval '8' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where ippb.CREATE_TIME &gt; where ippb.CREATE_TIME &gt;
= day1 and ippb.CREATE_TIME &lt; = day1
and ippb.CREATE_TIME &lt;
day2 day2
union union
@ -220,11 +244,13 @@
from IMOS.BASE_BOX_OUTPUT_RECORD ippb from IMOS.BASE_BOX_OUTPUT_RECORD ippb
left join ( left join (
select W_END + interval '8' HOUR as day1, W_END + interval '9' HOUR as day2 select W_END + interval '8' HOUR as day1, W_END + interval '9' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where ippb.CREATE_TIME &gt; where ippb.CREATE_TIME &gt;
= day1 and ippb.CREATE_TIME &lt; = day1
and ippb.CREATE_TIME &lt;
day2 day2
union union
@ -232,11 +258,13 @@
from IMOS.BASE_BOX_OUTPUT_RECORD ippb from IMOS.BASE_BOX_OUTPUT_RECORD ippb
left join ( left join (
select W_END + interval '9' HOUR as day1, W_END + interval '10' HOUR as day2 select W_END + interval '9' HOUR as day1, W_END + interval '10' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where ippb.CREATE_TIME &gt; where ippb.CREATE_TIME &gt;
= day1 and ippb.CREATE_TIME &lt; = day1
and ippb.CREATE_TIME &lt;
day2 day2
union union
@ -244,11 +272,13 @@
from IMOS.BASE_BOX_OUTPUT_RECORD ippb from IMOS.BASE_BOX_OUTPUT_RECORD ippb
left join ( left join (
select W_END + interval '10' HOUR as day1, W_END + interval '11' HOUR as day2 select W_END + interval '10' HOUR as day1, W_END + interval '11' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where ippb.CREATE_TIME &gt; where ippb.CREATE_TIME &gt;
= day1 and ippb.CREATE_TIME &lt; = day1
and ippb.CREATE_TIME &lt;
day2 day2
union union
@ -256,11 +286,13 @@
from IMOS.BASE_BOX_OUTPUT_RECORD ippb from IMOS.BASE_BOX_OUTPUT_RECORD ippb
left join ( left join (
select W_END + interval '11' HOUR as day1, W_END + interval '12' HOUR as day2 select W_END + interval '11' HOUR as day1, W_END + interval '12' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where ippb.CREATE_TIME &gt; where ippb.CREATE_TIME &gt;
= day1 and ippb.CREATE_TIME &lt; = day1
and ippb.CREATE_TIME &lt;
day2 day2
) )
order by ord order by ord
@ -384,6 +416,139 @@
</select> </select>
<select id="fp_selectStationHourInfoDay" resultType="com.ruoyi.system.domain.FPStationHourInfo">
select name,
STATION_NO,
target,
status,
plan_number,
(h1 + h2 + h3 + h4 + h5 + h6 + h7 + H8 + h9 + H10 + h11 + h12) as qty,
round((h1 + h2 + h3 + h4 + h5 + h6 + h7 + H8 + h9 + H10 + h11 + h12) / CURRENTPLAN_QTY * 100, 2) as rate,
h1,
h2,
h3,
h4,
h5,
h6,
h7,
H8,
h9,
H10,
h11,
h12
from (
select substr(MATERIAL_NAME,
case
when instr(MATERIAL_NAME, '/', 1, 1) = 0 then instr(MATERIAL_NAME, ',', 1, 1) + 1
else instr(MATERIAL_NAME, '/', 1, 1) + 1
end,
case
when instr(MATERIAL_NAME, ',', 1, 2) = 0 then Length(MATERIAL_NAME) + 1
else instr(MATERIAL_NAME, ',', 1, 2)
end
-
case
when instr(MATERIAL_NAME, '/', 1, 1) = 0 then instr(MATERIAL_NAME, ',', 1, 1) + 1
else instr(MATERIAL_NAME, '/', 1, 1) + 1
end) as name,
STATION_NO,
(select QTY
from (select QTY, row_number() over (order by CREATE_TIME desc) row_n
from HAIWEI.BASE_FP_PLANQTY)
where row_n = 1) as target,
case
when PRODUCT_STATUS = 0 then '未生产'
else '生产中' end as status,
nvl(plan_number, 0) as plan_number,
PRODUCT_QTY as qty,
round(PRODUCT_QTY / CURRENTPLAN_QTY * 100, 2) as rate,
CURRENTPLAN_QTY,
case
when sysdate &gt;
to_date(to_char(sysdate, 'yyyy-mm-dd') || '07:29:59', 'yyyy-mm-dd hh24:mi:ss')
then
HOUR_QTY1
else 0 end as h1,
case
when sysdate &gt;
to_date(to_char(sysdate, 'yyyy-mm-dd') || '08:29:59', 'yyyy-mm-dd hh24:mi:ss')
then
HOUR_QTY2
else 0 end as h2,
case
when sysdate &gt;
to_date(to_char(sysdate, 'yyyy-mm-dd') || '09:29:59', 'yyyy-mm-dd hh24:mi:ss')
then
HOUR_QTY3
else 0 end as h3,
case
when sysdate &gt;
to_date(to_char(sysdate, 'yyyy-mm-dd') || '10:29:59', 'yyyy-mm-dd hh24:mi:ss')
then
HOUR_QTY4
else 0 end as h4,
case
when sysdate &gt;
to_date(to_char(sysdate, 'yyyy-mm-dd') || '11:29:59', 'yyyy-mm-dd hh24:mi:ss')
then
HOUR_QTY5
else 0 end as h5,
case
when sysdate &gt;
to_date(to_char(sysdate, 'yyyy-mm-dd') || '12:29:59', 'yyyy-mm-dd hh24:mi:ss')
then
HOUR_QTY6
else 0 end h6,
case
when sysdate &gt;
to_date(to_char(sysdate, 'yyyy-mm-dd') || '13:29:59', 'yyyy-mm-dd hh24:mi:ss')
then
HOUR_QTY7
else 0 end h7,
case
when sysdate &gt;
to_date(to_char(sysdate, 'yyyy-mm-dd') || '14:29:59', 'yyyy-mm-dd hh24:mi:ss')
then
HOUR_QTY8
else 0 end h8,
case
when sysdate &gt;
to_date(to_char(sysdate, 'yyyy-mm-dd') || '15:29:59', 'yyyy-mm-dd hh24:mi:ss')
then
HOUR_QTY9
else 0 end h9,
case
when sysdate &gt;
to_date(to_char(sysdate, 'yyyy-mm-dd') || '16:29:59', 'yyyy-mm-dd hh24:mi:ss')
then
HOUR_QTY10
else 0 end h10,
case
when sysdate &gt;
to_date(to_char(sysdate, 'yyyy-mm-dd') || '17:29:59', 'yyyy-mm-dd hh24:mi:ss')
then
HOUR_QTY11
else 0 end h11,
case
when sysdate &gt;
to_date(to_char(sysdate, 'yyyy-mm-dd') || '18:29:59', 'yyyy-mm-dd hh24:mi:ss')
then
HOUR_QTY12
else 0 end h12
from IMOS_PR_FOAMING_MONITOR ipr
left join (
select round(PLAN_QTY / num, 0) as plan_number, itm.MATERIAL_NAME AS NAME
from imos_ta_material itm
left join (select count(1) as num, MATERIAL_NAME
from IMOS_PR_FOAMING_MONITOR
group by MATERIAL_NAME) cou
on cou.MATERIAL_NAME = itm.MATERIAL_NAME
where DISPLAY_FLAG = 1
) ta
on ta.name = ipr.MATERIAL_NAME
order by to_number(STATION_NO))
</select>
<select id="fp_selectOrderExecution" resultType="com.ruoyi.system.domain.OrderInfo"> <select id="fp_selectOrderExecution" resultType="com.ruoyi.system.domain.OrderInfo">
select substr(MATERIAL_NAME, select substr(MATERIAL_NAME,
case case
@ -497,7 +662,6 @@
select count(1) as qty, '订单数量' as name select count(1) as qty, '订单数量' as name
from IMOS_PR_ORDER from IMOS_PR_ORDER
where to_char(FINISH_DATE, 'yyyy-MM-dd') in ( where to_char(FINISH_DATE, 'yyyy-MM-dd') in (
select to_char(DAY, 'yyyy-MM-dd') select to_char(DAY, 'yyyy-MM-dd')
from haiwei.BASE_PRODUCT_QTY from haiwei.BASE_PRODUCT_QTY
where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7)) where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7))
@ -505,7 +669,6 @@
select count(1) as qty, '完成数量' as name select count(1) as qty, '完成数量' as name
from IMOS_PR_ORDER from IMOS_PR_ORDER
where to_char(FINISH_DATE, 'yyyy-MM-dd') in ( where to_char(FINISH_DATE, 'yyyy-MM-dd') in (
select to_char(DAY, 'yyyy-MM-dd') select to_char(DAY, 'yyyy-MM-dd')
from haiwei.BASE_PRODUCT_QTY from haiwei.BASE_PRODUCT_QTY
where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7)) where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7))
@ -516,7 +679,6 @@
select count(1) select count(1)
from IMOS_PR_ORDER from IMOS_PR_ORDER
where to_char(FINISH_DATE, 'yyyy-MM-dd') in ( where to_char(FINISH_DATE, 'yyyy-MM-dd') in (
select to_char(DAY, 'yyyy-MM-dd') select to_char(DAY, 'yyyy-MM-dd')
from haiwei.BASE_PRODUCT_QTY from haiwei.BASE_PRODUCT_QTY
where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7)) where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7))
@ -529,7 +691,8 @@
select to_char(DAY, 'yyyy-MM-dd') select to_char(DAY, 'yyyy-MM-dd')
from haiwei.BASE_PRODUCT_QTY from haiwei.BASE_PRODUCT_QTY
where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7)) where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7))
) * 100, 2) as qty, '清单率' as name ) * 100, 2) as qty,
'清单率' as name
from DUAL from DUAL
-- union -- union
-- select count(1)as qty, '入库订单统计' as name -- select count(1)as qty, '入库订单统计' as name
@ -569,19 +732,127 @@ where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7)
<select id="zhou_selectProductInStore" resultMap="MTKBeen"> <select id="zhou_selectProductInStore" resultMap="MTKBeen">
select to_char(DAY, 'MM-dd') as code, qty, '计划' as name select to_char(DAY, 'MM-dd') as code, qty + QTY_B as qty, '计划' as name
from haiwei.BASE_PRODUCT_QTY from haiwei.BASE_PRODUCT_QTY
where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7) where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7)
union union
select to_char(PRODUCTION_DATE, 'MM-dd') as code, count(1) as qty, '产量' as name select code, sum(qty), name
from IMOS.IMOS_PR_PRODUCT_BARCODE from (
where to_char(PRODUCTION_DATE, 'yyyy-MM-dd') in select wb.day as code, count(1) as qty, '产量' as name
( from IMOS.IMOS_PR_PRODUCT_BARCODE ba
select to_char(DAY, 'yyyy-MM-dd') left join (select to_char(to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss'), 'MM-dd') as day, W_START, B_END
from haiwei.BASE_PRODUCT_QTY from haiwei.BASE_DAY_WBTIME
where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7) where to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss') = (TRUNC(sysdate, 'D') + 1)
) wb on 1 = 1
where PRODUCTION_DATE between W_START and B_END
group by wb.day
union
select to_char((TRUNC(sysdate, 'D') + 1), 'MM-dd') as code, 0 as qty, '产量' as name
from dual
) group by code, name
union
select code, sum(qty), name
from (
select wb.day as code, count(1) as qty, '产量' as name
from IMOS.IMOS_PR_PRODUCT_BARCODE ba
left join (select to_char(to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss'), 'MM-dd') as day, W_START, B_END
from haiwei.BASE_DAY_WBTIME
where to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss') = (TRUNC(sysdate, 'D') + 2)
) wb on 1 = 1
where PRODUCTION_DATE between W_START and B_END
group by wb.day
union
select to_char((TRUNC(sysdate, 'D') + 2), 'MM-dd') as code, 0 as qty, '产量' as name
from dual
) )
group by to_char(PRODUCTION_DATE, 'MM-dd') group by code, name
union
select code, sum(qty), name
from (
select wb.day as code, count(1) as qty, '产量' as name
from IMOS.IMOS_PR_PRODUCT_BARCODE ba
left join (select to_char(to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss'), 'MM-dd') as day, W_START, B_END
from haiwei.BASE_DAY_WBTIME
where to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss') = (TRUNC(sysdate, 'D') + 3)
) wb on 1 = 1
where PRODUCTION_DATE between W_START and B_END
group by wb.day
union
select to_char((TRUNC(sysdate, 'D') + 3), 'MM-dd') as code, 0 as qty, '产量' as name
from dual
)
group by code, name
union
select code, sum(qty), name
from (
select wb.day as code, count(1) as qty, '产量' as name
from IMOS.IMOS_PR_PRODUCT_BARCODE ba
left join (select to_char(to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss'), 'MM-dd') as day, W_START, B_END
from haiwei.BASE_DAY_WBTIME
where to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss')= (TRUNC(sysdate, 'D') + 4)
) wb on 1 = 1
where PRODUCTION_DATE between W_START and B_END
group by wb.day
union
select to_char((TRUNC(sysdate, 'D') + 4), 'MM-dd') as code, 0 as qty, '产量' as name
from dual
)
group by code, name
union
select code, sum(qty), name
from (
select wb.day as code, count(1) as qty, '产量' as name
from IMOS.IMOS_PR_PRODUCT_BARCODE ba
left join (select to_char(to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss'), 'MM-dd') as day, W_START, B_END
from haiwei.BASE_DAY_WBTIME
where to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss') = (TRUNC(sysdate, 'D') + 5)
) wb on 1 = 1
where PRODUCTION_DATE between W_START and B_END
group by wb.day
union
select to_char((TRUNC(sysdate, 'D') + 5), 'MM-dd') as code, 0 as qty, '产量' as name
from dual
)
group by code, name
union
select code, sum(qty), name
from (
select wb.day as code, count(1) as qty, '产量' as name
from IMOS.IMOS_PR_PRODUCT_BARCODE ba
left join (select to_char(to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss'), 'MM-dd') as day, W_START, B_END
from haiwei.BASE_DAY_WBTIME
where to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss') = (TRUNC(sysdate, 'D') + 6)
) wb on 1 = 1
where PRODUCTION_DATE between W_START and B_END
group by wb.day
union
select to_char((TRUNC(sysdate, 'D') + 6), 'MM-dd') as code, 0 as qty, '产量' as name
from dual
)
group by code, name
union
select code, sum(qty), name
from (
select wb.day as code, count(1) as qty, '产量' as name
from IMOS.IMOS_PR_PRODUCT_BARCODE ba
left join (select to_char(to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss'), 'MM-dd') as day, W_START, B_END
from haiwei.BASE_DAY_WBTIME
where to_date(CREATE_DAY, 'yyyy-MM-dd hh:mi:ss')= (TRUNC(sysdate, 'D') + 7)
) wb on 1 = 1
where PRODUCTION_DATE between W_START and B_END
group by wb.day
union
select to_char((TRUNC(sysdate, 'D') + 7), 'MM-dd') as code, 0 as qty, '产量' as name
from dual
)
group by code, name
</select> </select>
<select id="zhou_selectQaInfo" resultType="com.ruoyi.system.domain.BoxOutput"> <select id="zhou_selectQaInfo" resultType="com.ruoyi.system.domain.BoxOutput">
@ -638,9 +909,9 @@ where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7)
substr(MATERIAL_NAME, substr(MATERIAL_NAME,
instr(MATERIAL_NAME, '-', 1, 1) + 1, instr(MATERIAL_NAME, '-', 1, 1) + 1,
case case
when instr(MATERIAL_NAME, ',', 1, 1) &lt; 6 then instr(MATERIAL_NAME, ',', 1, 2) when instr(MATERIAL_NAME, ',', 1, 2) = 0 then instr(MATERIAL_NAME, ',', 1, 1)
else instr(MATERIAL_NAME, ',', 1, 1) end-1 - instr(MATERIAL_NAME, '-', 1)) else instr(MATERIAL_NAME, ',', 1, 2) end - instr(MATERIAL_NAME, '-', 1, 1) - 1
as name_sub, ) as name_sub,
FINISH_DATE as day, FINISH_DATE as day,
round(ACTUAL_QTY / ORDER_QTY * 100, 2) as rate round(ACTUAL_QTY / ORDER_QTY * 100, 2) as rate
from IMOS_PR_ORDER from IMOS_PR_ORDER
@ -648,8 +919,27 @@ where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7)
( (
select to_char(DAY, 'yyyy-MM-dd') select to_char(DAY, 'yyyy-MM-dd')
from haiwei.BASE_PRODUCT_QTY from haiwei.BASE_PRODUCT_QTY
where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7) where DAY between
case
when
to_char(TRUNC(sysdate, 'D'), 'yyyy-MM-dd') = to_char(sysdate, 'yyyy-MM-dd')
then
(TRUNC(sysdate, 'D') -6) else
(TRUNC(sysdate, 'D') + 1) end
and
case
when
to_char(TRUNC(sysdate, 'D'), 'yyyy-MM-dd') = to_char(sysdate, 'yyyy-MM-dd')
then
TRUNC(sysdate, 'D') else
(TRUNC(sysdate, 'D') + 7) end
) )
order by FINISH_DATE order by FINISH_DATE
</select> </select>
@ -752,23 +1042,29 @@ where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7)
PRODUCTION_DATE as day, PRODUCTION_DATE as day,
(select * from (select RHYTHM from haiwei.BASE_RHYTHM where ROWNUM = 1 order by ID desc)) as rhy (select * from (select RHYTHM from haiwei.BASE_RHYTHM where ROWNUM = 1 order by ID desc)) as rhy
from IMOS.IMOS_PR_PRODUCT_BARCODE ippb from IMOS.IMOS_PR_PRODUCT_BARCODE ippb
left join (select * from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc) where ROWNUM = 1) wb on 1 = 1 left join (select * from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc) where ROWNUM = 1) wb
on 1 = 1
where ippb.PRODUCTION_DATE between case when sysdate &lt;= wb.W_END then W_START else W_END end where ippb.PRODUCTION_DATE between case when sysdate &lt;= wb.W_END then W_START else W_END end
and case when sysdate &lt; = wb.W_END then W_END else B_END end and case when sysdate
&lt; = wb.W_END then W_END else B_END end
and DETIAL_TYPE_CODE = '1004' and DETIAL_TYPE_CODE = '1004'
) )
</insert> </insert>
<select id="zz_selectLossInfo" resultType="com.ruoyi.system.domain.BoxOutput"> <select id="zz_selectLossInfo" resultType="com.ruoyi.system.domain.BoxOutput">
select ROUND(sum(ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM) / 60, 2)- select case when q1 &lt; q2 then q1 else q1 - 12 end as qty, name
from (
select ROUND(sum(ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM) / 60, 2) q1,
nvl(case nvl(case
when sysdate &gt; to_date(to_char(SYSDATE, 'yyyy-MM-dd') || '09:30:00', 'yyyy-MM-dd hh24:mi:ss') when sysdate > to_date(to_char(SYSDATE, 'yyyy-MM-dd') || '09:30:00', 'yyyy-MM-dd hh24:mi:ss')
then then
case case
when sysdate &gt; to_date(to_char(SYSDATE, 'yyyy-MM-dd') || '14:30:00', 'yyyy-MM-dd hh24:mi:ss') when sysdate >
then 60 else 30 end to_date(to_char(SYSDATE, 'yyyy-MM-dd') || '14:30:00', 'yyyy-MM-dd hh24:mi:ss')
then 60
else 30 end
end end
, 0) as qty, , 0) as q2,
1 as name 1 as name
from (select row_number() over (order by PRODUCTION_DATE) as row_number, from (select row_number() over (order by PRODUCTION_DATE) as row_number,
PRODUCTION_DATE as day PRODUCTION_DATE as day
@ -779,12 +1075,12 @@ from (select row_number() over (order by PRODUCTION_DATE) as row_number,
on 1 = 1 on 1 = 1
where ippb.PRODUCTION_DATE between where ippb.PRODUCTION_DATE between
case case
when #{state} = 1 then W_START when 1 = 1 then W_START
when #{state} = 2 then W_END end when 1 = 2 then W_END end
and and
case case
when #{state} = 1 then W_END when 1 = 1 then W_END
when #{state} = 2 then B_END end when 1 = 2 then B_END end
and DETIAL_TYPE_CODE = '1004') t1 and DETIAL_TYPE_CODE = '1004') t1
left join left join
(select row_number() over (order by PRODUCTION_DATE) as row_number, (select row_number() over (order by PRODUCTION_DATE) as row_number,
@ -796,20 +1092,18 @@ from (select row_number() over (order by PRODUCTION_DATE) as row_number,
on 1 = 1 on 1 = 1
where ippb.PRODUCTION_DATE between where ippb.PRODUCTION_DATE between
case case
when #{state} = 1 then W_START when 1 = 1 then W_START
when #{state} = 2 then W_END end when 1 = 2 then W_END end
and and
case case
when #{state} = 1 then W_END when 1 = 1 then W_END
when #{state} = 2 then B_END end when 1 = 2 then B_END end
and DETIAL_TYPE_CODE = '1004') t2 on t1.row_number = t2.row_number + 1 and DETIAL_TYPE_CODE = '1004') t2 on t1.row_number = t2.row_number + 1
left join left join
(select * from (select RHYTHM from haiwei.BASE_RHYTHM order by ID desc) where ROWNUM = 1) t3 on 1 = 1 (select * from (select RHYTHM from haiwei.BASE_RHYTHM order by ID desc) where ROWNUM = 1) t3 on 1 = 1
where 0 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM where 0 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
)
union union
select count(1) as qty, select count(1) as qty,
2 as name 2 as name
@ -895,16 +1189,19 @@ where 180 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
union union
select select case when qty &lt; 0 then 0 else qty end as qty,
case when qty &lt; 0 then 0 else qty end as qty,name name
from from (
(
select count(1) - nvl(case select count(1) - nvl(case
when sysdate &gt; to_date(to_char(SYSDATE, 'yyyy-MM-dd') || '09:30:00', 'yyyy-MM-dd hh24:mi:ss') when sysdate &gt; to_date(to_char(SYSDATE, 'yyyy-MM-dd') || '09:30:00',
'yyyy-MM-dd hh24:mi:ss')
then then
case case
when sysdate &gt; to_date(to_char(SYSDATE, 'yyyy-MM-dd') || '14:30:00', 'yyyy-MM-dd hh24:mi:ss') when sysdate &gt;
then 2 else 1 end to_date(to_char(SYSDATE, 'yyyy-MM-dd') || '14:30:00',
'yyyy-MM-dd hh24:mi:ss')
then 2
else 1 end
end end
, 0) as qty, , 0) as qty,
4 as name 4 as name
@ -942,7 +1239,8 @@ from (select row_number() over (order by PRODUCTION_DATE) as row_number,
when #{state} = 2 then B_END end when #{state} = 2 then B_END end
and DETIAL_TYPE_CODE = '1004') t2 on t1.row_number = t2.row_number + 1 and DETIAL_TYPE_CODE = '1004') t2 on t1.row_number = t2.row_number + 1
left join left join
(select * from (select RHYTHM from haiwei.BASE_RHYTHM order by ID desc) where ROWNUM = 1) t3 on 1 = 1 (select * from (select RHYTHM from haiwei.BASE_RHYTHM order by ID desc) where ROWNUM = 1) t3
on 1 = 1
where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
) )
@ -953,9 +1251,11 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
substr( substr(
MATERIAL_NAME, MATERIAL_NAME,
instr(MATERIAL_NAME, '-', 1, 1) + 1, instr(MATERIAL_NAME, '-', 1, 1) + 1,
instr(MATERIAL_NAME, ',', 1, 1) - 2 - instr(MATERIAL_NAME, '-', 1, 1) + 1) as name instr(MATERIAL_NAME, ',', 1, 2) - 2 - instr(MATERIAL_NAME, '-', 1, 1) + 1) as name
from IMOS_PR_PRODUCT_BARCODE ippb from IMOS_PR_PRODUCT_BARCODE ippb
left join (select * from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc) where ROWNUM = 1) wb left join (select *
from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc)
where ROWNUM = 1) wb
on 1 = 1 on 1 = 1
where ippb.SCAN_TIME between where ippb.SCAN_TIME between
case case
@ -967,8 +1267,7 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
group by MATERIAL_NAME group by MATERIAL_NAME
</select> </select>
<select id="mtk_selectInStore3d" resultType="com.ruoyi.system.domain.BoxOutput"> <select id="mtk_selectInStore3d" resultType="com.ruoyi.system.domain.BoxOutput">
select select substr(MATERIAL_NAME,
substr(MATERIAL_NAME,
case case
when instr(MATERIAL_NAME, '-', 1, 1) = 0 then 1 when instr(MATERIAL_NAME, '-', 1, 1) = 0 then 1
else instr(MATERIAL_NAME, '-', 1, 1) + 1 else instr(MATERIAL_NAME, '-', 1, 1) + 1
@ -990,13 +1289,17 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
<select id="selectNowXkOutPut" resultType="com.ruoyi.system.domain.BoxOutput"> <select id="selectNowXkOutPut" resultType="com.ruoyi.system.domain.BoxOutput">
select ( select (
case when case
when
TO_CHAR(SYSDATE, 'hh24') - 1 &lt; 0 TO_CHAR(SYSDATE, 'hh24') - 1 &lt; 0
then '23:30' else TO_CHAR(SYSDATE, 'hh24')-1 || ':30' end then '23:30'
else TO_CHAR(SYSDATE, 'hh24') - 1 || ':30' end
) as name, ) as name,
nvl(sum(actual_qty), 0) as qty nvl(sum(actual_qty), 0) as qty
from IMOS.IMOS_PR_PLAN xhq from IMOS.IMOS_PR_PLAN xhq
left join (select * from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc) where ROWNUM = 1) wb on 1 = 1 left join (select *
from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc)
where ROWNUM = 1) wb on 1 = 1
where to_date(xhq.START_TIME, 'yyyy-MM-dd hh24:mi:ss') between case when sysdate &lt;= wb.W_END then W_START else W_END end where to_date(xhq.START_TIME, 'yyyy-MM-dd hh24:mi:ss') between case when sysdate &lt;= wb.W_END then W_START else W_END end
and case when sysdate &lt;= wb.W_END then W_END else B_END end and case when sysdate &lt;= wb.W_END then W_END else B_END end
and plan_date is not null and plan_date is not null
@ -1007,7 +1310,9 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
<select id="selectNowXkOutPut1" resultType="int"> <select id="selectNowXkOutPut1" resultType="int">
select nvl(sum(actual_qty), 0) select nvl(sum(actual_qty), 0)
from IMOS.IMOS_PR_PLAN ipp from IMOS.IMOS_PR_PLAN ipp
left join (select * from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc) where ROWNUM = 1) wb on 1=1 left join (select *
from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc)
where ROWNUM = 1) wb on 1 = 1
where plan_date is not null where plan_date is not null
and process_code = 1002 and process_code = 1002
and delete_flag = '0' and delete_flag = '0'
@ -1040,7 +1345,9 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
</select> </select>
<select id="selectXK_H_QTY" resultType="int"> <select id="selectXK_H_QTY" resultType="int">
select * from ( select nvl(ZS_C, 0) from haiwei.XK_H_QTY order by CREATE_TIME desc) where ROWNUM=1 select *
from (select nvl(ZS_C, 0) from haiwei.XK_H_QTY order by CREATE_TIME desc)
where ROWNUM = 1
</select> </select>
<insert id="insertXK_H_QTY"> <insert id="insertXK_H_QTY">
@ -1069,7 +1376,8 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
from IMOS_PR_PRODUCT_BARCODE ippb from IMOS_PR_PRODUCT_BARCODE ippb
left join ( left join (
select W_END as day1, W_END + interval '1' HOUR as day2 select W_END as day1, W_END + interval '1' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where DETIAL_TYPE_CODE = '1004' where DETIAL_TYPE_CODE = '1004'
@ -1080,7 +1388,8 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
left join ( left join (
-- 2022-07-28 20:30:00 -- 2022-07-28 20:30:00
select W_END + interval '1' HOUR as day1, W_END + interval '2' HOUR as day2 select W_END + interval '1' HOUR as day1, W_END + interval '2' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where DETIAL_TYPE_CODE = '1004' where DETIAL_TYPE_CODE = '1004'
@ -1091,7 +1400,8 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
left join ( left join (
-- 2022-07-28 21:30:00 -- 2022-07-28 21:30:00
select W_END + interval '2' HOUR as day1, W_END + interval '3' HOUR as day2 select W_END + interval '2' HOUR as day1, W_END + interval '3' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where DETIAL_TYPE_CODE = '1004' where DETIAL_TYPE_CODE = '1004'
@ -1102,7 +1412,8 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
left join ( left join (
-- 2022-07-28 22:30:00 -- 2022-07-28 22:30:00
select W_END + interval '3' HOUR as day1, W_END + interval '4' HOUR as day2 select W_END + interval '3' HOUR as day1, W_END + interval '4' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where DETIAL_TYPE_CODE = '1004' where DETIAL_TYPE_CODE = '1004'
@ -1113,7 +1424,8 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
left join ( left join (
-- 2022-07-28 23:30:00 -- 2022-07-28 23:30:00
select W_END + interval '4' HOUR as day1, W_END + interval '5' HOUR as day2 select W_END + interval '4' HOUR as day1, W_END + interval '5' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where DETIAL_TYPE_CODE = '1004' where DETIAL_TYPE_CODE = '1004'
@ -1125,7 +1437,8 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
left join ( left join (
-- 2022-07-29 00:30:00 -- 2022-07-29 00:30:00
select W_END + interval '5' HOUR as day1, W_END + interval '6' HOUR as day2 select W_END + interval '5' HOUR as day1, W_END + interval '6' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where DETIAL_TYPE_CODE = '1004' where DETIAL_TYPE_CODE = '1004'
@ -1137,7 +1450,8 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
left join ( left join (
-- 2022-07-29 01:30:00 -- 2022-07-29 01:30:00
select W_END + interval '6' HOUR as day1, W_END + interval '7' HOUR as day2 select W_END + interval '6' HOUR as day1, W_END + interval '7' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where DETIAL_TYPE_CODE = '1004' where DETIAL_TYPE_CODE = '1004'
@ -1148,7 +1462,8 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
from IMOS_PR_PRODUCT_BARCODE ippb from IMOS_PR_PRODUCT_BARCODE ippb
left join ( left join (
select W_END + interval '7' HOUR as day1, W_END + interval '8' HOUR as day2 select W_END + interval '7' HOUR as day1, W_END + interval '8' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where DETIAL_TYPE_CODE = '1004' where DETIAL_TYPE_CODE = '1004'
@ -1158,9 +1473,9 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
select '03:30' as name, nvl(count(1), 0) as qty, 9 as ord select '03:30' as name, nvl(count(1), 0) as qty, 9 as ord
from IMOS_PR_PRODUCT_BARCODE ippb from IMOS_PR_PRODUCT_BARCODE ippb
left join ( left join (
select W_END + interval '8' HOUR as day1, W_END + interval '9' HOUR as day2 select W_END + interval '8' HOUR as day1, W_END + interval '9' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where DETIAL_TYPE_CODE = '1004' where DETIAL_TYPE_CODE = '1004'
@ -1170,9 +1485,9 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
select '04:30' as name, nvl(count(1), 0) as qty, 10 as ord select '04:30' as name, nvl(count(1), 0) as qty, 10 as ord
from IMOS_PR_PRODUCT_BARCODE ippb from IMOS_PR_PRODUCT_BARCODE ippb
left join ( left join (
select W_END + interval '9' HOUR as day1, W_END + interval '10' HOUR as day2 select W_END + interval '9' HOUR as day1, W_END + interval '10' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where DETIAL_TYPE_CODE = '1004' where DETIAL_TYPE_CODE = '1004'
@ -1182,9 +1497,9 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
select '05:30' as name, nvl(count(1), 0) as qty, 11 as ord select '05:30' as name, nvl(count(1), 0) as qty, 11 as ord
from IMOS_PR_PRODUCT_BARCODE ippb from IMOS_PR_PRODUCT_BARCODE ippb
left join ( left join (
select W_END + interval '10' HOUR as day1, W_END + interval '11' HOUR as day2 select W_END + interval '10' HOUR as day1, W_END + interval '11' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where DETIAL_TYPE_CODE = '1004' where DETIAL_TYPE_CODE = '1004'
@ -1194,9 +1509,9 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
select '06:30' as name, nvl(count(1), 0) as qty, 12 as ord select '06:30' as name, nvl(count(1), 0) as qty, 12 as ord
from IMOS_PR_PRODUCT_BARCODE ippb from IMOS_PR_PRODUCT_BARCODE ippb
left join ( left join (
select W_END + interval '11' HOUR as day1, W_END + interval '12' HOUR as day2 select W_END + interval '11' HOUR as day1, W_END + interval '12' HOUR as day2
from (select W_END, row_number() over (order by CREATE_TIME desc) as qt from haiwei.BASE_DAY_WBTIME) from (select W_END, row_number() over (order by CREATE_TIME desc) as qt
from haiwei.BASE_DAY_WBTIME)
where qt = 1 where qt = 1
) t1 on 1 = 1 ) t1 on 1 = 1
where DETIAL_TYPE_CODE = '1004' where DETIAL_TYPE_CODE = '1004'
@ -1301,14 +1616,15 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
select sum(qty) as qty, select sum(qty) as qty,
name, name,
sum(rate) as rate sum(rate) as rate
from from (select nvl(qty1, 0) as qty,
(select nvl(qty1,0) as qty,
name, name,
nvl(round((qty1 / a.qty) * 100, 2), 0) as rate nvl(round((qty1 / a.qty) * 100, 2), 0) as rate
from ( from (
select to_char(PRODUCTION_DATE, 'hh24') || ':30' as name, count(1) as qty select to_char(PRODUCTION_DATE, 'hh24') || ':30' as name, count(1) as qty
from IMOS_PR_PRODUCT_BARCODE ippb from IMOS_PR_PRODUCT_BARCODE ippb
left join (select * from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc) where ROWNUM = 1) wb left join (select *
from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc)
where ROWNUM = 1) wb
on 1 = 1 on 1 = 1
where ippb.PRODUCTION_DATE between where ippb.PRODUCTION_DATE between
case case
@ -1331,10 +1647,13 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
and to_char(CREATION_DATE, 'yyyy-MM-dd') = to_char(sysdate, 'yyyy-MM-dd') and to_char(CREATION_DATE, 'yyyy-MM-dd') = to_char(sysdate, 'yyyy-MM-dd')
group by to_char(CREATION_DATE, 'hh24')) on name = name1 group by to_char(CREATION_DATE, 'hh24')) on name = name1
union union
select 0 as qty ,case select 0 as qty,
case
when #{state} = 1 then '07:30' when #{state} = 1 then '07:30'
when #{state} = 2 then '19:30' when #{state} = 2 then '19:30'
end as name ,0 as rate from dual end as name,
0 as rate
from dual
) )
group by name group by name
order by name order by name
@ -1342,21 +1661,46 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
<select id="zz_selectInStoreTag" resultType="com.ruoyi.system.domain.BoxOutput"> <select id="zz_selectInStoreTag" resultType="com.ruoyi.system.domain.BoxOutput">
select * from (select RHYTHM as qty, '节拍' as name from haiwei.BASE_RHYTHM where ROWNUM = 1 order by ID desc) select *
from (select RHYTHM as qty, '节拍' as name from haiwei.BASE_RHYTHM where ROWNUM = 1 order by ID desc)
</select> </select>
<select id="zz_selectProductInTarget" resultType="com.ruoyi.system.domain.BoxOutput"> <select id="zz_selectProductInTarget" resultType="com.ruoyi.system.domain.BoxOutput">
-- select sum(QTY) as qty, '目标' as name -- select sum(QTY) as qty, '目标' as name
-- from haiwei.BASE_PRODUCT_QTY -- from haiwei.BASE_PRODUCT_QTY
-- where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7) -- where DAY between (TRUNC(sysdate, 'D') + 1) and (TRUNC(sysdate, 'D') + 7)
-- union -- union
select sum(QTY) as qty, '进度目标' as name -- select sum(QTY) as qty, '进度目标' as name
from haiwei.BASE_PRODUCT_QTY -- from haiwei.BASE_PRODUCT_QTY
-- where to_char(DAY, 'yyyy-MM-dd') = to_char(sysdate, 'yyyy-MM-dd')
select case
when sysdate &lt; W_END then QTY
else
case when QTY_B = 0 then QTY else QTY_B end end as qty,
'进度目标' as name
from haiwei.BASE_PRODUCT_QTY bqty
left join (select *
from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc)
where ROWNUM = 1) wb
on 1 = 1
where to_char(DAY, 'yyyy-MM-dd') = to_char(sysdate, 'yyyy-MM-dd') where to_char(DAY, 'yyyy-MM-dd') = to_char(sysdate, 'yyyy-MM-dd')
union union
select count(1) as qty, '实际' as name select count(1) as qty, '实际' as name
from IMOS.IMOS_PR_PRODUCT_BARCODE from IMOS.IMOS_PR_PRODUCT_BARCODE
where to_char(PRODUCTION_DATE, 'yyyy-MM-dd') = to_char(sysdate, 'yyyy-MM-dd') where to_char(PRODUCTION_DATE, 'yyyy-MM-dd') = to_char(sysdate, 'yyyy-MM-dd')
</select> </select>
<select id="zz_countNightProductInTag" resultType="integer">
select case
when sysdate &lt; W_END then 0
else QTY_B
end as qty
from haiwei.BASE_PRODUCT_QTY bqty
left join (select *
from (select * from haiwei.BASE_DAY_WBTIME order by CREATE_TIME desc)
where ROWNUM = 1) wb
on 1 = 1
where to_char(DAY, 'yyyy-MM-dd') = to_char(sysdate, 'yyyy-MM-dd')
</select>
<select id="zz_selectInStoreOrderInfo" resultType="com.ruoyi.system.domain.OrderInfo"> <select id="zz_selectInStoreOrderInfo" resultType="com.ruoyi.system.domain.OrderInfo">
select ippi.ORDER_NO as plan_code, select ippi.ORDER_NO as plan_code,
@ -1372,7 +1716,8 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
ippi.CREATION_DATE as day ippi.CREATION_DATE as day
from IMOS_PR_PRODUCT_IN ippi from IMOS_PR_PRODUCT_IN ippi
left join IMOS.IMOS_PR_ORDER po on ippi.ORDER_NO = po.ORDER_NO left join IMOS.IMOS_PR_ORDER po on ippi.ORDER_NO = po.ORDER_NO
where to_char(ippi.CREATION_DATE, 'yyyy-MM-dd') = to_char(sysdate, 'yyyy-MM-dd') and ippi. DELETE_FLAG=0 where to_char(ippi.CREATION_DATE, 'yyyy-MM-dd') = to_char(sysdate, 'yyyy-MM-dd')
and ippi.DELETE_FLAG = 0
</select> </select>
<select id="mtk_selectOrderInfoBy3dTatle" resultType="com.ruoyi.system.domain.BoxOutput"> <select id="mtk_selectOrderInfoBy3dTatle" resultType="com.ruoyi.system.domain.BoxOutput">
@ -1408,7 +1753,8 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
from ( from (
select DAY, ROWNUM as qt select DAY, ROWNUM as qt
from haiwei.BASE_PRODUCT_QTY from haiwei.BASE_PRODUCT_QTY
where DAY &lt; to_date(to_char(SYSDATE, 'yyyy-MM-dd') || '00:00:00', 'yyyy-MM-dd hh24:mi:ss') where DAY &lt; to_date(to_char(SYSDATE, 'yyyy-MM-dd') || '00:00:00',
'yyyy-MM-dd hh24:mi:ss')
order by DAY desc) order by DAY desc)
where qt &lt; 4) where qt &lt; 4)
and ORDER_QTY - ACTUAL_QTY &lt; 6 and ORDER_QTY - ACTUAL_QTY &lt; 6
@ -1421,10 +1767,12 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
from ( from (
select DAY, ROWNUM as qt select DAY, ROWNUM as qt
from haiwei.BASE_PRODUCT_QTY from haiwei.BASE_PRODUCT_QTY
where DAY &lt; to_date(to_char(SYSDATE, 'yyyy-MM-dd') || '00:00:00', 'yyyy-MM-dd hh24:mi:ss') where DAY &lt; to_date(to_char(SYSDATE, 'yyyy-MM-dd') || '00:00:00',
'yyyy-MM-dd hh24:mi:ss')
order by DAY desc) order by DAY desc)
where qt &lt; 4) where qt &lt; 4)
) * 100, 2) as qty, '清单率' as name ) * 100, 2) as qty,
'清单率' as name
from DUAL from DUAL
union union
select count(1) as qty, '入库订单统计' as name select count(1) as qty, '入库订单统计' as name
@ -1505,7 +1853,9 @@ where 600 &lt; ROUND(TO_NUMBER(t1.day - t2.day) * 24 * 60 * 60) - t3.RHYTHM
</select> </select>
<select id="zz_selectOneBadRateMb" resultType="com.ruoyi.system.domain.BoxOutput"> <select id="zz_selectOneBadRateMb" resultType="com.ruoyi.system.domain.BoxOutput">
select * from (select rate,'不合格率目标' from haiwei.BASE_ONE_UNQUQLIFIED_RATE order by CREATE_TIME desc) where ROWNUM=1 select *
from (select rate, '不合格率目标' from haiwei.BASE_ONE_UNQUQLIFIED_RATE order by CREATE_TIME desc)
where ROWNUM = 1
</select> </select>
<select id="zz_countNightProductIn" resultType="integer"> <select id="zz_countNightProductIn" resultType="integer">
select count(1) select count(1)

@ -17,11 +17,18 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">目标数量:</label> <label class="col-sm-3 control-label">白班目标数量:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="qty" class="form-control" type="text"> <input name="qty" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">夜班目标数量:</label>
<div class="col-sm-8">
<input name="qtyB" class="form-control" type="text">
</div>
</div>
</form> </form>
</div> </div>
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />

@ -72,8 +72,13 @@
}, },
{ {
field: 'qty', field: 'qty',
title: '目标数量' title: '白班目标数量'
}, },
{
field: 'qtyB',
title: '夜班目标数量'
},
{ {
field: 'createTime', field: 'createTime',
title: '创建时间' title: '创建时间'

@ -18,11 +18,18 @@
<!-- </div>--> <!-- </div>-->
<!-- </div>--> <!-- </div>-->
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">目标数量:</label> <label class="col-sm-3 control-label">白班目标数量:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="qty" th:field="*{qty}" class="form-control" type="text"> <input name="qty" th:field="*{qty}" class="form-control" type="text">
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label">夜班目标数量:</label>
<div class="col-sm-8">
<input name="qtyB" th:field="*{qtyB}" class="form-control" type="text">
</div>
</div>
</form> </form>
</div> </div>
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />

Loading…
Cancel
Save