| | |
| | | namespace Admin.NET.Application |
| | | { |
| | | /// <summary> |
| | | /// 客户档案服务 |
| | | /// 往来关系服务 |
| | | /// </summary> |
| | | [ApiDescriptionSettings("WmsBase", Name = "BaseCustomer", Order = 100)] |
| | | [Route("api")] |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 分页查询客户档案 |
| | | /// 分页查询往来关系 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | |
| | | { |
| | | var baseCustomers = await _baseCustomerRep.DetachedEntities |
| | | .Where(!string.IsNullOrEmpty(input.CustCode), u => u.CustCode == input.CustCode) |
| | | .Where(!string.IsNullOrEmpty(input.CustChinaName), u => EF.Functions.Like(u.CustChinaName, $"%{input.CustChinaName.Trim()}%")) |
| | | .Where(!string.IsNullOrEmpty(input.CustChinaName), u => u.CustChinaName == input.CustChinaName) |
| | | .Where(!string.IsNullOrEmpty(input.CustEnglishName), u => u.CustEnglishName == input.CustEnglishName) |
| | | .Where(!string.IsNullOrEmpty(input.MnemonicCode), u => u.MnemonicCode == input.MnemonicCode) |
| | | .Where(input.CustType != null, u => u.CustType == input.CustType) |
| | | .Where(!string.IsNullOrEmpty(input.CustTypeName), u => u.CustTypeName == input.CustTypeName) |
| | | .Where(!string.IsNullOrEmpty(input.LinkMan), u => u.LinkMan == input.LinkMan) |
| | | .Where(!string.IsNullOrEmpty(input.Phone), u => u.Phone == input.Phone) |
| | | .Where(!string.IsNullOrEmpty(input.Email), u => u.Email == input.Email) |
| | |
| | | } |
| | | |
| | | /// <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) |
| | | { |
| | |
| | | var pCustEnglishName = input.CustEnglishName?.Trim() ?? ""; |
| | | var pMnemonicCode = input.MnemonicCode?.Trim() ?? ""; |
| | | var pCustType = input.CustType; |
| | | var pCustTypeName = input.CustTypeName?.Trim() ?? ""; |
| | | var pLinkMan = input.LinkMan?.Trim() ?? ""; |
| | | var pPhone = input.Phone?.Trim() ?? ""; |
| | | var pEmail = input.Email?.Trim() ?? ""; |
| | |
| | | var pUpdatedUserName = input.UpdatedUserName?.Trim() ?? ""; |
| | | var baseCustomers = await _baseCustomerRep.DetachedEntities |
| | | .Where(!string.IsNullOrEmpty(pCustCode), u => u.CustCode == pCustCode) |
| | | .Where(!string.IsNullOrEmpty(pCustChinaName), u => EF.Functions.Like(u.CustChinaName, $"%{pCustChinaName}%")) |
| | | .Where(!string.IsNullOrEmpty(pCustChinaName), u => u.CustChinaName == pCustChinaName) |
| | | .Where(!string.IsNullOrEmpty(pCustEnglishName), u => u.CustEnglishName == pCustEnglishName) |
| | | .Where(!string.IsNullOrEmpty(pMnemonicCode), u => u.MnemonicCode == pMnemonicCode) |
| | | .Where(pCustType != null, u => u.CustType == pCustType) |
| | | .Where(!string.IsNullOrEmpty(pCustTypeName), u => u.CustTypeName == pCustTypeName) |
| | | .Where(!string.IsNullOrEmpty(pLinkMan), u => u.LinkMan == pLinkMan) |
| | | .Where(!string.IsNullOrEmpty(pPhone), u => u.Phone == pPhone) |
| | | .Where(!string.IsNullOrEmpty(pEmail), u => u.Email == pEmail) |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取客户档案 |
| | | /// 获取往来关系 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取客户档案列表 |
| | | /// 获取往来关系列表 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | |
| | | #region 增、删、改 |
| | | |
| | | /// <summary> |
| | | /// 增加客户档案 |
| | | /// 增加往来关系 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | |
| | | public async Task Add(AddBaseCustomerInput input) |
| | | { |
| | | var baseCustomer = input.Adapt<BaseCustomer>(); |
| | | //验证 |
| | | await CheckExisit(baseCustomer); |
| | | baseCustomer.CustCode = await SerialUtil.GetSerial(EnumSerialType.客户编号); |
| | | baseCustomer.CustTypeName = baseCustomer.CustType.ToString(); |
| | | |
| | | //验证 |
| | | await CheckExisit(baseCustomer); |
| | | baseCustomer.CreatedUserId = baseCustomer.UpdatedUserId = SysHelper.GetUserId(); |
| | | baseCustomer.CreatedUserName = baseCustomer.UpdatedUserName = SysHelper.GetUserName(); |
| | | baseCustomer.CreatedTime = baseCustomer.UpdatedTime = SysHelper.GetNowTime(); |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除客户档案 |
| | | /// 删除往来关系 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 更新客户档案 |
| | | /// 更新往来关系 |
| | | /// </summary> |
| | | /// <param name="input"></param> |
| | | /// <returns></returns> |
| | |
| | | #region 导入 |
| | | |
| | | /// <summary> |
| | | /// Excel模板导入客户档案功能 |
| | | /// Excel模板导入往来关系功能 |
| | | /// </summary> |
| | | /// <param name="file">Excel模板文件</param> |
| | | /// <returns>导入的记录数</returns> |
| | |
| | | { |
| | | index++; |
| | | |
| | | //导入模版定制化代码(替换模版使用) |
| | | |
| | | //导入模版定制化代码(替换模版使用) |
| | | var _custCode = await SerialUtil.GetSerial(EnumSerialType.客户编号); |
| | | var addItem = new BaseCustomer() |
| | | { |
| | | CreatedTime = SysHelper.GetNowTime(), |
| | | CustCode = _custCode,// |
| | | CreatedUserId = SysHelper.GetUserId(), |
| | | CreatedUserName = SysHelper.GetUserName(), |
| | | UpdatedTime = SysHelper.GetNowTime(), |
| | | UpdatedUserId = SysHelper.GetUserId(), |
| | | UpdatedUserName = SysHelper.GetUserName() |
| | | |
| | | }; |
| | | #region 定义变量 |
| | | var _CustCode = "";//客户编号 |
| | | var _CustChinaName = "";//客户中文名称 |
| | | var _CustEnglishName = "";//客户英文名称 |
| | | var _MnemonicCode = "";//助记码 |
| | | var _CustType = "";//类型 |
| | | var _CustTypeName = "";//类型名称 |
| | | var _LinkMan = "";//联系人 |
| | | var _Phone = "";//电话 |
| | | var _Email = "";//电子邮件 |
| | |
| | | var _City = "";//城市 |
| | | var _Address = "";//地址 |
| | | var _IsDisabled = "";//是否禁用 |
| | | var _Id = "";//Id主键 |
| | | #endregion |
| | | |
| | | |
| | | #region 取值 |
| | | _CustCode = row["客户编号"]?.ToString() ; |
| | | _CustChinaName = row["客户中文名称"]?.ToString() ; |
| | | _CustEnglishName = row["客户英文名称"]?.ToString() ; |
| | | _MnemonicCode = row["助记码"]?.ToString() ; |
| | | _CustType = row["类型"]?.ToString() ; |
| | | _CustTypeName = row["类型名称"]?.ToString() ; |
| | | _LinkMan = row["联系人"]?.ToString() ; |
| | | _Phone = row["电话"]?.ToString() ; |
| | | _Email = row["电子邮件"]?.ToString() ; |
| | |
| | | _Province = row["省份"]?.ToString() ; |
| | | _City = row["城市"]?.ToString() ; |
| | | _Address = row["地址"]?.ToString() ; |
| | | _IsDisabled = row["是否禁用"]?.ToString() ; |
| | | _Id = row["Id主键"]?.ToString() ; |
| | | |
| | | #endregion |
| | | |
| | | |
| | | #region 验证 |
| | | |
| | | if (string.IsNullOrEmpty(_CustCode)) |
| | | { |
| | | throw Oops.Oh($"第{index}行[客户编号]{_CustCode}不能为空!"); |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_CustCode)) |
| | | { |
| | | addItem.CustCode = (string)_CustCode; |
| | | } |
| | | |
| | | if (string.IsNullOrEmpty(_CustChinaName)) |
| | | { |
| | |
| | | |
| | | if(!string.IsNullOrEmpty(_CustType)) |
| | | { |
| | | if (!int.TryParse(_CustType, out int outCustType)&&!string.IsNullOrEmpty(_CustType)) |
| | | Admin.NET.Core.BaseCustomerTypeEnum enumCustType = default(Admin.NET.Core.BaseCustomerTypeEnum); |
| | | |
| | | if(!Enum.TryParse<Admin.NET.Core.BaseCustomerTypeEnum>(_CustType, out enumCustType)&&!string.IsNullOrEmpty(_CustType)) |
| | | { |
| | | throw Oops.Oh($"第{index}行[类型]{_CustType}值不正确!"); |
| | | } |
| | | if (outCustType <= 0&&!string.IsNullOrEmpty(_CustType)) |
| | | { |
| | | throw Oops.Oh($"第{index}行[类型]{_CustType}值不能小于等于0!"); |
| | | throw Oops.Oh($"第{index}行[类型]{_CustType}值不正确!"); |
| | | } |
| | | else |
| | | { |
| | | addItem.CustType = outCustType; |
| | | addItem.CustType = enumCustType; |
| | | addItem.CustTypeName = addItem.CustType.ToString(); |
| | | } |
| | | |
| | | } |
| | | if(!string.IsNullOrEmpty(_CustTypeName)) |
| | | { |
| | | addItem.CustTypeName = (string)_CustTypeName; |
| | | } |
| | | if(!string.IsNullOrEmpty(_LinkMan)) |
| | | { |
| | |
| | | bool outIsDisabled = _IsDisabled.Equals("是") ? true : false; |
| | | addItem.IsDisabled = outIsDisabled; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if(!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | if (!long.TryParse(_Id, out long outId)&&!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | throw Oops.Oh($"第{index}行[Id主键]{_Id}值不正确!"); |
| | | } |
| | | if (outId <= 0&&!string.IsNullOrEmpty(_Id)) |
| | | { |
| | | throw Oops.Oh($"第{index}行[Id主键]{_Id}值不能小于等于0!"); |
| | | } |
| | | else |
| | | { |
| | | addItem.Id = outId; |
| | | } |
| | | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 根据版本下载客户档案的Excel导入模板 |
| | | /// 根据版本下载往来关系的Excel导入模板 |
| | | /// </summary> |
| | | /// <param name="version">模板版本</param> |
| | | /// <returns>下载的模板文件</returns> |
| | |
| | | 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 }; |
| | | } |
| | | |
| | |
| | | /// <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.CustCode.Equals(input.CustCode) |
| | | ,false); |
| | | } |
| | | else//编辑 |
| | | { |
| | | |
| | | |
| | | |
| | | //当前编辑数据以外是否存在重复 |
| | | isExist = await _baseCustomerRep.AnyAsync(u => |
| | | u.Id != input.Id |
| | | &&u.CustCode.Equals(input.CustCode) |
| | | ,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.CustCode |
| | | }) |
| | | .Where(g => g.Count() > 1) |
| | | .Select(s => new { |
| | | s.Key.CustCode |
| | | }).FirstOrDefault(); |
| | | if (existExcelItem != null) |
| | | { |
| | | var baseCustomer = existExcelItem.Adapt<BaseCustomer>(); |
| | | var item= existExcelItem.Adapt<BaseCustomer>(); |
| | | throw Oops.Oh($"导入的表格中,客户编号[{item.CustCode}]已存在"); |
| | | } |
| | | |
| | | 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.CustCode |
| | | ) |
| | | .Contains("" |
| | | +w.CustCode |
| | | )); |
| | | if (existDBItem != null) |
| | | { |
| | | var baseCustomer = existExcelItem.Adapt<BaseCustomer>(); |
| | | var item= existExcelItem.Adapt<BaseCustomer>(); |
| | | throw Oops.Oh($"系统中,客户编号[{item.CustCode}]已存在"); |
| | | } |
| | | |
| | | //根据联合主键验证数据库中是否已存在相同数据 |
| | | 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 |