From 4d17ef84c249dd8d974e37f2cbf3efd0028d24ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B7=AF=20=E8=8C=83?= Date: Tue, 10 Jun 2025 19:19:30 +0800 Subject: [PATCH] =?UTF-8?q?2025=E5=B9=B4=E5=BA=A6=E6=8A=95=E7=A5=A8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ewide.Web.Entry/Ewide.Web.Entry.csproj | 9 + .../票1 免于现场评估项目汇总表投票表格.xlsx | Bin 0 -> 14276 bytes .../票2 现场评估项目(含)现场投票表格.xlsx | Bin 0 -> 17314 bytes .../wwwroot/html/Manage/Login.html | 2 +- .../wwwroot/html/yjbvote2025/Expert.html | 175 +++++++++++ .../wwwroot/html/yjbvote2025/VoteResult.html | 217 +++++++++++++ .../wwwroot/html/yjbvote2025/index.html | 291 ++++++++++++++++++ .../ApiController/Projects2025Service.cs | 270 ++++++++++++++++ .../ApiController/ProjectsService.cs | 3 +- .../Vote.Services/Dto/ProjectsInput.cs | 3 + .../Vote.Services/Entities/Projects.cs | 4 +- .../Vote.Services/Entities/Projects_2025.cs | 51 +++ .../Vote.Services/Tools/ExcelHelper.cs | 3 +- 20220330_Vote/Vote.Services/Vote.Services.xml | 76 ++++- 14 files changed, 1096 insertions(+), 8 deletions(-) create mode 100644 20220330_Vote/Ewide.Web.Entry/wwwroot/ExcelTemplate/票1 免于现场评估项目汇总表投票表格.xlsx create mode 100644 20220330_Vote/Ewide.Web.Entry/wwwroot/ExcelTemplate/票2 现场评估项目(含)现场投票表格.xlsx create mode 100644 20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote2025/Expert.html create mode 100644 20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote2025/VoteResult.html create mode 100644 20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote2025/index.html create mode 100644 20220330_Vote/Vote.Services/ApiController/Projects2025Service.cs create mode 100644 20220330_Vote/Vote.Services/Entities/Projects_2025.cs diff --git a/20220330_Vote/Ewide.Web.Entry/Ewide.Web.Entry.csproj b/20220330_Vote/Ewide.Web.Entry/Ewide.Web.Entry.csproj index c70479c..a9e17b4 100644 --- a/20220330_Vote/Ewide.Web.Entry/Ewide.Web.Entry.csproj +++ b/20220330_Vote/Ewide.Web.Entry/Ewide.Web.Entry.csproj @@ -642,6 +642,15 @@ Always + + Always + + + Always + + + Always + Always diff --git a/20220330_Vote/Ewide.Web.Entry/wwwroot/ExcelTemplate/票1 免于现场评估项目汇总表投票表格.xlsx b/20220330_Vote/Ewide.Web.Entry/wwwroot/ExcelTemplate/票1 免于现场评估项目汇总表投票表格.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e36454c2b38ac5af46d21ce490c9b143f7e7c411 GIT binary patch literal 14276 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 Bg7N?W literal 0 HcmV?d00001 diff --git a/20220330_Vote/Ewide.Web.Entry/wwwroot/ExcelTemplate/票2 现场评估项目(含)现场投票表格.xlsx b/20220330_Vote/Ewide.Web.Entry/wwwroot/ExcelTemplate/票2 现场评估项目(含)现场投票表格.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f24709648fdbd043ebd6c814821c9c918cccf265 GIT binary patch literal 17314 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 + + + + + + + + + + + + +
+

专家选票结果

+ + + + + + + +

+ 刷新数据 + 查看项目投票情况 + 新增专家 +

+ +
+ + 确定 +
+
+ + + +
+ + + + + \ No newline at end of file diff --git a/20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote2025/VoteResult.html b/20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote2025/VoteResult.html new file mode 100644 index 0000000..4fd00e0 --- /dev/null +++ b/20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote2025/VoteResult.html @@ -0,0 +1,217 @@ + + + + + + + + + + + + + + +
+

2024年度宁波市市级优质工程免于现场评估项目选票结果

+ + + + + + + + + + + + + +

+ 刷新数据 + 导出Excel + 查看专家投票情况 +

+ +

2024年度宁波市市级优质工程现场评估项目选票结果

+ + + + + + + + + + + +

+ 刷新数据 + 导出Excel + 查看专家投票情况 +

+ +
+ + + + + \ No newline at end of file diff --git a/20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote2025/index.html b/20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote2025/index.html new file mode 100644 index 0000000..8981c57 --- /dev/null +++ b/20220330_Vote/Ewide.Web.Entry/wwwroot/html/yjbvote2025/index.html @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + +
+

2024年度宁波市市级优质工程免于现场评估项目

+ + + + {{project.serial_number}}:{{project.name}} + + + + + + +

2024年度宁波市市级优质工程现场评估项目

+ + + + {{project.serial_number}}:{{project.name}} + + + + + + +

+ +

+

+ 重置 + 提交 +

+
+ + + + + \ No newline at end of file diff --git a/20220330_Vote/Vote.Services/ApiController/Projects2025Service.cs b/20220330_Vote/Vote.Services/ApiController/Projects2025Service.cs new file mode 100644 index 0000000..a413577 --- /dev/null +++ b/20220330_Vote/Vote.Services/ApiController/Projects2025Service.cs @@ -0,0 +1,270 @@ +using COSXML.Model.Tag; +using Ewide.Core.Util; +using Furion.DatabaseAccessor; +using Furion.DynamicApiController; +using Furion.FriendlyException; +using Mapster; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Vote.Services.Dto; +using Vote.Services.Entities; +using static Vote.Services.Dto.ProjectsList2Output; + +namespace Vote.Services.ApiController +{ + /// + /// 项目 + /// + [ApiDescriptionSettings("Vote", Order = 0)] + [Route("/gb/yjb/api/projects2025")] + public class Projects2025Service : IDynamicApiController + { + //private readonly IRepository rep_Projects; + private readonly IRepository rep_Projects2025; + private readonly IRepository rep_Experts; + private readonly IRepository rep_VoteRecords; + private readonly IRepository rep_Projects2021; + private readonly IRepository rep_VoteRecords2021; + private readonly IRepository rep_Projects2022; + private readonly IRepository rep_VoteRecords2022; + public Projects2025Service( + IRepository _rep_Projects, + IRepository _rep_Experts, + IRepository _rep_VoteRecords, + IRepository _rep_Projects2021, + IRepository _rep_VoteRecords2021, + IRepository _rep_Projects2022, + IRepository _rep_VoteRecords2022, + IRepository _rep_Projects2025) + { + //rep_Projects = _rep_Projects; + rep_Experts = _rep_Experts; + rep_VoteRecords = _rep_VoteRecords; + rep_Projects2021 = _rep_Projects2021; + rep_VoteRecords2021 = _rep_VoteRecords2021; + rep_Projects2022 = _rep_Projects2022; + rep_VoteRecords2022 = _rep_VoteRecords2022; + rep_Projects2025 = _rep_Projects2025; + } + + /// + /// 列表 + /// + /// + [HttpPost] + [Microsoft.AspNetCore.Authorization.AllowAnonymous] + public async Task List(ProjectsInput args) + { + var typeList = new List { "房建工程", "市政工程", "轨道交通工程", "能源工程", "交通工程", "水利工程" }; + var data = await rep_Projects2025.DetachedEntities.Where(p => !p.IsDeleted) + .Where(args.type != null, a => (int)a.type == args.type) + .Where(args.is_no_inspection != null, a => (int)a.is_no_inspection == args.is_no_inspection) + .ProjectToType() + .OrderBy(a => a.serial_number) + .ToListAsync(); + var data1 = data.Where(a => a.is_no_inspection == 1).ToList(); + var data2 = data.Where(a => a.is_no_inspection == 0).ToList(); + return new + { + typeList, + data1, + data2 + }; + } + + /// + /// 检验提交码 + /// + /// + [HttpPost] + [Microsoft.AspNetCore.Authorization.AllowAnonymous] + public async Task CheckSubmitCode(CheckSubmitCodeInput args) + { + var data = await rep_Experts.DetachedEntities.Where(p => !p.IsDeleted) + .Where(a => a.login_code == args.code) + .FirstOrDefaultAsync(); + return data != null; + } + + + /// + /// 提交 + /// + /// + [HttpPost] + [UnitOfWork] + [Microsoft.AspNetCore.Authorization.AllowAnonymous] + public async Task SubmitSubmitVote(SubmitInput args) + { + try + { + var data = await rep_Experts.DetachedEntities.Where(p => !p.IsDeleted) + .Where(a => a.login_code == args.code) + .FirstOrDefaultAsync(); + _ = (data == null) ? throw Oops.Oh("提交码错误") : 1; + //var list = args.projects.Adapt>(); + //删除这个专家上次提交的结果 + //或者提示不能再次提交 + _ = (await rep_VoteRecords.DetachedEntities.Where(a => !a.IsDeleted && a.expert_login_code == args.code).CountAsync() > 0) ? throw Oops.Oh("已提交,无需再次提交") : 1; + var now = DateTime.Now; + args.projects.ForEach(async a => + { + var model = new Entities.VoteRecords + { + expert_login_code = args.code, + project_id = a.id, + is_agree = a.vote, + vote_time = now + }; + await model.InsertOrUpdate(); + }); + return true; + } + catch (Exception ex) + { + return false; + } + } + private async Task> GetVoteData() + { + var query = from a in rep_Projects2025.DetachedEntities + join b in rep_VoteRecords.DetachedEntities + on a.Id equals b.project_id into grouping + from p in grouping.DefaultIfEmpty() + group new { a, p } by new { a.Id, a.name, a.serial_number, a.type, a.is_no_inspection } into pp + select new ProjectsList2Output + { + serial_number = pp.Key.serial_number, + id = pp.Key.Id, + name = pp.Key.name, + yes_count = pp.Where(a => a.p.is_agree).Count(), + no_count = pp.Where(a => !a.p.is_agree).Count(), + type = pp.Key.type, + is_no_inspection = pp.Key.is_no_inspection + }; + return await query.OrderBy(a => a.serial_number).ToListAsync(); + } + /// + /// 列表 + /// + /// + [HttpPost] + public async Task List2() + { + + //var data = rep_Projects.DetachedEntities.Where(p => !p.IsDeleted) + // //.Where(args.type != null, a => (int)a.type == args.type) + // .Join(rep_VoteRecords.DetachedEntities, a => a.Id, a => a.project_id, (a, b) => + // new + // { + // //a.Id, + // //type = (int)a.type, + // //serial_number = a.serial_number, + // //name = a.name, + // //no_count = b.Where(bb => !bb.is_agree).Count(), + // //yes_count = b.Where(bb => bb.is_agree).Count(), + // }).ToList(); + ////.ProjectToType() + ////.OrderBy(a => a.serial_number) + ////.ToListAsync(); + var data = await GetVoteData(); + //var data0 = data.Where(a => a.type == Entities.EnumProjectType.FangJian).ToList(); + //var data1 = data.Where(a => a.type == Entities.EnumProjectType.ShiZheng).ToList(); + //var data2 = data.Where(a => a.type == Entities.EnumProjectType.GuiDaoGongCheng).ToList(); + //var data3 = data.Where(a => a.type == Entities.EnumProjectType.DianLiGongCheng).ToList(); + //var data4 = data.Where(a => a.type == Entities.EnumProjectType.JiaoTongGongCheng).ToList(); + //var data5 = data.Where(a => a.type == Entities.EnumProjectType.ShuiLiGongCheng).ToList(); + //return new + //{ + // data0, + // data1, + // data2, + // data3, + // data4, + // data5 + //}; + var typeList = new List { "房建工程", "市政工程", "轨道交通工程", "能源工程", "交通工程", "水利工程" }; + return new { data, typeList }; + } + /// + /// + /// + /// + public async Task Download([FromQuery] int s) + { + var data = await GetVoteData(); + var data1 = data.Where(a => a.is_no_inspection == 1).ToList(); + var data2 = data.Where(a => a.is_no_inspection == 0).ToList(); + + //var filepath = Tools.ExcelHelper.WriteTemplate(data, 4, "C"); + string template_name = s == 1 ? "票1 免于现场评估项目汇总表投票表格.xlsx" : "票2 现场评估项目(含)现场投票表格.xlsx"; + var filepath = Tools.ExcelHelper.WriteTemplate(template_name, s == 1 ? data1 : data2, 5, "C"); + return new FileStreamResult(new FileStream(filepath, FileMode.Open), "application/octet-stream") { FileDownloadName = filepath }; + } + /// + /// + /// + /// + public async Task ExpertVote() + { + try + { + var list = await rep_Experts.DetachedEntities.GroupJoin(rep_VoteRecords.DetachedEntities, a => a.login_code, a => a.expert_login_code, (a, b) => new { a, b }) + .SelectMany(a => a.b.DefaultIfEmpty(), (a, b) => new { a.a.Id, a.a.login_code, is_vote = b != null }) + .Distinct() + .OrderBy(a => a.Id) + .ToListAsync(); + return list; + //var query = from a in rep_Experts.DetachedEntities + // join b in rep_VoteRecords.DetachedEntities on a.login_code equals b.expert_login_code into temp + // from tt in temp.DefaultIfEmpty() + // select new + // { + // a.Id, + // a.login_code, + // is_vote = tt == null + // }; + //return await query.ToListAsync(); + } + catch (Exception ex) + { } + return null; + } + + /// + /// 新增专家 + /// + /// + [HttpPost] + public async Task AddExpert(AddExpertInput args) + { + if (args == null || args.expertnum <= 0) + throw Oops.Oh("参数异常"); + try + { + var list = new List(); + for (int i = 0; i < args.expertnum; i++) + { + var newid = Ulid.NewUlid().ToString(); + var newidsimple = newid.ToUpper().Replace("I", "").Replace("L", "").Replace("0", "").Replace("O", "").Replace("1", ""); + list.Add(new Experts + { + Id = newid, + login_code = newidsimple.Substring(newidsimple.Length - 6, 6), + CreatedTime = DateTime.Now + }); + } + await rep_Experts.InsertAsync(list); + } + catch (Exception ex) + { } + } + } +} diff --git a/20220330_Vote/Vote.Services/ApiController/ProjectsService.cs b/20220330_Vote/Vote.Services/ApiController/ProjectsService.cs index e8dea7a..d989c83 100644 --- a/20220330_Vote/Vote.Services/ApiController/ProjectsService.cs +++ b/20220330_Vote/Vote.Services/ApiController/ProjectsService.cs @@ -178,7 +178,8 @@ namespace Vote.Services.ApiController { var data = await GetVoteData(); //var filepath = Tools.ExcelHelper.WriteTemplate(data, 4, "C"); - var filepath = Tools.ExcelHelper.WriteTemplate(data, 5, "C"); + string template_name = "2024年度宁波市结构优质认定项目投票结果.xlsx"; + var filepath = Tools.ExcelHelper.WriteTemplate(template_name, data, 5, "C"); return new FileStreamResult(new FileStream(filepath, FileMode.Open), "application/octet-stream") { FileDownloadName = filepath }; } /// diff --git a/20220330_Vote/Vote.Services/Dto/ProjectsInput.cs b/20220330_Vote/Vote.Services/Dto/ProjectsInput.cs index c114036..5448ac1 100644 --- a/20220330_Vote/Vote.Services/Dto/ProjectsInput.cs +++ b/20220330_Vote/Vote.Services/Dto/ProjectsInput.cs @@ -15,6 +15,7 @@ namespace Vote.Services.Dto /// 项目类型 /// public int? type { get; set; } + public int? is_no_inspection { get; set; } } public class ProjectsOutput { @@ -48,6 +49,7 @@ namespace Vote.Services.Dto /// /// public bool vote { get; set; } = false; + public int is_no_inspection { get; set; } } public class CheckSubmitCodeInput { @@ -116,5 +118,6 @@ namespace Vote.Services.Dto [Required] public int expertnum { get; set; } } + public int is_no_inspection { get; set; } } } diff --git a/20220330_Vote/Vote.Services/Entities/Projects.cs b/20220330_Vote/Vote.Services/Entities/Projects.cs index c46c5d7..87d3afe 100644 --- a/20220330_Vote/Vote.Services/Entities/Projects.cs +++ b/20220330_Vote/Vote.Services/Entities/Projects.cs @@ -174,9 +174,9 @@ namespace Vote.Services.Entities [Description("轨道工程")] GuiDaoGongCheng = 2, /// - /// 电力工程 + /// 能源工程 /// - [Description("电力工程")] + [Description("能源工程")] DianLiGongCheng = 3, /// /// 交通工程 diff --git a/20220330_Vote/Vote.Services/Entities/Projects_2025.cs b/20220330_Vote/Vote.Services/Entities/Projects_2025.cs new file mode 100644 index 0000000..443b594 --- /dev/null +++ b/20220330_Vote/Vote.Services/Entities/Projects_2025.cs @@ -0,0 +1,51 @@ +using Ewide.Core; +using Ewide.Core.Util; +using Furion; +using Furion.DatabaseAccessor; +using Microsoft.EntityFrameworkCore; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Vote.Services.Entities +{ + /// + /// 项目表 + /// + public class Projects_2025 : DEntityBase//, IEntitySeedData + { + /// + /// 项目序号 + /// + [Comment("项目序号")] + public int serial_number { get; set; } + /// + /// 工程名称 + /// + [Comment("工程名称")] + public string name { get; set; } + /// + /// 项目类型 + /// + [Comment("项目类型")] + public EnumProjectType type { get; set; } + /// + /// + /// + [NotMapped] + public string type_title + { + get + { + return type.GetEnumDescription(); + } + } + public int is_no_inspection { get; set; } + } + +} diff --git a/20220330_Vote/Vote.Services/Tools/ExcelHelper.cs b/20220330_Vote/Vote.Services/Tools/ExcelHelper.cs index 23821cf..9d9a4e3 100644 --- a/20220330_Vote/Vote.Services/Tools/ExcelHelper.cs +++ b/20220330_Vote/Vote.Services/Tools/ExcelHelper.cs @@ -114,11 +114,10 @@ namespace Vote.Services.Tools /// /// /// - public static string WriteTemplate(List list, int start_row, string start_column) + public static string WriteTemplate(string template_name, List list, int start_row, string start_column) { try { - string template_name = "2024年度宁波市结构优质认定项目投票结果.xlsx"; string excelFilePath = $"{App.WebHostEnvironment.WebRootPath}\\ExcelTemplate\\{template_name}"; string outputPath = string.Empty; if (!string.IsNullOrEmpty(excelFilePath)) diff --git a/20220330_Vote/Vote.Services/Vote.Services.xml b/20220330_Vote/Vote.Services/Vote.Services.xml index d716f93..b20a6ec 100644 --- a/20220330_Vote/Vote.Services/Vote.Services.xml +++ b/20220330_Vote/Vote.Services/Vote.Services.xml @@ -203,6 +203,53 @@ + + + 项目 + + + + + 列表 + + + + + + 检验提交码 + + + + + + 提交 + + + + + + 列表 + + + + + + + + + + + + + + + + + + 新增专家 + + + 项目 @@ -933,7 +980,7 @@ - 电力工程 + 能源工程 @@ -996,6 +1043,31 @@ + + + 项目表 + + + + + 项目序号 + + + + + 工程名称 + + + + + 项目类型 + + + + + + + 投票记录 @@ -1112,7 +1184,7 @@ - +