using AutoMapper; using SqlSugar.Extensions; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_Common.WareHouseEnum; using WIDESEA_Core; using WIDESEA_Core.BaseRepository; using WIDESEA_Core.BaseServices; using WIDESEA_DTO.Basic; using WIDESEA_IBasicRepository; using WIDESEA_IBasicService; using WIDESEA_Model.Models; namespace WIDESEA_BasicService { public partial class MaterielInfoService : ServiceBase, IMaterielInfoService { private readonly IBasicRepository _basicRepository; public IMaterielInfoRepository Repository => BaseDal; private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly IMapper _mapper; public MaterielInfoService(IMaterielInfoRepository BaseDal, IBasicRepository basicRepository,IUnitOfWorkManage unitOfWorkManage,IMapper mapper) : base(BaseDal) { _basicRepository = basicRepository; _unitOfWorkManage = unitOfWorkManage; _mapper = mapper; } /// /// 添加老厂物料信息 /// /// public WebResponseContent AddMaterial(List bSTMaterialDTOs) { WebResponseContent content = new WebResponseContent(); try { List OldMaterielInfos = BaseDal.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt()); //新增 List bSTMaterialsDTOAdd = bSTMaterialDTOs.Where(x => x.Way == 1).ToList(); //修改 List bSTMaterialsDTOUpdate = bSTMaterialDTOs.Where(x => x.Way == 2).ToList(); //删除 List bSTMaterialsDTODel = bSTMaterialDTOs.Where(x => x.Way == 3).ToList(); List materielInfosAdd = new List(); List materielInfosUpdate = new List(); //新增 if (bSTMaterialsDTOAdd.Count>0) { //判断重复插入 Dt_MaterielInfo? ExistMaterial = OldMaterielInfos.FirstOrDefault(x => bSTMaterialsDTOAdd.Select(x => x.MaterialId).Contains(x.MaterialSourceId)); if (ExistMaterial != null) { return content.Error($"物料{nameof(BSTMaterialDTO.MaterialId)}:{ExistMaterial.MaterialSourceId}已存在"); } foreach (var item in bSTMaterialsDTOAdd) { if (bSTMaterialsDTOUpdate.FirstOrDefault(x=>x.MaterialId==item.MaterialId)!=null) { continue; } Dt_MaterielInfo materielInfo = _mapper.Map(item); materielInfosAdd.Add(materielInfo); } } //更新 if (bSTMaterialsDTOUpdate.Count > 0) { //获取已存在的物料 List? ExistbSTMaterialsUpdate = OldMaterielInfos.Where(x => bSTMaterialsDTOUpdate.Select(x => x.MaterialId).Contains(x.MaterialSourceId)).ToList(); foreach (var item in bSTMaterialsDTOUpdate) { Dt_MaterielInfo? materielInfoUpdate = ExistbSTMaterialsUpdate.FirstOrDefault(x => x.MaterialSourceId == item.MaterialId); //如果物料已存在则进行更改 if (materielInfoUpdate!=null) { materielInfoUpdate.MaterielCode = item.MaterialNo; materielInfoUpdate.MaterielName = item.Name; materielInfoUpdate.MaterielSpec = item.Spec; materielInfoUpdate.MaterielWide = item.MaterielWide; materielInfoUpdate.MaterielThickness = item.MaterielThickness; materielInfoUpdate.MaterielLength = item.MaterielLength; materielInfoUpdate.MaterielWeight = item.Weight; materielInfoUpdate.MaterielUnit = item.Unit; materielInfosUpdate.Add(materielInfoUpdate); } else//如果不存在则进行新增 { Dt_MaterielInfo materielInfo = _mapper.Map(item); materielInfosAdd.Add(materielInfo); } } } //删除 if (bSTMaterialsDTODel.Count > 0) { } //更新数据 _unitOfWorkManage.CommitTran(); BaseDal.AddData(materielInfosAdd); BaseDal.UpdateData(materielInfosUpdate); _unitOfWorkManage.CommitTran(); return content.OK("接收成功"); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); content.Error(ex.Message); } return content; } } }