using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Aspose.Cells.Drawing; 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.EquipMgr.Entities; using Tnb.EquipMgr.Entities.Dto; using Tnb.EquipMgr.Entities.Entity; 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) { var db = _repository.AsSugarClient(); var 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 () => { var ToolMoldsProduct= await _repository.AsSugarClient().Queryable().Where(p=>p.mold_id== ToolMoldInput.mold&&p.material_id== ToolMoldInput.materialid).FirstAsync(); if (ToolMoldsProduct == null) { var entity = new ToolMoldsMaterial(); entity.id = SnowflakeIdHelper.NextId(); entity.mold_id = ToolMoldInput.mold; entity.material_id = ToolMoldInput.materialid; entity.real_cavity_qty = ToolMoldInput.real_cavity_qty; entity.create_time = DateTime.Now; entity.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(); } }); if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); return result.IsSuccess ? "保存成功" : result.ErrorMessage; } /// /// 批量删除模具物料绑定 /// /// /// /// [HttpPost] public async Task DetachMoldData(ToolMoldInput ToolMoldInput) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { var arr = _repository.AsSugarClient().Queryable().Where(x => x.mold_id == ToolMoldInput.mold && ToolMoldInput.materialids.Contains(x.material_id)).ToList(); await _repository.AsSugarClient().Deleteable(arr).ExecuteCommandAsync(); }); if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); return result.IsSuccess ? "操作成功" : result.ErrorMessage; } /// /// 物料同组 /// /// /// /// [HttpPost] public async Task SaveMaterialGroup(ToolMoldInput ToolMoldInput) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { var arr = _repository.AsSugarClient().Queryable().Where(x => x.mold_id == ToolMoldInput.mold && ToolMoldInput.materialids.Contains(x.material_id)).ToList(); var sign = SnowflakeIdHelper.NextId(); arr.ForEach(p => { p.material_group = sign; }); await _repository.AsSugarClient().Updateable(arr).ExecuteCommandAsync(); }); if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); return result.IsSuccess ? "操作成功" : result.ErrorMessage; } /// /// 取消物料同组 /// /// /// /// public async Task CancelMaterialGroup(ToolMoldInput ToolMoldInput) { DbResult result = await _repository.AsSugarClient().Ado.UseTranAsync(async () => { var 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(); }); if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); return result.IsSuccess ? "操作成功" : result.ErrorMessage; } /// /// 根据物料id获取模具集合 /// /// /// [HttpPost] public async Task> GetMoldLists(ToolMoldInput ToolMoldInput) { var db = _repository.AsSugarClient(); var 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.cavity_qty.HasValue ? a.cavity_qty.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 () => { var arr = _repository.AsSugarClient().Queryable().Where(x => ToolMoldInput.molds.Contains(x.mold_id) && x.material_id == ToolMoldInput.materialid).ToList(); await _repository.AsSugarClient().Deleteable(arr).ExecuteCommandAsync(); }); if (!result.IsSuccess) throw Oops.Oh(ErrorCode.COM1008); return result.IsSuccess ? "操作成功" : result.ErrorMessage; } } }