大屏页面与接口开发v2

dev-0829
ccongli 1 year ago
parent 99882f1e5c
commit e5cba6413d

@ -13,7 +13,11 @@ namespace VOL.Data.IServices
// 最近一周生产加工数
List<Data_Produce> produceDataGroupByWeekDays();
Dictionary<string, object> produceDataGroupByWeekDays();
// 近一周工单走势数据
Dictionary<string, object> workDataGroupByWeekDays(int configId, string target);
}
}

@ -49,25 +49,123 @@ namespace VOL.Data.Services
}
public List<Data_Produce> produceDataGroupByWeekDays() {
var db = _repository.DbContext.Set<Data_Produce>();
List<Data_Produce> 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<Data_Calendar>()
// join d in db.Set<Data_Produce>()
// 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<string, object> produceDataGroupByWeekDays() {
List<Data_Config> 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<string, object>();
var datelist = result.Select(p => p.date.ToString("yyyy-MM-dd")).Distinct().ToList();
var configMap = new Dictionary<string, List<int>>();
foreach (var config in configList)
{
var data = new List<int>();
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<string, object> 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<string, object>();
var dataMap = new Dictionary<string, List<List<int>>>();
var dataSize = datelist.Count;
// 初始化所有指标数据
var work1_Turnouts = new List<int>(dataSize);
var work2_Turnouts = new List<int>(dataSize);
var work3_Turnouts = new List<int>(dataSize);
var work1_Schedules = new List<int>(dataSize);
var work2_Schedules = new List<int>(dataSize);
var work3_Schedules = new List<int>(dataSize);
var work1_Yields = new List<int>(dataSize);
var work2_Yields = new List<int>(dataSize);
var work3_Yields = new List<int>(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<int>();
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<List<int>> { work1_Turnouts , work2_Turnouts, work3_Turnouts });
dataMap.Add("schedule", new List<List<int>> { work1_Schedules, work2_Schedules, work3_Schedules });
dataMap.Add("yield", new List<List<int>> { work1_Yields, work2_Yields, work3_Yields });
resultMap.Add("datelist", datelist);
resultMap.Add("dataMap", dataMap);
return resultMap;
}
}
}

@ -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));
}
}
}

@ -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();
}

@ -493,6 +493,14 @@ let WeekProcess = {
color: '#fff',
}
},
splitLine: { // 坐标轴分隔线
show: true,
lineStyle: {
// 使用深浅的间隔色
color: ['#fff','#ff9f7f'],
width: 1
}
}
}
],
series: [

@ -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;

@ -94,13 +94,18 @@
</div>
<div class="data-left-item">
<div class="title">工单近一周走势图</div>
<div class="switch">
<el-select v-model="gdselect" @change="changeQuota">
<div class="target">
<el-select v-model="gdfrom.target" @change="changeQuota">
<el-option label="产量" value="turnout" />
<el-option label="进度" value="schedule" />
<el-option label="良品率" value="yield" />
</el-select>
</div>
<div class="devicebox">
<el-select v-model="gdfrom.config_id" @change="changeDevice">
<el-option v-for="(machine,index) in machineList" :label="machine.name" :value="machine.id" :key="index"/>
</el-select>
</div>
<div class="output">
<Line :option="workdata[gdoption]" ref="vline"></Line>
</div>
@ -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) {

Loading…
Cancel
Save