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); } } } }