diff --git a/vol-net6/VOL.Data/IServices/produce/Partial/IData_ProduceService.cs b/vol-net6/VOL.Data/IServices/produce/Partial/IData_ProduceService.cs index 4b99c27..2a5d6e0 100644 --- a/vol-net6/VOL.Data/IServices/produce/Partial/IData_ProduceService.cs +++ b/vol-net6/VOL.Data/IServices/produce/Partial/IData_ProduceService.cs @@ -13,7 +13,11 @@ namespace VOL.Data.IServices // 最近一周生产加工数 - List produceDataGroupByWeekDays(); + Dictionary produceDataGroupByWeekDays(); + + + // 近一周工单走势数据 + Dictionary workDataGroupByWeekDays(int configId, string target); } } diff --git a/vol-net6/VOL.Data/Services/produce/Partial/Data_ProduceService.cs b/vol-net6/VOL.Data/Services/produce/Partial/Data_ProduceService.cs index 869524f..6d8064c 100644 --- a/vol-net6/VOL.Data/Services/produce/Partial/Data_ProduceService.cs +++ b/vol-net6/VOL.Data/Services/produce/Partial/Data_ProduceService.cs @@ -49,25 +49,123 @@ namespace VOL.Data.Services } - public List produceDataGroupByWeekDays() { - var db = _repository.DbContext.Set(); - List data_Produces = new(); - data_Produces = - db.FromSqlRaw( - "SELECT c.datelist as date, COALESCE(MAX(turnout_all), 0) AS currentTurnout, d.* FROM Data_Calendar c" + - "LEFT JOIN Data_Produce d ON c.datelist = DATE(d.CreateDate) and d.com_status = 5 " + - "WHERE c.datelist BETWEEN CURDATE() - INTERVAL 6 DAY AND CURDATE()" + - "GROUP BY c.datelist").ToList(); - //var result = (from c in db.Set() - // join d in db.Set() - // on c.datelist equals DATE(d.CreateDate) && d.com_status = 5 into joinResult - // from d in joinResult.DefaultIfEmpty()); - //select new - //{ - // Column1 = t1.Column1, - // Column2 = t2.Column2 - //}; - return data_Produces; + public Dictionary produceDataGroupByWeekDays() { + List configList = Data_ConfigService.Instance.getConfigList(); + if (configList == null) { + return new(); + } + var dapper = DBServerProvider.SqlDapper; + string sql = @"SELECT + c.datelist AS date, + d.config_id AS configId, + COALESCE ( MAX( turnout_all ), 0 ) AS currentTurnout + FROM + data_calendar c + LEFT JOIN data_produce d ON c.datelist = DATE( d.CreateDate ) + AND d.com_status = @comStatus + WHERE + c.datelist BETWEEN CURDATE() - INTERVAL @Redays DAY + AND CURDATE() + GROUP BY + c.datelist, + d.config_id"; + int comStatus = 5; + int Redays = 6; + // 原生sql动态查询 + var result = dapper.QueryDynamicList(sql, new { comStatus, Redays }); + var resultMap = new Dictionary(); + var datelist = result.Select(p => p.date.ToString("yyyy-MM-dd")).Distinct().ToList(); + var configMap = new Dictionary>(); + foreach (var config in configList) + { + var data = new List(); + foreach (var item in result) + { + //Console.WriteLine(item.currentTurnout.GetType()); Int64 + if (item.configId == null || item.configId == config.id) { + data.Add(Convert.ToInt32(item.currentTurnout)); + } + } + configMap.Add(config.id.ToString(), data); + } + resultMap.Add("datelist", datelist); + resultMap.Add("dataMap", configMap); + return resultMap; + } + + + public Dictionary workDataGroupByWeekDays(int configId, string target) + { + var dapper = DBServerProvider.SqlDapper; + string sql = @"SELECT + c.datelist AS date, + d.config_id AS configId, + COALESCE ( MAX( id ), 0 ) AS lastId + FROM + data_calendar c + LEFT JOIN data_produce d ON c.datelist = DATE( d.CreateDate ) + AND d.com_status = @comStatus + AND d.config_id = @configId + WHERE + c.datelist BETWEEN CURDATE() - INTERVAL @Redays DAY + AND CURDATE() + GROUP BY + c.datelist, + d.config_id"; + int comStatus = 5; + int Redays = 6; + var result = dapper.QueryDynamicList(sql, new { comStatus, configId, Redays }); + var datelist = result.Select(p => p.date.ToString("yyyy-MM-dd")).Distinct().ToList(); + var resultMap = new Dictionary(); + var dataMap = new Dictionary>>(); + var dataSize = datelist.Count; + // 初始化所有指标数据 + var work1_Turnouts = new List(dataSize); + var work2_Turnouts = new List(dataSize); + var work3_Turnouts = new List(dataSize); + var work1_Schedules = new List(dataSize); + var work2_Schedules = new List(dataSize); + var work3_Schedules = new List(dataSize); + var work1_Yields = new List(dataSize); + var work2_Yields = new List(dataSize); + var work3_Yields = new List(dataSize); + foreach (var item in result) + { + int a = 0, b = 0, c = 0, aa = 0, bb = 0, cc = 0, aaa = 0, bbb = 0, ccc = 0; + var data = new List(); + if (item.configId != null && item.lastId != 0) + { + sql = @"SELECT * from data_produce where id = @lastId"; + var row = dapper.QueryDynamicFirst(sql, new { item.lastId }); + if (row != null) + { + a = row.turnout_1 ?? 0; + b = row.turnout_2 ?? 0; + c = row.turnout_3 ?? 0; + aa = row.schedule_1 != null ? Convert.ToInt32(row.schedule_1 * 100) : 0; + bb = row.schedule_2 != null ? Convert.ToInt32(row.schedule_2 * 100) : 0; + cc = row.schedule_3 != null ? Convert.ToInt32(row.schedule_3 * 100) : 0; + aaa = row.yield_1 != null ? Convert.ToInt32(row.yield_1 * 100) : 0; + bbb = row.yield_2 != null ? Convert.ToInt32(row.yield_2 * 100) : 0; + ccc = row.yield_3 != null ? Convert.ToInt32(row.yield_3 * 100) : 0; + } + } + work1_Turnouts.Add(a); + work2_Turnouts.Add(b); + work3_Turnouts.Add(c); + work1_Schedules.Add(aa); + work2_Schedules.Add(bb); + work3_Schedules.Add(cc); + work1_Yields.Add(aaa); + work2_Yields.Add(bbb); + work3_Yields.Add(ccc); + } + dataMap.Add("turnout", new List> { work1_Turnouts , work2_Turnouts, work3_Turnouts }); + dataMap.Add("schedule", new List> { work1_Schedules, work2_Schedules, work3_Schedules }); + dataMap.Add("yield", new List> { work1_Yields, work2_Yields, work3_Yields }); + resultMap.Add("datelist", datelist); + resultMap.Add("dataMap", dataMap); + return resultMap; } } } diff --git a/vol-net6/VOL.WebApi/Controllers/Data/DataApiController.cs b/vol-net6/VOL.WebApi/Controllers/Data/DataApiController.cs index 7c18023..679d804 100644 --- a/vol-net6/VOL.WebApi/Controllers/Data/DataApiController.cs +++ b/vol-net6/VOL.WebApi/Controllers/Data/DataApiController.cs @@ -11,6 +11,8 @@ using VOL.Entity.DomainModels; using System.Collections.Generic; using Confluent.Kafka; using VOL.Data.IServices; +using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime; +using Newtonsoft.Json; namespace VOL.WebApi.Controllers.Data { @@ -51,18 +53,29 @@ namespace VOL.WebApi.Controllers.Data // 获取机床数据 [HttpPost, Route("GetMachineData")] - public IActionResult getMachineData() + public IActionResult getMachineData([FromBody] Data_Config config) // application/json模式 { + //Console.WriteLine(JsonConvert.SerializeObject(config)); return Json(_machineService.GetMachineData()); } - // 获取生产数据 - [HttpPost, Route("GetProduceData")] - public IActionResult getProduceData() + // 获取近一周每日加工量数据 + [HttpPost, Route("GetTurnOutByWeekDays")] + public IActionResult getTurnOutByWeekDays() { return Json(_produceService.produceDataGroupByWeekDays()); } + // 获取近一周工单指标数据 + [HttpPost, Route("GetWorkDataByWeekDays")] + public IActionResult GetWorkDataByWeekDays(string target, int configId) // x-www-form表单模式 + { + //return Json(new { target, configId }); + return Json(_produceService.workDataGroupByWeekDays(configId, target)); + } + + + } } diff --git a/vol-net6/VOL.WebApi/Program.cs b/vol-net6/VOL.WebApi/Program.cs index 92d1b94..dd64311 100644 --- a/vol-net6/VOL.WebApi/Program.cs +++ b/vol-net6/VOL.WebApi/Program.cs @@ -37,6 +37,13 @@ namespace VOL.WebApi // }, AppSetting.Kafka.Topics.TestTopic); //} #endregion + // 打印测试 + if (1 == 1) { + DateTime dateTime = DateTime.Now; + String dateOnly = dateTime.ToString("yyyy-MM-dd"); + Console.WriteLine(dateTime); // 输出完整的日期和时间 + Console.WriteLine(dateOnly); // 输出日期部分(不包含时间) + } host.Run(); } diff --git a/vol-vue3/src/views/data/bigscreen/chart-options.js b/vol-vue3/src/views/data/bigscreen/chart-options.js index 4441d5f..77004ea 100644 --- a/vol-vue3/src/views/data/bigscreen/chart-options.js +++ b/vol-vue3/src/views/data/bigscreen/chart-options.js @@ -493,6 +493,14 @@ let WeekProcess = { color: '#fff', } }, + splitLine: { // 坐标轴分隔线 + show: true, + lineStyle: { + // 使用深浅的间隔色 + color: ['#fff','#ff9f7f'], + width: 1 + } + } } ], series: [ diff --git a/vol-vue3/src/views/data/bigscreen/index.less b/vol-vue3/src/views/data/bigscreen/index.less index f34246a..e18da8d 100644 --- a/vol-vue3/src/views/data/bigscreen/index.less +++ b/vol-vue3/src/views/data/bigscreen/index.less @@ -225,12 +225,21 @@ } - .switch { + .target { position: absolute; top: 20px; - right: 12px; + right: 10px; + width: 200px; } + .devicebox { + position: absolute; + top: 20px; + left: 10px; + width: 200px; + } + + .output { margin-top: 10px; padding: 10px 0; diff --git a/vol-vue3/src/views/data/bigscreen/index.vue b/vol-vue3/src/views/data/bigscreen/index.vue index 9e6ad29..e2170a0 100644 --- a/vol-vue3/src/views/data/bigscreen/index.vue +++ b/vol-vue3/src/views/data/bigscreen/index.vue @@ -94,13 +94,18 @@
工单近一周走势图
-
- +
+
+
+ + + +
@@ -210,7 +215,11 @@ export default { machineinfo: MachineInfo, workdata: WorkData, weekprocess: WeekProcess, - gdselect: "turnout", + // gdselect: "turnout", + gdfrom: { + target: "turnout", + config_id: 1 + } } }, created() { @@ -227,11 +236,13 @@ export default { this.loading = false; }, 1000); }, + changeDevice(value) { + console.log(value); + }, // 切换工单指标数据 changeQuota(value) { let option = this.workdata[value]; this.$refs.vline.initLine(option); - }, // 返回设备信息 machineOption(machine) {