// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 // // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 // // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! using Admin.NET.Core.Service; using Microsoft.AspNetCore.Http; using Furion.DatabaseAccessor; using Furion.FriendlyException; using Mapster; using SqlSugar; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using Microsoft.AspNetCore.Mvc; using Admin.NET.Application; using Admin.NET.Core; using FZCZTB.NET.MD; using Furion.DynamicApiController; using Furion.DependencyInjection; using System.Collections.Generic; using System.Linq; using NewLife.Xml; using AngleSharp.Dom; using DocumentFormat.OpenXml.Office2010.ExcelAc; using Furion; using System.Security.Claims; using Microsoft.AspNetCore.Authorization; using RazorEngine.Compilation.ImpromptuInterface; using MimeKit; using FZFCGDD.ORDER.Application.Service.Neirongfabu.Dto; namespace FZCZTB.TSCL.Application; /// /// 首页接口 🧩 /// [ApiDescriptionSettings(ApplicationConst.GroupNameDD, Order = 100)] public class ShouyeGonggaoService : IDynamicApiController, ITransient { private readonly SqlSugarRepository _TenderOrderRep; private readonly ISqlSugarClient _sqlSugarClient; private readonly SqlSugarRepository _CollectionRep; private readonly SqlSugarRepository _sysDictDataRep; private readonly SqlSugarRepository _ChangeOrderRep; private readonly SqlSugarRepository _neirongfabuRep; public ShouyeGonggaoService(SqlSugarRepository TenderOrderRep, ISqlSugarClient sqlSugarClient, SqlSugarRepository collectionRep, SqlSugarRepository sysDictDataRep , SqlSugarRepository changeOrderRep , SqlSugarRepository neirongfabuRep) { _TenderOrderRep = TenderOrderRep; _sqlSugarClient = sqlSugarClient; _CollectionRep = collectionRep; _sysDictDataRep = sysDictDataRep; _ChangeOrderRep = changeOrderRep; _neirongfabuRep = neirongfabuRep; } /// /// 首页查询非政府订单处理 🔖 /// /// /// [DisplayName("首页查询非政府订单处理")] [AllowAnonymous] [ApiDescriptionSettings(Name = "ShouyeOrder"), HttpPost] public async Task> ShouyeOrder()//SHouyeTenderOrderInput input { var query = _TenderOrderRep.AsQueryable().Where(x => (x.OrderStatus == 2 || x.OrderStatus == 3)) // .WhereIF(!string.IsNullOrWhiteSpace(input.Hangyepinmu), u => u.Hangyepinmu == input.Hangyepinmu.Trim()) .OrderByDescending(x => x.FabuDate) .Take(7) .Select(); return await query.ToListAsync(); } /// /// 首页变更公告 🔖 /// /// /// [DisplayName("首页变更公告")] [AllowAnonymous] [ApiDescriptionSettings(Name = "ShouyeChangeOrder"), HttpPost] public async Task> ShouyeChangeOrder()//SHouyeTenderOrderInput input { var query = _ChangeOrderRep.AsQueryable() .OrderByDescending(x => x.CreateTime) .Select(x => new ChangeTenderOrderOut { Id = x.Id, TenderId = x.TenderId, ProjectName = x.ProjectName, ToubiaoStartDate = x.ToubiaoStartDate.Value, ToubiaoEndDate = x.ToubiaoEndDate.Value, KaibiaoDate = x.KaibiaoDate.Value, Biangengwenjian = x.Biangengwenjian, Kaibiaodidian = x.Kaibiaodidian, CreateTime = x.CreateTime }) .Take(7); return await query.ToListAsync(); } /// /// 首页中标公告 🔖 /// /// /// [DisplayName("首页中标公告")] [AllowAnonymous] [ApiDescriptionSettings(Name = "ShouyeZhongbiaoOrder"), HttpPost] public async Task> ShouyeZhongbiaoOrder()//SHouyeTenderOrderInput input { var query = _TenderOrderRep.AsQueryable().Where(x => x.OrderStatus == 3 ) // .WhereIF(!string.IsNullOrWhiteSpace(input.Hangyepinmu), u => u.Hangyepinmu == input.Hangyepinmu.Trim()) .OrderByDescending(x => x.ZhongbiaoDate) .Take(7) .Select(); return await query.ToListAsync(); } /// /// 首页公告信息-招采公告 🔖 /// /// /// [DisplayName("首页公告信息-招采公告")] [AllowAnonymous] [ApiDescriptionSettings(Name = "PageGonggao"), HttpPost] public async Task> PageGonggao(PageShouyeTendOrderInput input) { long userId = 0; long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId); var query = _sqlSugarClient.Queryable< TenderOrder>() //.Where((a, b) => a.CreateUserId == userId) .Where(x => (x.OrderStatus == 2 || x.OrderStatus == 3)) .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), b=> b.ProjectName.Contains(input.ProjectName.Trim())) .WhereIF(input.CreateDateRange != null && input.CreateDateRange.Length == 2, u => u.FabuDate >= input.CreateDateRange[0] && u.FabuDate <= input.CreateDateRange[1]) .Select(b => new TenderOrderOutput { Id = b.Id, ProjectCode = b.ProjectCode, ProjectName = b.ProjectName, ToubiaoEndDate = b.ToubiaoEndDate.HasValue ? b.ToubiaoEndDate.Value : DateTime.Now, KaibiaoDate = b.KaibiaoDate.HasValue ? b.KaibiaoDate.Value : DateTime.Now, Xingzhengquyu = b.Xingzhengquyu, XingzhengquyuName = b.XingzhengquyuName, Dailijigoumingcheng = b.Dailijigoumingcheng, ToubiaoStartDate = b.ToubiaoStartDate.HasValue ? b.ToubiaoStartDate.Value : DateTime.Now, FabuDate = b.FabuDate.HasValue ? b.FabuDate.Value : DateTime.Now, Caigoufangshi = b.Caigoufangshi, }); var pagedList = await query.OrderBuilder(input, "", "KaibiaoDate", true).ToPagedListAsync(input.Page, input.PageSize); var sysDictDatas = await GetDataListByCode("Caigoufangshi"); foreach (var tenderOrderOutput in pagedList.Items) { var sysDictData = sysDictDatas.Where(x => x.Value == tenderOrderOutput.Caigoufangshi).FirstOrDefault(); if (sysDictData != null) { tenderOrderOutput.CaigoufangshiName = sysDictData.Label; } } return pagedList; } /// /// 首页公告信息-更正公告 🔖 /// /// /// [DisplayName("首页公告信息-更正公告")] [AllowAnonymous] [ApiDescriptionSettings(Name = "PageGengzgeng"), HttpPost] public async Task> PageGengzgeng(PageShouyeTendOrderInput input) { long userId = 0; long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId); var query = _sqlSugarClient.Queryable((a, b) => a.TenderId == b.Id) //.Where((a, b) => a.CreateUserId == userId) .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), (a, b) => a.ProjectName.Contains(input.ProjectName.Trim())) .WhereIF(input.CreateDateRange != null && input.CreateDateRange.Length == 2, (a, b) => a.CreateTime >= input.CreateDateRange[0] && a.CreateTime <= input.CreateDateRange[1]) .Select((a, b) => new TenderOrderOutput { Id = b.Id, ProjectCode = b.ProjectCode, ProjectName = a.ProjectName, ToubiaoEndDate = b.ToubiaoEndDate.HasValue ? b.ToubiaoEndDate.Value : DateTime.Now, KaibiaoDate = b.KaibiaoDate.HasValue ? b.KaibiaoDate.Value : DateTime.Now, Xingzhengquyu = b.Xingzhengquyu, XingzhengquyuName = b.XingzhengquyuName, Dailijigoumingcheng = b.Dailijigoumingcheng, ToubiaoStartDate = b.ToubiaoStartDate.HasValue ? b.ToubiaoStartDate.Value : DateTime.Now, CreateTime = a.CreateTime, Caigoufangshi = b.Caigoufangshi, }); var pagedList = await query.OrderBuilder(input, "", "a.CreateTime", true).ToPagedListAsync(input.Page, input.PageSize); var sysDictDatas = await GetDataListByCode("Caigoufangshi"); foreach (var tenderOrderOutput in pagedList.Items) { var sysDictData = sysDictDatas.Where(x => x.Value == tenderOrderOutput.Caigoufangshi).FirstOrDefault(); if (sysDictData != null) { tenderOrderOutput.CaigoufangshiName = sysDictData.Label; } } return pagedList; } /// /// 获取字典值集合 🔖 /// /// /// /// [NonAction] public async Task> GetDataListByCode(string code) { if (string.IsNullOrWhiteSpace(code)) throw Oops.Oh(ErrorCodeEnum.D3011); var dictType = await _sysDictDataRep.Change().AsQueryable() .Where(u => u.Status == StatusEnum.Enable) .WhereIF(!string.IsNullOrWhiteSpace(code), u => u.Code == code) .FirstAsync(); if (dictType == null) return null; var dictDataList = await _sysDictDataRep.AsQueryable() .Where(u => u.DictTypeId == dictType.Id) .Where(u => u.Status == StatusEnum.Enable) .OrderBy(u => new { u.OrderNo, u.Value, u.Code }) .ToListAsync(); return dictDataList; } /// /// 首页公告信息-中标公告 🔖 /// /// /// [DisplayName("首页公告信息-中标公告")] [AllowAnonymous] [ApiDescriptionSettings(Name = "PageZhongbiaoGonggao"), HttpPost] public async Task> PageZhongbiaoGonggao(PageShouyeTendOrderInput input) { long userId = 0; long.TryParse(App.User?.FindFirst(ClaimConst.UserId)?.Value, out userId); var query = _sqlSugarClient.Queryable() //.Where((a, b) => a.CreateUserId == userId) .Where(x => x.OrderStatus == 3) .WhereIF(!string.IsNullOrWhiteSpace(input.ProjectName), b => b.ZhongbiaoTittle.Contains(input.ProjectName.Trim())) .WhereIF(input.CreateDateRange != null && input.CreateDateRange.Length == 2, u => u.ZhongbiaoDate >= input.CreateDateRange[0] && u.ZhongbiaoDate <= input.CreateDateRange[1]) .Select(b => new TenderOrderOutput { Id = b.Id, ProjectCode = b.ProjectCode, ProjectName = b.ZhongbiaoTittle, ToubiaoEndDate = b.ToubiaoEndDate.HasValue ? b.ToubiaoEndDate.Value : DateTime.Now, KaibiaoDate = b.KaibiaoDate.HasValue ? b.KaibiaoDate.Value : DateTime.Now, Xingzhengquyu = b.Xingzhengquyu, XingzhengquyuName = b.XingzhengquyuName, Dailijigoumingcheng = b.Dailijigoumingcheng, ToubiaoStartDate = b.ToubiaoStartDate.HasValue ? b.ToubiaoStartDate.Value : DateTime.Now, FabuDate = b.FabuDate.HasValue ? b.FabuDate.Value : DateTime.Now, Caigoufangshi = b.Caigoufangshi, ZhongbiaoDate = b.ZhongbiaoDate, ZhongbiaoTittle = b.ZhongbiaoTittle }); var pagedList = await query.OrderBuilder(input, "", "ZhongbiaoDate", true).ToPagedListAsync(input.Page, input.PageSize); var sysDictDatas = await GetDataListByCode("Caigoufangshi"); foreach (var tenderOrderOutput in pagedList.Items) { var sysDictData = sysDictDatas.Where(x => x.Value == tenderOrderOutput.Caigoufangshi).FirstOrDefault(); if (sysDictData != null) { tenderOrderOutput.CaigoufangshiName = sysDictData.Label; } } return pagedList; } /// /// 首页内容发布 🔖 /// /// /// [DisplayName("首页内容发布")] [AllowAnonymous] [ApiDescriptionSettings(Name = "ShouyeNeirongfabu"), HttpPost] public async Task> ShouyeNeirongfabu(SHouyeNeirongfabuInput input) { var query = _neirongfabuRep.AsQueryable() .Where(x=>x.IsFabu == true) .WhereIF(input.Leirongneixing.HasValue, u => u.Leirongneixing == input.Leirongneixing.Value) .WhereIF(input.IsShouyexianshi.HasValue, u => u.IsShouyexianshi == input.IsShouyexianshi.Value) // .OrderBy(x => x.Sort) .OrderByDescending(x=>x.FabuDate) .Take(7) .Select(x => new NeirongfabuOutput { Id = x.Id, Leirongneixing = x.Leirongneixing, IsFabu = x.IsFabu, IsShouyexianshi = x.IsShouyexianshi, NeirongTittle = x.NeirongTittle, Fengmiantupian = x.Fengmiantupian, Sort = x.Sort, FabuDate = x.FabuDate, NeirongZhaiyao = x.NeirongZhaiyao, // NeirongMiaoshu = x.NeirongMiaoshu, CreateTime = x.CreateTime, UpdateTime = x.UpdateTime, CreateUserId = x.CreateUserId, CreateUserName = x.CreateUserName, UpdateUserId = x.UpdateUserId, UpdateUserName = x.UpdateUserName, }); return await query.ToListAsync(); } /// /// 首页咨询中心-内容发布 🔖 /// /// /// [DisplayName("首页咨询中心-内容发布")] [AllowAnonymous] [ApiDescriptionSettings(Name = "PageNeirongfabu"), HttpPost] public async Task> PageNeirongfabu(PageShouyeNeirongfabuInput input) { var query = _neirongfabuRep.AsQueryable() .Where(x => x.IsFabu == true) .WhereIF(input.Leirongneixing.HasValue, u => u.Leirongneixing == input.Leirongneixing.Value) .WhereIF(input.IsShouyexianshi.HasValue, u => u.IsShouyexianshi == input.IsShouyexianshi.Value) .WhereIF(!string.IsNullOrWhiteSpace(input.NeirongTittle), b => b.NeirongTittle.Contains(input.NeirongTittle.Trim())) .WhereIF(input.CreateDateRange != null && input.CreateDateRange.Length == 2, u => u.FabuDate >= input.CreateDateRange[0] && u.FabuDate <= input.CreateDateRange[1]) .Select(x => new NeirongfabuOutput { Id = x.Id, Leirongneixing = x.Leirongneixing, IsFabu = x.IsFabu, IsShouyexianshi = x.IsShouyexianshi, NeirongTittle = x.NeirongTittle, Fengmiantupian = x.Fengmiantupian, Sort = x.Sort, FabuDate = x.FabuDate, NeirongZhaiyao = x.NeirongZhaiyao, // NeirongMiaoshu = x.NeirongMiaoshu, CreateTime = x.CreateTime, UpdateTime = x.UpdateTime, CreateUserId = x.CreateUserId, CreateUserName = x.CreateUserName, UpdateUserId = x.UpdateUserId, UpdateUserName = x.UpdateUserName, }); var pagedList = await query.OrderBuilder(input, "", "FabuDate", true).ToPagedListAsync(input.Page, input.PageSize); var sysDictDatas = await GetDataListByCode("Leirongneixing"); foreach (var neirongfabuOutput in pagedList.Items) { var sysDictData = sysDictDatas.Where(x => x.Value == neirongfabuOutput.Leirongneixing.Value.ToString()).FirstOrDefault(); if (sysDictData != null) { neirongfabuOutput.LeirongneixingName = sysDictData.Label; } if (neirongfabuOutput.IsFabu.HasValue && neirongfabuOutput.IsFabu.Value) { neirongfabuOutput.IsFabuName = "是"; } else { neirongfabuOutput.IsFabuName = "否"; } if (neirongfabuOutput.IsShouyexianshi.HasValue && neirongfabuOutput.IsShouyexianshi.Value) { neirongfabuOutput.IsShouyexianshiName = "是"; } else { neirongfabuOutput.IsShouyexianshiName = "否"; } } return pagedList; } /// /// 获取内容发布详情 ℹ️ /// /// /// [DisplayName("获取内容发布详情")] [AllowAnonymous] [ApiDescriptionSettings(Name = "NeirongfabuDetail"), HttpGet] public async Task NeirongfabuDetail([FromQuery] QueryByIdTenderOrderInput input) { var Leirongneixing = await GetDataListByCode("Leirongneixing"); var neirongfabuOutput = await _neirongfabuRep.AsQueryable().Where(x => x.Id == input.Id).Select().FirstAsync(); if (neirongfabuOutput != null) { if (neirongfabuOutput.Leirongneixing.HasValue) { neirongfabuOutput.LeirongneixingName = Leirongneixing.Where(x => x.Value == neirongfabuOutput.Leirongneixing.Value.ToString()).Select(x => x.Label).FirstOrDefault() ?? ""; } if (neirongfabuOutput.IsFabu.HasValue && neirongfabuOutput.IsFabu.Value) { neirongfabuOutput.IsFabuName = "是"; } else { neirongfabuOutput.IsFabuName = "否"; } if (neirongfabuOutput.IsShouyexianshi.HasValue && neirongfabuOutput.IsShouyexianshi.Value) { neirongfabuOutput.IsShouyexianshiName = "是"; } else { neirongfabuOutput.IsShouyexianshiName = "否"; } } return neirongfabuOutput; } }