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 } }