From f05685fec2d7cb9092fc3411a9eac14a813b4d45 Mon Sep 17 00:00:00 2001 From: jianghaiqing Date: Tue, 3 Jan 2023 16:10:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=93=81=E5=90=8D=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E3=80=81=E5=90=88=E7=BA=A6=E5=8F=B7=E5=A2=9E=E3=80=81?= =?UTF-8?q?=E5=88=A0=E3=80=81=E6=94=B9=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Myshipping.Application.xml | 306 +++++++++ .../Service/Para/Dto/ParaContractNoDto.cs | 6 +- .../Para/Dto/QueryParaContractNoDto.cs | 89 +++ .../Para/Dto/QueryParaGoodsCategoryDto.cs | 86 +++ .../Service/Para/Interface/IParaService.cs | 115 ++-- .../Service/Para/ParaService.cs | 604 +++++++++++++++--- 6 files changed, 1089 insertions(+), 117 deletions(-) create mode 100644 Myshipping.Application/Service/Para/Dto/QueryParaContractNoDto.cs create mode 100644 Myshipping.Application/Service/Para/Dto/QueryParaGoodsCategoryDto.cs diff --git a/Myshipping.Application/Myshipping.Application.xml b/Myshipping.Application/Myshipping.Application.xml index e8a8ca98..39f8c47c 100644 --- a/Myshipping.Application/Myshipping.Application.xml +++ b/Myshipping.Application/Myshipping.Application.xml @@ -9760,21 +9760,25 @@ 主键 + 358942162968645 合约号编号 + TAO21A00759 合约号名称 + 测试1 合约号备注 + 测试1 @@ -9923,6 +9927,163 @@ 修改者名称 + + + 约号台账查询 + + + + + 合约号编号 + + + + + 合约号名称 + + + + + 合约号备注 + + + + + 创建者名称 + + + + + + 修改者名称 + + + + + + 创建时间开始 + + 2022-01-01 + + + + 创建时间结束 + + 2023-07-01 + + + + 更新时间开始 + + + + + + 更新时间结束 + + + + + + 当前页码 + + 1 + + + + 页码容量 + + 20 + + + + 排序字段 + + ContractNo + + + + 排序方法,默认降序 + + true + + + + 品名分类参数台账查询 + + + + + 品名分类 + + 02 + + + + 品名分类名称 + + + + + + 创建者名称 + + + + + + 修改者名称 + + + + + + 创建时间开始 + + 2022-01-01 + + + + 创建时间结束 + + 2023-07-01 + + + + 更新时间开始 + + + + + + 更新时间结束 + + + + + + 当前页码 + + 1 + + + + 页码容量 + + 20 + + + + 排序字段 + + GoodsCategory + + + + 排序方法,默认降序 + + true + 品名参数台账查询 @@ -10044,6 +10205,7 @@ 检索品名参数 检索值 + 默认最大行数 返回回执 @@ -10053,6 +10215,78 @@ 品名参数台账查询请求 返回结果 + + + 保存品名分类参数 + + 品名分类参数 + 返回回执 + + + + 主键获取品名分类参数 + + 品名分类主键 + 返回回执 + + + + 检索品名分类参数 + + 检索值 + 默认最大行数 + 返回回执 + + + + 作废品名分类参数 + + 品名分类参数主键数组 + 返回回执 + + + + 品名分类参数台账查询 + + 品名分类参数台账查询请求 + 返回结果 + + + + 保存约号参数 + + 约号参数 + 返回回执 + + + + 主键获取约号参数 + + 约号主键 + 返回回执 + + + + 检索约号参数 + + 检索值 + 默认最大行数 + 返回回执 + + + + 作废约号参数 + + 约号参数主键数组 + 返回回执 + + + + 约号参数台账查询 + + 约号参数台账查询请求 + 返回结果 + 订舱业务参数 @@ -10094,6 +10328,78 @@ 品名参数台账查询请求 返回结果 + + + 保存品名分类参数 + + 品名分类参数 + 返回回执 + + + + 主键获取品名分类参数 + + 品名分类主键 + 返回回执 + + + + 检索品名分类参数 + + 检索值 + 默认最大行数 + 返回回执 + + + + 作废品名分类参数 + + 品名分类参数主键数组 + 返回回执 + + + + 品名分类参数台账查询 + + 品名分类参数台账查询请求 + 返回结果 + + + + 保存约号参数 + + 约号参数 + 返回回执 + + + + 主键获取约号参数 + + 约号主键 + 返回回执 + + + + 检索约号参数 + + 检索值 + 默认最大行数 + 返回回执 + + + + 作废约号参数 + + 约号参数主键数组 + 返回回执 + + + + 约号参数台账查询 + + 约号参数台账查询请求 + 返回结果 + 件数 diff --git a/Myshipping.Application/Service/Para/Dto/ParaContractNoDto.cs b/Myshipping.Application/Service/Para/Dto/ParaContractNoDto.cs index 802bf475..6ba7a685 100644 --- a/Myshipping.Application/Service/Para/Dto/ParaContractNoDto.cs +++ b/Myshipping.Application/Service/Para/Dto/ParaContractNoDto.cs @@ -11,21 +11,25 @@ namespace Myshipping.Application /// /// 主键 /// + /// 358942162968645 public string Id{ get; set; } /// /// 合约号编号 /// - public string ContractNo { get; set; } + /// TAO21A00759 + public string ContractNo { get; set; } /// /// 合约号名称 /// + /// 测试1 public string ContractName { get; set; } /// /// 合约号备注 /// + /// 测试1 public string ContractNote { get; set; } /// diff --git a/Myshipping.Application/Service/Para/Dto/QueryParaContractNoDto.cs b/Myshipping.Application/Service/Para/Dto/QueryParaContractNoDto.cs new file mode 100644 index 00000000..a24be897 --- /dev/null +++ b/Myshipping.Application/Service/Para/Dto/QueryParaContractNoDto.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Myshipping.Application +{ + /// + /// 约号台账查询 + /// + public class QueryParaContractNoDto + { + /// + /// 合约号编号 + /// + public string ContractNo { get; set; } + + /// + /// 合约号名称 + /// + public string ContractName { get; set; } + + /// + /// 合约号备注 + /// + public string ContractNote { get; set; } + + /// + /// 创建者名称 + /// + /// + public string CreateUserName { get; set; } + + /// + /// 修改者名称 + /// + /// + public string UpdateUserName { get; set; } + + /// + /// 创建时间开始 + /// + /// 2022-01-01 + public string CreateTimeBegin { get; set; } + + /// + /// 创建时间结束 + /// + /// 2023-07-01 + public string CreateTimeEnd { get; set; } + + /// + /// 更新时间开始 + /// + /// + public string UpdateTimeBegin { get; set; } + + /// + /// 更新时间结束 + /// + /// + public string UpdateTimeEnd { get; set; } + + /// + /// 当前页码 + /// + /// 1 + public int PageNo { get; set; } = 1; + + /// + /// 页码容量 + /// + /// 20 + public int PageSize { get; set; } = 20; + + /// + /// 排序字段 + /// + /// ContractNo + public string SortField { get; set; } + + /// + /// 排序方法,默认降序 + /// + /// true + public bool descSort { get; set; } = true; + } +} diff --git a/Myshipping.Application/Service/Para/Dto/QueryParaGoodsCategoryDto.cs b/Myshipping.Application/Service/Para/Dto/QueryParaGoodsCategoryDto.cs new file mode 100644 index 00000000..f6546803 --- /dev/null +++ b/Myshipping.Application/Service/Para/Dto/QueryParaGoodsCategoryDto.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Myshipping.Application +{ + /// + /// 品名分类参数台账查询 + /// + public class QueryParaGoodsCategoryDto + { + /// + /// 品名分类 + /// + /// 02 + public string GoodsCategory { get; set; } + + /// + /// 品名分类名称 + /// + /// + public string GoodsCategoryName { get; set; } + + /// + /// 创建者名称 + /// + /// + public string CreateUserName { get; set; } + + /// + /// 修改者名称 + /// + /// + public string UpdateUserName { get; set; } + + /// + /// 创建时间开始 + /// + /// 2022-01-01 + public string CreateTimeBegin { get; set; } + + /// + /// 创建时间结束 + /// + /// 2023-07-01 + public string CreateTimeEnd { get; set; } + + /// + /// 更新时间开始 + /// + /// + public string UpdateTimeBegin { get; set; } + + /// + /// 更新时间结束 + /// + /// + public string UpdateTimeEnd { get; set; } + + /// + /// 当前页码 + /// + /// 1 + public int PageNo { get; set; } = 1; + + /// + /// 页码容量 + /// + /// 20 + public int PageSize { get; set; } = 20; + + /// + /// 排序字段 + /// + /// GoodsCategory + public string SortField { get; set; } + + /// + /// 排序方法,默认降序 + /// + /// true + public bool descSort { get; set; } = true; + } +} diff --git a/Myshipping.Application/Service/Para/Interface/IParaService.cs b/Myshipping.Application/Service/Para/Interface/IParaService.cs index 7b4b9076..98357c8f 100644 --- a/Myshipping.Application/Service/Para/Interface/IParaService.cs +++ b/Myshipping.Application/Service/Para/Interface/IParaService.cs @@ -33,6 +33,7 @@ namespace Myshipping.Application /// 检索品名参数 /// /// 检索值 + /// 默认最大行数 /// 返回回执 Task> QueryParaGoodsInfo(string queryItem, int top = 10); @@ -43,47 +44,77 @@ namespace Myshipping.Application /// 返回结果 Task GetParaGoodsPageAsync(QueryParaGoodsDto QuerySearch); - ///// - ///// 保存品名分类参数 - ///// - ///// 品名分类参数 - ///// 返回回执 - //Task SaveParaGoodsCategoryInfo(ParaGoodsCategoryDto model); - - ///// - ///// 主键获取品名分类参数 - ///// - ///// 品名分类主键 - ///// 返回回执 - //Task GetParaGoodsCategoryInfo(long Id); - - ///// - ///// 检索品名分类参数 - ///// - ///// 检索值 - ///// 返回回执 - //Task QueryParaGoodsCategoryInfo(string queryItem); - - - ///// - ///// 保存约号参数 - ///// - ///// 约号参数 - ///// 返回回执 - //Task SaveParaContractNoInfo(ParaGoodsCategoryDto model); - - ///// - ///// 主键获取约号参数 - ///// - ///// 约号主键 - ///// 返回回执 - //Task GetParaContractNoInfo(long Id); - - ///// - ///// 检索约号参数 - ///// - ///// 检索值 - ///// 返回回执 - //Task QuerytParaContractNoInfo(string queryItem); + /// + /// 保存品名分类参数 + /// + /// 品名分类参数 + /// 返回回执 + Task SaveParaGoodsCategoryInfo(ParaGoodsCategoryDto model); + + /// + /// 主键获取品名分类参数 + /// + /// 品名分类主键 + /// 返回回执 + Task GetParaGoodsCategoryInfo(long Id); + + /// + /// 检索品名分类参数 + /// + /// 检索值 + /// 默认最大行数 + /// 返回回执 + Task> QueryParaGoodsCategoryInfo(string queryItem, int top = 10); + + /// + /// 作废品名分类参数 + /// + /// 品名分类参数主键数组 + /// 返回回执 + Task DeleteParaGoodsCategoryInfo(long[] Ids); + + /// + /// 品名分类参数台账查询 + /// + /// 品名分类参数台账查询请求 + /// 返回结果 + Task GetParaGoodsCategoryPageAsync(QueryParaGoodsCategoryDto QuerySearch); + + + /// + /// 保存约号参数 + /// + /// 约号参数 + /// 返回回执 + Task SaveParaContractNoInfo(ParaContractNoDto model); + + /// + /// 主键获取约号参数 + /// + /// 约号主键 + /// 返回回执 + Task GetParaContractNoInfo(long Id); + + /// + /// 检索约号参数 + /// + /// 检索值 + /// 默认最大行数 + /// 返回回执 + Task> QuerytParaContractNoInfo(string queryItem, int top = 10); + + /// + /// 作废约号参数 + /// + /// 约号参数主键数组 + /// 返回回执 + Task DeleteParaContractNoInfo(long[] Ids); + + /// + /// 约号参数台账查询 + /// + /// 约号参数台账查询请求 + /// 返回结果 + Task GetParaContractNoPageAsync(QueryParaContractNoDto QuerySearch); } } diff --git a/Myshipping.Application/Service/Para/ParaService.cs b/Myshipping.Application/Service/Para/ParaService.cs index c0b47131..5f6523ab 100644 --- a/Myshipping.Application/Service/Para/ParaService.cs +++ b/Myshipping.Application/Service/Para/ParaService.cs @@ -7,8 +7,11 @@ using Microsoft.Extensions.Logging; using Myshipping.Application.Entity; using Myshipping.Application.Helper; using Myshipping.Core; +using Myshipping.Core.Entity; using NPOI.OpenXmlFormats.Wordprocessing; using NPOI.SS.Formula.Functions; +using NPOI.XWPF.UserModel; +using Org.BouncyCastle.Crypto; using System; using System.Collections.Generic; using System.Linq; @@ -60,6 +63,17 @@ namespace Myshipping.Application if(sameList.Count > 0 && !string.IsNullOrWhiteSpace(model.Id) && sameList.Any(t=>t.Id != long.Parse(model.Id))) throw Oops.Oh($"商品编码【{model.GoodsCode}】已存在不能重复保存"); + //如果填写了品名分配需要确认根据库中数据一致 + if (!string.IsNullOrWhiteSpace(model.GoodsCategory)) + { + var categoryInfo = _paraGoodsCategoryInfoRepository.AsQueryable().First(t => t.GOODS_CATEGORY.Equals(model.GoodsCategory.Trim())); + + if (categoryInfo == null) + throw Oops.Oh($"品名分类代码【{model.GoodsCategory}】不存在,请确认品名分类"); + + if (!string.IsNullOrWhiteSpace(model.GoodsCategoryName) && !categoryInfo.GOODS_CATEGORY_NAME.Equals(model.GoodsCategoryName.Trim())) + throw Oops.Oh($"品名分类名称【{model.GoodsCategoryName}】错误,code={model.GoodsCategory}请确认品名分类"); + } if (!string.IsNullOrWhiteSpace(model.Id)) { @@ -281,8 +295,8 @@ namespace Myshipping.Application .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.GoodsDesp), t => t.GOODS_DESP.Contains(QuerySearch.GoodsDesp.Trim(), StringComparison.OrdinalIgnoreCase)) .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.GoodsNameEN), t => t.GOODS_NAME_EN.Contains(QuerySearch.GoodsNameEN.Trim(), StringComparison.OrdinalIgnoreCase)) .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.GoodsCategory), t => t.GOODS_CATEGORY.Equals(QuerySearch.GoodsCategory.Trim(), StringComparison.OrdinalIgnoreCase)) - .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.CreateUserName), t => t.GOODS_NAME_EN.Contains(QuerySearch.CreateUserName.Trim(), StringComparison.OrdinalIgnoreCase)) - .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.UpdateUserName), t => t.GOODS_NAME_EN.Contains(QuerySearch.UpdateUserName.Trim(), StringComparison.OrdinalIgnoreCase)) + .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.CreateUserName), t => t.CreatedUserName.Contains(QuerySearch.CreateUserName.Trim(), StringComparison.OrdinalIgnoreCase)) + .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.UpdateUserName), t => t.UpdatedUserName.Contains(QuerySearch.UpdateUserName.Trim(), StringComparison.OrdinalIgnoreCase)) .OrderBy(entityOrderCol + (QuerySearch.descSort ? " asc " : " desc ")) .ToPagedListAsync(QuerySearch.PageNo, QuerySearch.PageSize); return new @@ -295,77 +309,519 @@ namespace Myshipping.Application }; } - ///// - ///// 保存品名分类参数 - ///// - ///// 品名分类参数 - ///// 返回回执 - //public async Task SaveParaGoodsCategoryInfo(ParaGoodsCategoryDto model) - //{ - // CommonWebApiResult result = new CommonWebApiResult(); - - // return result; - //} - - ///// - ///// 主键获取品名分类参数 - ///// - ///// 品名分类主键 - ///// 返回回执 - //public async Task GetParaGoodsCategoryInfo(long Id) - //{ - // CommonWebApiResult result = new CommonWebApiResult(); - - // return result; - //} - - ///// - ///// 检索品名分类参数 - ///// - ///// 检索值 - ///// 返回回执 - //public async Task QueryParaGoodsCategoryInfo(string queryItem) - //{ - // CommonWebApiResult result = new CommonWebApiResult(); - - // return result; - //} - - - ///// - ///// 保存约号参数 - ///// - ///// 约号参数 - ///// 返回回执 - //public async Task SaveParaContractNoInfo(ParaGoodsCategoryDto model) - //{ - // CommonWebApiResult result = new CommonWebApiResult(); - - // return result; - //} - - ///// - ///// 主键获取约号参数 - ///// - ///// 约号主键 - ///// 返回回执 - //public async Task GetParaContractNoInfo(long Id) - //{ - // CommonWebApiResult result = new CommonWebApiResult(); - - // return result; - //} - - ///// - ///// 检索约号参数 - ///// - ///// 检索值 - ///// 返回回执 - //public async Task QuerytParaContractNoInfo(string queryItem) - //{ - // CommonWebApiResult result = new CommonWebApiResult(); - - // return result; - //} + /// + /// 保存品名分类参数 + /// + /// 品名分类参数 + /// 返回回执 + public async Task SaveParaGoodsCategoryInfo(ParaGoodsCategoryDto model) + { + ParaGoodsCategoryInfo info = null; + + try + { + //判断代码不能重复 + var sameList = _paraGoodsCategoryInfoRepository.AsQueryable() + .Where(t => t.GOODS_CATEGORY.Equals(model.GoodsCategory, StringComparison.OrdinalIgnoreCase)).ToList(); + + if (sameList.Count > 0 && !string.IsNullOrWhiteSpace(model.Id) && sameList.Any(t => t.Id != long.Parse(model.Id))) + throw Oops.Oh($"商品分类代码【{model.GoodsCategory}】已存在不能重复保存"); + + if (!string.IsNullOrWhiteSpace(model.Id)) + { + info = await _paraGoodsCategoryInfoRepository.AsQueryable().FirstAsync(t => t.Id == long.Parse(model.Id)); + + //如果填写了品名分配需要确认根据库中数据一致 + if (!info.GOODS_CATEGORY.Equals(model.GoodsCategory, StringComparison.OrdinalIgnoreCase)) + { + var existsList = _paraGoodsCategoryInfoRepository.AsQueryable() + .LeftJoin(_paraGoodsInfoRepository.AsQueryable(), (cate, goods) => cate.GOODS_CATEGORY == goods.GOODS_CATEGORY) + .Where(cate => cate.Id == info.Id) + .Select((cate, goods) => new { Cate = cate, Goods = goods }).ToList(); + + if (existsList.Any(t => t.Goods != null)) + throw Oops.Oh($"原分类代码{info.GOODS_CATEGORY}已有对应品名参数,不能修改"); + + } + + info.GOODS_CATEGORY = model.GoodsCategory; + info.GOODS_CATEGORY_NAME = model.GoodsCategoryName; + + await _paraGoodsCategoryInfoRepository.AsUpdateable(info).IgnoreColumns(it => new + { + it.Id, + it.TenantId, + it.CreatedTime, + it.CreatedUserId, + it.CreatedUserName + }).ExecuteCommandAsync(); + } + else + { + info = model.Adapt(); + + await _paraGoodsCategoryInfoRepository.InsertAsync(info); + } + } + catch (Exception ex) + { + throw Oops.Bah($"保存品名分类参数异常,{ex.Message}"); + } + + return info.Id; + } + + /// + /// 主键获取品名分类参数 + /// + /// 品名分类主键 + /// 返回回执 + public async Task GetParaGoodsCategoryInfo(long Id) + { + ParaGoodsCategoryDto model = null; + + try + { + ParaGoodsCategoryInfo info = _paraGoodsCategoryInfoRepository.AsQueryable().First(t => t.Id == Id); + + if (info == null) + throw Oops.Oh($"获取品名分类参数失败"); + + + model = info.Adapt(); + + } + catch (Exception ex) + { + throw Oops.Bah($"获取品名分类参数异常,{ex.Message}"); + } + + return model; + } + + /// + /// 检索品名分类参数 + /// + /// 检索值 + /// 默认最大行数 + /// 返回回执 + [HttpGet("/Para/QueryParaGoodsCategoryInfo")] + public async Task> QueryParaGoodsCategoryInfo([FromQuery] string queryItem, [FromQuery] int top = 10) + { + List list = new List(); + + try + { + var query = _paraGoodsCategoryInfoRepository.AsQueryable(); + + if (!string.IsNullOrWhiteSpace(queryItem)) + { + query = query.Where(t => + t.GOODS_CATEGORY.Contains(queryItem.Trim(), StringComparison.OrdinalIgnoreCase) || + t.GOODS_CATEGORY_NAME.Contains(queryItem.Trim(), StringComparison.OrdinalIgnoreCase) + ); + } + + query = query.OrderBy("GOODS_CATEGORY asc"); + + var currList = await query.Take(top).ToListAsync(); + + if (currList.Count > 0) + list = currList.Select(t => t.Adapt()).ToList(); + + } + catch (Exception ex) + { + throw Oops.Bah($"保存品名参数异常,{ex.Message}"); + } + + return list; + } + + /// + /// 作废品名分类参数 + /// + /// 品名分类参数主键数组 + /// 返回回执 + [HttpPost("/Para/DeleteParaGoodsCategoryInfo")] + public async Task DeleteParaGoodsCategoryInfo(long[] Ids) + { + try + { + //如果没有给主键直接抛异常 + if (Ids.Length == 0) + throw Oops.Oh("没有提供需要作废的主键信息"); + + var list = _paraGoodsCategoryInfoRepository.AsQueryable().Where(t => Ids.Contains(t.Id)).ToList(); + + if (list.Count != Ids.Length) + { + var noRecord = string.Join(",", Ids.GroupJoin(list, l => l, r => r.Id, (l, r) => { + var currList = r.ToList(); + + if (r.Count() > 0) + return string.Empty; + + return l.ToString(); + }).Where(t => !string.IsNullOrWhiteSpace(t)).ToArray()); + + throw Oops.Oh($"以下主键信息 {noRecord} 检索失败或者已作废过"); + } + + //这里需要判断当前的品名分类是否已经对应到品名上,如果已有对应则不能直接作废 + var existsList = _paraGoodsCategoryInfoRepository.AsQueryable() + .LeftJoin(_paraGoodsInfoRepository.AsQueryable(),(cate, goods) => cate.GOODS_CATEGORY == goods.GOODS_CATEGORY) + .Where(cate => Ids.Contains(cate.Id)) + .Select((cate, goods) => new { Cate = cate, Goods = goods }).ToList(); + + if(existsList.Any(t=>t.Goods != null)) + throw Oops.Oh($"以下分类代码已指定品名参数不能直接删除,{string.Join(",",existsList.Select(t=>t.Cate.GOODS_CATEGORY).Distinct().ToArray())}"); + + list.ForEach(async entity => + { + entity.IsDeleted = true; + entity.UpdatedTime = DateTime.Now; + entity.UpdatedUserId = UserManager.UserId; + entity.UpdatedUserName = UserManager.Name; + + await _paraGoodsCategoryInfoRepository.AsUpdateable(entity).IgnoreColumns(it => new + { + it.Id, + it.TenantId, + it.CreatedTime, + it.CreatedUserId, + it.CreatedUserName + }).ExecuteCommandAsync(); + }); + + } + catch (Exception ex) + { + throw Oops.Bah($"作废品名参数异常,{ex.Message}"); + } + + return "作废成功"; + } + + #region 品名分类参数台账查询 + /// + /// 品名分类参数台账查询 + /// + /// 品名分类参数台账查询请求 + /// 返回结果 + public async Task GetParaGoodsCategoryPageAsync(QueryParaGoodsCategoryDto QuerySearch) + { + DateTime createBegin = DateTime.MinValue; + DateTime createEnd = DateTime.MinValue; + + DateTime updateBegin = DateTime.MinValue; + DateTime updateEnd = DateTime.MinValue; + + if (!string.IsNullOrWhiteSpace(QuerySearch.CreateTimeBegin)) + { + if (!DateTime.TryParse(QuerySearch.CreateTimeBegin, out createBegin)) + throw Oops.Oh($"创建开始日期格式错误,{QuerySearch.CreateTimeBegin}"); + } + + if (!string.IsNullOrWhiteSpace(QuerySearch.CreateTimeEnd)) + { + if (!DateTime.TryParse(QuerySearch.CreateTimeEnd, out createEnd)) + throw Oops.Oh($"创建结束日期格式错误,{QuerySearch.CreateTimeEnd}"); + + createEnd = createEnd.AddDays(1); + } + + if (!string.IsNullOrWhiteSpace(QuerySearch.UpdateTimeBegin)) + { + if (!DateTime.TryParse(QuerySearch.UpdateTimeBegin, out updateBegin)) + throw Oops.Oh($"更新起始日期格式错误,{QuerySearch.UpdateTimeBegin}"); + } + + if (!string.IsNullOrWhiteSpace(QuerySearch.UpdateTimeEnd)) + { + if (!DateTime.TryParse(QuerySearch.UpdateTimeEnd, out updateEnd)) + throw Oops.Oh($"更新结束日期格式错误,{QuerySearch.UpdateTimeEnd}"); + + updateEnd = updateEnd.AddDays(1); + } + + string entityOrderCol = "CreatedTime"; + + //这里因为返回给前端的台账数据是DTO,所以这里排序时候需要转换成Entity对应的字段 + if (!string.IsNullOrWhiteSpace(QuerySearch.SortField)) + entityOrderCol = MapsterExtHelper.GetAdaptProperty(QuerySearch.SortField); + + var entities = await _paraGoodsCategoryInfoRepository.AsQueryable().Filter(null, true) + .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.GoodsCategory), t => t.GOODS_CATEGORY.Contains(QuerySearch.GoodsCategory.Trim(), StringComparison.OrdinalIgnoreCase)) + .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.GoodsCategoryName), t => t.GOODS_CATEGORY_NAME.Contains(QuerySearch.GoodsCategoryName.Trim(), StringComparison.OrdinalIgnoreCase)) + .WhereIF(createBegin != DateTime.MinValue, t => t.CreatedTime.HasValue && t.CreatedTime.Value >= createBegin) + .WhereIF(createEnd != DateTime.MinValue, t => t.CreatedTime.HasValue && t.CreatedTime.Value < createEnd) + .WhereIF(updateBegin != DateTime.MinValue, t => t.UpdatedTime.HasValue && t.UpdatedTime.Value >= updateBegin) + .WhereIF(updateEnd != DateTime.MinValue, t => t.UpdatedTime.HasValue && t.UpdatedTime.Value < updateEnd) + .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.CreateUserName), t => t.CreatedUserName.Contains(QuerySearch.CreateUserName.Trim(), StringComparison.OrdinalIgnoreCase)) + .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.UpdateUserName), t => t.UpdatedUserName.Contains(QuerySearch.UpdateUserName.Trim(), StringComparison.OrdinalIgnoreCase)) + .OrderBy(entityOrderCol + (QuerySearch.descSort ? " asc " : " desc ")) + .ToPagedListAsync(QuerySearch.PageNo, QuerySearch.PageSize); + return new + { + PageNo = entities.PageIndex, + PageSize = entities.PageSize, + TotalPage = entities.TotalPages, + TotalRows = entities.TotalCount, + Rows = entities.Items.Select(t => t.Adapt()).ToList() + }; + } + #endregion + + #region 保存约号参数 + /// + /// 保存约号参数 + /// + /// 约号参数 + /// 返回回执 + public async Task SaveParaContractNoInfo(ParaContractNoDto model) + { + ParaContractNoInfo info = null; + + try + { + //判断代码不能重复 + var sameList = _paraContractNoInfoRepository.AsQueryable() + .Where(t => t.CONTRACT_NO.Equals(model.ContractNo, StringComparison.OrdinalIgnoreCase)).ToList(); + + if (sameList.Count > 0 && !string.IsNullOrWhiteSpace(model.Id) && sameList.Any(t => t.Id != long.Parse(model.Id))) + throw Oops.Oh($"合约号编号【{model.ContractNo}】已存在不能重复保存"); + + if (!string.IsNullOrWhiteSpace(model.Id)) + { + info = await _paraContractNoInfoRepository.AsQueryable().FirstAsync(t => t.Id == long.Parse(model.Id)); + + info.CONTRACT_NO = model.ContractNo; + info.CONTRACT_NAME = model.ContractName; + info.CONTRACT_NAME = model.ContractName; + + await _paraContractNoInfoRepository.AsUpdateable(info).IgnoreColumns(it => new + { + it.Id, + it.TenantId, + it.CreatedTime, + it.CreatedUserId, + it.CreatedUserName + }).ExecuteCommandAsync(); + } + else + { + info = model.Adapt(); + + await _paraContractNoInfoRepository.InsertAsync(info); + } + } + catch (Exception ex) + { + throw Oops.Bah($"保存约号参数异常,{ex.Message}"); + } + + return info.Id; + } + #endregion + + #region 主键获取约号参数 + /// + /// 主键获取约号参数 + /// + /// 约号主键 + /// 返回回执 + public async Task GetParaContractNoInfo(long Id) + { + ParaContractNoDto model = null; + + try + { + ParaContractNoInfo info = _paraContractNoInfoRepository.AsQueryable().First(t => t.Id == Id); + + if (info == null) + throw Oops.Oh($"获取约号参数失败"); + + + model = info.Adapt(); + + } + catch (Exception ex) + { + throw Oops.Bah($"获取约号参数异常,{ex.Message}"); + } + + return model; + } + #endregion + + #region 检索约号参数 + /// + /// 检索约号参数 + /// + /// 检索值 + /// 默认最大行数 + /// 返回回执 + public async Task> QuerytParaContractNoInfo([FromQuery] string queryItem, [FromQuery] int top = 10) + { + List list = new List(); + + try + { + var query = _paraContractNoInfoRepository.AsQueryable(); + + if (!string.IsNullOrWhiteSpace(queryItem)) + { + query = query.Where(t => + t.CONTRACT_NO.Contains(queryItem.Trim(), StringComparison.OrdinalIgnoreCase) || + t.CONTRACT_NAME.Contains(queryItem.Trim(), StringComparison.OrdinalIgnoreCase) || + t.CONTRACT_NOTE.Contains(queryItem.Trim(), StringComparison.OrdinalIgnoreCase) + ); + } + + query = query.OrderBy("CONTRACT_NO asc"); + + var currList = await query.Take(top).ToListAsync(); + + if (currList.Count > 0) + list = currList.Select(t => t.Adapt()).ToList(); + + } + catch (Exception ex) + { + throw Oops.Bah($"检索约号参数异常,{ex.Message}"); + } + + return list; + } + #endregion + + #region 作废约号参数 + /// + /// 作废约号参数 + /// + /// 约号参数主键数组 + /// 返回回执 + public async Task DeleteParaContractNoInfo(long[] Ids) + { + try + { + //如果没有给主键直接抛异常 + if (Ids.Length == 0) + throw Oops.Oh("没有提供需要作废的主键信息"); + + var list = _paraContractNoInfoRepository.AsQueryable().Where(t => Ids.Contains(t.Id)).ToList(); + + if (list.Count != Ids.Length) + { + var noRecord = string.Join(",", Ids.GroupJoin(list, l => l, r => r.Id, (l, r) => { + var currList = r.ToList(); + + if (r.Count() > 0) + return string.Empty; + + return l.ToString(); + }).Where(t => !string.IsNullOrWhiteSpace(t)).ToArray()); + + throw Oops.Oh($"以下主键信息 {noRecord} 检索失败或者已作废过"); + } + + list.ForEach(async entity => + { + entity.IsDeleted = true; + entity.UpdatedTime = DateTime.Now; + entity.UpdatedUserId = UserManager.UserId; + entity.UpdatedUserName = UserManager.Name; + + await _paraContractNoInfoRepository.AsUpdateable(entity).IgnoreColumns(it => new + { + it.Id, + it.TenantId, + it.CreatedTime, + it.CreatedUserId, + it.CreatedUserName + }).ExecuteCommandAsync(); + }); + + } + catch (Exception ex) + { + throw Oops.Bah($"作废约号参数异常,{ex.Message}"); + } + + return "作废成功"; + } + #endregion + + #region 约号参数台账查询 + /// + /// 约号参数台账查询 + /// + /// 约号参数台账查询请求 + /// 返回结果 + public async Task GetParaContractNoPageAsync(QueryParaContractNoDto QuerySearch) + { + DateTime createBegin = DateTime.MinValue; + DateTime createEnd = DateTime.MinValue; + + DateTime updateBegin = DateTime.MinValue; + DateTime updateEnd = DateTime.MinValue; + + if (!string.IsNullOrWhiteSpace(QuerySearch.CreateTimeBegin)) + { + if (!DateTime.TryParse(QuerySearch.CreateTimeBegin, out createBegin)) + throw Oops.Oh($"创建开始日期格式错误,{QuerySearch.CreateTimeBegin}"); + } + + if (!string.IsNullOrWhiteSpace(QuerySearch.CreateTimeEnd)) + { + if (!DateTime.TryParse(QuerySearch.CreateTimeEnd, out createEnd)) + throw Oops.Oh($"创建结束日期格式错误,{QuerySearch.CreateTimeEnd}"); + + createEnd = createEnd.AddDays(1); + } + + if (!string.IsNullOrWhiteSpace(QuerySearch.UpdateTimeBegin)) + { + if (!DateTime.TryParse(QuerySearch.UpdateTimeBegin, out updateBegin)) + throw Oops.Oh($"更新起始日期格式错误,{QuerySearch.UpdateTimeBegin}"); + } + + if (!string.IsNullOrWhiteSpace(QuerySearch.UpdateTimeEnd)) + { + if (!DateTime.TryParse(QuerySearch.UpdateTimeEnd, out updateEnd)) + throw Oops.Oh($"更新结束日期格式错误,{QuerySearch.UpdateTimeEnd}"); + + updateEnd = updateEnd.AddDays(1); + } + + string entityOrderCol = "CreatedTime"; + + //这里因为返回给前端的台账数据是DTO,所以这里排序时候需要转换成Entity对应的字段 + if (!string.IsNullOrWhiteSpace(QuerySearch.SortField)) + entityOrderCol = MapsterExtHelper.GetAdaptProperty(QuerySearch.SortField); + + var entities = await _paraContractNoInfoRepository.AsQueryable().Filter(null, true) + .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.ContractNo), t => t.CONTRACT_NO.Contains(QuerySearch.ContractNo.Trim(), StringComparison.OrdinalIgnoreCase)) + .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.ContractName), t => t.CONTRACT_NAME.Contains(QuerySearch.ContractName.Trim(), StringComparison.OrdinalIgnoreCase)) + .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.ContractNote), t => t.CONTRACT_NOTE.Contains(QuerySearch.ContractNote.Trim(), StringComparison.OrdinalIgnoreCase)) + .WhereIF(createBegin != DateTime.MinValue, t => t.CreatedTime.HasValue && t.CreatedTime.Value >= createBegin) + .WhereIF(createEnd != DateTime.MinValue, t => t.CreatedTime.HasValue && t.CreatedTime.Value < createEnd) + .WhereIF(updateBegin != DateTime.MinValue, t => t.UpdatedTime.HasValue && t.UpdatedTime.Value >= updateBegin) + .WhereIF(updateEnd != DateTime.MinValue, t => t.UpdatedTime.HasValue && t.UpdatedTime.Value < updateEnd) + .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.CreateUserName), t => t.CreatedUserName.Contains(QuerySearch.CreateUserName.Trim(), StringComparison.OrdinalIgnoreCase)) + .WhereIF(!string.IsNullOrWhiteSpace(QuerySearch.UpdateUserName), t => t.UpdatedUserName.Contains(QuerySearch.UpdateUserName.Trim(), StringComparison.OrdinalIgnoreCase)) + .OrderBy(entityOrderCol + (QuerySearch.descSort ? " asc " : " desc ")) + .ToPagedListAsync(QuerySearch.PageNo, QuerySearch.PageSize); + return new + { + PageNo = entities.PageIndex, + PageSize = entities.PageSize, + TotalPage = entities.TotalPages, + TotalRows = entities.TotalCount, + Rows = entities.Items.Select(t => t.Adapt()).ToList() + }; + } + #endregion } }