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