using System.Linq.Expressions; using JNPF.Common.Contracts; using JNPF.DependencyInjection; using JNPF.DynamicApiController; using Mapster; 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 ToolMoldMaintainGroupService : BaseMoldMaintainService, IToolMoldMaintainGroupService, IDynamicApiController, ITransient { private readonly ISqlSugarRepository _repository; private readonly ISqlSugarClient _db; public ToolMoldMaintainGroupService(ISqlSugarRepository repository) : base(repository.AsSugarClient()) { _db = repository.AsSugarClient(); } #region Get /// /// 根据项目组Id获取关联保养项信息 /// /// /// [HttpGet("{itemGroupId}")] public async Task GetMaintianItemListByGroupId(string itemGroupId) { List list = new(); List itemIds = await _db.Queryable().Where(it => it.item_group_id == itemGroupId).Select(it => it.item_id).ToListAsync(); if (itemIds?.Count > 0) { List items = await _db.Queryable().Where(it => itemIds.Contains(it.id)).ToListAsync(); list = items.Adapt>(); } return list; } /// /// 根据项目组Id获取关联模具信息 /// /// /// [HttpGet("{itemGroupId}")] public async Task GetMoldListByGroupId(string itemGroupId) { List list = new(); List moldIds = await _db.Queryable().Where(it => it.item_group_id == itemGroupId).Select(it => it.mold_id).ToListAsync(); if (moldIds?.Count > 0) { List items = await _db.Queryable().Where(it => moldIds.Contains(it.id)).ToListAsync(); list = items.Adapt>(); } return list; } #endregion #region Post /// /// 关联保养组与保养项 /// /// /// [HttpPost] public async Task RelevanceMaintianGroupAndItem(MoldMaintainGroupItemInput input) { await Relevance(input, nameof(ToolMoldMaintainGroupItem.item_group_id), nameof(ToolMoldMaintainGroupItem.item_id), it => it.item_group_id == input.id); } /// /// 关联项目组与模具 /// /// /// [HttpPost] public async Task RelevanceMaintianGroupAndMold(MoldMaintainGroupItemRelationInput input) { await Relevance(input, nameof(ToolMoldMaintainGroupRelation.item_group_id), nameof(ToolMoldMaintainGroupRelation.mold_id), it => it.item_group_id == input.id); } /// /// 删除项目组与模具检查项信息 /// /// /// [HttpPost] public async Task Delete(MoldMaintainDelInput input) { if (input.table_name == "item") { await Delete(it => it.item_group_id == input.id && input.ids.Contains(it.item_id)); await Delete(it => it.item_group_id == input.id && input.ids.Contains(it.item_id)); } else { await Delete(it => it.item_group_id == input.id && input.ids.Contains(it.mold_id)); await Delete(it => it.item_group_id == input.id && input.ids.Contains(it.mold_id)); } } #endregion private new async Task Delete(Expression> deleteExp) where T : BaseEntity, new() { _ = await _db.Deleteable().Where(deleteExp).ExecuteCommandAsync(); } } }