payne
2024-04-25 46af5a3a488e06c2eb4844a2dd72ad9ddcd7cdbd
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/WmsControlRuleDetail/WmsControlRuleDetailService.cs
@@ -22,23 +22,23 @@
    [Route("api")]
    public class WmsControlRuleDetailService : IWmsControlRuleDetailService, IDynamicApiController, ITransient
    {
        private readonly IRepository<WmsControlRuleDetail,MasterDbContextLocator> _wmsControlRuleDetailRep;
        private readonly IRepository<WmsControlRuleDetail, MasterDbContextLocator> _wmsControlRuleDetailRep;
        private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
        private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
        private readonly ISysExcelTemplateService _sysExcelTemplateService;
        private readonly static object _lock = new();
        public WmsControlRuleDetailService(
            IRepository<WmsControlRuleDetail,MasterDbContextLocator> wmsControlRuleDetailRep
            ,IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
            ,IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
            ,ISysExcelTemplateService sysExcelTemplateService
            IRepository<WmsControlRuleDetail, MasterDbContextLocator> wmsControlRuleDetailRep
            , IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep
            , IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
            , ISysExcelTemplateService sysExcelTemplateService
        )
        {
            _wmsControlRuleDetailRep = wmsControlRuleDetailRep;
         _sysDictTypeRep = sysDictTypeRep;
         _sysDictDataRep = sysDictDataRep;
         _sysExcelTemplateService = sysExcelTemplateService;
            _sysDictTypeRep = sysDictTypeRep;
            _sysDictDataRep = sysDictDataRep;
            _sysExcelTemplateService = sysExcelTemplateService;
        }
        /// <summary>
@@ -60,8 +60,8 @@
                                     .Where(input.IsNotChek != null, u => u.IsNotChek == input.IsNotChek)
                                     .Where(input.ShelfLifeDays != null, u => u.ShelfLifeDays == input.ShelfLifeDays)
                                     .Where(input.IsDisabled != null, u => u.IsDisabled == input.IsDisabled)
                                     .Where(input.CreatedTime!=null, u => u.CreatedTime>=  Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
                                     .Where(input.UpdatedTime!=null, u => u.UpdatedTime>=  Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
                                     .Where(input.CreatedTime != null, u => u.CreatedTime >= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime <= Convert.ToDateTime(input.CreatedTime[1]))
                                     .Where(input.UpdatedTime != null, u => u.UpdatedTime >= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime <= Convert.ToDateTime(input.UpdatedTime[1]))
                                     .Where(!string.IsNullOrEmpty(input.CreatedUserName), u => u.CreatedUserName == input.CreatedUserName)
                                     .Where(!string.IsNullOrEmpty(input.UpdatedUserName), u => u.UpdatedUserName == input.UpdatedUserName)
                                     .OrderBy(PageInputOrder.OrderBuilder<WmsControlRuleDetailSearch>(input))
@@ -103,8 +103,8 @@
                .Where(pIsNotChek != null, u => u.IsNotChek == pIsNotChek)
                .Where(pShelfLifeDays != null, u => u.ShelfLifeDays == pShelfLifeDays)
                .Where(pIsDisabled != null, u => u.IsDisabled == pIsDisabled)
           .Where(input.CreatedTime!=null, u => u.CreatedTime>=  Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime<= Convert.ToDateTime(input.CreatedTime[1]))
           .Where(input.UpdatedTime!=null, u => u.UpdatedTime>=  Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime<= Convert.ToDateTime(input.UpdatedTime[1]))
           .Where(input.CreatedTime != null, u => u.CreatedTime >= Convert.ToDateTime(input.CreatedTime[0]) && u.CreatedTime <= Convert.ToDateTime(input.CreatedTime[1]))
           .Where(input.UpdatedTime != null, u => u.UpdatedTime >= Convert.ToDateTime(input.UpdatedTime[0]) && u.UpdatedTime <= Convert.ToDateTime(input.UpdatedTime[1]))
                .Where(!string.IsNullOrEmpty(pCreatedUserName), u => u.CreatedUserName == pCreatedUserName)
                .Where(!string.IsNullOrEmpty(pUpdatedUserName), u => u.UpdatedUserName == pUpdatedUserName)
            .OrderBy(PageInputOrder.OrderNonPageBuilder(input))
@@ -113,7 +113,7 @@
            return wmsControlRuleDetails;
        }
         /// <summary>
        /// <summary>
        /// 获取控制属性规则明细
        /// </summary>
        /// <param name="input"></param>
@@ -133,7 +133,7 @@
        public async Task<List<WmsControlRuleDetailOutput>> List([FromQuery] WmsControlRuleDetailInput input)
        {
            return await _wmsControlRuleDetailRep.DetachedEntities.ProjectToType<WmsControlRuleDetailOutput>().ToListAsync();
        }
        }
        #region 增、删、改
@@ -147,7 +147,7 @@
        {
            var wmsControlRuleDetail = input.Adapt<WmsControlRuleDetail>();
            wmsControlRuleDetail.RuleCode = Yitter.IdGenerator.YitIdHelper.NextId().ToString();//TODO 要调用生成 编号的方法 先用雪花ID
                                                                                       //验证
                                                                                               //验证
            await CheckExisit(wmsControlRuleDetail);
            wmsControlRuleDetail.CreatedUserId = wmsControlRuleDetail.UpdatedUserId = SysHelper.GetUserId();
@@ -166,7 +166,7 @@
        {
            var wmsControlRuleDetail = await _wmsControlRuleDetailRep.FirstOrDefaultAsync(u => u.Id == input.Id);
            await _wmsControlRuleDetailRep.DeleteAsync(wmsControlRuleDetail);
        }
        /// <summary>
@@ -182,12 +182,12 @@
            var wmsControlRuleDetail = input.Adapt<WmsControlRuleDetail>();
            //验证
            await CheckExisit(wmsControlRuleDetail,true);
            await CheckExisit(wmsControlRuleDetail, true);
            wmsControlRuleDetail.UpdatedUserId = SysHelper.GetUserId();
            wmsControlRuleDetail.UpdatedUserName = SysHelper.GetUserName();
            wmsControlRuleDetail.UpdatedTime = SysHelper.GetNowTime();
            await _wmsControlRuleDetailRep.UpdateAsync(wmsControlRuleDetail,ignoreNullValues:true);
            await _wmsControlRuleDetailRep.UpdateAsync(wmsControlRuleDetail, ignoreNullValues: true);
        }
        #endregion
@@ -201,17 +201,17 @@
        /// <returns>导入的记录数</returns>
        [HttpPost("WmsControlRuleDetail/importExcel")]
        public async Task<int> ImportExcelAsync(IFormFile file)
        {
        {
            int _HeadStartLine = 2;//第1行是说明,第2行是列名
            int _DataStartLine = 3;//第3行开始是数据
            DataTable importDataTable = ExcelUtil.ImportExcelToDataTable(file, _HeadStartLine, _DataStartLine);
            var addList =await CommonImport(importDataTable, _DataStartLine);
            var addList = await CommonImport(importDataTable, _DataStartLine);
            lock (_lock)
            {
                _wmsControlRuleDetailRep.InsertAsync(addList);
            }
            await Task.CompletedTask;
            return addList.Count;
@@ -232,176 +232,176 @@
            {
                index++;
               //导入模版定制化代码(替换模版使用)
                           var addItem = new WmsControlRuleDetail()
                            {
                               CreatedTime = SysHelper.GetNowTime(),
                               CreatedUserId = SysHelper.GetUserId(),
                               CreatedUserName = SysHelper.GetUserName(),
                               UpdatedTime = SysHelper.GetNowTime(),
                               UpdatedUserId = SysHelper.GetUserId(),
                               UpdatedUserName = SysHelper.GetUserName()
                             };
                          #region 定义变量
                           var _RuleName = "";//控制属性规则名称
                           var _MaxImumqty = "";//最高库存
                           var _MinImumqty = "";//最低库存
                           var _SafeImumqty = "";//安全库存
                           var _MinStorageAge = "";//最小库龄
                           var _MaxStorageAge = "";//最大库龄
                           var _IsNotChek = "";//是否免检
                           var _ShelfLifeDays = "";//保质期天数
                           var _IsDisabled = "";//是否禁用
                          #endregion
                          #region 取值
                           _RuleName = row["控制属性规则名称"]?.ToString() ;
                           _MaxImumqty = row["最高库存"]?.ToString() ;
                           _MinImumqty = row["最低库存"]?.ToString() ;
                           _SafeImumqty = row["安全库存"]?.ToString() ;
                           _MinStorageAge = row["最小库龄"]?.ToString() ;
                           _MaxStorageAge = row["最大库龄"]?.ToString() ;
                           _IsNotChek = row["是否免检"]?.ToString() ;
                           _ShelfLifeDays = row["保质期天数"]?.ToString() ;
                           _IsDisabled = row["是否禁用"]?.ToString() ;
                //导入模版定制化代码(替换模版使用)
                var addItem = new WmsControlRuleDetail()
                {
                    CreatedTime = SysHelper.GetNowTime(),
                    CreatedUserId = SysHelper.GetUserId(),
                    CreatedUserName = SysHelper.GetUserName(),
                    UpdatedTime = SysHelper.GetNowTime(),
                    UpdatedUserId = SysHelper.GetUserId(),
                    UpdatedUserName = SysHelper.GetUserName()
                };
                #region 定义变量
                var _RuleName = "";//控制属性规则名称
                var _MaxImumqty = "";//最高库存
                var _MinImumqty = "";//最低库存
                var _SafeImumqty = "";//安全库存
                var _MinStorageAge = "";//最小库龄
                var _MaxStorageAge = "";//最大库龄
                var _IsNotChek = "";//是否免检
                var _ShelfLifeDays = "";//保质期天数
                var _IsDisabled = "";//是否禁用
                #endregion
                #region 取值
                _RuleName = row["控制属性规则名称"]?.ToString();
                _MaxImumqty = row["最高库存"]?.ToString();
                _MinImumqty = row["最低库存"]?.ToString();
                _SafeImumqty = row["安全库存"]?.ToString();
                _MinStorageAge = row["最小库龄"]?.ToString();
                _MaxStorageAge = row["最大库龄"]?.ToString();
                _IsNotChek = row["是否免检"]?.ToString();
                _ShelfLifeDays = row["保质期天数"]?.ToString();
                _IsDisabled = row["是否禁用"]?.ToString();
                #endregion
                #region 验证
                if (string.IsNullOrEmpty(_RuleName))
                          {
                            throw Oops.Oh($"第{index}行[控制属性规则名称]{_RuleName}不能为空!");
                          }
                          if(!string.IsNullOrEmpty(_RuleName))
                          {
                                addItem.RuleName = (string)_RuleName;
                           }
                          if(!string.IsNullOrEmpty(_MaxImumqty))
                          {
                              if (!decimal.TryParse(_MaxImumqty, out decimal outMaxImumqty)&&!string.IsNullOrEmpty(_MaxImumqty))
                              {
                                 throw Oops.Oh($"第{index}行[最高库存]{_MaxImumqty}值不正确!");
                              }
                              if (outMaxImumqty <= 0&&!string.IsNullOrEmpty(_MaxImumqty))
                              {
                                 throw Oops.Oh($"第{index}行[最高库存]{_MaxImumqty}值不能小于等于0!");
                              }
                              else
                              {
                                 addItem.MaxImumqty = outMaxImumqty;
                              }
                          }
                          if(!string.IsNullOrEmpty(_MinImumqty))
                          {
                              if (!decimal.TryParse(_MinImumqty, out decimal outMinImumqty)&&!string.IsNullOrEmpty(_MinImumqty))
                              {
                                 throw Oops.Oh($"第{index}行[最低库存]{_MinImumqty}值不正确!");
                              }
                              if (outMinImumqty <= 0&&!string.IsNullOrEmpty(_MinImumqty))
                              {
                                 throw Oops.Oh($"第{index}行[最低库存]{_MinImumqty}值不能小于等于0!");
                              }
                              else
                              {
                                 addItem.MinImumqty = outMinImumqty;
                              }
                          }
                          if(!string.IsNullOrEmpty(_SafeImumqty))
                          {
                              if (!decimal.TryParse(_SafeImumqty, out decimal outSafeImumqty)&&!string.IsNullOrEmpty(_SafeImumqty))
                              {
                                 throw Oops.Oh($"第{index}行[安全库存]{_SafeImumqty}值不正确!");
                              }
                              if (outSafeImumqty <= 0&&!string.IsNullOrEmpty(_SafeImumqty))
                              {
                                 throw Oops.Oh($"第{index}行[安全库存]{_SafeImumqty}值不能小于等于0!");
                              }
                              else
                              {
                                 addItem.SafeImumqty = outSafeImumqty;
                              }
                          }
                          if(!string.IsNullOrEmpty(_MinStorageAge))
                          {
                              if (!decimal.TryParse(_MinStorageAge, out decimal outMinStorageAge)&&!string.IsNullOrEmpty(_MinStorageAge))
                              {
                                 throw Oops.Oh($"第{index}行[最小库龄]{_MinStorageAge}值不正确!");
                              }
                              if (outMinStorageAge <= 0&&!string.IsNullOrEmpty(_MinStorageAge))
                              {
                                 throw Oops.Oh($"第{index}行[最小库龄]{_MinStorageAge}值不能小于等于0!");
                              }
                              else
                              {
                                 addItem.MinStorageAge = outMinStorageAge;
                              }
                          }
                          if(!string.IsNullOrEmpty(_MaxStorageAge))
                          {
                              if (!decimal.TryParse(_MaxStorageAge, out decimal outMaxStorageAge)&&!string.IsNullOrEmpty(_MaxStorageAge))
                              {
                                 throw Oops.Oh($"第{index}行[最大库龄]{_MaxStorageAge}值不正确!");
                              }
                              if (outMaxStorageAge <= 0&&!string.IsNullOrEmpty(_MaxStorageAge))
                              {
                                 throw Oops.Oh($"第{index}行[最大库龄]{_MaxStorageAge}值不能小于等于0!");
                              }
                              else
                              {
                                 addItem.MaxStorageAge = outMaxStorageAge;
                              }
                          }
                          if(!string.IsNullOrEmpty(_IsNotChek))
                          {
                            if(!_IsNotChek.Equals("是") && !_IsNotChek.Equals("否"))
                             {
                               throw Oops.Oh($"第{index}行[是否免检]{_IsNotChek}值不正确!");
                             }
                             else
                             {
                               bool outIsNotChek = _IsNotChek.Equals("是") ? true : false;
                               addItem.IsNotChek = outIsNotChek;
                             }
                           }
                          if(!string.IsNullOrEmpty(_ShelfLifeDays))
                          {
                              if (!decimal.TryParse(_ShelfLifeDays, out decimal outShelfLifeDays)&&!string.IsNullOrEmpty(_ShelfLifeDays))
                              {
                                 throw Oops.Oh($"第{index}行[保质期天数]{_ShelfLifeDays}值不正确!");
                              }
                              if (outShelfLifeDays <= 0&&!string.IsNullOrEmpty(_ShelfLifeDays))
                              {
                                 throw Oops.Oh($"第{index}行[保质期天数]{_ShelfLifeDays}值不能小于等于0!");
                              }
                              else
                              {
                                 addItem.ShelfLifeDays = outShelfLifeDays;
                              }
                          }
                          if(!string.IsNullOrEmpty(_IsDisabled))
                          {
                            if(!_IsDisabled.Equals("是") && !_IsDisabled.Equals("否"))
                             {
                               throw Oops.Oh($"第{index}行[是否禁用]{_IsDisabled}值不正确!");
                             }
                             else
                             {
                               bool outIsDisabled = _IsDisabled.Equals("是") ? true : false;
                               addItem.IsDisabled = outIsDisabled;
                             }
                             }
                {
                    throw Oops.Oh($"第{index}行[控制属性规则名称]{_RuleName}不能为空!");
                }
                if (!string.IsNullOrEmpty(_RuleName))
                {
                    addItem.RuleName = (string)_RuleName;
                }
                if (!string.IsNullOrEmpty(_MaxImumqty))
                {
                    if (!decimal.TryParse(_MaxImumqty, out decimal outMaxImumqty) && !string.IsNullOrEmpty(_MaxImumqty))
                    {
                        throw Oops.Oh($"第{index}行[最高库存]{_MaxImumqty}值不正确!");
                    }
                    if (outMaxImumqty <= 0 && !string.IsNullOrEmpty(_MaxImumqty))
                    {
                        throw Oops.Oh($"第{index}行[最高库存]{_MaxImumqty}值不能小于等于0!");
                    }
                    else
                    {
                        addItem.MaxImumqty = outMaxImumqty;
                    }
                }
                if (!string.IsNullOrEmpty(_MinImumqty))
                {
                    if (!decimal.TryParse(_MinImumqty, out decimal outMinImumqty) && !string.IsNullOrEmpty(_MinImumqty))
                    {
                        throw Oops.Oh($"第{index}行[最低库存]{_MinImumqty}值不正确!");
                    }
                    if (outMinImumqty <= 0 && !string.IsNullOrEmpty(_MinImumqty))
                    {
                        throw Oops.Oh($"第{index}行[最低库存]{_MinImumqty}值不能小于等于0!");
                    }
                    else
                    {
                        addItem.MinImumqty = outMinImumqty;
                    }
                }
                if (!string.IsNullOrEmpty(_SafeImumqty))
                {
                    if (!decimal.TryParse(_SafeImumqty, out decimal outSafeImumqty) && !string.IsNullOrEmpty(_SafeImumqty))
                    {
                        throw Oops.Oh($"第{index}行[安全库存]{_SafeImumqty}值不正确!");
                    }
                    if (outSafeImumqty <= 0 && !string.IsNullOrEmpty(_SafeImumqty))
                    {
                        throw Oops.Oh($"第{index}行[安全库存]{_SafeImumqty}值不能小于等于0!");
                    }
                    else
                    {
                        addItem.SafeImumqty = outSafeImumqty;
                    }
                }
                if (!string.IsNullOrEmpty(_MinStorageAge))
                {
                    if (!decimal.TryParse(_MinStorageAge, out decimal outMinStorageAge) && !string.IsNullOrEmpty(_MinStorageAge))
                    {
                        throw Oops.Oh($"第{index}行[最小库龄]{_MinStorageAge}值不正确!");
                    }
                    if (outMinStorageAge <= 0 && !string.IsNullOrEmpty(_MinStorageAge))
                    {
                        throw Oops.Oh($"第{index}行[最小库龄]{_MinStorageAge}值不能小于等于0!");
                    }
                    else
                    {
                        addItem.MinStorageAge = outMinStorageAge;
                    }
                }
                if (!string.IsNullOrEmpty(_MaxStorageAge))
                {
                    if (!decimal.TryParse(_MaxStorageAge, out decimal outMaxStorageAge) && !string.IsNullOrEmpty(_MaxStorageAge))
                    {
                        throw Oops.Oh($"第{index}行[最大库龄]{_MaxStorageAge}值不正确!");
                    }
                    if (outMaxStorageAge <= 0 && !string.IsNullOrEmpty(_MaxStorageAge))
                    {
                        throw Oops.Oh($"第{index}行[最大库龄]{_MaxStorageAge}值不能小于等于0!");
                    }
                    else
                    {
                        addItem.MaxStorageAge = outMaxStorageAge;
                    }
                }
                if (!string.IsNullOrEmpty(_IsNotChek))
                {
                    if (!_IsNotChek.Equals("是") && !_IsNotChek.Equals("否"))
                    {
                        throw Oops.Oh($"第{index}行[是否免检]{_IsNotChek}值不正确!");
                    }
                    else
                    {
                        bool outIsNotChek = _IsNotChek.Equals("是") ? true : false;
                        addItem.IsNotChek = outIsNotChek;
                    }
                }
                if (!string.IsNullOrEmpty(_ShelfLifeDays))
                {
                    if (!decimal.TryParse(_ShelfLifeDays, out decimal outShelfLifeDays) && !string.IsNullOrEmpty(_ShelfLifeDays))
                    {
                        throw Oops.Oh($"第{index}行[保质期天数]{_ShelfLifeDays}值不正确!");
                    }
                    if (outShelfLifeDays <= 0 && !string.IsNullOrEmpty(_ShelfLifeDays))
                    {
                        throw Oops.Oh($"第{index}行[保质期天数]{_ShelfLifeDays}值不能小于等于0!");
                    }
                    else
                    {
                        addItem.ShelfLifeDays = outShelfLifeDays;
                    }
                }
                if (!string.IsNullOrEmpty(_IsDisabled))
                {
                    if (!_IsDisabled.Equals("是") && !_IsDisabled.Equals("否"))
                    {
                        throw Oops.Oh($"第{index}行[是否禁用]{_IsDisabled}值不正确!");
                    }
                    else
                    {
                        bool outIsDisabled = _IsDisabled.Equals("是") ? true : false;
                        addItem.IsDisabled = outIsDisabled;
                    }
                }
                #endregion
@@ -410,9 +410,9 @@
                addItem.RuleCode = Yitter.IdGenerator.YitIdHelper.NextId().ToString();//TODO 要调用生成 编号的方法 先用雪花ID
                details.Add(addItem);
            }
              //验重
              await CheckExisitForImport(details);
            //验重
            await CheckExisitForImport(details);
            return details;
        }
@@ -439,78 +439,80 @@
        /// <param name="input"></param>
        /// <param name="isEdit"></param>
        /// <returns></returns>
        private async Task CheckExisit( WmsControlRuleDetail input,bool isEdit=false)
        private async Task CheckExisit(WmsControlRuleDetail input, bool isEdit = false)
        {
           bool isExist = false;
           if (!isEdit)//新增
           {
                   //数据是否存在重复
                   isExist = await _wmsControlRuleDetailRep.AnyAsync(u =>
                                   u.RuleName.Equals(input.RuleName)
                   ,false);
          }
           else//编辑
          {
                 //当前编辑数据以外是否存在重复
                  isExist = await _wmsControlRuleDetailRep.AnyAsync(u =>
                                    u.Id != input.Id
                                    &&u.RuleName.Equals(input.RuleName)
                    ,false);
               }
            bool isExist = false;
            if (!isEdit)//新增
            {
                //数据是否存在重复
                isExist = await _wmsControlRuleDetailRep.AnyAsync(u =>
                                u.RuleName.Equals(input.RuleName)
                , false);
            }
            else//编辑
            {
                //当前编辑数据以外是否存在重复
                isExist = await _wmsControlRuleDetailRep.AnyAsync(u =>
                                  u.Id != input.Id
                                  && u.RuleName.Equals(input.RuleName)
                  , false);
            }
            if (isExist) throw Oops.Oh(ErrorCode.E0001);
       }
        }
        /// <summary>
        /// 根据联合主键验证数据是否已存在-导入时验证
        /// </summary>
        /// <param name="inputs"></param>
        /// <returns></returns>
        private async Task CheckExisitForImport(List<WmsControlRuleDetail> inputs)
        {
        {
            //根据联合主键验证表格中中是否已存在相同数据  
                 if (inputs?.Count <= 0)
                 {
                     throw Oops.Oh($"导入数据不能为空");
                 }
                 //数据是否重复
                 var existExcelItem = inputs.GroupBy(g => new {
                                               g.RuleName
                                               })
                                               .Where(g => g.Count() > 1)
                                               .Select(s => new {
                                               s.Key.RuleName
                                               }).FirstOrDefault();
                 if (existExcelItem != null)
                 {
                   var item= existExcelItem.Adapt<WmsControlRuleDetail>();
                   throw Oops.Oh($"导入的表格中,控制属性规则名称[{item.RuleName}]已存在");
                 }
            if (inputs?.Count <= 0)
            {
                throw Oops.Oh($"导入数据不能为空");
            }
            //数据是否重复
            var existExcelItem = inputs.GroupBy(g => new
            {
                g.RuleName
            })
                                          .Where(g => g.Count() > 1)
                                          .Select(s => new
                                          {
                                              s.Key.RuleName
                                          }).FirstOrDefault();
            if (existExcelItem != null)
            {
                var item = existExcelItem.Adapt<WmsControlRuleDetail>();
                throw Oops.Oh($"导入的表格中,控制属性规则名称[{item.RuleName}]已存在");
            }
    //根据联合主键验证数据库中是否已存在相同数据
                 var existDBItem = await _wmsControlRuleDetailRep.DetachedEntities.FirstOrDefaultAsync(w=>
                                                                         inputs.Select(s=>""
                                                                           +s.RuleName
                                                                        )
                                                                        .Contains(""
                                                                         +w.RuleName
                  ));
                  if (existDBItem != null)
                 {
                   var item= existDBItem.Adapt<WmsControlRuleDetail>();
                   throw Oops.Oh($"系统中,控制属性规则名称[{item.RuleName}]已存在");
                 }
            //根据联合主键验证数据库中是否已存在相同数据
            var existDBItem = await _wmsControlRuleDetailRep.DetachedEntities.FirstOrDefaultAsync(w =>
                                                                    inputs.Select(s => ""
                                                                      + s.RuleName
                                                                   )
                                                                   .Contains(""
                                                                    + w.RuleName
             ));
            if (existDBItem != null)
            {
                var item = existDBItem.Adapt<WmsControlRuleDetail>();
                throw Oops.Oh($"系统中,控制属性规则名称[{item.RuleName}]已存在");
            }
        }
        #endregion