using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Extension; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using JNPF.Logging; using JNPF.VisualDev; using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Interfaces; using Mapster; using Microsoft.AspNetCore.Mvc; 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 ToolMoldMaintainPlanService : BaseMoldMaintainService, IOverideVisualDevService, IToolMoldMaintainPlanService, IDynamicApiController, ITransient { private const string ModuleId = "26165768858389"; private readonly ISqlSugarClient _db; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; private readonly IToolMoldHouseService _moldHouseService; private readonly IToolMoldLocationService _moldLocationService; private readonly IToolMoldsService _moldService; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); private static Dictionary _dicHouse = new(); private static Dictionary _dicLocation = new(); public ToolMoldMaintainPlanService( ISqlSugarRepository repository, IRunService runService, IVisualDevService visualDevService, IToolMoldHouseService moldHouseService, IToolMoldLocationService moldLocationService, IToolMoldsService moldService ) : base(repository.AsSugarClient()) { _db = repository.AsSugarClient(); _runService = runService; _visualDevService = visualDevService; _moldHouseService = moldHouseService; _moldLocationService = moldLocationService; _moldService = moldService; OverideFuncs.CreateAsync = Create; } private async Task Create(VisualDevModelDataCrInput visualDevModelDataCrInput) { try { visualDevModelDataCrInput.data[nameof(ToolMoldMaintainPlan.plan_code)] = $"JHDM{DateTime.Now:yyyyMMddmmss}"; visualDevModelDataCrInput.data[nameof(ToolMoldMaintainPlan.status)] = DictConst.UnMaintainStatusCode; VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); await _runService.Create(templateEntity, visualDevModelDataCrInput); } catch (Exception ex) { Log.Error("新增时出错", ex); } return await Task.FromResult("ok"); } /// /// 根据规则id获取匹配的模具列表 /// /// 计划Id /// [HttpGet] public async Task GetMoldListByPlanId([FromRoute] string planId) { List result = new(); if (_dicHouse.Count < 1) { _dicHouse = await _moldHouseService.GetHouseDictionary(); } if (_dicLocation.Count < 1) { _dicLocation = await _moldLocationService.GetLocationDictionary(); } List list = await _db.Queryable().Where(it => it.maintain_plan_id == planId).ToListAsync(); if (list?.Count > 0) { List ids = list.Select(it => it.mold_id).Distinct().ToList(); if (ids?.Count > 0) { List items = await _moldService.GetListByIds(ids); _db.ThenMapper(items, it => { if (!it.warehosue_id!.IsNullOrEmpty()) { it.whcode = _dicHouse.ContainsKey(it.warehosue_id!) ? _dicHouse[it.warehosue_id!].ToString()! : ""; } if (!it.location_id!.IsNullOrEmpty()) { it.location_code = _dicLocation.ContainsKey(it.location_id!) ? _dicLocation[it.location_id!].ToString()! : ""; } }); result = items.Adapt>(); } } return result; } /// /// 计划关联模具 /// /// [HttpPost] public async Task RelevanceMoldFromPlan(RelevanceMoldFromPlanInput input) { await Relevance(input, nameof(ToolMoldMaintainPlanRelation.maintain_plan_id), nameof(ToolMoldMaintainPlanRelation.mold_id), it => it.maintain_plan_id == input.id); } /// /// 删除计划与模具关联关系 /// /// 输入参数 /// [HttpPost] public async Task DeleteMold(RelevanceMoldFromPlanInput input) { await Delete(it => it.maintain_plan_id == input.id && input.ids.Contains(it.mold_id)); } } }