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.BasicData.Entities; 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 ToolMoldMaterialService : IToolMoldMaterialService, IDynamicApiController, ITransient { private readonly IUserManager _userManager; private readonly ISqlSugarRepository _repository; public ToolMoldMaterialService(IUserManager userManager, ISqlSugarRepository repository) { _userManager = userManager; _repository = repository; } /// /// 根据模具id获取物料集合 /// /// [HttpPost] public async Task> GetMaterialLists(ToolMoldInput ToolMoldInput) { ISqlSugarClient db = _repository.AsSugarClient(); List list = await db.Queryable((a, b) => new object[] { JoinType.Inner, a.id == b.material_id, }) .Where((a, b) => b.mold_id == ToolMoldInput.mold) .Select((a, b) => new MaterialListOutput { id = a.id, code = a.code, name = a.name, material_group = b.material_group, real_cavity_qty = b.real_cavity_qty.HasValue ? b.real_cavity_qty.Value : 0 }).ToListAsync(); return list; } /// /// 增加模具物料绑定 /// /// /// [HttpPost] public async Task SaveData(ToolMoldInput ToolMoldInput) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { ToolMoldsMaterial ToolMoldsProduct = await _repository.AsSugarClient().Queryable().Where(p => p.mold_id == ToolMoldInput.mold && p.material_id == ToolMoldInput.materialid).FirstAsync(); if (ToolMoldsProduct == null) { ToolMoldsMaterial entity = new() { id = SnowflakeIdHelper.NextId(), mold_id = ToolMoldInput.mold, material_id = ToolMoldInput.materialid, real_cavity_qty = ToolMoldInput.real_cavity_qty, create_time = DateTime.Now, create_id = _userManager.UserId }; _ = await _repository.AsSugarClient().Insertable(entity).ExecuteCommandAsync(); } else { ToolMoldsProduct.real_cavity_qty = ToolMoldInput.real_cavity_qty; _ = await _repository.AsSugarClient().Updateable(ToolMoldsProduct).ExecuteCommandAsync(); } }); return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "保存成功" : result.ErrorMessage); } /// /// 批量删除模具物料绑定 /// /// [HttpPost] public async Task DetachMoldData(ToolMoldInput ToolMoldInput) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { List arr = _repository.AsSugarClient().Queryable().Where(x => x.mold_id == ToolMoldInput.mold && ToolMoldInput.materialids.Contains(x.material_id)).ToList(); _ = await _repository.AsSugarClient().Deleteable(arr).ExecuteCommandAsync(); }); return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "操作成功" : result.ErrorMessage); } /// /// 物料同组 /// /// [HttpPost] public async Task SaveMaterialGroup(ToolMoldInput ToolMoldInput) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { List arr = _repository.AsSugarClient().Queryable().Where(x => x.mold_id == ToolMoldInput.mold && ToolMoldInput.materialids.Contains(x.material_id)).ToList(); string sign = SnowflakeIdHelper.NextId(); arr.ForEach(p => { p.material_group = sign; }); _ = await _repository.AsSugarClient().Updateable(arr).ExecuteCommandAsync(); }); return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "操作成功" : result.ErrorMessage); } /// /// 取消物料同组 /// /// public async Task CancelMaterialGroup(ToolMoldInput ToolMoldInput) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { List arr = _repository.AsSugarClient().Queryable().Where(x => x.mold_id == ToolMoldInput.mold && ToolMoldInput.materialids.Contains(x.material_id)).ToList(); arr.ForEach(p => { p.material_group = string.Empty; }); _ = await _repository.AsSugarClient().Updateable(arr).ExecuteCommandAsync(); }); return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "操作成功" : result.ErrorMessage); } /// /// 根据物料id获取模具集合 /// /// [HttpPost] public async Task> GetMoldLists(ToolMoldInput ToolMoldInput) { ISqlSugarClient db = _repository.AsSugarClient(); List list = await db.Queryable((a, b) => new object[] { JoinType.Inner, a.id == b.mold_id, }) .Where((a, b) => b.material_id == ToolMoldInput.materialid) .Select((a, b) => new MoldListOutput { id = a.id, mold_code = a.mold_code, mold_name = a.mold_name, cavity_qty = a.mold_cavity.HasValue ? a.mold_cavity.Value : 0, real_cavity_qty = b.real_cavity_qty.HasValue ? b.real_cavity_qty.Value : 0 }).ToListAsync(); return list; } /// /// 批量删除物料模具绑定 /// /// /// [HttpPost] public async Task DetachMaterialData(ToolMoldInput ToolMoldInput) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { List arr = _repository.AsSugarClient().Queryable().Where(x => ToolMoldInput.molds.Contains(x.mold_id) && x.material_id == ToolMoldInput.materialid).ToList(); _ = await _repository.AsSugarClient().Deleteable(arr).ExecuteCommandAsync(); }); return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "操作成功" : result.ErrorMessage); } } }