using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Filter; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.JsonSerialization; 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 SQLitePCL; using SqlSugar; using Tnb.BasicData; using Tnb.EquipMgr.Entities; using Tnb.EquipMgr.Entities.Dto; using Tnb.EquipMgr.Interfaces; namespace Tnb.EquipMgr { /// /// 设备维修记录 /// [ApiDescriptionSettings(Tag = ModuleConsts.Tag, Area = ModuleConsts.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] [OverideVisualDev(ModuleId)] public class EqpRepairRecordService : IOverideVisualDevService, IDynamicApiController, ITransient { private const string ModuleId = "36783468797205"; private readonly ISqlSugarRepository _repository; private readonly IVisualDevService _visualDevService; private readonly IRunService _runService; private readonly IBillRullService _billRuleService; private readonly IUserManager _userManager; private readonly Dictionary _dic = new Dictionary() { [RepairApplyStatus.TOBEEXECUTED] = "待执行", [RepairApplyStatus.TOBERECEIVED] = "待接收", [RepairApplyStatus.RECEIVED] = "已接收", [RepairApplyStatus.REFUSE] = "拒绝", [RepairApplyStatus.REPAIRED] = "已维修", [RepairApplyStatus.COMPLETED] = "已完成", [RepairApplyStatus.OUTAPPLYAPPROVE] = "外修申请待审批", [RepairApplyStatus.APPROVEPASS] = "审批通过", [RepairApplyStatus.APPROVENOTPASS] = "审批拒绝", [RepairApplyStatus.CLOSE] = "已关闭", [RepairApplyStatus.REPEAL] = "已作废", [RepairApplyStatus.TOBEOUTAPPLY] = "申请外修", [RepairApplyStatus.REPEATCHECKING] = "复核中", }; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public EqpRepairRecordService(ISqlSugarRepository repository, IVisualDevService visualDevService, IRunService runService, IBillRullService billRullService, IUserManager userManager) { _repository = repository; _visualDevService = visualDevService; _runService = runService; _userManager = userManager; _billRuleService = billRullService; OverideFuncs.GetListAsync = GetList; } private async Task GetList(VisualDevModelListQueryInput input) { ISqlSugarClient db = _repository.AsSugarClient(); Dictionary? queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); string code = queryJson.ContainsKey("code") ? queryJson["code"].ToString() : ""; string equipId = queryJson.ContainsKey("equip_id") ? queryJson["equip_id"].ToString() : ""; SqlSugarPagedList result = await db.Queryable() .LeftJoin((a,b)=>a.apply_user_id==b.Id) .LeftJoin((a,b,c)=>a.repairer_id==c.Id) .LeftJoin((a,b,c,d)=>a.equip_id==d.id) .WhereIF(!string.IsNullOrEmpty(code), (a, b, c) => a.code.Contains(code)) .WhereIF(!string.IsNullOrEmpty(equipId), (a, b, c,d) => a.equip_id==equipId) .OrderByDescending(a => a.create_time) .Select((a, b, c,d) => new EqpRepairRecordOutput { id = a.id, code = a.code, name = a.name, equip_id = d.name, apply_user_id = b.RealName, create_time = a.create_time==null ? "" : a.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss"), repairer_id = c.RealName, receive_time = a.receive_time==null ? "" : a.receive_time.Value.ToString("yyyy-MM-dd HH:mm:ss"), description = a.description, complete_time = a.complete_time==null ? "" : a.complete_time.Value.ToString("yyyy-MM-dd HH:mm:ss"), halt_take_time = a.halt_take_time, repair_take_time = a.repair_take_time, status = a.status }) .Mapper(a => { a.status = _dic[a.status]; }) .ToPagedListAsync(input.currentPage, input.pageSize); return PageResult.SqlSugarPageResult(result); } } }