using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using WIDESEA_BasicRepository; using WIDESEA_Common.CommonEnum; using WIDESEA_Common.MaterielEnum; using WIDESEA_Core; using WIDESEA_Core.BaseServices; using WIDESEA_Core.Helper; using WIDESEA_DTO.Basic; using WIDESEA_DTO.ERP; using WIDESEA_DTO.PLS; using WIDESEA_IBasicRepository; using WIDESEA_IBasicService; using WIDESEA_Model.Models; namespace WIDESEA_BasicService { public partial class MaterielInfoService : ServiceBase, IMaterielInfoService { /// /// 判断物料是否存在 /// /// 物料编号 /// public bool ExsitMateriel(string materielCode) { return BaseDal.QueryFirst(x => x.MaterielCode == materielCode) != null; } /// /// 判断物料是否存在 /// /// 物料编号集合 /// public bool ExsitMateriels(List materielCodes) { return BaseDal.QueryData(x => materielCodes.Contains(x.MaterielCode)).Count == materielCodes.Count; } /// /// 获取物料信息 /// /// 物料编号 /// public Dt_MaterielInfo GetMaterielInfo(string materielCode) { return BaseDal.QueryFirst(x => x.MaterielCode == materielCode); } /// /// 查询物料信息 /// /// 物料编号 /// public List GetMaterielInfos(List materielCodes) { return BaseDal.QueryData(x => materielCodes.Contains(x.MaterielCode)); } public WebResponseContent GetWarehouseMaterielInfos(int warehouseId) { try { List materielInfos = BaseDal.QueryData(x => x.WarehouseId == warehouseId); return WebResponseContent.Instance.OK(data: materielInfos); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } /// /// 接收ERP物料信息 /// /// /// public WebResponseContent ReceiveMaterial(MaterielInfoDTO model) { try { Dt_Warehouse? warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == model.WaId); if (model.OperateType.ObjToInt() == 0) { Dt_MaterielInfo materielInfo = new Dt_MaterielInfo() { IsCheck = warehouse == null ? 0 : (WhetherEnum)model.IsCheck, MaterielCode = model.Code, MaterielInvOrgId = model.InvOrgId, MaterielLength = model.Length, MaterielModel = model.Model, MaterielName = model.Name, MaterielSize = model.Size, MaterielSpec = warehouse == null ? "空" : model.StandType, MaterielState = (EnableEnum)(model.State.ObjToInt()), MaterielThickness = model.Thickness, MaterielUnit = model.Unit == null ? "" : model.Unit, MaterielVersion = model.MaterialVersion, MaterielWide = model.Wide, WarehouseId = warehouse == null ? 0 : warehouse.WarehouseId, }; BaseDal.AddData(materielInfo); } else if (model.OperateType.ObjToInt() == 1) { Dt_MaterielInfo materielInfo = BaseDal.QueryFirst(x => x.MaterielCode == model.Code); if (materielInfo == null) { Dt_MaterielInfo materielInfoAddNew = new Dt_MaterielInfo() { IsCheck = warehouse == null ? 0 : (WhetherEnum)model.IsCheck, MaterielCode = model.Code, MaterielInvOrgId = model.InvOrgId, MaterielLength = model.Length, MaterielModel = model.Model, MaterielName = model.Name, MaterielSize = model.Size, MaterielSpec = warehouse == null ? "空" : model.StandType, MaterielState = (EnableEnum)(model.State.ObjToInt()), MaterielThickness = model.Thickness, MaterielUnit = model.Unit == null ? "" : model.Unit, MaterielVersion = model.MaterialVersion, MaterielWide = model.Wide, WarehouseId = warehouse == null ? 0 : warehouse.WarehouseId, }; BaseDal.AddData(materielInfoAddNew); } else { materielInfo.IsCheck = warehouse == null ? 0 : (WhetherEnum)model.IsCheck; materielInfo.MaterielCode = model.Code; materielInfo.MaterielInvOrgId = model.InvOrgId; materielInfo.MaterielLength = model.Length; materielInfo.MaterielModel = model.Model; materielInfo.MaterielName = model.Name; materielInfo.MaterielSize = model.Size; materielInfo.MaterielSpec = warehouse == null ? "" : model.StandType; materielInfo.MaterielState = (EnableEnum)model.State.ObjToInt(); materielInfo.MaterielThickness = model.Thickness; materielInfo.MaterielUnit = model.Unit == null ? "" : model.Unit; materielInfo.MaterielVersion = model.MaterialVersion; materielInfo.MaterielWide = model.Wide; materielInfo.WarehouseId = warehouse == null ? 0 : warehouse.WarehouseId; BaseDal.UpdateData(materielInfo); } } else if (model.OperateType.ObjToInt() == 2) { Dt_MaterielInfo materielInfo = BaseDal.QueryFirst(x => x.MaterielCode == model.Code); if (materielInfo == null) { return WebResponseContent.Instance.Error($"未找到物料信息"); } BaseDal.DeleteData(materielInfo); } return WebResponseContent.Instance.OK(); } catch (Exception ex) { return WebResponseContent.Instance.OK(ex.Message); } } /// /// 同步VMI物料信息 /// /// /// public WebResponseContent ReceiveVMIMaterial(VMIItemCodeInfo vmiModel) { try { ///参数校验 if (vmiModel == null || vmiModel.Data == null || !vmiModel.Data.Any()) { return WebResponseContent.Instance.Error("接口传入的物料数据集合不能为空"); } foreach (var itemData in vmiModel.Data) { var existMateriel = BaseDal.QueryFirst(x => x.MaterielCode == itemData.ItemCode); if (existMateriel == null) { Dt_MaterielInfo addEntity = new Dt_MaterielInfo() { MaterielCode = itemData.ItemCode, OrgId = itemData.OrgId, MaterielInvOrgId = itemData.SupplierCode, PackageQty = itemData.PackageQty, MaterielState = itemData.DeleteFlag == "0" ? EnableEnum.Enable : EnableEnum.Disable, WarehouseId = 0, MaterielSourceType = 0, Creater = itemData.CreateUser, CreateDate = itemData.CreateDate, Modifier = itemData.UpdateUser, ModifyDate = itemData.UpdateDate }; BaseDal.AddData(addEntity); } else { existMateriel.OrgId = itemData.OrgId; existMateriel.MaterielInvOrgId = itemData.SupplierCode; existMateriel.PackageQty = itemData.PackageQty; existMateriel.MaterielState = itemData.DeleteFlag == "0" ? EnableEnum.Enable : EnableEnum.Disable; existMateriel.Modifier = itemData.UpdateUser; existMateriel.ModifyDate = itemData.UpdateDate; BaseDal.UpdateData(existMateriel); } } // 处理完成 return WebResponseContent.Instance.OK("VMI物料数据同步成功"); } catch (Exception ex) { // 异常返回 return WebResponseContent.Instance.Error($"VMI物料同步失败:{ex.Message}"); } } } }