payne
2024-04-25 b96e7fb632e229cc8d7f3c271d07e03420323b84
物料信息bug修复
已修改2个文件
88 ■■■■ 文件已修改
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialInput.cs 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/Dto/WmsMaterialInput.cs
@@ -415,13 +415,36 @@
    /// <summary>
    /// 编辑物料业务信息实体入参--包含物料、物料客户关系、控制属性、替代品
    /// </summary>
    public class UpdateWmsMaterialInfoInput : AddWmsMaterialInfoInput
    public class UpdateWmsMaterialInfoInput
    {
        /// <summary>
        /// Id主键
        /// 物料基础信息
        /// </summary>
        [Required(ErrorMessage = "Id主键不能为空")]
        public long? Id { get; set; }
        public UpdateWmsMaterialInput MaterialInput { get; set; }
        /// <summary>
        /// 控制属性规则ID
        /// </summary>
        public long? ControlRuleld { get; set; }
        /// <summary>
        /// 替代品
        /// </summary>
        public List<AddWmsSubstituteGoodInput> SubstituteGoodList { get; set; }
        ///// <summary>
        ///// 往来单位
        ///// </summary>
        //public List<BaseCustomerInput> BaseCustomerList { get; set; }
        /// <summary>
        /// 客户档案(往来单位)ID列表
        /// </summary>
        public List<long> BaseCustomerList { get; set; }
    }
    /// <summary>
@@ -465,4 +488,6 @@
    }
}
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs
@@ -245,17 +245,26 @@
            wmsMaterial.ControlRuleId = controlRuleld;
            
            //获取物料类型
            var wmsMaterialType = (await _wmsMaterialTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == wmsMaterial.MaterialType)).Adapt<WmsMaterialTypeOutput>();
            var wmsMaterialType = (await _wmsMaterialTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == wmsMaterial.MaterialType && u.IsDeleted == false)).Adapt<WmsMaterialTypeOutput>();
            if(wmsMaterialType==null) throw Oops.Oh($"ID{wmsMaterial.MaterialType}物料类型不存在");
            wmsMaterial.MaterialTypeName = wmsMaterialType.MaterialTypeName;
            //往来单位
            var wmsBaseCustomerList = await _baseCustomerRep.DetachedEntities.Where(u => input.BaseCustomerList.Contains(u.Id) && u.IsDeleted == false && u.IsDisabled == false).ProjectToType<BaseCustomerOutput>().ToListAsync();
            var wmsBaseCustomerList = await _baseCustomerRep.DetachedEntities.Where(u => input.BaseCustomerList.Contains(u.Id) && u.IsDeleted == false).ProjectToType<BaseCustomerOutput>().ToListAsync();
            if (wmsBaseCustomerList?.Count()<=0)
            {
                throw Oops.Oh($"往来单位不存在");
            }
            //物料客户关联关系
            var materialCustomerList=new List<WmsMaterialCustomer>();
            foreach (var baseCustomer in wmsBaseCustomerList)
            {
                if (baseCustomer.IsDisabled == true)
                {
                    throw Oops.Oh($"不能使用已禁用的往来单位");
                }
                materialCustomerList.Add(new WmsMaterialCustomer()
                {
                    CreatedTime = DateTime.Now,
@@ -280,9 +289,19 @@
            //替代品信息
            var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>();
            List<string> materialCodes = substituteGoodList.Select(s => s.SubstituteMaterialCode).ToList();
            var wmsSubstituteMaterialInfoList = await _wmsMaterialRep.DetachedEntities.Where(u => materialCodes.Contains(u.MaterialCode)&&u.IsDeleted==false&&u.IsDisabled==false).ProjectToType<WmsMaterialOutput>().ToListAsync();
            var wmsSubstituteMaterialInfoList = await _wmsMaterialRep.DetachedEntities.Where(u => materialCodes.Contains(u.MaterialCode) && u.IsDeleted == false).ProjectToType<WmsMaterialOutput>().ToListAsync();
            if (wmsSubstituteMaterialInfoList?.Count <= 0)
            {
                throw Oops.Oh($"替代品物料不存在");
            }
            foreach (var item in substituteGoodList)
            {
                if (item.IsDisabled == true)
                {
                    throw Oops.Oh($"不能使用已禁用的替代品物料");
                }
                var substituteMaterialInfo = wmsSubstituteMaterialInfoList.FirstOrDefault(f=>f.MaterialCode== item.SubstituteMaterialCode);
                item.SubstituteCode =  await SerialUtil.GetSerial(EnumSerialType.替代品编号); 
                item.SubstituteMaterialName = substituteMaterialInfo.MaterialName;//替代品物料名称
@@ -337,7 +356,7 @@
            var controlRuleld = input.ControlRuleld;
            wmsMaterial.ControlRuleId = controlRuleld;
            //获取物料类型
            var wmsMaterialType = (await _wmsMaterialTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == wmsMaterial.MaterialType)).Adapt<WmsMaterialTypeOutput>();
            var wmsMaterialType = (await _wmsMaterialTypeRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == wmsMaterial.MaterialType && u.IsDeleted == false)).Adapt<WmsMaterialTypeOutput>();
            if (wmsMaterialType == null) throw Oops.Oh($"ID{wmsMaterial.MaterialType}物料类型不存在");
            wmsMaterial.MaterialTypeName = wmsMaterialType.MaterialTypeName;
@@ -350,12 +369,21 @@
            }
            //往来单位信息
            var baseCustomerList = input.BaseCustomerList.Adapt<List<BaseCustomer>>();
            //往来单位
            var wmsBaseCustomerList = await _baseCustomerRep.DetachedEntities.Where(u => input.BaseCustomerList.Contains(u.Id) && u.IsDeleted == false).ProjectToType<BaseCustomerOutput>().ToListAsync();
            if (wmsBaseCustomerList?.Count() <= 0)
            {
                throw Oops.Oh($"往来单位不存在");
            }
            //物料客户关联关系
            var materialCustomerList = new List<WmsMaterialCustomer>();
            foreach (var baseCustomer in baseCustomerList)
            foreach (var baseCustomer in wmsBaseCustomerList)
            {
                if (baseCustomer.IsDisabled == true)
                {
                    throw Oops.Oh($"不能使用已禁用的往来单位");
                }
                materialCustomerList.Add(new WmsMaterialCustomer()
                {
                    CreatedTime = DateTime.Now,
@@ -386,15 +414,22 @@
            //替代品信息
            var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>();
            List<string> materialCodes = substituteGoodList.Select(s => s.SubstituteMaterialCode).ToList();
            var wmsSubstituteMaterialInfoList = await _wmsMaterialRep.DetachedEntities.Where(u => materialCodes.Contains(u.MaterialCode) && u.IsDeleted == false && u.IsDisabled == false).ProjectToType<WmsMaterialOutput>().ToListAsync();
            var wmsSubstituteMaterialInfoList = await _wmsMaterialRep.DetachedEntities.Where(u => materialCodes.Contains(u.MaterialCode)&&u.IsDeleted==false).ProjectToType<WmsMaterialOutput>().ToListAsync();
            if (wmsSubstituteMaterialInfoList?.Count <= 0)
            {
                throw Oops.Oh($"替代品物料不存在");
            }
            foreach (var item in substituteGoodList)
            {
                if (item.IsDisabled == true)
                {
                    throw Oops.Oh($"不能使用已禁用的替代品物料");
                }
                var substituteMaterialInfo = wmsSubstituteMaterialInfoList.FirstOrDefault(f => f.MaterialCode == item.SubstituteMaterialCode);
                item.SubstituteCode = await SerialUtil.GetSerial(EnumSerialType.替代品编号);
                item.SubstituteMaterialName = substituteMaterialInfo.MaterialName;//替代品物料名称
            }
            if (materialCustomerList?.Count > 0)
            {
                await _wmsMaterialCustomerRep.InsertAsync(materialCustomerList);