schangxiang@126.com
2024-04-25 4d14b84903bf0277c5e8b9b3138c5e1d981e95db
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsMaterial/WmsMaterialService.cs
@@ -191,7 +191,7 @@
            var controlRuleld = input.ControlRuleld;
            wmsMaterial.ControlRuleId = controlRuleld;
            //客户档案信息
            //往来关系信息
            var baseCustomerList = input.BaseCustomerList.Adapt<List<BaseCustomer>>();
            //物料客户关联关系
            var materialCustomerList=new List<WmsMaterialCustomer>();
@@ -221,9 +221,9 @@
            //替代品信息
            var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>();
            wmsMaterial.CreatedUserId = wmsMaterial.UpdatedUserId = SysHelper.GetUserId();
            wmsMaterial.CreatedUserName = wmsMaterial.UpdatedUserName = SysHelper.GetUserName();
            wmsMaterial.CreatedTime = wmsMaterial.UpdatedTime = SysHelper.GetNowTime();
            wmsMaterial.UpdatedUserId = SysHelper.GetUserId();
            wmsMaterial.UpdatedUserName = SysHelper.GetUserName();
            wmsMaterial.UpdatedTime = SysHelper.GetNowTime();
            await _wmsMaterialRep.InsertAsync(wmsMaterial);
@@ -256,19 +256,80 @@
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost("WmsMaterial/edit")]
        public async Task Update(UpdateWmsMaterialInput input)
        [UnitOfWork]
        public async Task Update(UpdateWmsMaterialInfoInput input)
        {
            var isExist = await _wmsMaterialRep.AnyAsync(u => u.Id == input.Id, false);
            //物料信息
            var wmsMaterial = input.MaterialInput.Adapt<WmsMaterial>();
            var isExist = await _wmsMaterialRep.AnyAsync(u => u.Id == wmsMaterial.Id, false);
            if (!isExist) throw Oops.Oh(ErrorCode.D1002);
            var wmsMaterial = input.Adapt<WmsMaterial>();
            //验证
            await CheckExisit(wmsMaterial, true);
            //控制规则信息
            var controlRuleld = input.ControlRuleld;
            wmsMaterial.ControlRuleId = controlRuleld;
            //删除物料客户关联关系
            var oldaterialCustomerList = await _wmsMaterialCustomerRep.DetachedEntities.Where(w => w.MaterialId == wmsMaterial.Id).ToListAsync();
            if (oldaterialCustomerList?.Count > 0)
            {
                await _wmsMaterialCustomerRep.DeleteAsync(oldaterialCustomerList);
            }
            //往来关系信息
            var baseCustomerList = input.BaseCustomerList.Adapt<List<BaseCustomer>>();
            //物料客户关联关系
            var materialCustomerList = new List<WmsMaterialCustomer>();
            foreach (var baseCustomer in baseCustomerList)
            {
                materialCustomerList.Add(new WmsMaterialCustomer()
                {
                    CreatedTime = DateTime.Now,
                    CreatedUserId = CurrentUserInfo.UserId,
                    CreatedUserName = CurrentUserInfo.Name,
                    CustChinaName = baseCustomer.CustChinaName,
                    CustCode = baseCustomer.CustCode,
                    CustEnglishName = baseCustomer.CustEnglishName,
                    CustId = baseCustomer.Id,
                    MaterialCode = wmsMaterial.MaterialCode,
                    MaterialId = wmsMaterial.Id,
                    MaterialName = wmsMaterial.MaterialName,
                    UpdatedTime = DateTime.Now,
                    UpdatedUserId = CurrentUserInfo.UserId,
                    UpdatedUserName = CurrentUserInfo.Name
                });
            }
            //删除替代品信息
            var oldSubstituteGoodList = await _wmsSubstituteGoodRep.DetachedEntities.Where(w => w.MaterialCode == wmsMaterial.MaterialCode).ToListAsync();
            if (oldSubstituteGoodList?.Count > 0)
            {
                await _wmsSubstituteGoodRep.DeleteAsync(oldSubstituteGoodList);
            }
            //替代品信息
            var substituteGoodList = input.SubstituteGoodList.Adapt<List<WmsSubstituteGood>>();
            if (materialCustomerList?.Count > 0)
            {
                await _wmsMaterialCustomerRep.InsertAsync(materialCustomerList);
            }
            if (substituteGoodList?.Count > 0)
            {
                await _wmsSubstituteGoodRep.InsertAsync(substituteGoodList);
            }
            wmsMaterial.UpdatedUserId = SysHelper.GetUserId();
            wmsMaterial.UpdatedUserName = SysHelper.GetUserName();
            wmsMaterial.UpdatedTime = SysHelper.GetNowTime();
            await _wmsMaterialRep.UpdateAsync(wmsMaterial, ignoreNullValues: true);
        }
        #endregion
@@ -614,9 +675,14 @@
            bool isExist = false;
            if (!isEdit)//新增
            {
                //数据是否存在重复
                //物料编号是否存在重复
                isExist = await _wmsMaterialRep.AnyAsync(u =>
                                u.MaterialCode.Equals(input.MaterialCode)
                , false);
                //物料名称是否存在重复
                isExist = await _wmsMaterialRep.AnyAsync(u =>
                                u.MaterialName.Equals(input.MaterialName)
                , false);
            }
            else//编辑 
@@ -624,10 +690,15 @@
                //当前编辑数据以外是否存在重复
                //当前编辑物料编号以外是否存在重复
                isExist = await _wmsMaterialRep.AnyAsync(u =>
                                  u.Id != input.Id
                                  && u.MaterialCode.Equals(input.MaterialCode)
                  , false);
                //当前编辑物料名称以外是否存在重复
                isExist = await _wmsMaterialRep.AnyAsync(u =>
                                  u.Id != input.Id
                                  && u.MaterialName.Equals(input.MaterialName)
                  , false);
            }
@@ -663,7 +734,19 @@
                throw Oops.Oh($"导入的表格中,物料编号[{item.MaterialCode}]已存在");
            }
           var existExcelItem2 = inputs.GroupBy(g => new {
                g.MaterialName
            })
                                          .Where(g => g.Count() > 1)
                                          .Select(s => new {
                                              s.Key.MaterialName
                                          }).FirstOrDefault();
            if (existExcelItem2 != null)
            {
                var wmsMaterial = existExcelItem2.Adapt<WmsMaterial>();
                var item = existExcelItem2.Adapt<WmsMaterial>();
                throw Oops.Oh($"导入的表格中,物料名称[{item.MaterialName}]已存在");
            }
            //根据联合主键验证数据库中是否已存在相同数据
@@ -680,6 +763,21 @@
                var item = existExcelItem.Adapt<WmsMaterial>();
                throw Oops.Oh($"系统中,物料编号[{item.MaterialCode}]已存在");
            }
            //根据联合主键验证数据库中是否已存在相同数据
            var existDBItem2 = await _wmsMaterialRep.DetachedEntities.FirstOrDefaultAsync(w =>
                                                                    inputs.Select(s => ""
                                                                      + s.MaterialName
                                                                   )
                                                                   .Contains(""
                                                                    + w.MaterialName
             ));
            if (existDBItem2 != null)
            {
                var wmsMaterial = existExcelItem2.Adapt<WmsMaterial>();
                var item = existExcelItem.Adapt<WmsMaterial>();
                throw Oops.Oh($"系统中,物料编号[{item.MaterialName}]已存在");
            }
        }
        #endregion