From 75144dc8e4e665a743d9e9659f2365b7c4c3b414 Mon Sep 17 00:00:00 2001 From: Abbh1 <86962549+Abbh1@users.noreply.github.com> Date: Fri, 24 Nov 2023 10:39:39 +0800 Subject: [PATCH] =?UTF-8?q?fixed=20=E4=BF=AE=E6=94=B9=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E7=9A=84=E8=BF=87=E6=9C=9F=E6=97=B6=E9=97=B4=E4=B8=BA1?= =?UTF-8?q?=E4=B8=AA=E6=9C=88=EF=BC=8C=E5=88=9D=E5=A7=8B=E5=8C=96=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TableDatas/TableDataApiDto.cs | 39 ++++ .../TableDatas/TableDataApiVo.cs | 111 +++++++++++ .../TableDatas/TableDataServiceApi.cs | 179 ++++++++++++++++++ .../TableDatas/ITableDataServiceApi.cs | 36 ++++ .../TableDatas/TableDataApiController.cs | 79 ++++++++ ARW.WebApi/appsettings.json | 2 +- 6 files changed, 445 insertions(+), 1 deletion(-) create mode 100644 ARW.Model/Dto/Api/TableDataManage/TableDatas/TableDataApiDto.cs create mode 100644 ARW.Model/Vo/Api/TableDataManage/TableDatas/TableDataApiVo.cs create mode 100644 ARW.Service/Api/BusinessService/TableDataManage/TableDatas/TableDataServiceApi.cs create mode 100644 ARW.Service/Api/IBusinessService/TableDataManage/TableDatas/ITableDataServiceApi.cs create mode 100644 ARW.WebApi/Controllers/Api/TableDataManage/TableDatas/TableDataApiController.cs diff --git a/ARW.Model/Dto/Api/TableDataManage/TableDatas/TableDataApiDto.cs b/ARW.Model/Dto/Api/TableDataManage/TableDatas/TableDataApiDto.cs new file mode 100644 index 0000000..8559484 --- /dev/null +++ b/ARW.Model/Dto/Api/TableDataManage/TableDatas/TableDataApiDto.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using ARW.Model.Models.Business.TableDataManage.TableDatas; + +namespace ARW.Model.Dto.Api.TableDataManage.TableDatas +{ + + /// + /// 表格数据查询对象Api + /// + /// @author lwh + /// @date 2023-11-23 + /// + public class TableDataQueryDtoApi : PagerInfo + { + public string Search { get; set; } + public string TableDataProcurementContent { get; set; } + public string TableDataProcurementUnit { get; set; } + public DateTime? BeginTableDataDate { get; set; } + public DateTime? EndTableDataDate { get; set; } + public DateTime? BeginTableDataDeadline { get; set; } + public DateTime? EndTableDataDeadline { get; set; } + } + + + /// + /// 表格数据详情输入对象Api + /// + /// @author lwh + /// @date 2023-11-23 + /// + public class TableDataDtoApi + { + [Required(ErrorMessage = "TableDataId不能为空")] + public int TableDataId { get; set; } + } + +} diff --git a/ARW.Model/Vo/Api/TableDataManage/TableDatas/TableDataApiVo.cs b/ARW.Model/Vo/Api/TableDataManage/TableDatas/TableDataApiVo.cs new file mode 100644 index 0000000..cb1c1c1 --- /dev/null +++ b/ARW.Model/Vo/Api/TableDataManage/TableDatas/TableDataApiVo.cs @@ -0,0 +1,111 @@ +using Newtonsoft.Json; +using OfficeOpenXml.Attributes; +using SqlSugar; +using System; +using System.Collections.Generic; + +namespace ARW.Model.Vo.Api.TableDataManage.TableDatas +{ + /// + /// 表格数据展示对象Api + /// + /// @author lwh + /// @date 2023-11-23 + /// + public class TableDataVoApi + { + + + /// + /// 描述 : + /// + [EpplusIgnore] + public int TableDataId { get; set; } + + + /// + /// 描述 : + /// + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusIgnore] + public long TableDataGuid { get; set; } + + + /// + /// 描述 :采购内容 + /// + public string TableDataProcurementContent { get; set; } + + + /// + /// 描述 :日期 + /// + public string TableDataDate { get; set; } + + + /// + /// 描述 :截至日期 + /// + public string TableDataDeadline { get; set; } + + /// + /// 描述 :中标金额 + /// + public decimal TableDataBidWinningPrice { get; set; } + + + /// + /// 涉及产品名称 + /// + public List ProductsInvolvedName { get; set; } + + } + + + /// + /// 表格数据详情展示对象Api + /// + public class TableDataApiDetailsVo + { + [EpplusIgnore] + public int TableDataId { get; set; } + [JsonConverter(typeof(ValueToStringConverter))] + [EpplusIgnore] + public long TableDataGuid { get; set; } + public string ProductsInvolvedName { get; set; } + [EpplusTableColumn(Header = "采购内容")] + public string TableDataProcurementContent { get; set; } + [EpplusTableColumn(Header = "采购单位名称")] + public string TableDataProcurementUnit { get; set; } + [EpplusIgnore] + public string TableDataProcurementMethod { get; set; } + [EpplusIgnore] + public string TableDataSupplierName { get; set; } + [EpplusIgnore] + public string TableDataProjectPricingForm { get; set; } + [EpplusIgnore] + public string TableDataLink { get; set; } + [EpplusTableColumn(Header = "日期", NumberFormat = "yyyy-MM-dd HH:mm:ss")] + public string TableDataDate { get; set; } + [EpplusIgnore] + public string TableDataDeadline { get; set; } + [EpplusIgnore] + public string TableDataWinningBidde { get; set; } + [EpplusIgnore] + public decimal TableDataBidWinningPrice { get; set; } + [EpplusTableColumn(Header = "是否为中标公告")] + public string TableDataIsBidAnnouncement { get; set; } + [EpplusTableColumn(Header = "是否是人力资源池或框架协议")] + public string TableDataIsHumanResourcePoolOrFrameworkAgreement { get; set; } + [EpplusTableColumn(Header = "公告中是否包含多个包/标段/采购内容")] + public string TableDataIsMultiple { get; set; } + [EpplusTableColumn(Header = "是否仅有一个中标人")] + public string TableDataIsOnlyBidder { get; set; } + [EpplusIgnore] + public string TableDataSingleSource { get; set; } + [EpplusIgnore] + public string TableDataDetails { get; set; } + + } + +} diff --git a/ARW.Service/Api/BusinessService/TableDataManage/TableDatas/TableDataServiceApi.cs b/ARW.Service/Api/BusinessService/TableDataManage/TableDatas/TableDataServiceApi.cs new file mode 100644 index 0000000..9a3eccf --- /dev/null +++ b/ARW.Service/Api/BusinessService/TableDataManage/TableDatas/TableDataServiceApi.cs @@ -0,0 +1,179 @@ +using Infrastructure.Attribute; +using Microsoft.AspNetCore.Http; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ARW.Model; +using ARW.Repository; +using ARW.Repository.Business.TableDataManage.TableDatas; +using ARW.Service.Api.IBusinessService.TableDataManage.TableDatas; +using ARW.Model.Dto.Api.TableDataManage.TableDatas; +using ARW.Model.Models.Business.TableDataManage.TableDatas; +using ARW.Model.Vo.Api.TableDataManage.TableDatas; +using ARW.Model.Models.Business.ProductsInvolveds; +using ARW.Repository.Business.ProductsInvolveds; +using ARW.Repository.Business.TableDataManage.TableDataProductsInvolves; +using ARW.Model.Vo.Api.Custom.Customers; +using ARW.Repository.Business.Custom.GoodsBrowsingHistorys; +using ARW.Repository.Business.Custom.GoodsCollections; +using Newtonsoft.Json; +using Senparc.CO2NET.Extensions; +using Senparc.Weixin.WxOpen.AdvancedAPIs.WxApp.WxAppJson; + +namespace ARW.Service.Api.BusinessService.TableDataManage.TableDatas +{ + /// + /// 表格数据接口实现类Api + /// + /// @author lwh + /// @date 2023-11-23 + /// + [AppService(ServiceType = typeof(ITableDataServiceApi), ServiceLifetime = LifeTime.Transient)] + public class TableDataServiceImplApi : BaseService, ITableDataServiceApi + { + private readonly TableDataRepository _TableDataRepository; + private readonly TableDataProductsInvolveRepository _TableDataProductsInvolveRepository; + private readonly ProductsInvolvedRepository _ProductsInvolvedRepository; + + public TableDataServiceImplApi(TableDataRepository TableDataRepository, TableDataProductsInvolveRepository tableDataProductsInvolveRepository, ProductsInvolvedRepository productsInvolveRepository) + { + this._TableDataRepository = TableDataRepository; + _TableDataProductsInvolveRepository = tableDataProductsInvolveRepository; + _ProductsInvolvedRepository = productsInvolveRepository; + } + + #region Api接口代码 + + + /// + /// 查询表格数据列表(Api) + /// + /// + /// + public async Task> GetTableDataListApi(TableDataQueryDtoApi parm) + { + //开始拼装查询条件d + var predicate = Expressionable.Create(); + + predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.Search), s => s.TableDataProcurementContent.Contains(parm.TableDataProcurementContent)); + predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.Search), s => s.TableDataProcurementUnit.Contains(parm.TableDataProcurementUnit)); + //predicate = predicate.AndIF(parm.BeginTableDataDeadline == null, it => it.TableDataDeadline >= DateTime.Now.AddDays(-1)); + //predicate = predicate.AndIF(parm.BeginTableDataDeadline != null, it => it.TableDataDeadline >= parm.BeginTableDataDeadline && it.TableDataDeadline <= parm.EndTableDataDeadline); + var query = _TableDataRepository + .Queryable() + .Where(predicate.ToExpression()) + .OrderBy(s => s.TableDataSort, OrderByType.Desc) + .Select(s => new TableDataVoApi + { + TableDataId = s.TableDataId, + TableDataGuid = s.TableDataGuid, + TableDataProcurementContent = s.TableDataProcurementContent, + TableDataDate = s.TableDataDate.ToString("yyyy-MM-dd"), + TableDataDeadline = s.TableDataDeadline.ToString("yyyy-MM-dd"), + TableDataBidWinningPrice = s.TableDataBidWinningPrice, + }); + var list = await query.ToPageAsync(parm); + + foreach (var item in list.Result) + { + var productsInvolvedList = await _TableDataProductsInvolveRepository.GetListAsync(s => s.TableGuid == item.TableDataGuid); + if (productsInvolvedList.Count > 0) + { + List stringName = new List(); + foreach (var item1 in productsInvolvedList) + { + var productsInvolved = await _ProductsInvolvedRepository.GetFirstAsync(s => s.ProductsInvolvedId == item1.ProductsInvolvedId); + if (productsInvolved != null) + { + stringName.Add(productsInvolved.ProductsInvolvedName); + } + } + item.ProductsInvolvedName = stringName; + } + } + + return list; + } + + /// + /// 查询表格数据详情(Api) + /// + /// + /// + public async Task GetTableDataDetails(TableDataDtoApi parm) + { + + var query = _TableDataRepository + .Queryable() + .Where(s => s.TableDataId == parm.TableDataId) + .Select(s => new TableDataApiDetailsVo + { + TableDataId = s.TableDataId, + TableDataGuid = s.TableDataGuid, + TableDataProcurementContent = s.TableDataProcurementContent, + TableDataProcurementUnit = s.TableDataProcurementUnit, + TableDataProcurementMethod = s.TableDataProcurementMethod, + TableDataSupplierName = s.TableDataSupplierName, + TableDataProjectPricingForm = s.TableDataProjectPricingForm, + TableDataLink = s.TableDataLink, + TableDataDate = s.TableDataDate.ToString("yyyy-MM-dd"), + TableDataDeadline = s.TableDataDeadline.ToString("yyyy-MM-dd"), + TableDataWinningBidde = s.TableDataWinningBidde, + TableDataBidWinningPrice = s.TableDataBidWinningPrice, + TableDataIsBidAnnouncement = s.TableDataIsBidAnnouncement == 1 ? "是" : "否", + TableDataIsHumanResourcePoolOrFrameworkAgreement = s.TableDataIsHumanResourcePoolOrFrameworkAgreement == 1 ? "是" : "否", + TableDataIsMultiple = s.TableDataIsMultiple == 1 ? "是" : "否", + TableDataIsOnlyBidder = s.TableDataIsOnlyBidder == 1 ? "是" : "否", + TableDataSingleSource = s.TableDataSingleSource, + TableDataDetails = s.TableDataDetails, + }).Take(1); + + + var json = await query.ToJsonAsync(); + + if (json != "[]") + { + json = json.Remove(0, 1); + json = json.Substring(0, json.Length - 1); + var data = JsonConvert.DeserializeObject(json); + + var productsInvolvedList = await _TableDataProductsInvolveRepository.GetListAsync(s => s.TableGuid == data.TableDataGuid); + if (productsInvolvedList.Count > 0) + { + var str = ""; + List stringId = new List(); + foreach (var item1 in productsInvolvedList) + { + var productsInvolved = await _ProductsInvolvedRepository.GetFirstAsync(s => s.ProductsInvolvedId == item1.ProductsInvolvedId); + if (productsInvolved != null) + { + str += productsInvolved.ProductsInvolvedName + ","; + stringId.Add(item1.ProductsInvolvedId); + } + } + // 检查字符串是否以逗号结尾 + if (str.EndsWith(",")) + { + // 去掉字符串末尾的逗号 + str = str.TrimEnd(','); + } + data.ProductsInvolvedName = str; + } + + json = data.ToJson(); + } + + return json; + } + + + + + + #endregion + + } +} diff --git a/ARW.Service/Api/IBusinessService/TableDataManage/TableDatas/ITableDataServiceApi.cs b/ARW.Service/Api/IBusinessService/TableDataManage/TableDatas/ITableDataServiceApi.cs new file mode 100644 index 0000000..3ce50c9 --- /dev/null +++ b/ARW.Service/Api/IBusinessService/TableDataManage/TableDatas/ITableDataServiceApi.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ARW.Model; +using ARW.Model.Dto.Api.TableDataManage.TableDatas; +using ARW.Model.Models.Business.TableDataManage.TableDatas; +using ARW.Model.Vo.Api.TableDataManage.TableDatas; + +namespace ARW.Service.Api.IBusinessService.TableDataManage.TableDatas +{ + /// + /// 表格数据接口类Api + /// + /// @author lwh + /// @date 2023-11-23 + /// + public interface ITableDataServiceApi : IBaseService + { + /// + /// 获取表格数据分页列表(Api) + /// + /// + /// + Task> GetTableDataListApi(TableDataQueryDtoApi parm); + + /// + /// 获取表格数据详情(Api) + /// + /// + /// + Task GetTableDataDetails(TableDataDtoApi parm); + + } +} diff --git a/ARW.WebApi/Controllers/Api/TableDataManage/TableDatas/TableDataApiController.cs b/ARW.WebApi/Controllers/Api/TableDataManage/TableDatas/TableDataApiController.cs new file mode 100644 index 0000000..c506f5e --- /dev/null +++ b/ARW.WebApi/Controllers/Api/TableDataManage/TableDatas/TableDataApiController.cs @@ -0,0 +1,79 @@ +using Infrastructure; +using Infrastructure.Attribute; +using Infrastructure.Enums; +using Infrastructure.Model; +using Mapster; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using ARW.Admin.WebApi.Extensions; +using ARW.Admin.WebApi.Filters; +using ARW.Common; +using ARW.Admin.WebApi.Controllers; +using ARW.Model.Dto.Api.TableDataManage.TableDatas; +using ARW.Service.Api.IBusinessService.TableDataManage.TableDatas; +using ARW.Model.Models.Business.TableDataManage.TableDatas; +using ARW.Model.Vo.Api.TableDataManage.TableDatas; +using Microsoft.AspNetCore.Authorization; +using Geocoding; + +namespace ARW.WebApi.Controllers.Api.TableDataManage.TableDatas +{ + /// + /// 表格数据控制器Api + /// + /// @author lwh + /// @date 2023-11-23 + /// + [Verify] + [Route("api/[controller]")] + public class TableDataApiController : BaseController + { + private readonly ITableDataServiceApi _TableDataServiceApi; + + /// + /// 依赖注入 + /// + /// 表格数据表格数据Api服务 + public TableDataApiController(ITableDataServiceApi TableDataServiceApi) + { + _TableDataServiceApi = TableDataServiceApi; + } + + + /// + /// 获取表格数据列表(Api) + /// + /// 查询参数 + /// + [HttpGet("getTableDataList")] + public async Task GetTableDataListApi([FromQuery] TableDataQueryDtoApi parm) + { + var res = await _TableDataServiceApi.GetTableDataListApi(parm); + return SUCCESS(res); + } + + /// + /// 获取TableData详情(Api) + /// + /// 查询参数 + /// + [HttpGet("getTableDataDetails")] + public async Task GetTableDataDetails([FromQuery] TableDataDtoApi parm) + { + //if (parm == null) throw new CustomException("参数错误!"); + + var res = await _TableDataServiceApi.GetTableDataDetails(parm); + + if (res != "[]") + { + var data = res.FromJSON(); + return SUCCESS(data); + } + else + { + return SUCCESS(res); + } + } + + } +} diff --git a/ARW.WebApi/appsettings.json b/ARW.WebApi/appsettings.json index 48397aa..c9cabdd 100644 --- a/ARW.WebApi/appsettings.json +++ b/ARW.WebApi/appsettings.json @@ -17,7 +17,7 @@ "Issuer": "ARWAdmin.NET", "Audience": "ARWAdmin.NET", "SecretKey": "SecretKey-ARWADMIN.NET-20210101", - "Expire": 1440 //jwt登录过期时间(分) + "Expire": 43200 //jwt登录过期时间(分) }, "InitDb": false, //是否初始化db "DemoMode": false, //是否演示模式