128 lines
5.7 KiB
C#
128 lines
5.7 KiB
C#
using JNPF;
|
|
using JNPF.Common.Core.Manager;
|
|
using JNPF.Common.Extension;
|
|
using JNPF.Common.Filter;
|
|
using JNPF.Common.Security;
|
|
using JNPF.DependencyInjection;
|
|
using JNPF.DynamicApiController;
|
|
using JNPF.Extras.CollectiveOAuth.Utils;
|
|
using JNPF.FriendlyException;
|
|
using JNPF.Logging;
|
|
using JNPF.Systems.Entitys.Permission;
|
|
using JNPF.Systems.Entitys.System;
|
|
using JNPF.Systems.Interfaces.System;
|
|
using JNPF.VisualDev;
|
|
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
|
|
using JNPF.VisualDev.Interfaces;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Newtonsoft.Json;
|
|
using SqlSugar;
|
|
using Tnb.BasicData;
|
|
using Tnb.BasicData.Entities;
|
|
using Tnb.EquipMgr.Entities;
|
|
using Tnb.ProductionMgr.Entities;
|
|
using Tnb.ProductionMgr.Entities.Dto;
|
|
using Tnb.ProductionMgr.Entities.Dto.PrdManage;
|
|
using Tnb.ProductionMgr.Entities.Enums;
|
|
using Tnb.ProductionMgr.Interfaces;
|
|
using AuthResponse = JNPF.Extras.CollectiveOAuth.Models.AuthResponse;
|
|
using StringExtensions = JNPF.Common.Extension.StringExtensions;
|
|
|
|
namespace Tnb.ProductionMgr
|
|
{
|
|
/// <summary>
|
|
/// 人员产量统计表
|
|
/// </summary>
|
|
[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)]
|
|
[Route("api/[area]/[controller]/[action]")]
|
|
[OverideVisualDev(ModuleId)]
|
|
public class PrdReportUserListService : IOverideVisualDevService, IDynamicApiController, ITransient
|
|
{
|
|
private const string ModuleId = "37231170320661";
|
|
private readonly ISqlSugarRepository<PrdMo> _repository;
|
|
private readonly IDataBaseManager _dataBaseManager;
|
|
private readonly IUserManager _userManager;
|
|
private readonly IDictionaryDataService _dictionaryDataService;
|
|
private readonly IRunService _runService;
|
|
private readonly IVisualDevService _visualDevService;
|
|
private readonly ISqlSugarClient _db;
|
|
|
|
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
|
|
|
|
public PrdReportUserListService(
|
|
ISqlSugarRepository<PrdMo> repository,
|
|
IDataBaseManager dataBaseManager,
|
|
IUserManager userManager,
|
|
IDictionaryDataService dictionaryDataService,
|
|
IRunService runService,
|
|
IVisualDevService visualDevService
|
|
)
|
|
{
|
|
_repository = repository;
|
|
_dataBaseManager = dataBaseManager;
|
|
_userManager = userManager;
|
|
_dictionaryDataService = dictionaryDataService;
|
|
_runService = runService;
|
|
_visualDevService = visualDevService;
|
|
_db = _repository.AsSugarClient();
|
|
OverideFuncs.GetListAsync = GetList;
|
|
}
|
|
|
|
|
|
private async Task<dynamic> GetList(VisualDevModelListQueryInput input)
|
|
{
|
|
ISqlSugarClient db = _repository.AsSugarClient();
|
|
Dictionary<string, object>? queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, object>>(input.queryJson) : new Dictionary<string, object>();
|
|
string moTaskCode = queryJson.ContainsKey("mo_task_id") ? queryJson["mo_task_id"].ToString() : "";
|
|
string equipInfo = queryJson.ContainsKey("equip_id") ? queryJson["equip_id"].ToString() : "";
|
|
string materialInfo = queryJson.ContainsKey("material_id") ? queryJson["material_id"].ToString() : "";
|
|
string createInfo = queryJson.ContainsKey("create_id") ? queryJson["create_id"].ToString() : "";
|
|
DateTime[] createTime = queryJson.ContainsKey("create_time") ? queryJson["create_time"].ToObject<long[]>().Select(x => DateTimeOffset.FromUnixTimeSeconds(x / 1000).ToLocalTime().DateTime).ToArray() : null;
|
|
DateTime? sDate = null;
|
|
DateTime? eDate = null;
|
|
|
|
if (createTime != null && createTime.Length == 2)
|
|
{
|
|
sDate = createTime[0];
|
|
eDate = createTime[1];
|
|
}
|
|
|
|
SqlSugarPagedList<PrdReportUserListOutput> result = await db.Queryable<PrdReport>()
|
|
.Select(a=>new
|
|
{
|
|
a.create_id,
|
|
a.material_id,
|
|
a.batch,
|
|
create_time = a.create_time.Date,
|
|
a.reported_qty,
|
|
a.pqty,
|
|
a.rqty
|
|
})
|
|
.MergeTable()
|
|
.LeftJoin<BasMaterial>((a, b) => a.material_id == b.id)
|
|
.LeftJoin<UserEntity>((a, b,c) => a.create_id == c.Id)
|
|
.WhereIF(!string.IsNullOrEmpty(materialInfo), (a, b, c) => b.code.Contains(materialInfo) || b.name.Contains(materialInfo))
|
|
.WhereIF(!string.IsNullOrEmpty(createInfo), (a, b, c) => c.Account.Contains(createInfo) || c.RealName.Contains(createInfo))
|
|
.WhereIF(createTime!=null && createTime.Length==2,a=>a.create_time>=sDate && a.create_time<=eDate)
|
|
.GroupBy((a,b,c)=>new {a.create_id,a.material_id,b.code,b.name,a.batch,a.create_time,c.RealName})
|
|
.OrderByDescending(a => a.create_time)
|
|
.Select((a, b, c) => new PrdReportUserListOutput
|
|
{
|
|
id = "",
|
|
mo_task_id = "",
|
|
equip_id = "",
|
|
material_id = b.code+"/"+b.name,
|
|
batch = a.batch,
|
|
reported_qty = SqlFunc.AggregateSumNoNull(a.reported_qty),
|
|
rqty = SqlFunc.AggregateSumNoNull(a.rqty),
|
|
create_id = c.RealName,
|
|
create_time = a.create_time.ToString("yyyy-MM-dd")
|
|
}).ToPagedListAsync(input.currentPage, input.pageSize);
|
|
return PageResult<PrdReportUserListOutput>.SqlSugarPageResult(result);
|
|
}
|
|
|
|
}
|
|
}
|
|
|