Files
tnb.server/ProductionMgr/Tnb.ProductionMgr/PrdReportUserListService.cs

120 lines
5.6 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>()
.LeftJoin<PrdMoTask>((a,b)=>a.mo_task_id==b.id)
.LeftJoin<BasMaterial>((a, b,c) => a.material_id == c.id)
.LeftJoin<UserEntity>((a, b,c,d) => a.create_id == d.Id)
.LeftJoin<EqpEquipment>((a, b,c,d,e) => a.equip_id == e.id)
.WhereIF(!string.IsNullOrEmpty(moTaskCode), (a, b, c, d) => b.mo_task_code.Contains(moTaskCode))
.WhereIF(!string.IsNullOrEmpty(equipInfo), (a, b, c, d,e) => e.code.Contains(equipInfo) || e.name.Contains(equipInfo))
.WhereIF(!string.IsNullOrEmpty(materialInfo), (a, b, c, d,e) => c.code.Contains(materialInfo) || c.name.Contains(materialInfo))
.WhereIF(!string.IsNullOrEmpty(createInfo), (a, b, c, d,e) => d.Account.Contains(createInfo) || d.RealName.Contains(createInfo))
.WhereIF(createTime!=null && createTime.Length==2,a=>a.create_time>=sDate && a.create_time<=eDate)
.OrderByDescending(a => a.create_time)
.Select((a, b, c, d, e) => new PrdReportUserListOutput
{
id = a.id,
mo_task_id = b.mo_task_code,
equip_id = e.name,
material_id = c.code+"/"+c.name,
batch = a.batch,
reported_qty = a.reported_qty,
rqty = a.rqty,
create_id = d.RealName,
create_time = a.create_time.ToString(DbTimeFormat.SS)
}).ToPagedListAsync(input.currentPage, input.pageSize);
return PageResult<PrdReportUserListOutput>.SqlSugarPageResult(result);
}
}
}