From 614ac98b652339f43a12aef88476c6fde8c078bc Mon Sep 17 00:00:00 2001 From: ICEC <414933307@qq.com> Date: Fri, 17 Jul 2020 11:03:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=B1=E4=B8=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/sd_dashboard/sd_changemouldtime.js | 25 + ruoyi-ui/src/api/sd_dashboard/sd_dashboard.js | 38 + ruoyi-ui/src/api/sd_dashboard/sd_density.js | 29 + .../src/api/sd_dashboard/sd_technologist.js | 108 ++ ruoyi-ui/src/permission.js | 128 +-- .../fx_dashboard/dashboard_current_show.vue | 758 ++++++++++++++ .../views/sd_dashboard/dashboard_30day.vue | 718 +++++++++++++ .../views/sd_dashboard/dashboard_current.vue | 804 +++++++++++++++ .../sd_dashboard/dashboard_daterange.vue | 952 ++++++++++++++++++ .../views/sd_dashboard/dashboard_group.vue | 781 ++++++++++++++ .../views/sd_dashboard/dashboard_lastday.vue | 722 +++++++++++++ .../src/views/sd_density/sd_density_30d.vue | 194 ++++ .../src/views/sd_density/sd_density_72h.vue | 196 ++++ .../sd_density/sd_density_date_range.vue | 261 +++++ .../src/views/sd_density/sd_density_group.vue | 189 ++++ .../db/mssql/DB_Ajax_DashBoard_48102.java | 61 ++ .../com/ruoyi/db/sd_mssql/DB_8053_Test.java | 139 +++ .../db/sd_mssql/DB_Ajax_DashBoard_8053.java | 374 +++++++ ...B_Ajax_DashBoard_ChangeMouldTime_8053.java | 201 ++++ .../DB_Ajax_DashBoard_Density_8053.java | 284 ++++++ .../DB_Ajax_DashBoard_Technologist_8053.java | 556 ++++++++++ .../project/sd_changemouldtime/banner.txt | 24 + .../SDChangeMouldTimeController.java | 43 + .../com/ruoyi/project/sd_dashboard/banner.txt | 24 + .../controller/SDDashBoardController.java | 54 + .../sd_density/SDDensityController.java | 49 + ruoyi/src/main/resources/application.yml | 2 +- 27 files changed, 7649 insertions(+), 65 deletions(-) create mode 100644 ruoyi-ui/src/api/sd_dashboard/sd_changemouldtime.js create mode 100644 ruoyi-ui/src/api/sd_dashboard/sd_dashboard.js create mode 100644 ruoyi-ui/src/api/sd_dashboard/sd_density.js create mode 100644 ruoyi-ui/src/api/sd_dashboard/sd_technologist.js create mode 100644 ruoyi-ui/src/views/fx_dashboard/dashboard_current_show.vue create mode 100644 ruoyi-ui/src/views/sd_dashboard/dashboard_30day.vue create mode 100644 ruoyi-ui/src/views/sd_dashboard/dashboard_current.vue create mode 100644 ruoyi-ui/src/views/sd_dashboard/dashboard_daterange.vue create mode 100644 ruoyi-ui/src/views/sd_dashboard/dashboard_group.vue create mode 100644 ruoyi-ui/src/views/sd_dashboard/dashboard_lastday.vue create mode 100644 ruoyi-ui/src/views/sd_density/sd_density_30d.vue create mode 100644 ruoyi-ui/src/views/sd_density/sd_density_72h.vue create mode 100644 ruoyi-ui/src/views/sd_density/sd_density_date_range.vue create mode 100644 ruoyi-ui/src/views/sd_density/sd_density_group.vue create mode 100644 ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_8053_Test.java create mode 100644 ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_8053.java create mode 100644 ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_ChangeMouldTime_8053.java create mode 100644 ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_Density_8053.java create mode 100644 ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_Technologist_8053.java create mode 100644 ruoyi/src/main/java/com/ruoyi/project/sd_changemouldtime/banner.txt create mode 100644 ruoyi/src/main/java/com/ruoyi/project/sd_changemouldtime/controller/SDChangeMouldTimeController.java create mode 100644 ruoyi/src/main/java/com/ruoyi/project/sd_dashboard/banner.txt create mode 100644 ruoyi/src/main/java/com/ruoyi/project/sd_dashboard/controller/SDDashBoardController.java create mode 100644 ruoyi/src/main/java/com/ruoyi/project/sd_density/SDDensityController.java diff --git a/ruoyi-ui/src/api/sd_dashboard/sd_changemouldtime.js b/ruoyi-ui/src/api/sd_dashboard/sd_changemouldtime.js new file mode 100644 index 000000000..1b8d34e05 --- /dev/null +++ b/ruoyi-ui/src/api/sd_dashboard/sd_changemouldtime.js @@ -0,0 +1,25 @@ +import request from '@/utils/request' + +// 查询服务器详细 +export function getChangeMouldTimeList() { + return request({ + url: '/sd_changemouldtime/list', + method: 'get' + }) +} + + +export function getDateRangeChangeMouldTime(fDateStart, fDateEnd) { + return request({ + url: '/sd_changemouldtime/rangetimeavg/' + fDateStart + '/' + fDateEnd, + method: 'get' + }) +} + + +export function DoGetChangeMouldTimeListDateRange(fDateStart, fDateEnd) { + return request({ + url: '/sd_changemouldtime/DoGetChangeMouldTimeListDateRange/' + fDateStart + '/' + fDateEnd, + method: 'get' + }) +} diff --git a/ruoyi-ui/src/api/sd_dashboard/sd_dashboard.js b/ruoyi-ui/src/api/sd_dashboard/sd_dashboard.js new file mode 100644 index 000000000..df299a66d --- /dev/null +++ b/ruoyi-ui/src/api/sd_dashboard/sd_dashboard.js @@ -0,0 +1,38 @@ +import request from '@/utils/request' + +// 查询服务器详细 +export function getDashboardGroup() { + return request({ + url: '/sd_dashboard/group', + method: 'get' + }) +} +export function getLastDay() { + return request({ + url: '/sd_dashboard/lastday', + method: 'get' + }) +} +export function get30Day() { + return request({ + url: '/sd_dashboard/30day', + method: 'get' + }) +} + +export function getcurrent() { + return request({ + url: '/sd_dashboard/current', + method: 'get' + }) +} + +export function getDateRange(fDateStart,fDateEnd) { + + + return request({ + url: '/sd_dashboard/daterange/'+fDateStart+'/'+fDateEnd, + method: 'get' + }) +} + diff --git a/ruoyi-ui/src/api/sd_dashboard/sd_density.js b/ruoyi-ui/src/api/sd_dashboard/sd_density.js new file mode 100644 index 000000000..85160a562 --- /dev/null +++ b/ruoyi-ui/src/api/sd_dashboard/sd_density.js @@ -0,0 +1,29 @@ +import request from '@/utils/request' + +// 查询服务器详细 +export function getDensity30Day() { + return request({ + url: '/sd_density/30day', + method: 'get' + }) +} +export function getDensity72h() { + return request({ + url: '/sd_density/72h', + method: 'get' + }) +} +export function getDensityGroup() { + return request({ + url: '/sd_density/group', + method: 'get' + }) +} + + +export function getDensityDataRange(fDateStart,fDateEnd) { + return request({ + url: '/sd_density/getDensityDataRange/'+fDateStart+'/'+fDateEnd, + method: 'get' + }) +} diff --git a/ruoyi-ui/src/api/sd_dashboard/sd_technologist.js b/ruoyi-ui/src/api/sd_dashboard/sd_technologist.js new file mode 100644 index 000000000..92fd6ba13 --- /dev/null +++ b/ruoyi-ui/src/api/sd_dashboard/sd_technologist.js @@ -0,0 +1,108 @@ +import request from '@/utils/request' + +// 查询服务器详细 +export function getConfirmation() { + return request({ + url: '/fx_technologist/getConfirmation', + method: 'get' + }) +} + + +export function getBestODM() { + return request({ + url: '/fx_technologist/getBestODM', + method: 'get' + }) +} + + +export function getBestOEM() { + return request({ + url: '/fx_technologist/getBestOEM', + method: 'get' + }) +} + +export function getFinishedSampleAvgDay() { + return request({ + url: '/fx_technologist/getFinishedSampleAvgDay', + method: 'get' + }) +} + + +export function getUnFinishedSampleAvgDay() { + return request({ + url: '/fx_technologist/getUnFinishedSampleAvgDay', + method: 'get' + }) +} + +export function DayFinishedSampleOrder() { + return request({ + url: '/fx_technologist/DayFinishedSampleOrder', + method: 'get' + }) +} + + +export function DayNewMould() { + return request({ + url: '/fx_technologist/DayNewMould', + method: 'get' + }) +} + +export function DayFinishedSample() { + return request({ + url: '/fx_technologist/DayFinishedSample', + method: 'get' + }) +} + + +export function DayFinishedBOM() { + return request({ + url: '/fx_technologist/DayFinishedBOM', + method: 'get' + }) +} + + +export function ALL() { + return request({ + url: '/fx_technologist/All', + method: 'get' + }) +} + + +export function AllDataDataRange(fDateStart,fDateEnd) { + return request({ + url: '/fx_technologist/AllDataDataRange/'+fDateStart+'/'+fDateEnd, + method: 'get' + }) +} + +export function getBestHunsha() { + return request({ + url: '/fx_technologist/getBestHunsha', + method: 'get' + }) +} + + +export function getBestJiancai() { + return request({ + url: '/fx_technologist/getBestJiancai', + method: 'get' + }) +} + +export function getBestHuakuang() { + return request({ + url: '/fx_technologist/getBestHuakuang', + method: 'get' + }) +} diff --git a/ruoyi-ui/src/permission.js b/ruoyi-ui/src/permission.js index 17e5b3d54..00c2f3ee4 100644 --- a/ruoyi-ui/src/permission.js +++ b/ruoyi-ui/src/permission.js @@ -1,64 +1,64 @@ -import router from './router' -import store from './store' -import { Message } from 'element-ui' -import NProgress from 'nprogress' -import 'nprogress/nprogress.css' -import { getToken } from '@/utils/auth' - -NProgress.configure({ showSpinner: false }) - -const whiteList = ['/login', '/auth-redirect', '/bind', '/register'] - -router.beforeEach((to, from, next) => { - NProgress.start() - if (getToken()) { - /* has token*/ - if (to.path === '/login') { - next({ path: '/' }) - NProgress.done() - } else { - if (store.getters.roles.length === 0) { - // 判断当前用户是否已拉取完user_info信息 - store.dispatch('GetInfo').then(res => { - // 拉取user_info - const roles = res.roles - store.dispatch('GenerateRoutes', { roles }).then(accessRoutes => { - // 测试 默认静态页面 - // store.dispatch('permission/generateRoutes', { roles }).then(accessRoutes => { - // 根据roles权限生成可访问的路由表 - router.addRoutes(accessRoutes) // 动态添加可访问路由表 - next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 - }) - }) - .catch(err => { - store.dispatch('FedLogOut').then(() => { - Message.error(err) - next({ path: '/' }) - }) - }) - } else { - next() - // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓ - // if (hasPermission(store.getters.roles, to.meta.roles)) { - // next() - // } else { - // next({ path: '/401', replace: true, query: { noGoBack: true }}) - // } - // 可删 ↑ - } - } - } else { - // 没有token - if (whiteList.indexOf(to.path) !== -1) { - // 在免登录白名单,直接进入 - next() - } else { - next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 - NProgress.done() - } - } -}) - -router.afterEach(() => { - NProgress.done() -}) +import router from './router' +import store from './store' +import { Message } from 'element-ui' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' +import { getToken } from '@/utils/auth' + +NProgress.configure({ showSpinner: false }) + +const whiteList = ['/login', '/auth-redirect', '/bind', '/register'] + +router.beforeEach((to, from, next) => { + NProgress.start() + if (getToken()) { + /* has token*/ + if (to.path === '/login') { + next({ path: '/' }) + NProgress.done() + } else { + if (store.getters.roles.length === 0) { + // 判断当前用户是否已拉取完user_info信息 + store.dispatch('GetInfo').then(res => { + // 拉取user_info + const roles = res.roles + store.dispatch('GenerateRoutes', { roles }).then(accessRoutes => { + // 测试 默认静态页面 + // store.dispatch('permission/generateRoutes', { roles }).then(accessRoutes => { + // 根据roles权限生成可访问的路由表 + router.addRoutes(accessRoutes) // 动态添加可访问路由表 + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 + }) + }) + .catch(err => { + store.dispatch('FedLogOut').then(() => { + Message.error(err) + next({ path: '/' }) + }) + }) + } else { + next() + // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓ + // if (hasPermission(store.getters.roles, to.meta.roles)) { + // next() + // } else { + // next({ path: '/401', replace: true, query: { noGoBack: true }}) + // } + // 可删 ↑ + } + } + } else { + // 没有token + if (whiteList.indexOf(to.path) !== -1) { + // 在免登录白名单,直接进入 + next() + } else { + next(`/login?redirect=${to.fullPath}`) // 否则全部重定向到登录页 + NProgress.done() + } + } +}) + +router.afterEach(() => { + NProgress.done() +}) diff --git a/ruoyi-ui/src/views/fx_dashboard/dashboard_current_show.vue b/ruoyi-ui/src/views/fx_dashboard/dashboard_current_show.vue new file mode 100644 index 000000000..af29aa148 --- /dev/null +++ b/ruoyi-ui/src/views/fx_dashboard/dashboard_current_show.vue @@ -0,0 +1,758 @@ +<template> + <div class="dashboard-editor-container"> + + + + <el-row :gutter="32"> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_zhengpin_avg" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">正品率</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_change_moulding_time" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">平均换模时间</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_density" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">平均密度</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_energy_avg" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">产能达标率</h2> + </div> + </el-col> + </el-row> + + <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> + <div class="ibox "> + <div class="ibox-title"> + <h5>产线明细 </h5> + </div> + <div class="ibox-content"> + <el-table + :data="tableData" + stripe + border + style="width: 100%"> + <el-table-column + prop="Line" + label="线号" + width="50"> + </el-table-column> + <el-table-column + prop="ChangeMould" + label="是否换模中"> + <template scope="scope"> + <span v-if="scope.row.ChangeMould" style="color:red">换模中</span> + <span v-else style="color: #37B328">否</span> + </template> + </el-table-column> + <el-table-column + prop="SoCode" + label="订单号"> + </el-table-column> + <el-table-column + prop="MouldingStyleCode" + label="框型"> + </el-table-column> + <el-table-column + prop="FinishedQuantity" + label="完成箱数"> + </el-table-column> + <el-table-column + prop="Quantity" + label="订单箱数"> + </el-table-column> + <el-table-column + prop="NormalCapacity" + label="标准产能"> + </el-table-column> + <el-table-column + prop="currentspeed" + label="牵引产能"> + </el-table-column> + <el-table-column + prop="CapacityStandardObtainedRate" + label="产能达标率"> + </el-table-column> + <el-table-column + prop="CurrentYield" + label="当班正品率"> + </el-table-column> + <el-table-column + prop="ChangeMouldTime" + label="换模用时"> + </el-table-column> + <el-table-column + prop="Person" + label="人员"> + </el-table-column> + <el-table-column + prop="LastUpdateDate" + label="最后操作时间"> + </el-table-column> + + </el-table> + </div> + </div> + </el-row> + + </div> +</template> + +<script> + import echarts from 'echarts' + + require('echarts/theme/macarons') // echarts theme + import resize from '../dashboard/mixins/resize' + import {getcurrent} from '@/api/dashboard/fxdashboard' + + let lineChartData = { + xAxisData: [], + actualData: [] + } + + export default { + mixins: [resize], + name: 'density30day', + data() { + return { + tableData: [] + } + }, + + created() { + this.getData() + + }, + mounted() { + + + }, + methods: { + getData() { + + + getcurrent().then(response => { + console.log(response); + var j,k; + var avg_zhengpin_avg = 0; + var avg_density = 0; + var avg_energy_avg = 0; + var avg_chang_moulding_time = 0; + var sum_quantity = 0; + var sum_currentfinishedquantity = 0; + j = 0; + k = 0; + + + var data_ajax = JSON.parse(response.msg); + response.data = data_ajax; + + for (var i = 0; i < response.data.length; i++) { + lineChartData.xAxisData.push((response.data[i].time + '').replace(' 00:00:00.0', '')) + lineChartData.actualData.push(parseFloat(response.data[i].density).toFixed(4)) + + + this.tableData.push({ + ChangeMould: response.data[i].ChangeMould, + Line: response.data[i].Line, + MouldingStyleCode: response.data[i].MouldingStyleCode, + FinishedQuantity: response.data[i].FinishedQuantity, + GroupProcessTime: (response.data[i].GroupTime * 1) - (response.data[i].GroupChangeMouldTime * 1), + NormalCapacity: response.data[i].NormalCapacity * 2, + currentspeed: (response.data[i].Speed * 60 * 60 * 24).toFixed(0), + CapacityStandardObtainedRate: (response.data[i].CapacityStandardObtainedRate * 100).toFixed(2) + '%', + CurrentYield: (response.data[i].CurrentYield * 100).toFixed(2) + '%', + SoCode: response.data[i].SoCode, + ChangeMouldTime: response.data[i].ChangeMouldTime, + Person: response.data[i].OperatePersonName, + Quantity: response.data[i].Quantity, + LastUpdateDate: response.data[i].LastUpdateDate + + + }) + + if (data_ajax[i].ChangeMouldTime !== 0) { + avg_chang_moulding_time = avg_chang_moulding_time + (data_ajax[i].ChangeMouldTime) * 1; + j = j + 1; + } + + if (data_ajax[i].CurrentYield <= 1.2 && data_ajax[i].CurrentYield !== 0 && data_ajax[i].CurrentYield >= 0.3) { + avg_zhengpin_avg = avg_zhengpin_avg + (data_ajax[i].CurrentYield) * 1; + k = k + 1; + } + + avg_density = parseFloat(avg_density) + parseFloat(data_ajax[i].AvgDensity); + + avg_energy_avg = avg_energy_avg + (data_ajax[i].CapacityStandardObtainedRate ); + + + sum_quantity = 2000; + + sum_currentfinishedquantity = sum_currentfinishedquantity + (data_ajax[i].FinishedQuantity) * 1; + + } + + const chart_energy_avg = echarts.init(document.getElementById("chart_energy_avg")); + const chart_zhengpin_avg = echarts.init(document.getElementById("chart_zhengpin_avg")); + const chart_density = echarts.init(document.getElementById("chart_density")); + const chart_change_moulding_time = echarts.init(document.getElementById("chart_change_moulding_time")); + + + option_zhengpin_avg.series[0].data[0].value = (avg_zhengpin_avg / k * 100).toFixed(0); + chart_zhengpin_avg.setOption(option_zhengpin_avg, true); + + option_density.series[0].data[0].value = (avg_density / data_ajax.length).toFixed(3); + chart_density.setOption(option_density, true); + + option_change_moulding_time.series[0].data[0].value = (avg_chang_moulding_time / j).toFixed(0); + chart_change_moulding_time.setOption(option_change_moulding_time, true); + + option_energy_avg.series[0].data[0].value = (avg_energy_avg / data_ajax.length * 100).toFixed(0); + chart_energy_avg.setOption(option_energy_avg, true); + + }) + } + } + + } + + + var colorTemplate_energy_avg = [//50-85 85-100 100-120 + [0.5, "rgba(255,0,0,0.8)"], + [5 / 7, "rgba(0,180,0,0.8)"], + [1, "rgba(0,200,250,0.8)"] + ]; + var colorTemplate_zhengpin_avg = [//50-75 75-85 85-100 + [6 / 10, "rgba(255,0,0,0.8)"], + [7 / 10, "rgba(0,180,0,0.8)"], + [1, "rgba(0,200,250,0.8)"] + ]; + var colorTemplate_density = [//0.4-0.42 红 0.4-0.38 0.38-0.36 + [1 / 3, "rgba(0,200,250,0.8)"], + [2 / 3, "rgba(0,180,0,0.8)"], + [1, "rgba(255,0,0,0.8)"] + ]; + var colorTemplate_change_moulding_time = [ //30-70 蓝 70-90 绿 90-120 红 + [4 / 9, "rgba(0,200,250,0.8)"], + [6 / 9, "rgba(0,180,0,0.8)"], + [1, "rgba(255,0,0,0.8)"] + ]; + + + var data_energy_avg = [{ + // name: "产能达标率", + value: 50, + }]; + + var data_zhengpin_avg = [{ + // name: "正品率", + value: 0, + }]; + var data_density = [{ + // name: "密度", + value: 0, + }]; + var data_change_moulding_time = [{ + // name: "换模时间", + value: 0, + }]; + + // 指定图表的配置项和数据 + var option_energy_avg = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 50, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 120, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 7, // 仪表盘刻度的分割段数,默认 10。 + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_energy_avg, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}%", // 格式化函数或者字符串 + }, + + data: data_energy_avg + }] + + }; + // 指定图表的配置项和数据 + var option_zhengpin_avg = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 50, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 100, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 5, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_zhengpin_avg, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}%", // 格式化函数或者字符串 + }, + + data: data_zhengpin_avg + }] + + }; + // 指定图表的配置项和数据 + var option_density = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{c}", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 0.36, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 0.42, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 6, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_density, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}", // 格式化函数或者字符串 + }, + + data: data_density + }] + + }; + // 指定图表的配置项和数据 + var option_change_moulding_time = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 30, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 120, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 9, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_change_moulding_time, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}", // 格式化函数或者字符串 + }, + + data: data_change_moulding_time + }] + + }; + + +</script> + + +<style lang="scss" scoped> + .dashboard-editor-container { + padding: 32px; + background-color: rgb(240, 242, 245); + position: relative; + + .chart-wrapper { + background: #fff; + padding: 16px 16px 0; + margin-bottom: 32px; + } + } + + @media (max-width: 1024px) { + .chart-wrapper { + padding: 8px; + } + } +</style> + diff --git a/ruoyi-ui/src/views/sd_dashboard/dashboard_30day.vue b/ruoyi-ui/src/views/sd_dashboard/dashboard_30day.vue new file mode 100644 index 000000000..97fc803b7 --- /dev/null +++ b/ruoyi-ui/src/views/sd_dashboard/dashboard_30day.vue @@ -0,0 +1,718 @@ +<template> + <div class="dashboard-editor-container"> + + + <el-row :gutter="32"> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_zhengpin_avg" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">正品率</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_change_moulding_time" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">平均换模时间</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_density" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">平均密度</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_energy_avg" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">产能达标率</h2> + </div> + </el-col> + </el-row> + + <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> + <div class="ibox "> + <div class="ibox-title"> + <h5>产线明细 </h5> + </div> + <div class="ibox-content"> + <el-table + :data="tableData" + stripe + border + style="width: 100%"> + <el-table-column + prop="line" + label="线号" + width="100"> + </el-table-column> + <el-table-column + prop="Moulds" + label="换膜次数"> + </el-table-column> + <el-table-column + prop="sumbox" + label="完成箱数"> + </el-table-column> + <el-table-column + prop="avg_currentcapacity" + label="平均实际产能"> + </el-table-column> + <el-table-column + prop="avg_normalcapacity" + label="平均标准产能"> + </el-table-column> + <el-table-column + prop="capacityrate" + label="产能达标率"> + </el-table-column> + <el-table-column + prop="yieldrate" + label="正品达标率"> + </el-table-column> + <el-table-column + prop="avg_density" + label="平均密度"> + </el-table-column> + + + + </el-table> + </div> + </div> + </el-row> + + </div> +</template> + +<script> + import echarts from 'echarts' + + require('echarts/theme/macarons') // echarts theme + import resize from '../dashboard/mixins/resize' + import {get30Day} from '@/api/sd_dashboard/sd_dashboard' + + const lineChartData = { + xAxisData: [], + actualData: [] + } + + export default { + mixins: [resize], + name: 'density30day', + data() { + return { + tableData: [] + } + }, + + created() { + this.getData() + + }, + mounted() { + + + }, + methods: { + getData() { + + get30Day().then(response => { + + var j; + var avg_zhengpin_avg = 0; + var avg_density = 0; + var avg_energy_avg = 0; + var avg_chang_moulding_time = 0; + var sum_quantity = 0; + var sum_currentfinishedquantity = 0; + j = 0; + + var data_ajax = response.data; + + for (var i = 0; i < response.data.length; i++) { + lineChartData.xAxisData.push((response.data[i].time + '').replace(' 00:00:00.0', '')) + lineChartData.actualData.push(parseFloat(response.data[i].density).toFixed(4)) + + + this.tableData.push({ + line: response.data[i].line, + Moulds: ((response.data[i].Moulds.split('/')).length - 1), + sumbox: response.data[i].sumbox, + avg_currentcapacity: (response.data[i].avg_currentcapacity * 1 * response.data[i].sum_box_meter / response.data[i].sum_device_meter).toFixed(2), + avg_normalcapacity: (response.data[i].avg_normalcapacity * 1).toFixed(2), + capacityrate: (response.data[i].avg_currentcapacity / response.data[i].avg_normalcapacity * response.data[i].sum_box_meter / response.data[i].sum_device_meter * 100).toFixed(2) + "%", + yieldrate: (response.data[i].sum_box_meter / response.data[i].sum_device_meter * 100).toFixed(2) + "%", + avg_density: (response.data[i].avg_density * 1).toFixed(4), + lastchangemouldtime: (response.data[i].lastchangemouldtime), + + }) + + if (data_ajax[i].lastchangemouldtime !== 0) { + avg_chang_moulding_time = avg_chang_moulding_time + (data_ajax[i].lastchangemouldtime) * 1; + j = j + 1; + } + avg_density = parseFloat(avg_density) + parseFloat(data_ajax[i].avg_density); + avg_energy_avg = avg_energy_avg + (data_ajax[i].avg_currentcapacity / data_ajax[i].avg_normalcapacity); + avg_zhengpin_avg = avg_zhengpin_avg + (data_ajax[i].sum_box_meter / data_ajax[i].sum_device_meter); + sum_quantity = 2000; + sum_currentfinishedquantity = sum_currentfinishedquantity + (data_ajax[i].sumbox) * 1; + + + } + + const chart_energy_avg = echarts.init(document.getElementById("chart_energy_avg")); + const chart_zhengpin_avg = echarts.init(document.getElementById("chart_zhengpin_avg")); + const chart_density = echarts.init(document.getElementById("chart_density")); + const chart_change_moulding_time = echarts.init(document.getElementById("chart_change_moulding_time")); + + // 设置仪表盘数据 + option_zhengpin_avg.series[0].data[0].value = (avg_zhengpin_avg / data_ajax.length * 100).toFixed(0); + chart_zhengpin_avg.setOption(option_zhengpin_avg, true); + + option_density.series[0].data[0].value = (avg_density / data_ajax.length).toFixed(3); + chart_density.setOption(option_density, true); + + //option_change_moulding_time.series[0].data[0].value = (avg_chang_moulding_time / data_ajax.length).toFixed(0); + option_change_moulding_time.series[0].data[0].value = 0 ; + chart_change_moulding_time.setOption(option_change_moulding_time, true); + + option_energy_avg.series[0].data[0].value = (avg_energy_avg / data_ajax.length * avg_zhengpin_avg / data_ajax.length * 100).toFixed(0); + chart_energy_avg.setOption(option_energy_avg, true); + + }) + } + } + + } + + + var colorTemplate_energy_avg = [//50-85 85-100 100-120 + [0.5, "rgba(255,0,0,0.8)"], + [5 / 7, "rgba(0,180,0,0.8)"], + [1, "rgba(0,200,250,0.8)"] + ]; + var colorTemplate_zhengpin_avg = [//50-75 75-85 85-100 + [6 / 10, "rgba(255,0,0,0.8)"], + [7 / 10, "rgba(0,180,0,0.8)"], + [1, "rgba(0,200,250,0.8)"] + ]; + var colorTemplate_density = [//0.4-0.42 红 0.4-0.38 0.38-0.36 + [1 / 3, "rgba(0,200,250,0.8)"], + [2 / 3, "rgba(0,180,0,0.8)"], + [1, "rgba(255,0,0,0.8)"] + ]; + var colorTemplate_change_moulding_time = [ //30-70 蓝 70-90 绿 90-120 红 + [4 / 9, "rgba(0,200,250,0.8)"], + [6 / 9, "rgba(0,180,0,0.8)"], + [1, "rgba(255,0,0,0.8)"] + ]; + + + var data_energy_avg = [{ + // name: "产能达标率", + value: 50, + }]; + + var data_zhengpin_avg = [{ + // name: "正品率", + value: 0, + }]; + var data_density = [{ + // name: "密度", + value: 0, + }]; + var data_change_moulding_time = [{ + // name: "换模时间", + value: 0, + }]; + + // 指定图表的配置项和数据 + var option_energy_avg = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 50, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 120, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 7, // 仪表盘刻度的分割段数,默认 10。 + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_energy_avg, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}%", // 格式化函数或者字符串 + }, + + data: data_energy_avg + }] + + }; + // 指定图表的配置项和数据 + var option_zhengpin_avg = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 50, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 100, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 5, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_zhengpin_avg, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}%", // 格式化函数或者字符串 + }, + + data: data_zhengpin_avg + }] + + }; + // 指定图表的配置项和数据 + var option_density = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{c}", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 0.36, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 0.42, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 6, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_density, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}", // 格式化函数或者字符串 + }, + + data: data_density + }] + + }; + // 指定图表的配置项和数据 + var option_change_moulding_time = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 30, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 120, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 9, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_change_moulding_time, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}", // 格式化函数或者字符串 + }, + + data: data_change_moulding_time + }] + + }; + + +</script> + + +<style lang="scss" scoped> + .dashboard-editor-container { + padding: 32px; + background-color: rgb(240, 242, 245); + position: relative; + + .chart-wrapper { + background: #fff; + padding: 16px 16px 0; + margin-bottom: 32px; + } + } + + @media (max-width: 1024px) { + .chart-wrapper { + padding: 8px; + } + } +</style> + diff --git a/ruoyi-ui/src/views/sd_dashboard/dashboard_current.vue b/ruoyi-ui/src/views/sd_dashboard/dashboard_current.vue new file mode 100644 index 000000000..6ae3bbd25 --- /dev/null +++ b/ruoyi-ui/src/views/sd_dashboard/dashboard_current.vue @@ -0,0 +1,804 @@ +<template> + <div class="dashboard-editor-container"> +<!-- <el-row :gutter="32">--> + +<!-- <el-col :xs="24" :sm="12" :lg="12" style="height: 170px">--> + + +<!-- <table class="ibox" style="font-size:24px;width: 100%;margin-top: 50px" >--> +<!-- <tbody>--> +<!-- <tr>--> +<!-- <!– <td>--> +<!-- <strong>日期</strong> <i id="groupdate"></i>--> +<!-- </td> –>--> +<!-- <td id="groupdate">--> +<!-- </td>--> +<!-- <td>--> +<!-- <strong>班次</strong> 白班--> +<!-- </td>--> +<!-- <tr>--> +<!-- </tr>--> +<!-- <td>--> +<!-- <strong>班组</strong> --> +<!-- </td>--> +<!-- <td>--> +<!-- <strong>开线数量</strong> <i id="line_open_numbers">31/32</i>--> +<!-- </td>--> +<!-- </tbody>--> +<!-- </table>--> +<!-- <!–右上角 生产进度 –>--> + +<!-- </el-col>--> + + + + + +<!-- <el-col :xs="24" :sm="12" :lg="12">--> +<!-- <div class="ibox">--> +<!-- <div class="m-b-xs">--> +<!-- <h5 style="font-size:20px;">生产进度</h5>--> +<!-- <h2 id=shengchanjindu>65%</h2>--> +<!-- <div id=finishedbox class="m-t-sm small">当班已完成: 1200/2500 (箱)</div>--> +<!-- <el-progress id="shengchanjinduavg" :percentage="56" :format="format"></el-progress>--> + +<!-- </div>--> +<!-- </div>--> +<!-- </el-col>--> + +<!-- </el-row>--> + + + <el-row :gutter="32"> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_zhengpin_avg" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">正品率</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_change_moulding_time" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">平均换模时间</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_density" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">平均密度</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_energy_avg" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">产能达标率</h2> + </div> + </el-col> + </el-row> + + <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> + <div class="ibox "> + <div class="ibox-title"> + <h5>产线明细 </h5> + </div> + <div class="ibox-content"> + <el-table + :data="tableData" + stripe + border + style="width: 100%"> + <el-table-column + prop="Line" + label="线号" + width="50"> + </el-table-column> + <el-table-column + prop="ChangeMould" + label="是否换模中"> + <template scope="scope"> + <span v-if="scope.row.ChangeMould" style="color:red">换模中</span> + <span v-else style="color: #37B328">否</span> + </template> + </el-table-column> + <el-table-column + prop="SoCode" + label="订单号"> + </el-table-column> + <el-table-column + prop="MouldingStyleCode" + label="框型"> + </el-table-column> + <el-table-column + prop="FinishedQuantity" + label="完成箱数"> + </el-table-column> + <el-table-column + prop="Quantity" + label="订单箱数"> + </el-table-column> + <el-table-column + prop="NormalCapacity" + label="标准产能"> + </el-table-column> + <el-table-column + prop="currentspeed" + label="牵引产能"> + </el-table-column> + <el-table-column + prop="CapacityStandardObtainedRate" + label="产能达标率"> + </el-table-column> + <el-table-column + prop="CurrentYield" + label="当班正品率"> + </el-table-column> + <el-table-column + prop="ChangeMouldTime" + label="换模用时"> + </el-table-column> + <el-table-column + prop="Person" + label="人员"> + </el-table-column> + <el-table-column + prop="LastUpdateDate" + label="最后操作时间"> + </el-table-column> + + </el-table> + </div> + </div> + </el-row> + + </div> +</template> + +<script> + import echarts from 'echarts' + + require('echarts/theme/macarons') // echarts theme + import resize from '../dashboard/mixins/resize' + import {getcurrent} from '@/api/sd_dashboard/sd_dashboard' + + let lineChartData = { + xAxisData: [], + actualData: [] + } + + export default { + mixins: [resize], + name: 'sd_dashboard', + data() { + return { + tableData: [] + } + }, + + created() { + this.getData() + + }, + mounted() { + + + }, + methods: { + getData() { + + + getcurrent().then(response => { + console.log(response); + var j,k; + var avg_zhengpin_avg = 0; + var avg_density = 0; + var avg_energy_avg = 0; + var avg_chang_moulding_time = 0; + var sum_quantity = 0; + var sum_currentfinishedquantity = 0; + j = 0; + k = 0; + + + var data_ajax = JSON.parse(response.msg); + response.data = data_ajax; + + for (var i = 0; i < response.data.length; i++) { + lineChartData.xAxisData.push((response.data[i].time + '').replace(' 00:00:00.0', '')) + lineChartData.actualData.push(parseFloat(response.data[i].density).toFixed(4)) + + + this.tableData.push({ + ChangeMould: response.data[i].ChangeMould, + Line: response.data[i].Line, + MouldingStyleCode: response.data[i].MouldingStyleCode, + FinishedQuantity: response.data[i].FinishedQuantity, + GroupProcessTime: (response.data[i].GroupTime * 1) - (response.data[i].GroupChangeMouldTime * 1), + NormalCapacity: response.data[i].NormalCapacity * 2, + currentspeed: (response.data[i].Speed * 60 * 60 * 24).toFixed(0), + CapacityStandardObtainedRate: (response.data[i].CapacityStandardObtainedRate * 100).toFixed(2) + '%', + CurrentYield: (response.data[i].CurrentYield * 100).toFixed(2) + '%', + SoCode: response.data[i].SoCode, + ChangeMouldTime: response.data[i].ChangeMouldTime, + Person: response.data[i].OperatePersonName, + Quantity: response.data[i].Quantity, + LastUpdateDate: response.data[i].LastUpdateDate + + + }) + + if (data_ajax[i].ChangeMouldTime !== 0) { + avg_chang_moulding_time = avg_chang_moulding_time + (data_ajax[i].ChangeMouldTime) * 1; + j = j + 1; + } + + if (data_ajax[i].CurrentYield <= 1.2 && data_ajax[i].CurrentYield !== 0 && data_ajax[i].CurrentYield >= 0.3) { + avg_zhengpin_avg = avg_zhengpin_avg + (data_ajax[i].CurrentYield) * 1; + k = k + 1; + } + + avg_density = parseFloat(avg_density) + parseFloat(data_ajax[i].AvgDensity); + + avg_energy_avg = avg_energy_avg + (data_ajax[i].CapacityStandardObtainedRate ); + + + sum_quantity = 2000; + + sum_currentfinishedquantity = sum_currentfinishedquantity + (data_ajax[i].FinishedQuantity) * 1; + + } + + const chart_energy_avg = echarts.init(document.getElementById("chart_energy_avg")); + const chart_zhengpin_avg = echarts.init(document.getElementById("chart_zhengpin_avg")); + const chart_density = echarts.init(document.getElementById("chart_density")); + const chart_change_moulding_time = echarts.init(document.getElementById("chart_change_moulding_time")); + + + option_zhengpin_avg.series[0].data[0].value = (avg_zhengpin_avg / k * 100).toFixed(0); + chart_zhengpin_avg.setOption(option_zhengpin_avg, true); + + option_density.series[0].data[0].value = (avg_density / data_ajax.length).toFixed(3); + chart_density.setOption(option_density, true); + + option_change_moulding_time.series[0].data[0].value = (avg_chang_moulding_time / j).toFixed(0); + chart_change_moulding_time.setOption(option_change_moulding_time, true); + + option_energy_avg.series[0].data[0].value = (avg_energy_avg / data_ajax.length * 100).toFixed(0); + chart_energy_avg.setOption(option_energy_avg, true); + + }) + } + } + + } + + + var colorTemplate_energy_avg = [//50-85 85-100 100-120 + [0.5, "rgba(255,0,0,0.8)"], + [5 / 7, "rgba(0,180,0,0.8)"], + [1, "rgba(0,200,250,0.8)"] + ]; + var colorTemplate_zhengpin_avg = [//50-75 75-85 85-100 + [6 / 10, "rgba(255,0,0,0.8)"], + [7 / 10, "rgba(0,180,0,0.8)"], + [1, "rgba(0,200,250,0.8)"] + ]; + var colorTemplate_density = [//0.4-0.42 红 0.4-0.38 0.38-0.36 + [1 / 3, "rgba(0,200,250,0.8)"], + [2 / 3, "rgba(0,180,0,0.8)"], + [1, "rgba(255,0,0,0.8)"] + ]; + var colorTemplate_change_moulding_time = [ //30-70 蓝 70-90 绿 90-120 红 + [4 / 9, "rgba(0,200,250,0.8)"], + [6 / 9, "rgba(0,180,0,0.8)"], + [1, "rgba(255,0,0,0.8)"] + ]; + + + var data_energy_avg = [{ + // name: "产能达标率", + value: 50, + }]; + + var data_zhengpin_avg = [{ + // name: "正品率", + value: 0, + }]; + var data_density = [{ + // name: "密度", + value: 0, + }]; + var data_change_moulding_time = [{ + // name: "换模时间", + value: 0, + }]; + + // 指定图表的配置项和数据 + var option_energy_avg = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 50, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 120, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 7, // 仪表盘刻度的分割段数,默认 10。 + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_energy_avg, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}%", // 格式化函数或者字符串 + }, + + data: data_energy_avg + }] + + }; + // 指定图表的配置项和数据 + var option_zhengpin_avg = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 50, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 100, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 5, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_zhengpin_avg, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}%", // 格式化函数或者字符串 + }, + + data: data_zhengpin_avg + }] + + }; + // 指定图表的配置项和数据 + var option_density = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{c}", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 0.36, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 0.42, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 6, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_density, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}", // 格式化函数或者字符串 + }, + + data: data_density + }] + + }; + // 指定图表的配置项和数据 + var option_change_moulding_time = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 30, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 120, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 9, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_change_moulding_time, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}", // 格式化函数或者字符串 + }, + + data: data_change_moulding_time + }] + + }; + + +</script> + + +<style lang="scss" scoped> + .dashboard-editor-container { + padding: 32px; + background-color: rgb(240, 242, 245); + position: relative; + + .chart-wrapper { + background: #fff; + padding: 16px 16px 0; + margin-bottom: 32px; + } + } + + @media (max-width: 1024px) { + .chart-wrapper { + padding: 8px; + } + } +</style> + diff --git a/ruoyi-ui/src/views/sd_dashboard/dashboard_daterange.vue b/ruoyi-ui/src/views/sd_dashboard/dashboard_daterange.vue new file mode 100644 index 000000000..f33bddc37 --- /dev/null +++ b/ruoyi-ui/src/views/sd_dashboard/dashboard_daterange.vue @@ -0,0 +1,952 @@ +<template> + <div class="dashboard-editor-container"> + <div class="ibox-title"> + <el-row :gutter="32"> + + <el-col :xs="24" :sm="24" :lg="24"> + + <b>选择时间范围</b> + + <el-date-picker + v-model="daterange_time1" + align="right" + value-format="yyyy-MM-dd" + type="date" + placeholder="选择日期" + :picker-options="pickerOptions"> + </el-date-picker> + <el-select style="width: 90px" v-model="daterange_group_value1" placeholder="请选择"> + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + <b>--</b> + <el-date-picker + v-model="daterange_time2" + align="right" + value-format="yyyy-MM-dd" + type="date" + placeholder="选择日期" + :picker-options="pickerOptions"> + </el-date-picker> + <el-select style="width: 90px" v-model="daterange_group_value2" placeholder="请选择"> + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + <el-button @click="getData" type="primary">查询</el-button> + <el-button @click="exportExcel" type="primary">导出明细</el-button> + + + </el-col> + </el-row> + </div> + + <el-row :gutter="32"> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_zhengpin_avg" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">正品率</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_change_moulding_time" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">平均换模时间</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_density" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">平均密度</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_energy_avg" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">产能达标率</h2> + </div> + </el-col> + </el-row> + + <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> + <b>汇总统计</b> + <div class="ibox-content"> + <el-col :xs="24" :sm="18" :lg="18"> + <el-table + id="exportTableData" + :data="tableDataSum" + stripe + border + style="width: 100%"> + <el-table-column + prop="开线数量" + label="开线数量" + width="100"> + </el-table-column> + <el-table-column + prop="完成箱数" + label="完成箱数"> + </el-table-column> + <el-table-column + prop="线均箱数" + label="线均箱数"> + </el-table-column> + <el-table-column + prop="产能达标率" + label="产能达标率"> + </el-table-column> + <el-table-column + prop="正品达标率" + label="正品率"> + </el-table-column> + <el-table-column + prop="平均密度" + label="平均密度"> + </el-table-column> + + </el-table> + </el-col> + <el-col :xs="24" :sm="6" :lg="6"> + + <el-table + id="exportTableData3" + :data="tableDataSum2" + stripe + border + style="width: 100%"> + <el-table-column + prop="换模次数" + label="换模次数"> + </el-table-column> + <el-table-column + prop="平均换模时间" + label="平均换模时间"> + </el-table-column> + </el-table> + </el-col> + + </div> + </el-row> + + + <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> + <b>产线明细</b> + <div class="ibox-content"> + <el-table + id="exportTableData2" + :data="tableData" + stripe + border + style="width: 100%"> + <el-table-column + prop="line" + label="线号" + width="100"> + </el-table-column> + <el-table-column + prop="Moulds" + label="模具"> + </el-table-column> + <el-table-column + prop="sumbox" + label="完成箱数"> + </el-table-column> + <el-table-column + prop="avg_currentcapacity" + label="平均实际产能"> + </el-table-column> + <el-table-column + prop="avg_normalcapacity" + label="平均标准产能"> + </el-table-column> + <el-table-column + prop="capacityrate" + label="产能达标率"> + </el-table-column> + <el-table-column + prop="yieldrate" + label="正品率"> + </el-table-column> + <el-table-column + prop="avg_density" + label="平均密度"> + </el-table-column> + + + </el-table> + </div> + </el-row> + + </div> +</template> + +<script> + import echarts from 'echarts' + import FileSaver from 'file-saver' + import XLSX from 'xlsx' + require('echarts/theme/macarons') // echarts theme + import resize from '../dashboard/mixins/resize' + import {getDateRange} from '@/api/sd_dashboard/sd_dashboard' + import {getDateRangeChangeMouldTime} from '@/api/sd_dashboard/sd_changemouldtime' + + const lineChartData = { + xAxisData: [], + actualData: [] + } + + export default { + mixins: [resize], + name: 'density30day', + data() { + return { + tableData: [], + tableDataSum: [], + tableDataSum2: [], + + options: [{ + value: '08:00:01', + label: '08:00' + }, { + value: '20:00:00', + label: '20:00' + }], + daterange_group_value1: [], + daterange_group_value2: [], + pickerOptions: { + disabledDate(time) { + return time.getTime() > Date.now(); + }, + shortcuts: [{ + text: '今天', + onClick(picker) { + picker.$emit('pick', new Date()); + } + }, { + text: '昨天', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24); + picker.$emit('pick', date); + } + }, { + text: '一周前', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit('pick', date); + } + }] + }, + daterange_time1: '', + daterange_time2: '', + } + }, + + created() { + + this.daterange_group_value1 = "08:00:01" + this.daterange_group_value2 = "08:00:01" + this.daterange_time1= '2020-07-16' + this.daterange_time2= '2020-07-16' + + + }, + mounted() { + + + }, + methods: { + getData() { + const fDateStart = this.daterange_time1 + ' ' + this.daterange_group_value1 + const fDateEnd = this.daterange_time2 + ' ' + this.daterange_group_value2 + this.lineChartData = { + xAxisData: [], + actualData: [] + } + this.tableData=[]; + this.tableDataSum=[]; + this.tableDataSum2=[]; + + + + getDateRange(fDateStart,fDateEnd).then(response => { + + var j,k,l; + var avg_zhengpin_avg = 0; + var avg_density = 0; + var avg_energy_avg = 0; + var avg_chang_moulding_time = 0; + var sum_quantity = 0; + var sum_currentfinishedquantity = 0; + var line_sum = 0; + j = 0; + k = 0; + l = 0; + + + var data_ajax = response.data; + + for (var i = 0; i < response.data.length; i++) { + lineChartData.xAxisData.push((response.data[i].time + '').replace(' 00:00:00.0', '')) + lineChartData.actualData.push(parseFloat(response.data[i].density).toFixed(4)) + + + this.tableData.push({ + line: response.data[i].line, + Moulds: response.data[i].Moulds+'-', + sumbox: response.data[i].sumbox, + avg_currentcapacity: (response.data[i].avg_currentcapacity * 1 * response.data[i].sum_box_meter / response.data[i].sum_device_meter).toFixed(2), + avg_normalcapacity: (response.data[i].avg_normalcapacity * 1).toFixed(2), + capacityrate: (response.data[i].avg_currentcapacity / response.data[i].avg_normalcapacity * response.data[i].sum_box_meter / response.data[i].sum_device_meter * 100).toFixed(2) + "%", + yieldrate: (response.data[i].sum_box_meter / response.data[i].sum_device_meter * 100).toFixed(2) + "%", + avg_density: (response.data[i].avg_density * 1).toFixed(4), + lastchangemouldtime: (response.data[i].lastchangemouldtime), + + }) + + + + + + if (data_ajax[i].lastchangemouldtime >= 10) { + avg_chang_moulding_time = avg_chang_moulding_time + (data_ajax[i].lastchangemouldtime) * 1; + j = j + 1; + } + + if (data_ajax[i].sum_device_meter !== null) { + avg_zhengpin_avg = avg_zhengpin_avg + (data_ajax[i].sum_box_meter / data_ajax[i].sum_device_meter) * 1; + k = k + 1; + } + + if (data_ajax[i].avg_currentcapacity !== null) { + avg_energy_avg = avg_energy_avg + (data_ajax[i].avg_currentcapacity / data_ajax[i].avg_normalcapacity); + l = l + 1; + } + avg_density = parseFloat(avg_density) + parseFloat(data_ajax[i].avg_density); + // avg_energy_avg = avg_energy_avg + (data_ajax[i].avg_currentcapacity / data_ajax[i].avg_normalcapacity); + // avg_zhengpin_avg = avg_zhengpin_avg + (data_ajax[i].sum_box_meter / data_ajax[i].sum_device_meter); + sum_quantity = 2000; + sum_currentfinishedquantity = sum_currentfinishedquantity + (data_ajax[i].sumbox) * 1; + + + } + + const chart_energy_avg = echarts.init(document.getElementById("chart_energy_avg")); + const chart_zhengpin_avg = echarts.init(document.getElementById("chart_zhengpin_avg")); + const chart_density = echarts.init(document.getElementById("chart_density")); + const chart_change_moulding_time = echarts.init(document.getElementById("chart_change_moulding_time")); + + // 设置仪表盘数据 + + + + option_zhengpin_avg.series[0].data[0].value = (avg_zhengpin_avg / k * 100).toFixed(0); + chart_zhengpin_avg.setOption(option_zhengpin_avg, true); + + option_density.series[0].data[0].value = (avg_density / data_ajax.length).toFixed(3); + chart_density.setOption(option_density, true); + + //option_change_moulding_time.series[0].data[0].value = (avg_chang_moulding_time / data_ajax.length).toFixed(0); + // option_change_moulding_time.series[0].data[0].value = 0; + // chart_change_moulding_time.setOption(option_change_moulding_time, true); + + option_energy_avg.series[0].data[0].value = (avg_energy_avg / l * avg_zhengpin_avg / k * 100).toFixed(0); + chart_energy_avg.setOption(option_energy_avg, true); + + //汇总数据填充 + this.tableDataSum.push({ + 平均密度:(avg_density / data_ajax.length).toFixed(3), + 正品达标率: (avg_zhengpin_avg / k * 100).toFixed(0)+'%', + 产能达标率: (avg_energy_avg / l * avg_zhengpin_avg / k * 100).toFixed(0)+'%', + 线均箱数: (sum_currentfinishedquantity/(response.data.length)).toFixed(1), + 完成箱数: sum_currentfinishedquantity.toFixed(1), + 开线数量: (response.data.length), + + + }) + + }) + + + getDateRangeChangeMouldTime(fDateStart,fDateEnd).then(response => { + const chart_change_moulding_time = echarts.init(document.getElementById("chart_change_moulding_time")); + + option_change_moulding_time.series[0].data[0].value = (response.data[0].avgchangemouldtime * 1); + + chart_change_moulding_time.setOption(option_change_moulding_time, true); + + + + + //总表数据填充 + this.tableDataSum2.push({ + 平均换模时间: (response.data[0].avgchangemouldtime * 1), + 换模次数: (response.data[0].num * 1), + }) + + + + + }) + + + + + }, + exportExcel () { + /* generate workbook object from table */ + let wb = XLSX.utils.table_to_book(document.querySelector('#exportTableData2')); + /* get binary string as output */ + let wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' }); + try { + FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), '车间报表.xlsx'); + } catch (e) + { + if (typeof console !== 'undefined') + console.log(e, wbout) + } + return wbout + }, + + } + + } + + + var colorTemplate_energy_avg = [//50-85 85-100 100-120 + [0.5, "rgba(255,0,0,0.8)"], + [5 / 7, "rgba(0,180,0,0.8)"], + [1, "rgba(0,200,250,0.8)"] + ]; + var colorTemplate_zhengpin_avg = [//50-75 75-85 85-100 + [6 / 10, "rgba(255,0,0,0.8)"], + [7 / 10, "rgba(0,180,0,0.8)"], + [1, "rgba(0,200,250,0.8)"] + ]; + var colorTemplate_density = [//0.4-0.42 红 0.4-0.38 0.38-0.36 + [1 / 3, "rgba(0,200,250,0.8)"], + [2 / 3, "rgba(0,180,0,0.8)"], + [1, "rgba(255,0,0,0.8)"] + ]; + var colorTemplate_change_moulding_time = [ //30-70 蓝 70-90 绿 90-120 红 + [4 / 9, "rgba(0,200,250,0.8)"], + [6 / 9, "rgba(0,180,0,0.8)"], + [1, "rgba(255,0,0,0.8)"] + ]; + + + var data_energy_avg = [{ + // name: "产能达标率", + value: 50, + }]; + + var data_zhengpin_avg = [{ + // name: "正品率", + value: 0, + }]; + var data_density = [{ + // name: "密度", + value: 0, + }]; + var data_change_moulding_time = [{ + // name: "换模时间", + value: 0, + }]; + + // 指定图表的配置项和数据 + var option_energy_avg = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 50, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 120, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 7, // 仪表盘刻度的分割段数,默认 10。 + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_energy_avg, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}%", // 格式化函数或者字符串 + }, + + data: data_energy_avg + }] + + }; + // 指定图表的配置项和数据 + var option_zhengpin_avg = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 50, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 100, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 5, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_zhengpin_avg, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}%", // 格式化函数或者字符串 + }, + + data: data_zhengpin_avg + }] + + }; + // 指定图表的配置项和数据 + var option_density = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{c}", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 0.36, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 0.42, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 6, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_density, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}", // 格式化函数或者字符串 + }, + + data: data_density + }] + + }; + // 指定图表的配置项和数据 + var option_change_moulding_time = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 30, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 120, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 9, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_change_moulding_time, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}", // 格式化函数或者字符串 + }, + + data: data_change_moulding_time + }] + + }; + + +</script> + + +<style lang="scss" scoped> + .dashboard-editor-container { + padding: 32px; + background-color: rgb(240, 242, 245); + position: relative; + + .chart-wrapper { + background: #fff; + padding: 16px 16px 0; + margin-bottom: 32px; + } + } + + @media (max-width: 1024px) { + .chart-wrapper { + padding: 8px; + } + } +</style> + diff --git a/ruoyi-ui/src/views/sd_dashboard/dashboard_group.vue b/ruoyi-ui/src/views/sd_dashboard/dashboard_group.vue new file mode 100644 index 000000000..fd5aaa407 --- /dev/null +++ b/ruoyi-ui/src/views/sd_dashboard/dashboard_group.vue @@ -0,0 +1,781 @@ +<template> + <div class="dashboard-editor-container"> + <el-row :gutter="32"> + + <el-col :xs="24" :sm="12" :lg="12" style="height: 170px"> + + + <table class="ibox" style="font-size:24px;width: 100%;margin-top: 50px" > + <tbody> + <tr> + <!-- <td> + <strong>日期</strong> <i id="groupdate"></i> + </td> --> + <td id="groupdate"> + </td> + <td> + <strong>班次</strong> 白班 + </td> + <tr> + </tr> + <td> + <strong>班组</strong> 陈亮 + </td> + <td> + <strong>开线数量</strong> <i id="line_open_numbers">31/32</i> + </td> + </tbody> + </table> + <!--右上角 生产进度 --> + + </el-col> + + + + + + <el-col :xs="24" :sm="12" :lg="12"> + <div class="ibox"> + <div class="m-b-xs"> + <h5 style="font-size:20px;">生产进度</h5> + <h2 id=shengchanjindu>65%</h2> + <div id=finishedbox class="m-t-sm small">当班已完成: 1200/2500 (箱)</div> + <el-progress id="shengchanjinduavg" :percentage="56" :format="format"></el-progress> + + </div> + </div> + </el-col> + + </el-row> + + + <el-row :gutter="32"> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_zhengpin_avg" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">正品率</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_change_moulding_time" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">平均换模时间</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_density" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">平均密度</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_energy_avg" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">产能达标率</h2> + </div> + </el-col> + </el-row> + + <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> + <div class="ibox "> + <div class="ibox-title"> + <h5>产线明细 </h5> + </div> + <div class="ibox-content"> + <el-table + :data="tableData" + stripe + border + style="width: 100%"> + <el-table-column + prop="line" + label="线号" + width="100"> + </el-table-column> + <el-table-column + prop="Moulds" + label="量产模具"> + </el-table-column> + <el-table-column + prop="FinishedQuantity" + label="完成箱数"> + </el-table-column> + <el-table-column + prop="GroupProcessTime" + label="量产用时"> + </el-table-column> + <el-table-column + prop="NormalCapacity" + label="标准产能"> + </el-table-column> + <el-table-column + prop="currentspeed" + label="牵引产能"> + </el-table-column> + <el-table-column + prop="CapacityStandardObtainedRate" + label="产能达标率"> + </el-table-column> + <el-table-column + prop="CurrentYield" + label="正品率"> + </el-table-column> + <el-table-column + prop="AvgDensity" + label="平均密度"> + </el-table-column> + <el-table-column + prop="MouldAndChangeMouldTime" + label="换模型号-用时"> + </el-table-column> + <el-table-column + prop="Person" + label="人员"> + </el-table-column> + + </el-table> + </div> + </div> + </el-row> + + </div> +</template> + +<script> + import echarts from 'echarts' + + require('echarts/theme/macarons') // echarts theme + import resize from '../dashboard/mixins/resize' + import {getDashboardGroup} from '@/api/sd_dashboard/sd_dashboard' + + let lineChartData = { + xAxisData: [], + actualData: [] + } + + export default { + mixins: [resize], + name: 'density30day', + data() { + return { + tableData: [] + } + }, + + created() { + this.getData() + + }, + mounted() { + + + }, + methods: { + getData() { + + + getDashboardGroup().then(response => { + + var j; + var avg_zhengpin_avg = 0; + var avg_density = 0; + var avg_energy_avg = 0; + var avg_chang_moulding_time = 0; + var sum_quantity = 0; + var sum_currentfinishedquantity = 0; + j = 0; + + var data_ajax = response.data; + + for (var i = 0; i < response.data.length; i++) { + lineChartData.xAxisData.push((response.data[i].time + '').replace(' 00:00:00.0', '')) + lineChartData.actualData.push(parseFloat(response.data[i].density).toFixed(4)) + + + this.tableData.push({ + line: response.data[i].line, + Moulds: response.data[i].Moulds, + FinishedQuantity: response.data[i].FinishedQuantity, + GroupProcessTime: (response.data[i].GroupTime * 1) - (response.data[i].GroupChangeMouldTime * 1), + NormalCapacity: response.data[i].NormalCapacity, + currentspeed: (response.data[i].currentspeed * 1).toFixed(0), + CapacityStandardObtainedRate: (response.data[i].CapacityStandardObtainedRate * 100).toFixed(2) + '%', + CurrentYield: (response.data[i].CurrentYield * 100).toFixed(2) + '%', + AvgDensity: (response.data[i].AvgDensity * 1).toFixed(4), + MouldAndChangeMouldTime: response.data[i].MouldAndChangeMouldTime, + Person: response.data[i].Person, + }) + + if (data_ajax[i].GroupChangeMouldTime !== 0) { + avg_chang_moulding_time = avg_chang_moulding_time + (data_ajax[i].GroupChangeMouldTime) * 1; + j = j + 1; + } + + avg_density = parseFloat(avg_density) + parseFloat(data_ajax[i].AvgDensity); + + avg_energy_avg = avg_energy_avg + (data_ajax[i].CapacityStandardObtainedRate) * 1; + + avg_zhengpin_avg = avg_zhengpin_avg + (data_ajax[i].CurrentYield) * 1; + + sum_quantity = 2000; + + sum_currentfinishedquantity = sum_currentfinishedquantity + (data_ajax[i].FinishedQuantity) * 1; + + + } + + const chart_energy_avg = echarts.init(document.getElementById("chart_energy_avg")); + const chart_zhengpin_avg = echarts.init(document.getElementById("chart_zhengpin_avg")); + const chart_density = echarts.init(document.getElementById("chart_density")); + const chart_change_moulding_time = echarts.init(document.getElementById("chart_change_moulding_time")); + + + option_zhengpin_avg.series[0].data[0].value = (avg_zhengpin_avg / data_ajax.length * 100).toFixed(0); + chart_zhengpin_avg.setOption(option_zhengpin_avg, true); + + option_density.series[0].data[0].value = (avg_density / data_ajax.length).toFixed(3); + chart_density.setOption(option_density, true); + + option_change_moulding_time.series[0].data[0].value = (avg_chang_moulding_time / j).toFixed(0); + chart_change_moulding_time.setOption(option_change_moulding_time, true); + + option_energy_avg.series[0].data[0].value = (avg_energy_avg / data_ajax.length * 100).toFixed(0); + chart_energy_avg.setOption(option_energy_avg, true); + + }) + } + } + + } + + + var colorTemplate_energy_avg = [//50-85 85-100 100-120 + [0.5, "rgba(255,0,0,0.8)"], + [5 / 7, "rgba(0,180,0,0.8)"], + [1, "rgba(0,200,250,0.8)"] + ]; + var colorTemplate_zhengpin_avg = [//50-75 75-85 85-100 + [6 / 10, "rgba(255,0,0,0.8)"], + [7 / 10, "rgba(0,180,0,0.8)"], + [1, "rgba(0,200,250,0.8)"] + ]; + var colorTemplate_density = [//0.4-0.42 红 0.4-0.38 0.38-0.36 + [1 / 3, "rgba(0,200,250,0.8)"], + [2 / 3, "rgba(0,180,0,0.8)"], + [1, "rgba(255,0,0,0.8)"] + ]; + var colorTemplate_change_moulding_time = [ //30-70 蓝 70-90 绿 90-120 红 + [4 / 9, "rgba(0,200,250,0.8)"], + [6 / 9, "rgba(0,180,0,0.8)"], + [1, "rgba(255,0,0,0.8)"] + ]; + + + var data_energy_avg = [{ + // name: "产能达标率", + value: 50, + }]; + + var data_zhengpin_avg = [{ + // name: "正品率", + value: 0, + }]; + var data_density = [{ + // name: "密度", + value: 0, + }]; + var data_change_moulding_time = [{ + // name: "换模时间", + value: 0, + }]; + + // 指定图表的配置项和数据 + var option_energy_avg = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 50, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 120, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 7, // 仪表盘刻度的分割段数,默认 10。 + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_energy_avg, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}%", // 格式化函数或者字符串 + }, + + data: data_energy_avg + }] + + }; + // 指定图表的配置项和数据 + var option_zhengpin_avg = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 50, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 100, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 5, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_zhengpin_avg, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}%", // 格式化函数或者字符串 + }, + + data: data_zhengpin_avg + }] + + }; + // 指定图表的配置项和数据 + var option_density = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{c}", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 0.36, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 0.42, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 6, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_density, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}", // 格式化函数或者字符串 + }, + + data: data_density + }] + + }; + // 指定图表的配置项和数据 + var option_change_moulding_time = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 30, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 120, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 9, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_change_moulding_time, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}", // 格式化函数或者字符串 + }, + + data: data_change_moulding_time + }] + + }; + + +</script> + + +<style lang="scss" scoped> + .dashboard-editor-container { + padding: 32px; + background-color: rgb(240, 242, 245); + position: relative; + + .chart-wrapper { + background: #fff; + padding: 16px 16px 0; + margin-bottom: 32px; + } + } + + @media (max-width: 1024px) { + .chart-wrapper { + padding: 8px; + } + } +</style> + diff --git a/ruoyi-ui/src/views/sd_dashboard/dashboard_lastday.vue b/ruoyi-ui/src/views/sd_dashboard/dashboard_lastday.vue new file mode 100644 index 000000000..1a2c64d4f --- /dev/null +++ b/ruoyi-ui/src/views/sd_dashboard/dashboard_lastday.vue @@ -0,0 +1,722 @@ +<template> + <div class="dashboard-editor-container"> + + + <el-row :gutter="32"> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_zhengpin_avg" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">正品率</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_change_moulding_time" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">平均换模时间</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_density" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">平均密度</h2> + </div> + </el-col> + <el-col :xs="24" :sm="12" :lg="6"> + <div class="ibox"> + <div id="chart_energy_avg" style="width: 100%;height: 204px;left: 0%;"></div> + <h2 class="text-center" style="margin-top: 0px;">产能达标率</h2> + </div> + </el-col> + </el-row> + + <el-row style="background:#fff;padding:16px 16px 0;margin-bottom:32px;"> + <div class="ibox "> + <div class="ibox-title"> + <h5>产线明细 </h5> + </div> + <div class="ibox-content"> + <el-table + :data="tableData" + stripe + border + style="width: 100%"> + <el-table-column + prop="line" + label="线号" + width="100"> + </el-table-column> + <el-table-column + prop="Moulds" + label="模具"> + </el-table-column> + <el-table-column + prop="sumbox" + label="完成箱数"> + </el-table-column> + <el-table-column + prop="avg_currentcapacity" + label="平均实际产能"> + </el-table-column> + <el-table-column + prop="avg_normalcapacity" + label="平均标准产能"> + </el-table-column> + <el-table-column + prop="capacityrate" + label="产能达标率"> + </el-table-column> + <el-table-column + prop="yieldrate" + label="正品达标率"> + </el-table-column> + <el-table-column + prop="avg_density" + label="平均密度"> + </el-table-column> + <el-table-column + prop="lastchangemouldtime" + label="上次换模时间"> + </el-table-column> + + + </el-table> + </div> + </div> + </el-row> + + </div> +</template> + +<script> + import echarts from 'echarts' + + require('echarts/theme/macarons') // echarts theme + import resize from '../dashboard/mixins/resize' + import {getLastDay} from '@/api/sd_dashboard/sd_dashboard' + + + const lineChartData = { + xAxisData: [], + actualData: [] + } + + export default { + mixins: [resize], + name: 'density30day', + data() { + return { + tableData: [] + } + }, + + created() { + this.getData() + + }, + mounted() { + + + }, + methods: { + getData() { + + getLastDay().then(response => { + + var j; + var avg_zhengpin_avg = 0; + var avg_density = 0; + var avg_energy_avg = 0; + var avg_chang_moulding_time = 0; + var sum_quantity = 0; + var sum_currentfinishedquantity = 0; + j = 0; + + var data_ajax = response.data; + + for (var i = 0; i < response.data.length; i++) { + lineChartData.xAxisData.push((response.data[i].time + '').replace(' 00:00:00.0', '')) + lineChartData.actualData.push(parseFloat(response.data[i].density).toFixed(4)) + + + this.tableData.push({ + line: response.data[i].line, + Moulds: response.data[i].Moulds, + sumbox: response.data[i].sumbox, + avg_currentcapacity: (response.data[i].avg_currentcapacity * 1 * response.data[i].sum_box_meter / response.data[i].sum_device_meter).toFixed(2), + avg_normalcapacity: (response.data[i].avg_normalcapacity * 1).toFixed(2), + capacityrate: (response.data[i].avg_currentcapacity / response.data[i].avg_normalcapacity * response.data[i].sum_box_meter / response.data[i].sum_device_meter * 100).toFixed(2) + "%", + yieldrate: (response.data[i].sum_box_meter / response.data[i].sum_device_meter * 100).toFixed(2) + "%", + avg_density: (response.data[i].avg_density * 1).toFixed(4), + lastchangemouldtime: (response.data[i].lastchangemouldtime), + + }) + + if (data_ajax[i].lastchangemouldtime !== 0) { + avg_chang_moulding_time = avg_chang_moulding_time + (data_ajax[i].lastchangemouldtime) * 1; + j = j + 1; + } + avg_density = parseFloat(avg_density) + parseFloat(data_ajax[i].avg_density); + avg_energy_avg = avg_energy_avg + (data_ajax[i].avg_currentcapacity / data_ajax[i].avg_normalcapacity); + avg_zhengpin_avg = avg_zhengpin_avg + (data_ajax[i].sum_box_meter / data_ajax[i].sum_device_meter); + sum_quantity = 2000; + sum_currentfinishedquantity = sum_currentfinishedquantity + (data_ajax[i].sumbox) * 1; + + + } + + const chart_energy_avg = echarts.init(document.getElementById("chart_energy_avg")); + const chart_zhengpin_avg = echarts.init(document.getElementById("chart_zhengpin_avg")); + const chart_density = echarts.init(document.getElementById("chart_density")); + const chart_change_moulding_time = echarts.init(document.getElementById("chart_change_moulding_time")); + + // 设置仪表盘数据 + option_zhengpin_avg.series[0].data[0].value = (avg_zhengpin_avg / data_ajax.length * 100).toFixed(0); + chart_zhengpin_avg.setOption(option_zhengpin_avg, true); + + option_density.series[0].data[0].value = (avg_density / data_ajax.length).toFixed(3); + chart_density.setOption(option_density, true); + + //option_change_moulding_time.series[0].data[0].value = (avg_chang_moulding_time / data_ajax.length).toFixed(0); + option_change_moulding_time.series[0].data[0].value = 0 ; + chart_change_moulding_time.setOption(option_change_moulding_time, true); + + option_energy_avg.series[0].data[0].value = (avg_energy_avg / data_ajax.length * avg_zhengpin_avg / data_ajax.length * 100).toFixed(0); + chart_energy_avg.setOption(option_energy_avg, true); + + }) + } + } + + } + + + var colorTemplate_energy_avg = [//50-85 85-100 100-120 + [0.5, "rgba(255,0,0,0.8)"], + [5 / 7, "rgba(0,180,0,0.8)"], + [1, "rgba(0,200,250,0.8)"] + ]; + var colorTemplate_zhengpin_avg = [//50-75 75-85 85-100 + [6 / 10, "rgba(255,0,0,0.8)"], + [7 / 10, "rgba(0,180,0,0.8)"], + [1, "rgba(0,200,250,0.8)"] + ]; + var colorTemplate_density = [//0.4-0.42 红 0.4-0.38 0.38-0.36 + [1 / 3, "rgba(0,200,250,0.8)"], + [2 / 3, "rgba(0,180,0,0.8)"], + [1, "rgba(255,0,0,0.8)"] + ]; + var colorTemplate_change_moulding_time = [ //30-70 蓝 70-90 绿 90-120 红 + [4 / 9, "rgba(0,200,250,0.8)"], + [6 / 9, "rgba(0,180,0,0.8)"], + [1, "rgba(255,0,0,0.8)"] + ]; + + + var data_energy_avg = [{ + // name: "产能达标率", + value: 50, + }]; + + var data_zhengpin_avg = [{ + // name: "正品率", + value: 0, + }]; + var data_density = [{ + // name: "密度", + value: 0, + }]; + var data_change_moulding_time = [{ + // name: "换模时间", + value: 0, + }]; + + // 指定图表的配置项和数据 + var option_energy_avg = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 50, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 120, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 7, // 仪表盘刻度的分割段数,默认 10。 + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_energy_avg, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}%", // 格式化函数或者字符串 + }, + + data: data_energy_avg + }] + + }; + // 指定图表的配置项和数据 + var option_zhengpin_avg = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 50, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 100, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 5, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_zhengpin_avg, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}%", // 格式化函数或者字符串 + }, + + data: data_zhengpin_avg + }] + + }; + // 指定图表的配置项和数据 + var option_density = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{c}", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 0.36, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 0.42, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 6, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_density, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}", // 格式化函数或者字符串 + }, + + data: data_density + }] + + }; + // 指定图表的配置项和数据 + var option_change_moulding_time = { + + //backgroundColor: "#000", + + tooltip: { // 本系列特定的 tooltip 设定。 + show: true, + formatter: "{b}:{c}%", + backgroundColor: "rgba(50,50,50,0.7)", // 提示框浮层的背景颜色。注意:series.tooltip 仅在 tooltip.trigger 为 'item' 时有效。 + borderColor: "#333", // 提示框浮层的边框颜色。... + borderWidth: 0, // 提示框浮层的边框宽。... + padding: 5, // 提示框浮层内边距,单位px,默认各方向内边距为5,接受数组分别设定上右下左边距。... + textStyle: { // 提示框浮层的文本样式。... + // color ,fontStyle ,fontWeight ,fontFamily ,fontSize ,lineHeight ,....... + }, + }, + + series: [{ + name: "单仪表盘示例", // 系列名称,用于tooltip的显示,legend 的图例筛选,在 setOption 更新数据和配置项时用于指定对应的系列。 + type: "gauge", // 系列类型 + radius: "80%", // 参数:number, string。 仪表盘半径,默认 75% ,可以是相对于容器高宽中较小的一项的一半的百分比,也可以是绝对的数值。 + center: ["50%", "55%"], // 仪表盘位置(圆心坐标) + startAngle: 225, // 仪表盘起始角度,默认 225。圆心 正右手侧为0度,正上方为90度,正左手侧为180度。 + endAngle: -45, // 仪表盘结束角度,默认 -45 + clockwise: true, // 仪表盘刻度是否是顺时针增长,默认 true。 + min: 30, // 最小的数据值,默认 0 。映射到 minAngle。 + max: 120, // 最大的数据值,默认 100 。映射到 maxAngle。 + splitNumber: 9, // 仪表盘刻度的分割段数,默认 10。 + + axisLine: { // 仪表盘轴线(轮廓线)相关配置。 + show: true, // 是否显示仪表盘轴线(轮廓线),默认 true。 + lineStyle: { // 仪表盘轴线样式。 + color: colorTemplate_change_moulding_time, //仪表盘的轴线可以被分成不同颜色的多段。每段的 结束位置(范围是[0,1]) 和 颜色 可以通过一个数组来表示。默认取值:[[0.2, '#91c7ae'], [0.8, '#63869e'], [1, '#c23531']] + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 15, //轴线宽度,默认 30。 + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + splitLine: { // 分隔线样式。 + show: true, // 是否显示分隔线,默认 true。 + length: 21, // 分隔线线长。支持相对半径的百分比,默认 30。 + lineStyle: { // 分隔线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 2, //线度,默认 2。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + } + }, + + axisTick: { // 刻度(线)样式。 + show: true, // 是否显示刻度(线),默认 true。 + splitNumber: 5, // 分隔线之间分割的刻度数,默认 5。 + length: 8, // 刻度线长。支持相对半径的百分比,默认 8。 + lineStyle: { // 刻度线样式。 + color: "#eee", //线的颜色,默认 #eee。 + opacity: 1, //图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + width: 1, //线度,默认 1。 + type: "solid", //线的类型,默认 solid。 此外还有 dashed,dotted + //shadowBlur: 10, //(发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", //阴影颜色。支持的格式同color。 + }, + }, + axisLabel: { // 刻度标签。 + show: true, // 是否显示标签,默认 true。 + distance: 1, // 标签与刻度线的距离,默认 5。 + color: "#000", // 文字的颜色,默认 #fff。 + fontSize: 10, // 文字的字体大小,默认 5。 + formatter: "{value}", // 刻度标签的内容格式器,支持字符串模板和回调函数两种形式。 示例:// 使用字符串模板,模板变量为刻度默认标签 {value},如:formatter: '{value} kg'; // 使用函数模板,函数参数分别为刻度数值,如formatter: function (value) {return value + 'km/h';} + }, + pointer: { // 仪表盘指针。 + show: true, // 是否显示指针,默认 true。 + length: "70%", // 指针长度,可以是绝对数值,也可以是相对于半径的百分比,默认 80%。 + width: 5, // 指针宽度,默认 8。 + }, + itemStyle: { // 仪表盘指针样式。 + color: "auto", // 指针颜色,默认(auto)取数值所在的区间的颜色 + opacity: 1, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。 + borderWidth: 0, // 描边线宽,默认 0。为 0 时无描边。 + borderType: "solid", // 柱条的描边类型,默认为实线,支持 'solid', 'dashed', 'dotted'。 + borderColor: "#000", // 图形的描边颜色,默认 "#000"。支持的颜色格式同 color,不支持回调函数。 + //shadowBlur: 10, // (发光效果)图形阴影的模糊大小。该属性配合 shadowColor,shadowOffsetX, shadowOffsetY 一起设置图形的阴影效果。 + //shadowColor: "#000", // 阴影颜色。支持的格式同color。 + }, + emphasis: { // 高亮的 仪表盘指针样式 + itemStyle: { + //高亮 和正常 两者具有同样的配置项,只是在不同状态下配置项的值不同。 + } + }, + title: { // 仪表盘标题。 + show: true, // 是否显示标题,默认 true。 + offsetCenter: [0, + "20%"], //相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "#000", // 文字的颜色,默认 #333。 + fontSize: 15, // 文字的字体大小,默认 15。 + }, + detail: { // 仪表盘详情,用于显示数据。 + show: true, // 是否显示详情,默认 true。 + offsetCenter: [0, + "50%"], // 相对于仪表盘中心的偏移位置,数组第一项是水平方向的偏移,第二项是垂直方向的偏移。可以是绝对的数值,也可以是相对于仪表盘半径的百分比。 + color: "auto", // 文字的颜色,默认 auto。 + fontSize: 20, // 文字的字体大小,默认 15。 + formatter: "{value}", // 格式化函数或者字符串 + }, + + data: data_change_moulding_time + }] + + }; + + +</script> + + +<style lang="scss" scoped> + .dashboard-editor-container { + padding: 32px; + background-color: rgb(240, 242, 245); + position: relative; + + .chart-wrapper { + background: #fff; + padding: 16px 16px 0; + margin-bottom: 32px; + } + } + + @media (max-width: 1024px) { + .chart-wrapper { + padding: 8px; + } + } +</style> + diff --git a/ruoyi-ui/src/views/sd_density/sd_density_30d.vue b/ruoyi-ui/src/views/sd_density/sd_density_30d.vue new file mode 100644 index 000000000..164754dd0 --- /dev/null +++ b/ruoyi-ui/src/views/sd_density/sd_density_30d.vue @@ -0,0 +1,194 @@ +<template> + <div > + <el-container > + <div id="chart_density_avg" style="width: 90%;height: 600px;top:20px"></div> + </el-container> + </div> +</template> + +<script> + import echarts from 'echarts' + + require('echarts/theme/macarons') // echarts theme + import resize from '../dashboard/mixins/resize' + import { getDensity30Day } from '@/api/sd_dashboard/sd_density' + + let lineChartData = { + xAxisData: [], + actualData: [] + } + + export default { + mixins: [resize], + name: 'density30day', + + created() { + this.getData() + }, + mounted() { + + + }, + methods: { + getData() { + + lineChartData = { + xAxisData: [], + actualData: [] + } + + getDensity30Day().then(response => { + for (var i = 0; i < response.data.length; i++) { + lineChartData.xAxisData.push((response.data[i].time + '').replace(' 00:00:00.0', '')) + lineChartData.actualData.push(parseFloat(response.data[i].density).toFixed(3)) + } + + const chart_energy_avg = echarts.init(document.getElementById('chart_density_avg')) + + option_energy_avg.xAxis[0].data = lineChartData.xAxisData + option_energy_avg.series[0].data = lineChartData.actualData + option_energy_avg.title.text = '30天平均密度' + option_energy_avg.yAxis[0].min = (Math.min.apply(null, lineChartData.actualData).toFixed(2)*1-0.01) + option_energy_avg.yAxis[0].max = (Math.max.apply(null, lineChartData.actualData).toFixed(2)*1+0.01) + + + + + + + chart_energy_avg.setOption(option_energy_avg, true) + + }) + } + } + + } + + const option_energy_avg = { + title: { + text: '', + textStyle: { + color: '#000', + fontSize: 18 + }, + itemGap: 5, + + x: 'center' + }, + tooltip: { + trigger: 'axis' + }, + xAxis: [{ + type: 'category', + data: ['1#', '2#', '3#', '30#'], + axisLine: { + lineStyle: { + color: '#999' + } + } + }], + yAxis: [{ + type: 'value', + min: 0.36, + max: 0.42, + + // splitNumber: 12, + splitLine: { + lineStyle: { + type: 'dashed', + color: '#DDD' + } + }, + axisLine: { + show: false, + lineStyle: { + color: '#333' + } + }, + nameTextStyle: { + color: '#999' + }, + splitArea: { + show: false + } + }], + series: [{ + name: '密度', + type: 'line', + data: [80, 72], + lineStyle: { + normal: { + width: 8, + color: { + type: 'linear', + + colorStops: [{ + offset: 0, + color: '#A9F387' // 0% 处的颜色 + }, { + offset: 1, + color: '#48D8BF' // 100% 处的颜色 + }], + globalCoord: false // 缺省为 false + }, + shadowColor: 'rgba(72,216,191, 0.3)', + shadowBlur: 10, + shadowOffsetY: 20 + } + }, + itemStyle: { + normal: { + color: '#a32323', + borderWidth: 10, + /*shadowColor: 'rgba(72,216,191, 0.3)', + shadowBlur: 100,*/ + borderColor: '#A9F387', + label : {show: true} + } + }, + smooth: false, + markLine: { + label: { + formatter: '{b}: {c}' + }, + precision: 4, + lineStyle: { + width: 3, + color: 'red' + }, + data: [{ + name: '目标', + yAxis: '0.38' + }, { + type: 'average', + name: '平均' + }] + } + }] + + } + + +</script> + + +<style lang="scss" scoped> + .dashboard-editor-container { + padding: 32px; + background-color: rgb(240, 242, 245); + position: relative; + + .chart-wrapper { + background: #fff; + padding: 16px 16px 0; + margin-bottom: 32px; + } + } + + @media (max-width:1024px) { + .chart-wrapper { + padding: 8px; + } + } +</style> + diff --git a/ruoyi-ui/src/views/sd_density/sd_density_72h.vue b/ruoyi-ui/src/views/sd_density/sd_density_72h.vue new file mode 100644 index 000000000..31fc388f4 --- /dev/null +++ b/ruoyi-ui/src/views/sd_density/sd_density_72h.vue @@ -0,0 +1,196 @@ +<template> + <div > + <el-container > + <div id="chart_density_avg" style="width: 90%;height: 600px;top:20px"></div> + </el-container> + </div> +</template> + +<script> + import echarts from 'echarts' + + require('echarts/theme/macarons') // echarts theme + import resize from '../dashboard/mixins/resize' + import { getDensity72h } from '@/api/sd_dashboard/sd_density' + + let lineChartData = { + xAxisData: [], + actualData: [] + } + + export default { + mixins: [resize], + name: 'density72h', + + created() { + this.getData() + }, + mounted() { + + + }, + methods: { + getData() { + + lineChartData = { + xAxisData: [], + actualData: [] + } + + getDensity72h().then(response => { + for (let i = 0; i < response.data.length; i++) { + lineChartData.xAxisData.push((response.data[i].time + '').replace(':00.0', '')) + lineChartData.actualData.push(parseFloat(response.data[i].density).toFixed(3)) + } + + const chart_energy_avg = echarts.init(document.getElementById('chart_density_avg')) + + option_energy_avg.xAxis[0].data = lineChartData.xAxisData + option_energy_avg.series[0].data = lineChartData.actualData + option_energy_avg.title.text = '72小时平均密度' + option_energy_avg.yAxis[0].min = (Math.min.apply(null, lineChartData.actualData).toFixed(2)*1-0.01) + option_energy_avg.yAxis[0].max = (Math.max.apply(null, lineChartData.actualData).toFixed(2)*1+0.01) + + + + + + + + + chart_energy_avg.setOption(option_energy_avg, true) + + }) + } + } + + } + + const option_energy_avg = { + title: { + text: '', + textStyle: { + color: '#000', + fontSize: 18 + }, + itemGap: 5, + + x: 'center' + }, + tooltip: { + trigger: 'axis' + }, + xAxis: [{ + type: 'category', + data: ['1#', '2#', '3#', '30#'], + axisLine: { + lineStyle: { + color: '#999' + } + } + }], + yAxis: [{ + type: 'value', + min: 0.36, + max: 0.42, + + // splitNumber: 12, + splitLine: { + lineStyle: { + type: 'dashed', + color: '#DDD' + } + }, + axisLine: { + show: false, + lineStyle: { + color: '#333' + } + }, + nameTextStyle: { + color: '#999' + }, + splitArea: { + show: false + } + }], + series: [{ + name: '密度', + type: 'line', + data: [80, 72], + lineStyle: { + normal: { + width: 8, + color: { + type: 'linear', + + colorStops: [{ + offset: 0, + color: '#A9F387' // 0% 处的颜色 + }, { + offset: 1, + color: '#48D8BF' // 100% 处的颜色 + }], + globalCoord: false // 缺省为 false + }, + shadowColor: 'rgba(72,216,191, 0.3)', + shadowBlur: 10, + shadowOffsetY: 20 + } + }, + itemStyle: { + normal: { + color: '#a32323', + borderWidth: 10, + /*shadowColor: 'rgba(72,216,191, 0.3)', + shadowBlur: 100,*/ + label : {show: true}, + borderColor: '#A9F387' + } + }, + smooth: false, + markLine: { + label: { + formatter: '{b}: {c}' + }, + precision: 4, + lineStyle: { + width: 3, + color: 'red' + }, + data: [{ + name: '目标', + yAxis: '0.38' + }, { + type: 'average', + name: '平均' + }] + } + }] + + } + + +</script> + + +<style lang="scss" scoped> + .dashboard-editor-container { + padding: 32px; + background-color: rgb(240, 242, 245); + position: relative; + + .chart-wrapper { + background: #fff; + padding: 16px 16px 0; + margin-bottom: 32px; + } + } + + @media (max-width:1024px) { + .chart-wrapper { + padding: 8px; + } + } +</style> + diff --git a/ruoyi-ui/src/views/sd_density/sd_density_date_range.vue b/ruoyi-ui/src/views/sd_density/sd_density_date_range.vue new file mode 100644 index 000000000..8169a31c5 --- /dev/null +++ b/ruoyi-ui/src/views/sd_density/sd_density_date_range.vue @@ -0,0 +1,261 @@ +<template> + <div > + <div class="ibox-title"> + <el-row :gutter="24"> + + <el-col :xs="24" :sm="24" :lg="24"> + + <b>选择时间范围</b> + + <el-date-picker + v-model="daterange_time1" + align="right" + value-format="yyyy-MM-dd" + type="date" + placeholder="选择日期" + :picker-options="pickerOptions"> + </el-date-picker> + + <b>--</b> + <el-date-picker + v-model="daterange_time2" + align="right" + value-format="yyyy-MM-dd" + type="date" + placeholder="选择日期" + :picker-options="pickerOptions"> + </el-date-picker> + + <el-button @click="getData" type="primary">查询</el-button> + + </el-col> + </el-row> + </div> + <el-container > + + + <div id="chart_density_avg" style="width: 90%;height: 600px;top:20px"></div> + </el-container> + </div> +</template> + +<script> + import echarts from 'echarts' + + require('echarts/theme/macarons') // echarts theme + import resize from '../dashboard/mixins/resize' + import { getDensityDataRange } from '@/api/sd_dashboard/sd_density' + + let lineChartData = { + xAxisData: [], + actualData: [] + } + + export default { + mixins: [resize], + name: 'density30day', + data() { + return { + tableData: [], + pickerOptions: { + disabledDate(time) { + return time.getTime() > Date.now(); + }, + shortcuts: [{ + text: '今天', + onClick(picker) { + picker.$emit('pick', new Date()); + } + }, { + text: '昨天', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24); + picker.$emit('pick', date); + } + }, { + text: '一周前', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit('pick', date); + } + }, { + text: '30天前', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24 * 30); + picker.$emit('pick', date); + } + }] + }, + daterange_time1: '', + daterange_time2: '', + } + }, + + created() { + // this.getData() + }, + mounted() { + + + }, + methods: { + getData() { + + lineChartData = { + xAxisData: [], + actualData: [] + } + + getDensityDataRange(this.daterange_time1,this.daterange_time2).then(response => { + for (var i = 0; i < response.data.length; i++) { + lineChartData.xAxisData.push((response.data[i].time + '').replace(' 00:00:00.0', '')) + lineChartData.actualData.push(parseFloat(response.data[i].density).toFixed(3)) + } + + const chart_energy_avg = echarts.init(document.getElementById('chart_density_avg')) + + option_energy_avg.xAxis[0].data = lineChartData.xAxisData + option_energy_avg.series[0].data = lineChartData.actualData + option_energy_avg.title.text = '平均密度' + option_energy_avg.yAxis[0].min = (Math.min.apply(null, lineChartData.actualData).toFixed(2)*1-0.01) + option_energy_avg.yAxis[0].max = (Math.max.apply(null, lineChartData.actualData).toFixed(2)*1+0.01) + + chart_energy_avg.setOption(option_energy_avg, true) + + }) + } + } + + } + + const option_energy_avg = { + title: { + text: '', + textStyle: { + color: '#000', + fontSize: 18 + }, + itemGap: 5, + + x: 'center' + }, + tooltip: { + trigger: 'axis' + }, + xAxis: [{ + type: 'category', + data: ['1#', '2#', '3#', '30#'], + axisLine: { + lineStyle: { + color: '#999' + } + } + }], + yAxis: [{ + type: 'value', + min: 0.36, + max: 0.42, + + // splitNumber: 12, + splitLine: { + lineStyle: { + type: 'dashed', + color: '#DDD' + } + }, + axisLine: { + show: false, + lineStyle: { + color: '#333' + } + }, + nameTextStyle: { + color: '#999' + }, + splitArea: { + show: false + } + }], + series: [{ + name: '密度', + type: 'line', + data: [80, 72], + lineStyle: { + normal: { + width: 8, + color: { + type: 'linear', + + colorStops: [{ + offset: 0, + color: '#A9F387' // 0% 处的颜色 + }, { + offset: 1, + color: '#48D8BF' // 100% 处的颜色 + }], + globalCoord: false // 缺省为 false + }, + shadowColor: 'rgba(72,216,191, 0.3)', + shadowBlur: 10, + shadowOffsetY: 20 + } + }, + itemStyle: { + normal: { + color: '#a32323', + borderWidth: 10, + /*shadowColor: 'rgba(72,216,191, 0.3)', + shadowBlur: 100,*/ + borderColor: '#A9F387', + label : {show: true} + } + }, + smooth: false, + markLine: { + label: { + formatter: '{b}: {c}' + }, + precision: 4, + lineStyle: { + width: 3, + color: 'red' + }, + data: [{ + name: '目标', + yAxis: '0.38' + }, { + type: 'average', + name: '平均' + }] + } + }] + + } + + +</script> + + +<style lang="scss" scoped> + .dashboard-editor-container { + padding: 32px; + background-color: rgb(240, 242, 245); + position: relative; + + .chart-wrapper { + background: #fff; + padding: 16px 16px 0; + margin-bottom: 32px; + } + } + + @media (max-width:1024px) { + .chart-wrapper { + padding: 8px; + } + } +</style> + diff --git a/ruoyi-ui/src/views/sd_density/sd_density_group.vue b/ruoyi-ui/src/views/sd_density/sd_density_group.vue new file mode 100644 index 000000000..84c9a7ffe --- /dev/null +++ b/ruoyi-ui/src/views/sd_density/sd_density_group.vue @@ -0,0 +1,189 @@ +<template> + <div > + <el-container > + <div id="chart_density_avg" style="width: 90%;height: 600px;top:20px"></div> + </el-container> + </div> +</template> + +<script> + import echarts from 'echarts' + + require('echarts/theme/macarons') // echarts theme + import resize from '../dashboard/mixins/resize' + import { getDensityGroup } from '@/api/sd_dashboard/sd_density' + + let lineChartData = { + xAxisData: [], + actualData: [] + } + + export default { + mixins: [resize], + name: 'density30day', + + created() { + this.getData() + }, + mounted() { + + + }, + methods: { + getData() { + + lineChartData = { + xAxisData: [], + actualData: [] + } + + getDensityGroup().then(response => { + for (var i = 0; i < response.data.length; i++) { + lineChartData.xAxisData.push((response.data[i].time + '').replace(' 00:00:00.0', '')) + lineChartData.actualData.push(parseFloat(response.data[i].density).toFixed(3)) + } + + const chart_energy_avg = echarts.init(document.getElementById('chart_density_avg')) + + option_energy_avg.xAxis[0].data = lineChartData.xAxisData + option_energy_avg.series[0].data = lineChartData.actualData + option_energy_avg.title.text = '当班平均密度' + option_energy_avg.yAxis[0].min = (Math.min.apply(null, lineChartData.actualData).toFixed(2)*1-0.01) + option_energy_avg.yAxis[0].max = (Math.max.apply(null, lineChartData.actualData).toFixed(2)*1+0.01) + + chart_energy_avg.setOption(option_energy_avg, true) + + }) + } + } + + } + + const option_energy_avg = { + title: { + text: '', + textStyle: { + color: '#000', + fontSize: 18 + }, + itemGap: 5, + + x: 'center' + }, + tooltip: { + trigger: 'axis' + }, + xAxis: [{ + type: 'category', + data: ['1#', '2#', '3#', '30#'], + axisLine: { + lineStyle: { + color: '#999' + } + } + }], + yAxis: [{ + type: 'value', + min: 0.36, + max: 0.42, + + // splitNumber: 12, + splitLine: { + lineStyle: { + type: 'dashed', + color: '#DDD' + } + }, + axisLine: { + show: false, + lineStyle: { + color: '#333' + } + }, + nameTextStyle: { + color: '#999' + }, + splitArea: { + show: false + } + }], + series: [{ + name: '密度', + type: 'line', + data: [80, 72], + lineStyle: { + normal: { + width: 8, + color: { + type: 'linear', + + colorStops: [{ + offset: 0, + color: '#A9F387' // 0% 处的颜色 + }, { + offset: 1, + color: '#48D8BF' // 100% 处的颜色 + }], + globalCoord: false // 缺省为 false + }, + shadowColor: 'rgba(72,216,191, 0.3)', + shadowBlur: 10, + shadowOffsetY: 20 + } + }, + itemStyle: { + normal: { + color: '#a32323', + borderWidth: 10, + /*shadowColor: 'rgba(72,216,191, 0.3)', + shadowBlur: 100,*/ + label : {show: true}, + borderColor: '#A9F387' + } + }, + smooth: false, + markLine: { + label: { + formatter: '{b}: {c}' + }, + precision: 4, + lineStyle: { + width: 3, + color: 'red' + }, + data: [{ + name: '目标', + yAxis: '0.38' + }, { + type: 'average', + name: '平均' + }] + } + }] + + } + + +</script> + + +<style lang="scss" scoped> + .dashboard-editor-container { + padding: 32px; + background-color: rgb(240, 242, 245); + position: relative; + + .chart-wrapper { + background: #fff; + padding: 16px 16px 0; + margin-bottom: 32px; + } + } + + @media (max-width:1024px) { + .chart-wrapper { + padding: 8px; + } + } +</style> + diff --git a/ruoyi/src/main/java/com/ruoyi/db/mssql/DB_Ajax_DashBoard_48102.java b/ruoyi/src/main/java/com/ruoyi/db/mssql/DB_Ajax_DashBoard_48102.java index 8c4c78a0e..6c1993668 100644 --- a/ruoyi/src/main/java/com/ruoyi/db/mssql/DB_Ajax_DashBoard_48102.java +++ b/ruoyi/src/main/java/com/ruoyi/db/mssql/DB_Ajax_DashBoard_48102.java @@ -142,6 +142,67 @@ public class DB_Ajax_DashBoard_48102 { + public static String SD_DoGetCurrent() { + StringBuilder jsonpath = new StringBuilder(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "\tChangeMould,\n" + + "\tV_SD_MouldingDisplayBoard.Id,\n" + + "\tV_SD_MouldingDisplayBoard.Line,\n" + + "\tV_SD_MouldingDisplayBoard.CustomerName,\n" + + "\tV_SD_MouldingDisplayBoard.NormalDensity,\n" + + "\tV_SD_MouldingDisplayBoard.Length,\n" + + "\tV_SD_MouldingDisplayBoard.NormalCapacity,\n" + + "\tV_SD_MouldingDisplayBoard.SoCode,\n" + + "\tV_SD_MouldingDisplayBoard.NormalWeight,\n" + + "\tV_SD_MouldingDisplayBoard.Quantity,\n" + + "\tV_SD_MouldingDisplayBoard.FactCapacity,\n" + + "\tV_SD_MouldingDisplayBoard.MouldingStyleCode,\n" + + "\tV_SD_MouldingDisplayBoard.CurrentFinishedQuantity\n" + + "\t\n" + + "\t,\n" + + "CASE\n" + + "\t\t\n" + + "\t\tWHEN ( CurrentYield IS NULL ) THEN\n" + + "\t\t0 ELSE CurrentYield \n" + + "\tEND AS CurrentYield,\n" + + "CASE\n" + + "\t\t\n" + + "\t\tWHEN ( CapacityStandardObtainedRate IS NULL ) THEN\n" + + "\t\t0 ELSE CapacityStandardObtainedRate \n" + + "\tEND AS CapacityStandardObtainedRate,\n" + + "\tV_SD_MouldingDisplayBoard.SectionalErea,\n" + + "\tV_SD_MouldingDisplayBoard.MouldYield,\n" + + "\tV_SD_MouldingDisplayBoard.FinishedQuantity,\n" + + "\tV_SD_MouldingDisplayBoard.TotalCapacity,\n" + + "\tV_SD_MouldingDisplayBoard.ChangeMouldTime,\n" + + "\tV_SD_MouldingDisplayBoard.OperatePersonCode,\n" + + "\tV_SD_MouldingDisplayBoard.OperatePersonName,\n" + + "\tV_SD_MouldingDisplayBoard.Speed,\n" + + "\tV_SD_MouldingDisplayBoard.CurrentFinishLength \n" + + "FROM\n" + + "\tV_SD_MouldingDisplayBoard \n" + + "ORDER BY\n" + + "\tCAST ( REPLACE( V_SD_MouldingDisplayBoard.Line, '#', '' ) AS INT ) FOR JSON PATH"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + jsonpath.append(rs.getString(1)); + + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return jsonpath.toString(); + } public static List<HashMap<String,String>> DoGetLastDay() { List<HashMap<String,String>> hashMapList = new ArrayList<>(); diff --git a/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_8053_Test.java b/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_8053_Test.java new file mode 100644 index 000000000..030ba96c9 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_8053_Test.java @@ -0,0 +1,139 @@ +package com.ruoyi.db.sd_mssql; + +import java.sql.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class DB_8053_Test { + + private static String IP = "192.168.80.53"; + private static String DBName = "ERPDATA"; + private static String USER = "sa"; + private static String PWD = "#080507h"; + + /** 创建数据库对象 */ + private static Connection getSQLConnection() { + Connection con = null; + try { + Class.forName("net.sourceforge.jtds.jdbc.Driver"); + // 加上 useunicode=true;characterEncoding=UTF-8 防止中文乱码 + con = DriverManager.getConnection( + "jdbc:jtds:sqlserver://" + IP + ":1433/" + DBName + ";useunicode=true;characterEncoding=UTF-8", + USER, PWD); + } catch (ClassNotFoundException | SQLException e) { + e.printStackTrace(); + System.out.println("==连接数据库失败==="); + } + // System.out.println("==连接数据库成功==="); + return con; + } + + public static void main(String[] args) { + + } + + + + public static List<HashMap<String,String>> DoGetChangeMouldTimeList() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "\tLine,\n" + + "\tLEFT ( MouldingStyleCode, charindex( '-', MouldingStyleCode ) - 1 ) as Mould,MouldingStyleCode,\n" + + "\tStartTime,\n" + + "\tEndTime ,\n" + + "\tDATEDIFF( minute,starttime, endtime) as ChangeMouldTime\n" + + "FROM\n" + + "\t[dbo].[MouldingDisplayBoard] \n" + + "WHERE\n" + + "\tChangeMould = 1 and \tDATEDIFF( minute,starttime, endtime) > 20\n" + + "\torder by starttime desc \n"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("Line",rs.getString("Line")); + map.put("Mould",rs.getString("Mould")); + map.put("MouldingStyleCode",rs.getString("MouldingStyleCode")); + map.put("StartTime",rs.getString("StartTime")); + map.put("EndTime",rs.getString("EndTime")); + map.put("ChangeMouldTime",rs.getString("ChangeMouldTime")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + + public static List<HashMap<String,String>> DoGet_avg_changemouldtime_date_range(String fstarttime, String fendtime) { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT AVG\r\n" + + " (\r\n" + + " DATEDIFF( MINUTE, StartTime, EndTime )) AS avgchangemouldtime \r\n" + + "FROM\r\n" + + " dbo.MouldingDisplayBoard \r\n" + + "WHERE\r\n" + + "\tChangeMould = 1 and \tDATEDIFF( minute,starttime, endtime) > 20\n" + + " AND Deleted = 0 \r\n" + + " AND StartTime > '" + fstarttime + "' \r\n" + + " AND endtime < '" + fendtime + "'"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("avgchangemouldtime",rs.getString("avgchangemouldtime")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + + public static String JsonTest() { + StringBuilder jsonpath = new StringBuilder(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT * from [chen_12个月_A版本BOM销售额] FOR JSON PATH"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + jsonpath.append(rs.getString(1)); + + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return jsonpath.toString(); + } +} diff --git a/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_8053.java b/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_8053.java new file mode 100644 index 000000000..9d01ceaa8 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_8053.java @@ -0,0 +1,374 @@ +package com.ruoyi.db.sd_mssql; + +import java.sql.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class DB_Ajax_DashBoard_8053 { + + private static String IP = "192.168.80.53"; + private static String DBName = "ERPDATA"; + private static String USER = "sa"; + private static String PWD = "#080507h"; + + /** 创建数据库对象 */ + private static Connection getSQLConnection() { + Connection con = null; + try { + Class.forName("net.sourceforge.jtds.jdbc.Driver"); + // 加上 useunicode=true;characterEncoding=UTF-8 防止中文乱码 + con = DriverManager.getConnection( + "jdbc:jtds:sqlserver://" + IP + ":1433/" + DBName + ";useunicode=true;characterEncoding=UTF-8", + USER, PWD); + } catch (ClassNotFoundException | SQLException e) { + e.printStackTrace(); + System.out.println("==连接数据库失败==="); + } + // System.out.println("==连接数据库成功==="); + return con; + } + + public static void main(String[] args) { + + } + + + + public static List<HashMap<String,String>> DoGetCurrentTimeGroup() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT * FROM [dbo].[V_chen_Dashboard_当前] order by " + + "CAST (" + + "REPLACE( line, '#', '' ) AS INT)"; + + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + + HashMap<String,String> map = new HashMap<>(); + map.put("line",rs.getString("line")); + map.put("Moulds",rs.getString("Moulds")); + map.put("Person",rs.getString("Person")); + map.put("NormalCapacity",rs.getString("NormalCapacity")); + map.put("currentspeed",rs.getString("currentspeed")); + map.put("FinishedQuantity",rs.getString("FinishedQuantity")); + map.put("GroupTime",rs.getString("GroupTime")); + map.put("GroupChangeMouldTime",rs.getString("GroupChangeMouldTime")); + map.put("CurrentYield",rs.getString("CurrentYield")); + map.put("CapacityStandardObtainedRate",rs.getString("CapacityStandardObtainedRate")); + map.put("AvgDensity",rs.getString("AvgDensity")); + map.put("MouldAndChangeMouldTime",rs.getString("MouldAndChangeMouldTime")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + public static String DoGetCurrent() { + StringBuilder jsonpath = new StringBuilder(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "\t( SELECT MAX ( MouldingDisplayBoardOperation.OperateTime ) FROM MouldingDisplayBoardOperation WHERE MouldingDisplayBoardOperation.DisplayBoardId = V_MouldingDisplayBoard.Id ) AS LastUpdateDate,\n" + + "ChangeMould,\n" + + "\tdbo.V_MouldingDisplayBoard.Id,\n" + + "\tdbo.V_MouldingDisplayBoard.Line,\n" + + "\tdbo.V_MouldingDisplayBoard.CustomerName,\n" + + "\tdbo.V_MouldingDisplayBoard.NormalDensity,\n" + + "\tdbo.V_MouldingDisplayBoard.Length,\n" + + "\tdbo.V_MouldingDisplayBoard.NormalCapacity,\n" + + "\tdbo.V_MouldingDisplayBoard.SoCode,\n" + + "\tdbo.V_MouldingDisplayBoard.NormalWeight,\n" + + "\tdbo.V_MouldingDisplayBoard.Quantity,\n" + + "\tdbo.V_MouldingDisplayBoard.FactCapacity,\n" + + "\tdbo.V_MouldingDisplayBoard.MouldingStyleCode,\n" + + "\tdbo.V_MouldingDisplayBoard.CurrentFinishedQuantity\n" + + "\t\n" + + "\t,\n" + + "CASE\n" + + "\t\t\n" + + "\t\tWHEN ( CurrentYield IS NULL ) THEN\n" + + "\t\t0 ELSE CurrentYield \n" + + "\tEND AS CurrentYield,\n" + + "CASE\n" + + "\t\t\n" + + "\t\tWHEN ( CapacityStandardObtainedRate IS NULL ) THEN\n" + + "\t\t0 ELSE CapacityStandardObtainedRate \n" + + "\tEND AS CapacityStandardObtainedRate,\n" + + "\tdbo.V_MouldingDisplayBoard.SectionalErea,\n" + + "\tdbo.V_MouldingDisplayBoard.MouldYield,\n" + + "\tdbo.V_MouldingDisplayBoard.FinishedQuantity,\n" + + "\tdbo.V_MouldingDisplayBoard.TotalCapacity,\n" + + "\tdbo.V_MouldingDisplayBoard.ChangeMouldTime,\n" + + "\tdbo.V_MouldingDisplayBoard.OperatePersonCode,\n" + + "\tdbo.V_MouldingDisplayBoard.OperatePersonName,\n" + + "\tdbo.V_MouldingDisplayBoard.Speed,\n" + + "\tdbo.V_MouldingDisplayBoard.CurrentFinishLength \n" + + "FROM\n" + + "\tdbo.V_MouldingDisplayBoard \n" + + "ORDER BY\n" + + "\tCAST (\n" + + "\tREPLACE( dbo.V_MouldingDisplayBoard.Line, '#', '' ) AS INT) FOR JSON PATH"; + Statement stmt = conn.createStatement();// + System.out.println(sql); + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + jsonpath.append(rs.getString(1)); + + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return jsonpath.toString(); + } + + + + + public static List<HashMap<String,String>> DoGetLastDay() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT * FROM V_chen_Dashboard_当天 ORDER BY " + + "CAST (" + + "REPLACE( line, '#', '' ) AS INT)"; + + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + + + + HashMap<String,String> map = new HashMap<>(); + map.put("line",rs.getString("line")); + map.put("Moulds",rs.getString("Moulds")); + map.put("sumbox",rs.getString("sumbox")); + map.put("sum_box_meter",rs.getString("sum_box_meter")); + map.put("sum_device_meter",rs.getString("sum_device_meter")); + map.put("avg_density",rs.getString("avg_density")); + map.put("avg_currentcapacity",rs.getString("avg_currentcapacity")); + map.put("avg_normalcapacity",rs.getString("avg_normalcapacity")); + map.put("lastchangemouldtime",rs.getString("lastchangemouldtime")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + public static List<HashMap<String,String>> DoGet30Day() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT * FROM V_chen_Dashboard_当月 ORDER BY "+ + " CAST (" + + "REPLACE( line, '#', '' ) AS INT)"; + + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + + + + HashMap<String,String> map = new HashMap<>(); + map.put("line",rs.getString("line")); + map.put("Moulds",rs.getString("Moulds")); + map.put("sumbox",rs.getString("sumbox")); + map.put("sum_box_meter",rs.getString("sum_box_meter")); + map.put("sum_device_meter",rs.getString("sum_device_meter")); + map.put("avg_density",rs.getString("avg_density")); + map.put("avg_currentcapacity",rs.getString("avg_currentcapacity")); + map.put("avg_normalcapacity",rs.getString("avg_normalcapacity")); + map.put("lastchangemouldtime",rs.getString("lastchangemouldtime")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + public static List<HashMap<String,String>> DoGetDateRange(String fstarttime, String fendtime) { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "DECLARE @FStartTime DATETIME\r\n" + + "DECLARE @FEndTime DATETIME\r\n" + + "\r\n" + + "set @FStartTime='" + fstarttime + "'\r\n" + + "set @FEndTime='" + fendtime + "'\r\n" + + "\r\n" + + "\r\n" + + "\r\n" + + "\r\n" + + "SELECT\r\n" + + " db1.line,\r\n" + + " AVG ( avg_density ) AS avg_density,\r\n" + + " SUM ( sumbox ) AS sumbox,\r\n" + + " MAX ( db2.sum1 ) AS sum_box_meter,\r\n" + + " MAX ( db2.sum0 ) AS sum_device_meter,\r\n" + + " dbo.chen_cal_line_time_mould ( MIN ( db1.StartTime ), MAX ( db1.EndTime ), db1.Line ) AS Moulds,\r\n" + + " SUM ( currentcap * ( boxmeter / db2.sum1 )) AS avg_currentcapacity,\r\n" + + " SUM ( db1.NormalCapacity* ( boxmeter / db2.sum1 )) AS avg_normalcapacity,\r\n" + + " SUM ( boxmeter / db2.sum1 ) AS 校验字段 ,\r\n" + + " avg(db4.ChangeMouldTime) as lastchangemouldtime\r\n" + + "FROM \r\n" + + " (SELECT\r\n" + + " dbo.chen_cal_line_difftime( db3.StartTime, db3.EndTime, db3.line, db3.EndTime) as difftime,\r\n" + + " db3.Quantity as Quantity,\r\n" + + " db3.StartTime as StartTime,\r\n" + + " db3.EndTime as EndTime,\r\n" + + " db3.line as line,\r\n" + + " db3.Length as Length ,\r\n" + + " db3.NumberOfEveryKit as NumberOfEveryKit,\r\n" + + " db3.MouldingStyleCode as MouldingStyleCode,\r\n" + + " db3.SoCode as SoCode,\r\n" + + " dbo.chen_cal_line_time_mould ( db3.StartTime, db3.EndTime, Line ) AS Moulds,\r\n" + + " dbo.chen_cal_line_time_density ( db3.StartTime, db3.EndTime, Line ) AS avg_density,\r\n" + + " \r\n" + + " dbo.chen_cal_line_meter ( db3.StartTime, db3.EndTime, Line, @FEndTime ) / dbo.chen_cal_line_difftime( db3.StartTime, db3.EndTime, db3.line, db3.EndTime) * 60 * 60 * 12 AS currentcap,\r\n" + + " NormalCapacity,\r\n" + + " db3.sumbox AS sumbox,\r\n" + + " dbo.chen_cal_line_meter ( db3.StartTime, db3.EndTime, Line, @FEndTime ) AS meter,\r\n" + + " (db3.Length * db3.NumberOfEveryKit * db3.sumbox) AS boxmeter\r\n" + + " \r\n" + + "FROM\r\n" + + " (\r\n" + + " SELECT\r\n" + + " db2.id,\r\n" + + " db2.line,\r\n" + + " SUM ( db1.Quantity ) AS sumbox,\r\n" + + " MIN ( db1.OperateTime ) AS minop,\r\n" + + " MAX ( db1.OperateTime ) AS maxop,\r\n" + + " MAX (db2.Quantity) as Quantity, \r\n" + + " MAX (db2.Length) as Length,\r\n" + + " MAX (db2.NumberOfEveryKit) as NumberOfEveryKit,\r\n" + + " MAX (db2.MouldingStyleCode) as MouldingStyleCode,\r\n" + + " MAX (db2.SoCode) as SoCode, MAX (db2.NormalCapacity) as NormalCapacity,\r\n" + + " ( CASE WHEN MIN ( db2.StartTime ) < @FStartTime THEN @FStartTime ELSE MIN ( db2.StartTime ) END ) AS StartTime,\r\n" + + " ( CASE WHEN MIN ( db2.EndTime ) IS NULL THEN (dbo.chen_cal_line_op_lasttime(MIN ( db2.EndTime ),db2.line,@FEndTime)) ELSE ( CASE WHEN MIN ( db2.EndTime ) > @FEndTime THEN @FEndTime ELSE MIN ( db2.EndTime ) END ) END ) AS EndTime FROM\r\n" + + " [dbo].[MouldingDisplayBoardOperation] AS db1\r\n" + + " INNER JOIN MouldingDisplayBoard AS db2 ON db2.id = db1.DisplayBoardId \r\n" + + " WHERE\r\n" + + " db1.OperateTime >= @FStartTime \r\n" + + " AND db1.OperateTime <= @FEndTime \r\n" + + " GROUP BY\r\n" + + " db2.id,\r\n" + + " db2.line \r\n" + + " ) AS db3) AS db1\r\n" + + " INNER JOIN ( SELECT line, SUM ( meter ) AS sum0, SUM ( boxmeter ) AS sum1 FROM (SELECT\r\n" + + " dbo.chen_cal_line_difftime( db3.StartTime, db3.EndTime, db3.line, db3.EndTime) as difftime,\r\n" + + " db3.Quantity as Quantity,\r\n" + + " db3.StartTime as StartTime,\r\n" + + " db3.EndTime as EndTime,\r\n" + + " db3.line as line,\r\n" + + " db3.Length as Length ,\r\n" + + " db3.NumberOfEveryKit as NumberOfEveryKit,\r\n" + + " db3.MouldingStyleCode as MouldingStyleCode,\r\n" + + " db3.SoCode as SoCode,\r\n" + + " dbo.chen_cal_line_time_mould ( db3.StartTime, db3.EndTime, Line ) AS Moulds,\r\n" + + " dbo.chen_cal_line_time_density ( db3.StartTime, db3.EndTime, Line ) AS avg_density,\r\n" + + " \r\n" + + " dbo.chen_cal_line_meter ( db3.StartTime, db3.EndTime, Line, @FEndTime ) / dbo.chen_cal_line_difftime( db3.StartTime, db3.EndTime, db3.line, db3.EndTime) * 60 * 60 * 12 AS currentcap,\r\n" + + " NormalCapacity,\r\n" + + " db3.sumbox AS sumbox,\r\n" + + " dbo.chen_cal_line_meter ( db3.StartTime, db3.EndTime, Line, @FEndTime ) AS meter,\r\n" + + " (db3.Length * db3.NumberOfEveryKit * db3.sumbox) AS boxmeter\r\n" + + " \r\n" + + "FROM\r\n" + + " (\r\n" + + " SELECT\r\n" + + " db2.id,\r\n" + + " db2.line,\r\n" + + " SUM ( db1.Quantity ) AS sumbox,\r\n" + + " MIN ( db1.OperateTime ) AS minop,\r\n" + + " MAX ( db1.OperateTime ) AS maxop,\r\n" + + " MAX (db2.Quantity) as Quantity, \r\n" + + " MAX (db2.Length) as Length,\r\n" + + " MAX (db2.NumberOfEveryKit) as NumberOfEveryKit,\r\n" + + " MAX (db2.MouldingStyleCode) as MouldingStyleCode,\r\n" + + " MAX (db2.SoCode) as SoCode, MAX (db2.NormalCapacity) as NormalCapacity,\r\n" + + " ( CASE WHEN MIN ( db2.StartTime ) < @FStartTime THEN @FStartTime ELSE MIN ( db2.StartTime ) END ) AS StartTime,\r\n" + + " ( CASE WHEN MIN ( db2.EndTime ) IS NULL THEN (dbo.chen_cal_line_op_lasttime(MIN ( db2.EndTime ),db2.line,@FEndTime)) ELSE ( CASE WHEN MIN ( db2.EndTime ) > @FEndTime THEN @FEndTime ELSE MIN ( db2.EndTime ) END ) END ) AS EndTime FROM\r\n" + + " [dbo].[MouldingDisplayBoardOperation] AS db1\r\n" + + " INNER JOIN MouldingDisplayBoard AS db2 ON db2.id = db1.DisplayBoardId \r\n" + + " WHERE\r\n" + + " db1.OperateTime >= @FStartTime \r\n" + + " AND db1.OperateTime <= @FEndTime \r\n" + + " GROUP BY\r\n" + + " db2.id,\r\n" + + " db2.line \r\n" + + " ) AS db3) AS db3 GROUP BY line ) AS db2 ON db2.line = db1.line\r\n" + + " LEFT JOIN (SELECT Line,id,DATEDIFF(MINUTE,StartTime,EndTime) as ChangeMouldTime FROM MouldingDisplayBoard WHERE id IN (SELECT MAX (id) AS id FROM MouldingDisplayBoard WHERE ChangeMould=1 GROUP BY Line)) as db4 on db4.line = db1.line\r\n" + + "\r\n" + + "GROUP BY" + + " db1.line " + + "ORDER BY " + + "CAST (" + + " REPLACE( db1.line, '#', '' ) AS INT)"; + Statement stmt = conn.createStatement();// + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + + + + HashMap<String,String> map = new HashMap<>(); + map.put("line",rs.getString("line")); + map.put("Moulds",rs.getString("Moulds")); + map.put("sumbox",rs.getString("sumbox")); + map.put("sum_box_meter",rs.getString("sum_box_meter")); + map.put("sum_device_meter",rs.getString("sum_device_meter")); + map.put("avg_density",rs.getString("avg_density")); + map.put("avg_currentcapacity",rs.getString("avg_currentcapacity")); + map.put("avg_normalcapacity",rs.getString("avg_normalcapacity")); + map.put("lastchangemouldtime",rs.getString("lastchangemouldtime")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + +} diff --git a/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_ChangeMouldTime_8053.java b/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_ChangeMouldTime_8053.java new file mode 100644 index 000000000..95bd764d6 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_ChangeMouldTime_8053.java @@ -0,0 +1,201 @@ +package com.ruoyi.db.sd_mssql; + +import java.sql.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class DB_Ajax_DashBoard_ChangeMouldTime_8053 { + + private static String IP = "192.168.80.53"; + private static String DBName = "ERPDATA"; + private static String USER = "sa"; + private static String PWD = "#080507h"; + + /** 创建数据库对象 */ + private static Connection getSQLConnection() { + Connection con = null; + try { + Class.forName("net.sourceforge.jtds.jdbc.Driver"); + // 加上 useunicode=true;characterEncoding=UTF-8 防止中文乱码 + con = DriverManager.getConnection( + "jdbc:jtds:sqlserver://" + IP + ":1433/" + DBName + ";useunicode=true;characterEncoding=UTF-8", + USER, PWD); + } catch (ClassNotFoundException | SQLException e) { + e.printStackTrace(); + System.out.println("==连接数据库失败==="); + } + // System.out.println("==连接数据库成功==="); + return con; + } + + public static void main(String[] args) { + + } + + + + public static List<HashMap<String,String>> DoGetChangeMouldTimeList() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "\tLine,\n" + + "\tLEFT ( MouldingStyleCode, charindex( '-', MouldingStyleCode ) - 1 ) as Mould,MouldingStyleCode,\n" + + "\tStartTime,\n" + + "\tEndTime ,\n" + + "\tDATEDIFF( minute,starttime, endtime) as ChangeMouldTime\n" + + "FROM\n" + + "\t[dbo].[MouldingDisplayBoard] \n" + + "WHERE\n" + + "\tChangeMould = 1 and \tDATEDIFF( minute,starttime, endtime) > 20\n" + + "\torder by starttime desc \n"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("Line",rs.getString("Line")); + map.put("Mould",rs.getString("Mould")); + map.put("MouldingStyleCode",rs.getString("MouldingStyleCode")); + map.put("StartTime",rs.getString("StartTime")); + map.put("EndTime",rs.getString("EndTime")); + map.put("ChangeMouldTime",rs.getString("ChangeMouldTime")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + public static List<HashMap<String,String>> DoGetChangeMouldTimeListDateRange(String fstarttime, String fendtime) { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "\tLine,\n" + + "\tLEFT ( MouldingStyleCode, charindex( '-', MouldingStyleCode ) - 1 ) AS Mould,\n" + + "\tMouldingStyleCode,\n" + + "\tStartTime,\n" + + "\tEndTime,\n" + + "\tDATEDIFF( MINUTE, starttime, endtime ) AS ChangeMouldTime \n" + + "FROM\n" + + "\t[dbo].[MouldingDisplayBoard] \n" + + "WHERE\n" + + "\tChangeMould = 1 \n" + + "\tAND DATEDIFF( MINUTE, starttime, endtime ) > 20 \n" + + "\tAND endtime >= '"+fstarttime+"' \n" + + "\tAND endtime <= '"+fendtime+"' \n" + + "ORDER BY\n" + + "\tstarttime DESC"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("Line",rs.getString("Line")); + map.put("Mould",rs.getString("Mould")); + map.put("MouldingStyleCode",rs.getString("MouldingStyleCode")); + map.put("StartTime",rs.getString("StartTime")); + map.put("EndTime",rs.getString("EndTime")); + map.put("ChangeMouldTime",rs.getString("ChangeMouldTime")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + + public static List<HashMap<String,String>> DoGet_avg_changemouldtime_date_range(String fstarttime, String fendtime) { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT AVG\n" + + "\t(\n" + + "\tDATEDIFF( MINUTE, StartTime, EndTime )) AS avgchangemouldtime , count\n" + + "\t(\n" + + "\tDATEDIFF( MINUTE, StartTime, EndTime )) AS num \n" + + "FROM\n" + + "\tdbo.MouldingDisplayBoard \n" + + "WHERE\n" + + "\tChangeMould = 1 \n" + + "\tAND DATEDIFF( MINUTE, starttime, endtime ) > 20 \n" + + "\tAND Deleted = 0 " + + " AND StartTime > '" + fstarttime + "' \r\n" + + " AND endtime < '" + fendtime + "'"; + Statement stmt = conn.createStatement();// + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("avgchangemouldtime",rs.getString("avgchangemouldtime")); + map.put("num",rs.getString("num")); + + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + + public static List<HashMap<String,String>> DoGetGroupDensityListMap() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\r\n" + + " line AS line,\r\n" + + " AVG ( Density ) AS density \r\n" + + "FROM\r\n" + + " [dbo].[MouldingRealTimeDensity] \r\n" + + "WHERE\r\n" + + " CreatedOn > dbo.GetWorkShiftStartDate ( GETDATE( ) ) \r\n" + + "GROUP BY\r\n" + + " line \r\n" + + "ORDER BY\r\n" + + " convert(int,REPLACE( line, '#', '' ) )"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("density",rs.getString("density")); + map.put("time",rs.getString("line")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } +} diff --git a/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_Density_8053.java b/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_Density_8053.java new file mode 100644 index 000000000..e40956755 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_Density_8053.java @@ -0,0 +1,284 @@ +package com.ruoyi.db.sd_mssql; + +import java.sql.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class DB_Ajax_DashBoard_Density_8053 { + + private static String IP = "192.168.80.53"; + private static String DBName = "ERPDATA"; + private static String USER = "sa"; + private static String PWD = "#080507h"; + + /** 创建数据库对象 */ + private static Connection getSQLConnection() { + Connection con = null; + try { + Class.forName("net.sourceforge.jtds.jdbc.Driver"); + // 加上 useunicode=true;characterEncoding=UTF-8 防止中文乱码 + con = DriverManager.getConnection( + "jdbc:jtds:sqlserver://" + IP + ":1433/" + DBName + ";useunicode=true;characterEncoding=UTF-8", + USER, PWD); + } catch (ClassNotFoundException | SQLException e) { + e.printStackTrace(); + System.out.println("==连接数据库失败==="); + } + // System.out.println("==连接数据库成功==="); + return con; + } + + public static void main(String[] args) { + + } + + public static List<String> DoGet72hdensity() { + List<String> list = new ArrayList<String>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\r\n" + + " ProductDate+TIME as time,\r\n" + + " AVG ( Density ) as density\r\n" + + "FROM\r\n" + + " [dbo].[MouldingRealTimeDensity] \r\n" + + "WHERE\r\n" + + " CreatedOn > GETDATE( ) - 3\r\n" + + "GROUP BY\r\n" + + " ProductDate,\r\n" + + "TIME ORDER BY MAX(CreatedOn)"; + Statement stmt = conn.createStatement();// +// System.out.println(sql); + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + list.add("{time:\"" + rs.getString("time") + "\",density:\"" + rs.getString("density") + + "\"}"); + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return list; + } + public static List<String> DoGetgroupdensity() { + List<String> list = new ArrayList<String>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\r\n" + + " line AS line,\r\n" + + " AVG ( Density ) AS density \r\n" + + "FROM\r\n" + + " [dbo].[MouldingRealTimeDensity] \r\n" + + "WHERE\r\n" + + " CreatedOn > dbo.GetWorkShiftStartDate ( GETDATE( ) ) \r\n" + + "GROUP BY\r\n" + + " line \r\n" + + "ORDER BY\r\n" + + " convert(int,REPLACE( line, '#', '' ) )"; + Statement stmt = conn.createStatement();// +// System.out.println(sql); + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + list.add("{line:\"" + rs.getString("line") + "\",density:\"" + rs.getString("density") + + "\"}"); + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return list; + } + public static List<String> DoGet30ddensity() { + List<String> list = new ArrayList<String>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\r\n" + + " ProductDate as time,\r\n" + + " AVG ( Density ) as density\r\n" + + "FROM\r\n" + + " [dbo].[MouldingRealTimeDensity] \r\n" + + "WHERE\r\n" + + " CreatedOn > GETDATE( ) - 30\r\n" + + "GROUP BY\r\n" + + " ProductDate ORDER BY MAX(CreatedOn)"; + Statement stmt = conn.createStatement();// +// System.out.println(sql); + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + list.add("{time:\"" + rs.getString("time") + "\",density:\"" + rs.getString("density") + + "\"}"); + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return list; + } + + + public static List<HashMap<String,String>> DoGet30dDensityListMap() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\r\n" + + " ProductDate as time,\r\n" + + " AVG ( Density ) as density\r\n" + + "FROM\r\n" + + " [dbo].[MouldingRealTimeDensity] \r\n" + + "WHERE\r\n" + + " CreatedOn > GETDATE( ) - 30\r\n" + + "GROUP BY\r\n" + + " ProductDate ORDER BY MAX(CreatedOn)"; + Statement stmt = conn.createStatement();// +// System.out.println(sql); + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("density",rs.getString("density")); + map.put("time",rs.getString("time")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + + public static List<HashMap<String,String>> DoGet72hDensityListMap() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\r\n" + + " ProductDate+TIME as time,\r\n" + + " AVG ( Density ) as density\r\n" + + "FROM\r\n" + + " [dbo].[MouldingRealTimeDensity] \r\n" + + "WHERE\r\n" + + " CreatedOn > GETDATE( ) - 3\r\n" + + "GROUP BY\r\n" + + " ProductDate,\r\n" + + "TIME ORDER BY MAX(CreatedOn)"; + Statement stmt = conn.createStatement();// +// System.out.println(sql); + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("density",rs.getString("density")); + map.put("time",rs.getString("time")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + + public static List<HashMap<String,String>> DoGetGroupDensityListMap() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\r\n" + + " line AS line,\r\n" + + " AVG ( Density ) AS density \r\n" + + "FROM\r\n" + + " [dbo].[MouldingRealTimeDensity] \r\n" + + "WHERE\r\n" + + " CreatedOn > dbo.GetWorkShiftStartDate ( GETDATE( ) ) \r\n" + + "GROUP BY\r\n" + + " line \r\n" + + "ORDER BY\r\n" + + " convert(int,REPLACE( line, '#', '' ) )"; + Statement stmt = conn.createStatement();// +// System.out.println(sql); + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("density",rs.getString("density")); + map.put("time",rs.getString("line")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + public static List<HashMap<String,String>> getDensityDataRange(String fDateStart, String fDateEnd) { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "\tProductDate AS TIME,\n" + + "\tAVG ( Density ) AS density \n" + + "FROM\n" + + "\t[dbo].[MouldingRealTimeDensity] \n" + + "WHERE\n" + + "\tCreatedOn >= '"+fDateStart+"' and CreatedOn <= '"+fDateEnd+"'" + + "GROUP BY\n" + + "\tProductDate \n" + + "ORDER BY\n" + + "\tMAX ( CreatedOn );"; + Statement stmt = conn.createStatement();// +// System.out.println(sql); + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("density",rs.getString("density")); + map.put("time",rs.getString("time")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + +} diff --git a/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_Technologist_8053.java b/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_Technologist_8053.java new file mode 100644 index 000000000..df41982ac --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/db/sd_mssql/DB_Ajax_DashBoard_Technologist_8053.java @@ -0,0 +1,556 @@ +package com.ruoyi.db.sd_mssql; + +import java.sql.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class DB_Ajax_DashBoard_Technologist_8053 { + + private static String IP = "192.168.80.53"; + private static String DBName = "ERPDATA"; + private static String USER = "sa"; + private static String PWD = "#080507h"; + + /** 创建数据库对象 */ + private static Connection getSQLConnection() { + Connection con = null; + try { + Class.forName("net.sourceforge.jtds.jdbc.Driver"); + // 加上 useunicode=true;characterEncoding=UTF-8 防止中文乱码 + con = DriverManager.getConnection( + "jdbc:jtds:sqlserver://" + IP + ":1433/" + DBName + ";useunicode=true;characterEncoding=UTF-8", + USER, PWD); + } catch (ClassNotFoundException | SQLException e) { + e.printStackTrace(); + System.out.println("==连接数据库失败==="); + } + // System.out.println("==连接数据库成功==="); + return con; + } + + public static void main(String[] args) { + + } + + + + public static List<HashMap<String,String>> DoGetSampleConfirmation() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "\t内外销,\n" + + "\tSUM ( CASE WHEN 客户是否下单 = '是' THEN 1 ELSE 0 END ) AS 下单数,\n" + + "\tCOUNT (内外销) AS 打样数 \n" + + "FROM\n" + + "\t[dbo].[chen_打样分析汇总] \n" + + "GROUP BY\n" + + "\t内外销;"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("NWX",rs.getString("内外销")); + map.put("ConfirmationNum",rs.getString("下单数")); + map.put("SampleNum",rs.getString("打样数")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + public static List<HashMap<String,String>> DoGetBestOEM() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT TOP\n" + + "\t20 MouldingStyleCode,\n" + + "\t[折算人民币价税合计] AS CNY \n" + + "FROM\n" + + "\t[chen_12个月_A版本BOM销售额] \n" + + "WHERE\n" + + "\ttagname = 'OEM' \n" + + "ORDER BY\n" + + "\t折算人民币价税合计 DESC"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("MouldingStyleCode",rs.getString("MouldingStyleCode")); + map.put("CNY",rs.getString("CNY")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + public static List<HashMap<String,String>> DoGetBestODM() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT TOP\n" + + "\t20 MouldingStyleCode,\n" + + "\t[折算人民币价税合计] AS CNY \n" + + "FROM\n" + + "\t[chen_12个月_A版本BOM销售额] \n" + + "WHERE\n" + + "\ttagname = 'ODM' \n" + + "ORDER BY\n" + + "\t折算人民币价税合计 DESC"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("MouldingStyleCode",rs.getString("MouldingStyleCode")); + map.put("CNY",rs.getString("CNY")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + /** + * 已完成订单交期 + * 根据工艺员共计数量 + */ + public static List<HashMap<String,String>> DoFinishedSampleAvgDay() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "\tTechnologist,\n" + + "\tCOUNT(id) as num,\n" + + "\tAVG (\n" + + "\tCAST ( [分解天数] AS FLOAT )) AS avg_f,\n" + + "\tAVG ( CAST ( [交期天数] AS FLOAT ) ) AS avg_j \n" + + "FROM\n" + + "\t[dbo].[chen_打样分析汇总] \n" + + "WHERE\n" + + "\tStatus = 3 \n" + + "GROUP BY\n" + + "\tTechnologist"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("Technologist",rs.getString("Technologist")); + map.put("avg_f",rs.getString("avg_f")); + map.put("num",rs.getString("num")); + map.put("avg_j",rs.getString("avg_j")); + + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + /** + * 未完成打样交期 + * 根据工艺员共计数量 + */ + public static List<HashMap<String,String>> DoUnFinishedSampleAvgDay() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "\tTechnologist,\n" + + "\tCOUNT ( id ) AS num,\n" + + "\tSUM ( CASE WHEN use_date >= 15 THEN 1 ELSE 0 END ) as day15num,\n" + + "\tAVG(use_date) as avg_use_date\n" + + "\tFROM\n" + + "\t\t( SELECT Technologist, id, DATEDIFF( DAY, [经理审核时间], GETDATE()) AS use_date FROM [dbo].[chen_打样分析汇总] WHERE ( Status = 2 OR Status = 1 ) AND [经理审核时间] IS NOT NULL ) AS db0 \n" + + "GROUP BY\n" + + "\tTechnologist"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("Technologist",rs.getString("Technologist")); + map.put("day15num",rs.getString("day15num")); + map.put("num",rs.getString("num")); + map.put("avg_use_date",rs.getString("avg_use_date")); + + + + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + /** + * 新增订单 + * + */ + public static List<HashMap<String,String>> DayFinishedSampleOrder() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "dbo.[chen_打样分析汇总].Technologist,\n" + + "dbo.[chen_打样分析汇总].SalesMan,\n" + + "dbo.[chen_打样分析汇总].MouldingStyleCode,\n" + + "dbo.[chen_打样分析汇总].[折算人民币价税合计] as CNY\n" + + "\n" + + "FROM\n" + + "dbo.[chen_打样分析汇总]\n" + + "WHERE\n" + + "dbo.[chen_打样分析汇总].CreatedOn >= dbo.GetWorkShiftStartDate ( GETDATE( ) - 1 ) AND\n" + + "dbo.[chen_打样分析汇总].CreatedOn <= dbo.GetWorkShiftStartDate ( GETDATE( ) )\n"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("Technologist",rs.getString("Technologist")); + map.put("SalesMan",rs.getString("SalesMan")); + map.put("MouldingStyleCode",rs.getString("MouldingStyleCode")); + map.put("CNY",rs.getString("CNY")); + + + + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + /** + * 新开模 + * + */ + public static List<HashMap<String,String>> DayNewMould() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "dbo.MouldManufacture.MouldCode,\n" + + "CASE dbo.MouldManufacture.ManufactureType\n" + + "\tWHEN 1 THEN N'新开模'\n" + + "\tELSE N'修模'\n" + + "END as new_or_fix\n" + + ",\n" + + "BD_User.UserName\n" + + "FROM\n" + + "dbo.MouldManufacture\n" + + "INNER JOIN BD_User on dbo.MouldManufacture.CreatedBy = BD_User.UserId\n" + + "WHERE\n" + + "dbo.MouldManufacture.CreatedOn >= dbo.GetWorkShiftStartDate ( GETDATE( ) - 1 ) AND\n" + + "dbo.MouldManufacture.CreatedOn <= dbo.GetWorkShiftStartDate ( GETDATE( ) ) AND\n" + + "dbo.MouldManufacture.Status <> -1\n"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("UserName",rs.getString("UserName")); + map.put("new_or_fix",rs.getString("new_or_fix")); + map.put("MouldCode",rs.getString("MouldCode")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + /** + * 打样完成 + * + */ + public static List<HashMap<String,String>> DayFinishedSample() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "\tdbo.[chen_打样分析汇总].MouldingStyleCode,\n" + + "\tdbo.[chen_打样分析汇总].Technologist,\n" + + "\tdbo.[chen_打样分析汇总].FinishedDensity,\n" + + "\tdbo.[chen_打样分析汇总].FinishedSpeed,\n" + + "\tdbo.[chen_打样分析汇总].FinishedBy,\n" + + "\tdbo.[chen_打样分析汇总].[交期天数] as UseDay\n" + + "FROM\n" + + "\tdbo.[chen_打样分析汇总] \n" + + "WHERE\n" + + "\tdbo.[chen_打样分析汇总].FinishedOn >= dbo.GetWorkShiftStartDate ( GETDATE( ) - 1 ) \n" + + "\tAND dbo.[chen_打样分析汇总].FinishedOn <= dbo.GetWorkShiftStartDate ( GETDATE( ) )"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("MouldingStyleCode",rs.getString("MouldingStyleCode")); + map.put("Technologist",rs.getString("Technologist")); + map.put("FinishedDensity",rs.getString("FinishedDensity")); + map.put("FinishedSpeed",rs.getString("FinishedSpeed")); + map.put("FinishedBy",rs.getString("FinishedBy")); + map.put("UseDay",rs.getString("UseDay")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + /** + * BOM完成 + * + */ + public static List<HashMap<String,String>> DayFinishedBOM() { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT\n" + + "dbo.MouldingTechnicalForm.MouldingStyleCode,\n" + + "dbo.MouldingTechnicalForm.Maker\n" + + "\n" + + "FROM\n" + + "dbo.MouldingTechnicalForm\n" + + "WHERE\n" + + "dbo.MouldingTechnicalForm.ModifiedOn >= dbo.GetWorkShiftStartDate ( GETDATE( ) - 1 ) AND\n" + + "dbo.MouldingTechnicalForm.ModifiedOn <= dbo.GetWorkShiftStartDate ( GETDATE( ) )"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("MouldingStyleCode",rs.getString("MouldingStyleCode")); + map.put("Maker",rs.getString("Maker")); + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + public static String All() { + StringBuilder jsonpath = new StringBuilder(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT * from [chen_打样分析汇总] order by CreatedOn desc FOR JSON PATH"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + jsonpath.append(rs.getString(1)); + + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return jsonpath.toString(); + } + + + public static String AllDataDataRange(String fDateStart,String fDateEnd) { + StringBuilder jsonpath = new StringBuilder(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT * from [chen_打样分析汇总] where CreatedOn >= '"+fDateStart+"' and CreatedOn <= '"+fDateEnd+"' order by CreatedOn desc FOR JSON PATH"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + jsonpath.append(rs.getString(1)); + + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return jsonpath.toString(); + } + + + +//除了 画框 婚纱框 相框 镜框 + + public static List<HashMap<String,String>> getBestByProductionLine(String ProductionLine) { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT DISTINCT TOP\n" + + "\t20 chen_12个月_A版本BOM销售额.MouldingStyleCode,\n" + + "\tchen_12个月_A版本BOM销售额.[折算人民币价税合计] AS CNY,\n" + + "\tchen_打样分析汇总.[客户数量] as CustomerNum,\n" + + "\tMouldingSampleMakingMasterSchedule.ProductionLine ,\n" + + "\t( SELECT TOP 1 SHCountry FROM MouldingDataStatistics WHERE MouldingCode = reverse( SUBSTRING ( reverse( chen_12个月_A版本BOM销售额.MouldingStyleCode ), charindex( '-', reverse( chen_12个月_A版本BOM销售额.MouldingStyleCode ) ) + 1, 500 ) ) and SHCountry is not null GROUP BY SHCountry ORDER BY SUM ( SHMouldingSaleLength ) DESC ) AS Area \n" + + "FROM\n" + + "\t[chen_12个月_A版本BOM销售额]\n" + + "\tLEFT JOIN MouldingSampleMakingMasterSchedule ON MouldingSampleMakingMasterSchedule.MouldingStyleCode = chen_12个月_A版本BOM销售额.MouldingStyleCode\n" + + "\tINNER JOIN [chen_打样分析汇总] ON chen_打样分析汇总.MouldingStyleCode = chen_12个月_A版本BOM销售额.MouldingStyleCode \n" + + "WHERE\n" + + "\tMouldingSampleMakingMasterSchedule.ProductionLine = '"+ProductionLine+"' \n" + + "ORDER BY\n" + + "\tchen_12个月_A版本BOM销售额.折算人民币价税合计 DESC"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("MouldingStyleCode",rs.getString("MouldingStyleCode")); + map.put("CNY",rs.getString("CNY")); + map.put("Area",rs.getString("Area")); + map.put("CustomerNum",rs.getString("CustomerNum")); + + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + +//除了 画框 婚纱框 相框 镜框 + + public static List<HashMap<String,String>> getBestByProductionLine_Jiancai( ) { + List<HashMap<String,String>> hashMapList = new ArrayList<>(); + try { + Connection conn = getSQLConnection(); + String sql = "SELECT DISTINCT TOP\n" + + "\t20 chen_12个月_A版本BOM销售额.MouldingStyleCode,\n" + + "\tchen_12个月_A版本BOM销售额.[折算人民币价税合计] AS CNY,\tchen_打样分析汇总.[客户数量] as CustomerNum,\n" + + "\tMouldingSampleMakingMasterSchedule.ProductionLine ,\n" + + "\n" + + "\t(SELECT TOP\n" + + "\t1 SHCountry \n" + + "FROM\n" + + "\tMouldingDataStatistics \n" + + "WHERE MouldingCode = reverse(substring(reverse(chen_12个月_A版本BOM销售额.MouldingStyleCode),charindex('-',reverse(chen_12个月_A版本BOM销售额.MouldingStyleCode)) +1,500)) and SHCountry is not null\n" + + "GROUP BY SHCountry\n" + + "ORDER BY sum(SHMouldingSaleLength) desc ) as Area\n" + + "FROM\n" + + "\t[chen_12个月_A版本BOM销售额]\n" + + "\tLEFT JOIN MouldingSampleMakingMasterSchedule ON MouldingSampleMakingMasterSchedule.MouldingStyleCode = chen_12个月_A版本BOM销售额.MouldingStyleCode \n" + + "\tINNER JOIN [chen_打样分析汇总] on chen_打样分析汇总.MouldingStyleCode = chen_12个月_A版本BOM销售额.MouldingStyleCode\n" + + "\n" + + "WHERE\n" + + "\tSUBSTRING(chen_12个月_A版本BOM销售额.MouldingStyleCode,1,1) = 'J'\n" + + "\n" + + "ORDER BY\n" + + "\tchen_12个月_A版本BOM销售额.折算人民币价税合计 DESC"; + Statement stmt = conn.createStatement();// + + ResultSet rs = stmt.executeQuery(sql); + while (rs.next()) { + // 截面积(mm2) + HashMap<String,String> map = new HashMap<>(); + map.put("MouldingStyleCode",rs.getString("MouldingStyleCode")); + map.put("CNY",rs.getString("CNY")); + map.put("Area",rs.getString("Area")); + map.put("CustomerNum",rs.getString("CustomerNum")); + + hashMapList.add(map); + + } + rs.close(); + stmt.close(); + conn.close(); + } catch (SQLException e) { + e.printStackTrace(); + + } + return hashMapList; + } + + + + + +} + diff --git a/ruoyi/src/main/java/com/ruoyi/project/sd_changemouldtime/banner.txt b/ruoyi/src/main/java/com/ruoyi/project/sd_changemouldtime/banner.txt new file mode 100644 index 000000000..94662592f --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/sd_changemouldtime/banner.txt @@ -0,0 +1,24 @@ +Application Version: ${ruoyi.version} +Spring Boot Version: ${spring-boot.version} +//////////////////////////////////////////////////////////////////// +// _ooOoo_ // +// o8888888o // +// 88" . "88 // +// (| ^_^ |) // +// O\ = /O // +// ____/`---'\____ // +// .' \\| |// `. // +// / \\||| : |||// \ // +// / _||||| -:- |||||- \ // +// | | \\\ - /// | | // +// | \_| ''\---/'' | | // +// \ .-\__ `-` ___/-. / // +// ___`. .' /--.--\ `. . ___ // +// ."" '< `.___\_<|>_/___.' >'"". // +// | | : `- \`.;`\ _ /`;.`/ - ` : | | // +// \ \ `-. \_ __\ /__ _/ .-` / / // +// ========`-.____`-.___\_____/___.-`____.-'======== // +// `=---=' // +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // +// 佛祖保佑 永不宕机 永无BUG // +//////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/ruoyi/src/main/java/com/ruoyi/project/sd_changemouldtime/controller/SDChangeMouldTimeController.java b/ruoyi/src/main/java/com/ruoyi/project/sd_changemouldtime/controller/SDChangeMouldTimeController.java new file mode 100644 index 000000000..ee19734b7 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/sd_changemouldtime/controller/SDChangeMouldTimeController.java @@ -0,0 +1,43 @@ +package com.ruoyi.project.sd_changemouldtime.controller; + +import com.ruoyi.db.sd_mssql.DB_Ajax_DashBoard_ChangeMouldTime_8053; +import com.ruoyi.framework.web.controller.BaseController; +import com.ruoyi.framework.web.domain.AjaxResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 服务器监控 + * + * @author ruoyi + */ +@RestController +@RequestMapping("/sd_changemouldtime") +public class SDChangeMouldTimeController extends BaseController +{ +// @PreAuthorize("@ss.hasPermi('monitor:server:list')") + @GetMapping("/list") + public AjaxResult DoGetChangeMouldTimeList() throws Exception + { + return AjaxResult.success(DB_Ajax_DashBoard_ChangeMouldTime_8053.DoGetChangeMouldTimeList()); + } + + + @GetMapping("/DoGetChangeMouldTimeListDateRange/{fDateStart}/{fDateEnd}") + public AjaxResult DoGetChangeMouldTimeListDateRange(@PathVariable String fDateStart, @PathVariable String fDateEnd) throws Exception + { + return AjaxResult.success(DB_Ajax_DashBoard_ChangeMouldTime_8053.DoGetChangeMouldTimeListDateRange(fDateStart,fDateEnd)); + } + + + @GetMapping("/rangetimeavg/{fDateStart}/{fDateEnd}") + public AjaxResult getRangeTimeAvg(@PathVariable String fDateStart, @PathVariable String fDateEnd) throws Exception + { + return AjaxResult.success(DB_Ajax_DashBoard_ChangeMouldTime_8053.DoGet_avg_changemouldtime_date_range(fDateStart,fDateEnd)); + } + + + +} diff --git a/ruoyi/src/main/java/com/ruoyi/project/sd_dashboard/banner.txt b/ruoyi/src/main/java/com/ruoyi/project/sd_dashboard/banner.txt new file mode 100644 index 000000000..94662592f --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/sd_dashboard/banner.txt @@ -0,0 +1,24 @@ +Application Version: ${ruoyi.version} +Spring Boot Version: ${spring-boot.version} +//////////////////////////////////////////////////////////////////// +// _ooOoo_ // +// o8888888o // +// 88" . "88 // +// (| ^_^ |) // +// O\ = /O // +// ____/`---'\____ // +// .' \\| |// `. // +// / \\||| : |||// \ // +// / _||||| -:- |||||- \ // +// | | \\\ - /// | | // +// | \_| ''\---/'' | | // +// \ .-\__ `-` ___/-. / // +// ___`. .' /--.--\ `. . ___ // +// ."" '< `.___\_<|>_/___.' >'"". // +// | | : `- \`.;`\ _ /`;.`/ - ` : | | // +// \ \ `-. \_ __\ /__ _/ .-` / / // +// ========`-.____`-.___\_____/___.-`____.-'======== // +// `=---=' // +// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // +// 佛祖保佑 永不宕机 永无BUG // +//////////////////////////////////////////////////////////////////// \ No newline at end of file diff --git a/ruoyi/src/main/java/com/ruoyi/project/sd_dashboard/controller/SDDashBoardController.java b/ruoyi/src/main/java/com/ruoyi/project/sd_dashboard/controller/SDDashBoardController.java new file mode 100644 index 000000000..9502e3bed --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/sd_dashboard/controller/SDDashBoardController.java @@ -0,0 +1,54 @@ +package com.ruoyi.project.sd_dashboard.controller; + +import com.ruoyi.db.mssql.DB_Ajax_DashBoard_48102; +import com.ruoyi.db.sd_mssql.DB_Ajax_DashBoard_8053; +import com.ruoyi.framework.web.controller.BaseController; +import com.ruoyi.framework.web.domain.AjaxResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 服务器监控 + * + * @author ruoyi + */ +@RestController +@RequestMapping("/sd_dashboard") +public class SDDashBoardController extends BaseController +{ +// @PreAuthorize("@ss.hasPermi('monitor:server:list')") + @GetMapping("/30day") + public AjaxResult get30Day() throws Exception + { + return AjaxResult.success(DB_Ajax_DashBoard_8053.DoGet30Day()); + } + + + @GetMapping("/lastday") + public AjaxResult getLastDay() throws Exception + { + return AjaxResult.success(DB_Ajax_DashBoard_8053.DoGetLastDay()); + } + + + @GetMapping("/group") + public AjaxResult getGroup() throws Exception + { + return AjaxResult.success(DB_Ajax_DashBoard_8053.DoGetCurrentTimeGroup()); + } + + @GetMapping("/current") + public AjaxResult DoGetCurrent() throws Exception + { + return AjaxResult.success(DB_Ajax_DashBoard_48102.SD_DoGetCurrent()); + } + + + @GetMapping("/daterange/{fDateStart}/{fDateEnd}") + public AjaxResult getDateRange(@PathVariable String fDateStart, @PathVariable String fDateEnd) throws Exception + { + return AjaxResult.success(DB_Ajax_DashBoard_8053.DoGetDateRange(fDateStart,fDateEnd)); + } +} diff --git a/ruoyi/src/main/java/com/ruoyi/project/sd_density/SDDensityController.java b/ruoyi/src/main/java/com/ruoyi/project/sd_density/SDDensityController.java new file mode 100644 index 000000000..e6d6e6a91 --- /dev/null +++ b/ruoyi/src/main/java/com/ruoyi/project/sd_density/SDDensityController.java @@ -0,0 +1,49 @@ +package com.ruoyi.project.sd_density; + +import com.ruoyi.db.mssql.DB_Ajax_DashBoard_Density_48102; +import com.ruoyi.db.sd_mssql.DB_Ajax_DashBoard_Density_8053; +import com.ruoyi.framework.web.controller.BaseController; +import com.ruoyi.framework.web.domain.AjaxResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 服务器监控 + * + * @author ruoyi + */ +@RestController +@RequestMapping("/sd_density") +public class SDDensityController extends BaseController +{ +// @PreAuthorize("@ss.hasPermi('monitor:server:list')") + @GetMapping("/30day") + public AjaxResult get30Day() throws Exception + { + return AjaxResult.success(DB_Ajax_DashBoard_Density_8053.DoGet30dDensityListMap()); + } + + + @GetMapping("/72h") + public AjaxResult get72h() throws Exception + { + return AjaxResult.success(DB_Ajax_DashBoard_Density_8053.DoGet72hDensityListMap()); + } + + + @GetMapping("/group") + public AjaxResult getGroup() throws Exception + { + return AjaxResult.success(DB_Ajax_DashBoard_Density_8053.DoGetGroupDensityListMap()); + } + + + @GetMapping("/getDensityDataRange/{fDateStart}/{fDateEnd}") + public AjaxResult getDateRange(@PathVariable String fDateStart, @PathVariable String fDateEnd) throws Exception + { + return AjaxResult.success(DB_Ajax_DashBoard_Density_8053.getDensityDataRange(fDateStart,fDateEnd)); + } + +} diff --git a/ruoyi/src/main/resources/application.yml b/ruoyi/src/main/resources/application.yml index c9df3ccaa..07f51498d 100644 --- a/ruoyi/src/main/resources/application.yml +++ b/ruoyi/src/main/resources/application.yml @@ -82,7 +82,7 @@ token: # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) - expireTime: 30 + expireTime: 99999 # MyBatis配置 mybatis: