using JNPF.Common.Core.Manager; using JNPF.Common.Filter; using JNPF.DependencyInjection; using JNPF.DynamicApiController; 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.Mvc; using Newtonsoft.Json; using SqlSugar; using Tnb.EquipMgr.Entities; using Tnb.EquipMgr.Entities.Dto; namespace Tnb.EquipMgr { /// /// 设备维修统计报表 /// [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModuleId)] public class EqpRepairReportService: IOverideVisualDevService,IDynamicApiController, ITransient { private const string ModuleId = "27897802470421"; private readonly ISqlSugarRepository _repository; private readonly IVisualDevService _visualDevService; private readonly IRunService _runService; private readonly IUserManager _userManager; private readonly IBillRullService _billRuleService; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public EqpRepairReportService(ISqlSugarRepository repository, IRunService runService, IVisualDevService visualDevService, IBillRullService billRuleService, IUserManager userManager) { _repository = repository; _visualDevService = visualDevService; _runService = runService; _userManager = userManager; _billRuleService = billRuleService; OverideFuncs.GetListAsync = GetList; } private async Task GetList(VisualDevModelListQueryInput input) { ISqlSugarClient db = _repository.AsSugarClient(); Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string month = queryJson != null && queryJson.ContainsKey("month") ? queryJson["month"].ToString() : ""; string name = queryJson != null && queryJson.ContainsKey("name") ? queryJson["name"].ToString() : ""; string userId = _userManager.UserId; month = !string.IsNullOrEmpty(month) ? month : DateTime.Now.ToString("yyyy-MM"); SqlSugarPagedList result = await db.Queryable() .LeftJoin((a,b)=>a.use_department_id==b.Id) .WhereIF(!string.IsNullOrEmpty("name"), (a, b) => a.name.Contains(name)) .OrderBy((a,b)=>a.code) .Select((a, b) => new EqpRepairReportOutput { id = a.id, code = a.code, name = a.name, workshop_name = b.FullName, month = month, fault_num = SqlFunc.Subqueryable().Where(x=>x.equip_id==a.id && x.status!=null && x.create_time.Value.ToString("yyyy-MM")==month).Count(), repair_completed_num = SqlFunc.Subqueryable().Where(x=>x.equip_id==a.id && x.status=="6" && x.create_time.Value.ToString("yyyy-MM")==month).Count(), }).ToPagedListAsync(input.currentPage, input.pageSize); return PageResult.SqlSugarPageResult(result); } } }