using JNPF.Common.Core.Manager; using JNPF.Common.Enums; using JNPF.Common.Security; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using Microsoft.AspNetCore.Mvc; 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]")] public class EqpRepairDelayService : IEqpRepairDelayService, IDynamicApiController, ITransient { private readonly ISqlSugarRepository _repository; private readonly IUserManager _userManager; public EqpRepairDelayService(ISqlSugarRepository repository, IUserManager userManager) { _repository = repository; _userManager = userManager; } /// /// 维修延期 /// /// [HttpPost] public async Task Delay(RepairDelayInput input) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { EqpRepairApply eqpRepairApply = await _repository.AsSugarClient().Queryable().SingleAsync(x => x.id == input.repair_apply_id); EqpRepairDelay repairDelay = new EqpRepairDelay() { id = SnowflakeIdHelper.NextId(), equip_id = eqpRepairApply.equip_id, repair_apply_id = input.repair_apply_id, delay_reason = input.delay_reason, expected_time = input.expected_time, repair_request_sender_id = input.repair_request_sender_id, repair_sender_id = input.repair_request_sender_id, create_id = _userManager.UserId, create_time = DateTime.Now, }; await _repository.InsertAsync(repairDelay); await _repository.AsSugarClient().Updateable() .SetColumns(x => x.expect_complete_time == input.expected_time) .Where(x => x.id == input.repair_apply_id).ExecuteCommandAsync(); }); if(!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); return result.IsSuccess ? "延期成功" : result.ErrorMessage; } } }