payne
2024-04-25 384e823d11dabf7199b22358f5883748b054f141
iWare_RawMaterialWarehouse_Wms/Admin.NET.Application/Service/WmsBase/BaseCustomer/BaseCustomerService.cs
@@ -16,7 +16,7 @@
namespace Admin.NET.Application
{
    /// <summary>
    /// 客户档案服务
    /// 往来关系服务
    /// </summary>
    [ApiDescriptionSettings("WmsBase", Name = "BaseCustomer", Order = 100)]
    [Route("api")]
@@ -42,7 +42,7 @@
        }
        /// <summary>
        /// 分页查询客户档案
        /// 分页查询往来关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -74,10 +74,10 @@
        }
        /// <summary>
        /// 不分页查询客户档案列表
        /// 不分页查询往来关系列表
        /// </summary>
        /// <param name="input">客户档案查询参数</param>
        /// <returns>(客户档案)实例列表</returns>
        /// <param name="input">往来关系查询参数</param>
        /// <returns>(往来关系)实例列表</returns>
        [HttpGet("BaseCustomer/listNonPage")]
        public async Task<List<BaseCustomerOutput>> ListNonPageAsync([FromQuery] BaseCustomerSearchNonPage input)
        {
@@ -123,7 +123,7 @@
        }
         /// <summary>
        /// 获取客户档案
        /// 获取往来关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -134,7 +134,7 @@
        }
        /// <summary>
        /// 获取客户档案列表
        /// 获取往来关系列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -147,7 +147,7 @@
        #region 增、删、改
        /// <summary>
        /// 增加客户档案
        /// 增加往来关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -167,7 +167,7 @@
        }
        /// <summary>
        /// 删除客户档案
        /// 删除往来关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -180,7 +180,7 @@
        }
        /// <summary>
        /// 更新客户档案
        /// 更新往来关系
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
@@ -205,7 +205,7 @@
        #region 导入
        /// <summary>
        /// Excel模板导入客户档案功能
        /// Excel模板导入往来关系功能
        /// </summary>
        /// <param name="file">Excel模板文件</param>
        /// <returns>导入的记录数</returns>
@@ -382,7 +382,7 @@
        }
        /// <summary>
        /// 根据版本下载客户档案的Excel导入模板
        /// 根据版本下载往来关系的Excel导入模板
        /// </summary>
        /// <param name="version">模板版本</param>
        /// <returns>下载的模板文件</returns>
@@ -390,7 +390,7 @@
        public IActionResult DownloadExcelTemplate([FromQuery] string version)
        {
            string _path = TemplateConst.EXCEL_TEMPLATEFILE_导入模版路径 + $"\\BaseCustomer{TemplateConst.EXCEL_TEMPLATEFILE_导入模版名称后缀}.xlsx";
            var fileName = HttpUtility.UrlEncode($"导入模板(客户档案).xlsx", Encoding.GetEncoding("UTF-8"));
            var fileName = HttpUtility.UrlEncode($"导入模板(往来关系).xlsx", Encoding.GetEncoding("UTF-8"));
            return new FileStreamResult(new FileStream(_path, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
        }
@@ -404,78 +404,78 @@
        /// <param name="input"></param>
        /// <param name="isEdit"></param>
        /// <returns></returns>
        private async Task CheckExisit( BaseCustomer input,bool isEdit=false)
        private async Task CheckExisit(BaseCustomer input, bool isEdit = false)
        {
           bool isExist = false;
           if (!isEdit)//新增
           {
                   //数据是否存在重复
                   isExist = await _baseCustomerRep.AnyAsync(u =>
                                   u.CustChinaName.Equals(input.CustChinaName)
                   ,false);
          }
           else//编辑
          {
                 //当前编辑数据以外是否存在重复
                  isExist = await _baseCustomerRep.AnyAsync(u =>
                                    u.Id != input.Id
                                    &&u.CustChinaName.Equals(input.CustChinaName)
                    ,false);
               }
            bool isExist = false;
            if (!isEdit)//新增
            {
                //数据是否存在重复
                isExist = await _baseCustomerRep.AnyAsync(u =>
                                u.CustChinaName.Equals(input.CustChinaName)
                , false);
            }
            else//编辑
            {
                //当前编辑数据以外是否存在重复
                isExist = await _baseCustomerRep.AnyAsync(u =>
                                  u.Id != input.Id
                                  && u.CustChinaName.Equals(input.CustChinaName)
                  , false);
            }
            if (isExist) throw Oops.Oh(ErrorCode.E0001);
       }
        }
        /// <summary>
        /// 根据联合主键验证数据是否已存在-导入时验证
        /// </summary>
        /// <param name="inputs"></param>
        /// <returns></returns>
        private async Task CheckExisitForImport(List<BaseCustomer> inputs)
        {
        {
            //根据联合主键验证表格中中是否已存在相同数据  
                 if (inputs?.Count <= 0)
                 {
                     throw Oops.Oh($"导入数据不能为空");
                 }
                 //数据是否重复
                 var existExcelItem = inputs.GroupBy(g => new {
                                               g.CustChinaName
                                               })
                                               .Where(g => g.Count() > 1)
                                               .Select(s => new {
                                               s.Key.CustChinaName
                                               }).FirstOrDefault();
                 if (existExcelItem != null)
                 {
                   var item= existExcelItem.Adapt<BaseCustomer>();
                   throw Oops.Oh($"导入的表格中,客户中文名称[{item.CustChinaName}]已存在");
                 }
            if (inputs?.Count <= 0)
            {
                throw Oops.Oh($"导入数据不能为空");
            }
            //数据是否重复
            var existExcelItem = inputs.GroupBy(g => new {
                g.CustChinaName
            })
                                          .Where(g => g.Count() > 1)
                                          .Select(s => new {
                                              s.Key.CustChinaName
                                          }).FirstOrDefault();
            if (existExcelItem != null)
            {
                var item = existExcelItem.Adapt<BaseCustomer>();
                throw Oops.Oh($"导入的表格中,客户中文名称[{item.CustChinaName}]已存在");
            }
    //根据联合主键验证数据库中是否已存在相同数据
                 var existDBItem = await _baseCustomerRep.DetachedEntities.FirstOrDefaultAsync(w=>
                                                                         inputs.Select(s=>""
                                                                           +s.CustChinaName
                                                                        )
                                                                        .Contains(""
                                                                         +w.CustChinaName
                  ));
                  if (existDBItem != null)
                 {
                   var item= existDBItem.Adapt<BaseCustomer>();
                   throw Oops.Oh($"系统中,客户中文名称[{item.CustChinaName}]已存在");
                 }
            //根据联合主键验证数据库中是否已存在相同数据
            var existDBItem = await _baseCustomerRep.DetachedEntities.FirstOrDefaultAsync(w =>
                                                                    inputs.Select(s => ""
                                                                      + s.CustChinaName
                                                                   )
                                                                   .Contains(""
                                                                    + w.CustChinaName
             ));
            if (existDBItem != null)
            {
                var item = existDBItem.Adapt<BaseCustomer>();
                throw Oops.Oh($"系统中,客户中文名称[{item.CustChinaName}]已存在");
            }
        }
        #endregion