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<Dt_MaterielInfo, IMaterielInfoRepository>, 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;
|
}
|
/// <summary>
|
/// 添加老厂物料信息
|
/// </summary>
|
/// <returns></returns>
|
public WebResponseContent AddMaterial(List<BSTMaterialDTO> bSTMaterialDTOs)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
List<Dt_MaterielInfo> OldMaterielInfos = BaseDal.QueryData(x => x.WarehouseId == WarehouseEnum.LLDYL.ObjToInt());
|
//新增
|
List<BSTMaterialDTO> bSTMaterialsDTOAdd = bSTMaterialDTOs.Where(x => x.Way == 1).ToList();
|
//修改
|
List<BSTMaterialDTO> bSTMaterialsDTOUpdate = bSTMaterialDTOs.Where(x => x.Way == 2).ToList();
|
//删除
|
List<BSTMaterialDTO> bSTMaterialsDTODel = bSTMaterialDTOs.Where(x => x.Way == 3).ToList();
|
List<Dt_MaterielInfo> materielInfosAdd = new List<Dt_MaterielInfo>();
|
List<Dt_MaterielInfo> materielInfosUpdate = new List<Dt_MaterielInfo>();
|
//新增
|
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<Dt_MaterielInfo>(item);
|
materielInfosAdd.Add(materielInfo);
|
}
|
}
|
//更新
|
if (bSTMaterialsDTOUpdate.Count > 0)
|
{
|
//获取已存在的物料
|
List<Dt_MaterielInfo>? 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<Dt_MaterielInfo>(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;
|
}
|
|
}
|
}
|