From 9816a92526cca62e0ea9cb13d71712273f21a83e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=99=93=E8=BF=AA?= <2596750866@qq.com> Date: Thu, 20 Feb 2025 17:18:28 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E9=A6=96=E9=A1=B5=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E6=88=90=E5=93=81=E6=96=99=E5=8F=B7?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E5=88=86=E6=9E=90=E5=9B=BE=E8=A1=A8=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=EF=BC=8C=E6=B7=BB=E5=8A=A0=E6=9F=A5=E8=AF=A2=E6=96=B9?= =?UTF-8?q?=E6=B3=95=EF=BC=9B=20=E4=BF=AE=E6=94=B9=E5=91=A8=E4=BA=A7?= =?UTF-8?q?=E9=87=8F=E5=9B=BE=E8=A1=A8=E5=AE=9A=E4=B9=89=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=9F=A5=E8=AF=A2=E6=96=B9=E6=B3=95=E5=8F=8A=E5=9B=BE?= =?UTF-8?q?=E8=A1=A8=E6=95=B0=E6=8D=AE=E6=B8=B2=E6=9F=93=E6=96=B9=E6=B3=95?= =?UTF-8?q?=EF=BC=9B=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E5=8F=8A=E6=97=A5=E6=9C=9F=E6=A0=BC=E5=BC=8F=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=9B=20=E4=BF=AE=E6=94=B9=E4=B8=BB?= =?UTF-8?q?=E9=A1=B5=E4=B8=AA=E4=BA=BA=E4=B8=AD=E5=BF=83=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E4=B8=BA=E5=BD=93=E5=89=8D=E7=99=BB=E5=BD=95=E5=90=8D=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/templates/index.html | 2 +- .../src/main/resources/templates/main.html | 624 +++++++++++++----- 2 files changed, 468 insertions(+), 158 deletions(-) diff --git a/ruoyi-admin/src/main/resources/templates/index.html b/ruoyi-admin/src/main/resources/templates/index.html index c9451405..7b5ab723 100644 --- a/ruoyi-admin/src/main/resources/templates/index.html +++ b/ruoyi-admin/src/main/resources/templates/index.html @@ -181,7 +181,7 @@
  • - -
    +
    +
    成品料号分析统计
    -
    -

    - - - -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    料号物料名称占比
    3325454555yk测试-原材料80%
    1000000000yk测试-原材料267%
    3325454564yk测试-原材料398%
    3325454554yk测试-原材料458%
    + +
    +

    + - + +

    +
    + +
    + + + + + + + + + + + + +
    料号物料名称占比
    +
    -
    +
    周产量
    -

    - - -

    -
    +
    +

    + - + +

    +
    + +
    - +
    @@ -106,7 +99,7 @@ 生产订单 料号 - 物业名称 + 物料名称 业务部 工程部 采购部 @@ -170,6 +163,46 @@ + + // + function getFinalProduct(limit = null){ + var beginDate = $("#finalProductBeginTime").val(); + var endDate = $("#finalProductEndTime").val(); + + var data = { + beginDate: beginDate, + endDate: endDate, + } + if(limit != null){ + data.limit = limit + } + $.ajax({ + url: '/system/makeorderbom/getIndexList', + method: 'GET', + data: data, + dataType: 'json', + success: function(responseData) { + var tbody = $('#materialTable tbody'); + tbody.empty(); // 清空现有内容 + // 遍历数据并生成表格行 + responseData.forEach(function(item) { + var row = ` + ${item.materialNo} + ${item.materialName} + ${item.orderRate}% + `; + tbody.append(row); + }); + if(responseData.length === 0){ + console.log("response:"+responseData.length); + var row = `该段时间内暂无物料数据`; + tbody.append(row); + } + }, + error: function(error) { + console.error('Error fetching data:', error); + } + }); + + } + + /*获取时间段(根据自然周划分)*/ + function getWeekRangesPastMonth() { + const result = []; + + var weekStartStr = $("#productionBeginTime").val(); + var weekStart = new Date(weekStartStr); + var weekEndStr = $("#productionEndTime").val(); + var weekEndTime = new Date(weekEndStr); + + // 检查是否成功创建了Date对象 + if (isNaN(weekStart.getTime())||isNaN(weekEndTime.getTime())) { + console.error("无法识别的日期格式,请确保输入正确的日期。"); + } else { + // 计算该日期所在周的第一天(即星期一) + const dayOfWeekStart = weekStart.getDay() || 7; // 如果是周日,则返回7 + weekStart.setDate(weekStart.getDate() - (dayOfWeekStart - 1)); + } + + while (weekStart < weekEndTime) { + const weekEnd = new Date(weekStart.getTime() + (6 * 24 * 60 * 60 * 1000)); // 每周结束于周日 + // 如果周末超过了当前日期,则调整为当前日期 + if (weekEnd > nowDate) { + weekEnd.setTime(nowDate.getTime()); + } + result.push({ + start: new Date(weekStart), // 使用new Date确保日期对象是独立的 + end: new Date(weekEnd) + }); + // 移动到下一周 + weekStart.setDate(weekStart.getDate() + 7); + } + return result; + } + + /*获取周产量*/ + function getWeekProduction(){ + const weekRanges = getWeekRangesPastMonth(); + var weekRangeStr = []; + weekRanges.forEach(week => { + var weekStr = formatDateWithoutYear(week.start) + '~' + formatDateWithoutYear(week.end); + weekRangeStr.push(weekStr); + }); + classificationPassRate.setOption({ + xAxis: { + data: weekRangeStr // 更新 x 轴的数据 + }, + }); + + var beginDate = $("#productionBeginTime").val(); + var endDate = $("#productionEndTime").val(); + + var data = { + beginDate: beginDate, + endDate: endDate, + } + var increments = []; + $.ajax({ + url: '/warehouse/storageOrder/getIndexList', + method: 'GET', + data: data, + dataType: 'json', + success: function(responseData) { + increments.push(0); + for (var i = 1; i < responseData.length; i++) { + var increment = responseData[i] - responseData[i - 1]; + increments.push(increment); + } + classificationPassRate.setOption({ + series:[ + { + name: "增量", + type: "line", + smooth: false, // 线条是否平滑 + itemStyle: { + normal: { + color: "#23c6c8", + label: { + show: true, + position: "top", + formatter: function(p) { + return p.value > 0 ? (p.value) : ''; + } + } + } + }, + data: increments, + }, + { + name: '数量', + data: responseData + } + ] + }); + }, + error: function(error) { + console.error('Error fetching data:', error); + } + }); + } + + + function initWeekProductionChart(){ + var classificationPassRateDom = document.getElementById('classificationPassRate'); + classificationPassRate = echarts.init(classificationPassRateDom, null, { + renderer: 'canvas', + useDirtyRect: false + }); + var classificationPassRateOption = { + title: { + textStyle: { + align: 'center', + color: '#fff', + fontSize: 20, + }, + top: '5%', + left: '5%', + }, + tooltip: { + trigger: "axis", + axisPointer: { + type: "shadow", + label: { + show: true + } + } + }, + xAxis: { + name:'时间', + type: 'category', + data: [], + axisTick: {show:true}, + axisLabel: { + show: true, + fontSize: 10, //设置坐标轴文本标签的字体大小 + }, + axisLine: { + symbol: ['none','arrow'], + symbolSize: [4, 4], + show: true, //隐藏X轴轴线 + /*lineStyle: { + color: 'blue' + }*/ + }, + }, + yAxis: { + name:'数量', + top: "1%", + axisTick: { + show: true //隐藏X轴刻度 + }, + type: 'value', + axisLabel: { + show: true, + fontSize: 10, //设置坐标轴文本标签的字体大小 + }, + axisLine: { + symbol: ['none','arrow'], + symbolSize: [4, 4], + show: true, //隐藏X轴轴线 + /*lineStyle: { + color: 'blue' + }*/ + }, + }, + legend: { + data: ["增量", "数量"], + right:"1%", + top: "1%", + textStyle: { + color: "black" + } + }, + grid: { + left: '3%', + right: '4%', + bottom: '15%', + containLabel: true + }, + dataZoom: [ + { + type: 'slider', // 滑动条型数据区域缩放组件 + startValue: 0, // 初始时显示的第一个柱子的索引 + endValue: 3, // 初始时显示的最后一个柱子的索引(即前4个柱子) + height: 10, + top: '85%', // 将滑动条放置在图表下方 + showDataShadow: false, + textStyle: false, + }, + { + type: 'inside', // 支持鼠标滚轮和触控板缩放和平移 + startValue: 0, + endValue: 3, + showDataShadow: false, + } + ], + series: [ + { + name: "增量", + type: "line", + itemStyle: { + normal: { + color: "#23c6c8", + label: { + show: true, + position: "top", + formatter: function(p) { + return p.value > 0 ? (p.value) : ''; + } + } + } + }, + }, + { + name: "数量", + type: "bar", + barWidth: '20%', + areaStyle:{ + color: "black" + }, + itemStyle: { + normal: { + color:"#1c84c6" + } + }, + } + ] + }; + if (classificationPassRateOption && typeof classificationPassRateOption === 'object') { + classificationPassRate.setOption(classificationPassRateOption); + } + window.addEventListener('resize', classificationPassRate.resize); + } + + - +