using JNPF.Common.Core.Manager; using JNPF.Common.Enums; using JNPF.Common.Extension; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.FriendlyException; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Entitys.Dto.VisualDevModelData; using JNPF.VisualDev.Interfaces; using Microsoft.AspNetCore.Mvc; using SqlSugar; using Tnb.EquipMgr.Entities; using Tnb.EquipMgr.Entities.Dto; using Tnb.EquipMgr.Entities.Enums; 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 ToolMoldMaintainTaskService : IOverideVisualDevService, IToolMoldMaintainTaskService, IDynamicApiController, ITransient { private const string ModuleId = "26189001337381"; private readonly ISqlSugarClient _db; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; private static Dictionary _dicMold = new(); private readonly IUserManager _userManager; public ToolMoldMaintainTaskService( ISqlSugarRepository repository, IRunService runService, IVisualDevService visualDevService, IUserManager userManager ) { _db = repository.AsSugarClient(); _runService = runService; _visualDevService = visualDevService; OverideFuncs.GetListAsync = GetList; _userManager = userManager; //OverideFuncs.CreateAsync = Create; } public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); private async Task GetList(VisualDevModelListQueryInput input) { if (_dicMold.Count < 1) { List items = await _db.Queryable().ToListAsync(); _dicMold = items?.ToDictionary(x => x.id, x => (x.mold_code, x.mold_name))!; } VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); JNPF.Common.Filter.PageResult> data = await _runService.GetListResult(templateEntity, input); if (data?.list.Count > 0) { foreach (Dictionary row in data.list) { object pair = row[nameof(ToolMoldMaintainTask.mold_id)]; if (pair.IsNotEmptyOrNull()) { if (_dicMold.TryGetValue(pair.ToString(), out (string code, string name) multi)) { row[nameof(ToolMoldMaintainTask.mold_id)] = $"{multi.code}/{multi.name}"; } } } } return data!; } public async Task Create(ToolMoldMaintainTask entity) { int row = await _db.Insertable(entity).ExecuteCommandAsync(); if (row < 1) { throw Oops.Oh(ErrorCode.COM1000); } } /// /// 修改任务单状态 /// /// 输入参数 /// [HttpPost] public async Task UpdateStatus(MaintainStatusUpInput input) { DateTime? beginTiem = DateTime.Now; DateTime? endTime = null; if (input.status.ToEnum() == MaintainStatus.YWC) { endTime = DateTime.Now; } int row = await _db.Updateable().SetColumns(it => new ToolMoldMaintainTask { status = input.status, modify_strat_time = beginTiem, modify_end_time = endTime }) .Where(it => input.ids.Contains(it.id)).ExecuteCommandAsync(); if (row < 1) { throw Oops.Oh(ErrorCode.COM1001); } } /// /// 开始维修 /// /// 输入参数 /// [HttpPost] public async Task StartWx(MoldStartWxInput input) { DateTime? StartTime = DateTime.Now; int row = await _db.Updateable().SetColumns(it => new ToolMoldMaintainTask { status = "WXZ", modify_strat_time = StartTime, modify_id = _userManager.UserId }) .Where(it => input.id == it.id).ExecuteCommandAsync(); if (row < 1) { throw Oops.Oh(ErrorCode.COM1001); } } [HttpPost] public async Task RepeatRepair(MaintainRecordRepeatInput input) { ToolMoldMaintainTask toolMoldMaintainTask = await _db.Queryable().SingleAsync(x => x.id == input.id); if (toolMoldMaintainTask.status != "FHZ") { throw Oops.Bah("状态错误"); } DbResult result = await _db.Ado.UseTranAsync(async () => { await _db.Updateable() .SetColumns(x => x.repeat_result == input.repeat_result) .SetColumns(x => x.repeat_descrip == input.repeat_descrip) .SetColumns(x=>x.repeat_user_id==_userManager.UserId) .SetColumns(x=>x.repeat_time==DateTime.Now) .Where(x => x.id == input.id) .ExecuteCommandAsync(); if (toolMoldMaintainTask.scrap_qty > 0) { ToolMolds toolMolds = await _db.Queryable().SingleAsync(x=>x.id==toolMoldMaintainTask.mold_id); if (toolMolds.mold_cavity < toolMoldMaintainTask.scrap_qty) { throw Oops.Bah("报废数量大于有效模穴数"); } await _db.Updateable() .SetColumns(x => x.mold_cavity == x.mold_cavity - toolMoldMaintainTask.scrap_qty) .Where(x => x.id == toolMolds.id) .ExecuteCommandAsync(); } }); return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : result.IsSuccess ? "复核成功" : result.ErrorMessage; } } }