You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
4.4 KiB

/*
*Data_Machine
*使repository.EF/Dapper
*使repository.DbContextBeginTransaction
*使DBServerProvider.
*使UserContext.Current
*Data_MachineServiceServiceFunFilter
*/
using VOL.Core.BaseProvider;
using VOL.Core.Extensions.AutofacManager;
using VOL.Entity.DomainModels;
using System.Linq;
using VOL.Core.Utilities;
using System.Linq.Expressions;
using VOL.Core.Extensions;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Http;
using VOL.Data.IRepositories;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Math;
using SkiaSharp;
using StackExchange.Redis;
using System.Text.RegularExpressions;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace VOL.Data.Services
{
public partial class Data_MachineService
{
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IData_MachineRepository _repository;//访问数据库
[ActivatorUtilitiesConstructor]
public Data_MachineService(
IData_MachineRepository dbRepository,
IHttpContextAccessor httpContextAccessor
)
: base(dbRepository)
{
_httpContextAccessor = httpContextAccessor;
_repository = dbRepository;
//多租户会用到这init代码其他情况可以不用
//base.Init(dbRepository);
}
public Dictionary<int, Data_Machine> GetMachineData()
{
var db = _repository.DbContext.Set<Data_Machine>();
var machineList = new Dictionary<int, Data_Machine>();
List<Data_Config> configList = Data_ConfigService.Instance.getConfigList();
IQueryable<Data_Machine> query = db.Where(x => x.com_status == 5);
foreach ( Data_Config config in configList )
{
// 机床数据,各自取最新一条
Data_Machine? data_Machine = query.Where(x => x.config_id == config.id).
OrderByDescending(d => d.CreateDate).FirstOrDefault();
if ( data_Machine != null )
{
data_Machine.com_ip = config.com_ip;
data_Machine.name = config.name;
data_Machine.totalQuantity = data_Machine.quantity_total;
data_Machine.totalRuntime = data_Machine.run_time_total;
// 生产数据, 各自取最新一条
Func<Data_Produce, bool> where = p => p.config_id == config.id && p.com_status == 5;
Data_Produce data_Produce = Data_ProduceService.Instance.getLastProduceData(where);
if (data_Produce != null)
{
data_Machine.currentTurnout = data_Produce.turnout_all;
data_Machine.OEE = data_Produce.oee;
}
machineList.Add(config.id, data_Machine);
}
}
return machineList;
}
public void testQuery() {
//List<Data_Machine> data_Machines = _repository.DbContext.Set<Data_Machine>().ToList();
//var list = db.Where(x => x.com_status == 5).GroupBy(e => e.config_id).Select(g => new {
// ConfigId = g.Key,
// Data_Machine = g.OrderByDescending(d => d.CreateDate).ToList()
//}).OrderBy(g => g.ConfigId).ToList();
// 1. 查设备ID分组
//var result1 = db.GroupBy(e => e.config_id).Select(g => new
//{
// ConfigId = g.Key
//}).OrderBy(g => g.ConfigId).ToList();
//List<int> configIds = result1.Select(c => c.ConfigId).ToList();
// 2. 查找设备名称并赋值
//var result2 = db.Where(p => configIds.Contains(p.config_id) && p.com_status == 5).OrderByDescending(o => o.CreateDate).ToList();
//Console.Write(JsonConvert.SerializeObject(result2));
//Console.Write(string.Join(",", data_Machines));
//var list = db.GroupBy(e => e.config_id).Count();
}
}
}