using JNPF.Common.Core.Manager; using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Enums; using JNPF.Common.Filter; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.Systems.Entitys.Permission; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using SqlSugar; 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 EquSpotInsRecordService : IOverideVisualDevService, IEquSpotInsRecordService, IDynamicApiController, ITransient { public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); private const string ModuleId = "26123080740885"; private readonly ISqlSugarRepository _repository; private readonly IVisualDevService _visualDevService; private readonly IRunService _runService; private readonly IUserManager _userManager; public EquSpotInsRecordService(ISqlSugarRepository repository, IRunService runService, IUserManager userManager, IVisualDevService visualDevService) { _repository = repository; _visualDevService = visualDevService; _runService = runService; _userManager = userManager; // OverideFuncs.UpdateAsync = ExecuteSpotIns; } /// /// 执行点巡检 /// /// [HttpPost] public async Task ExecuteSpotIns(SpotInsRecordExecuteInput input) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { EqpSpotInsRecordH eqpSpotInsRecordH = _repository.GetSingle(x=>x.id==input.id); string status = ""; if (eqpSpotInsRecordH.is_repeat == "1") { status = SpotInsRecordExecutionStatus.TOBECHECK; } else { status = SpotInsRecordExecutionStatus.COMPLETED; } await _repository.UpdateAsync(x => new EqpSpotInsRecordH() { result = input.result, attachment = input.attachment, result_remark = input.result_remark, status = status, spot_record_date_time = DateTime.Now, spot_record_user_id = _userManager.UserId }, x => x.id == input.id); if(input!=null && input.details!=null) { foreach (var item in input.details) { await _repository.AsSugarClient().Updateable(). SetColumns(x=>x.result==item["result"]) .SetColumnsIF(item["judge_type"]=="1",x=>x.real_value==Convert.ToDouble(item["real_value"])) .Where(x=>x.id==item["id"]) .ExecuteCommandAsync(); } } }); if(!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); return result.IsSuccess ? "执行成功" : result.ErrorMessage; } /// /// 获取点巡检复核信息 /// /// /// [HttpPost] public async Task GetSpotInsRecordRepeatInfo(Dictionary dic) { string id = dic["id"]; EqpSpotInsRecordH eqpSpotInsRecordH = await _repository.GetSingleAsync(x => x.id == id); List eqpSpotInsRecordDs = await _repository.AsSugarClient().Queryable() .Where(x => x.spot_ins_record_id == id).ToListAsync(); SpotInsRecordRepeatOutput output = new SpotInsRecordRepeatOutput() { model = eqpSpotInsRecordH, details = eqpSpotInsRecordDs, }; return output; } /// /// 复核点巡检 /// /// [HttpPost] public async Task RepeatSpotIns(SpotInsRecordRepeatInput input) { await _repository.UpdateAsync(x => new EqpSpotInsRecordH() { repeat_result = input.repeat_result, repeat_remark = input.repeat_remark, repeat_user_id = _userManager.UserId, repeat_time = DateTime.Now, status = SpotInsRecordExecutionStatus.COMPLETED }, x => x.id == input.id); } [HttpPost] public async Task GetSpotInsRecordList(EquipQueryInput input) { var db = _repository.AsSugarClient(); Dictionary? queryJson = new Dictionary(); if (!string.IsNullOrEmpty(input.queryJson)) { queryJson = JsonConvert.DeserializeObject>(input.queryJson); } var result = await db.Queryable() .LeftJoin((a,b)=>a.repeat_user_id==b.Id) .Where(a=>a.equip_id==input.equip_id) .Select((a,b) => new EquipSpotInsRecordQueryOutput { id = a.id, attachment = a.attachment, create_time = a.create_time==null ? null : a.create_time.Value.ToString("yyyy-MM-dd HH:mm"), equip_id = a.equip_id, repeat_remark = a.repeat_remark, repeat_result = a.repeat_result=="1"?"合格":"不合格", repeat_time = a.repeat_time==null ? null : a.repeat_time.Value.ToString("yyyy-MM-dd HH:mm"), repeat_user_id = b.RealName, result = a.result=="1"?"合格":"不合格", result_remark = a.result_remark, spot_ins_tem_equip_id = a.spot_ins_tem_equip_id, spot_record_date_time = a.spot_record_date_time==null ? null :a.spot_record_date_time.Value.ToString("yyyy-MM-dd HH:mm"), spot_record_user_id = a.spot_record_user_id, status = SqlFunc.IF(a.status.Equals("1")).Return("待执行").ElseIF(a.status.Equals("2")).Return("待复核").ElseIF(a.status.Equals("3")).Return("已完成").End("") }).ToPagedListAsync(input.currentPage, input.pageSize); return PageResult.SqlSugarPageResult(result); } /// /// 根据id获取点巡检相关信息 /// /// [HttpPost] public async Task GetEqpSpotInsRecordInfoById(Dictionary dic) { string id = dic.ContainsKey("id") ? dic["id"] : ""; if (string.IsNullOrEmpty(id)) return null; var db = _repository.AsSugarClient(); return await db.Queryable() .LeftJoin((a, b) => a.equip_id==b.id) .Where((a, b) => a.id == id) .Select((a, b) => new { id = a.id, equip_id = a.equip_id, equip_code = b.code, equip_name = b.name, create_time = a.create_time==null ? "" : a.create_time.Value.ToString("yyyy-MM-dd HH:mm:ss"), result_remark = a.result_remark, result = a.result, status = a.status, }).FirstAsync(); } } }