Commit 2c06d7c8 by wyc

考核管理 填写模板修改/科室填报添加字段/方案添加备注/增加接口考核结果查看页面和下载/添加考核统计汇总页面

parent 0e4d060b
...@@ -178,6 +178,7 @@ public IActionResult SchemeDownload([FromBody] AddAssessSchemeRequest query) ...@@ -178,6 +178,7 @@ public IActionResult SchemeDownload([FromBody] AddAssessSchemeRequest query)
new ExcelDownloadHeads { Alias = "考核方案ID", Name = nameof(RecordAssessScheme.SchemeCode) }, new ExcelDownloadHeads { Alias = "考核方案ID", Name = nameof(RecordAssessScheme.SchemeCode) },
new ExcelDownloadHeads { Alias = "考核方案名称", Name = nameof(RecordAssessScheme.SchemeName) }, new ExcelDownloadHeads { Alias = "考核方案名称", Name = nameof(RecordAssessScheme.SchemeName) },
new ExcelDownloadHeads { Alias = "考核方案类型", Name = nameof(RecordAssessScheme.AssessName) }, new ExcelDownloadHeads { Alias = "考核方案类型", Name = nameof(RecordAssessScheme.AssessName) },
new ExcelDownloadHeads { Alias = "备注", Name = nameof(RecordAssessScheme.SchemeRemarks) },
new ExcelDownloadHeads { Alias = "创建时间", Name = nameof(RecordAssessScheme.CreateTime) }, new ExcelDownloadHeads { Alias = "创建时间", Name = nameof(RecordAssessScheme.CreateTime) },
new ExcelDownloadHeads { Alias = "最后修改时间", Name = nameof(RecordAssessScheme.UpdateTime) }, new ExcelDownloadHeads { Alias = "最后修改时间", Name = nameof(RecordAssessScheme.UpdateTime) },
}; };
...@@ -231,7 +232,7 @@ public IActionResult SchemeDownload([FromBody] AddAssessSchemeRequest query) ...@@ -231,7 +232,7 @@ public IActionResult SchemeDownload([FromBody] AddAssessSchemeRequest query)
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[Route("scheme/items/list")] [Route("scheme/items/list")]
[ProducesResponseType(typeof(PagedList<AssessSchemeDataResponse>), StatusCodes.Status200OK)] [ProducesResponseType(typeof(PagedList<per_assess_scheme_items>), StatusCodes.Status200OK)]
public ApiResponse SchemeItemsList([FromBody] QuerySchemeItemsList query) public ApiResponse SchemeItemsList([FromBody] QuerySchemeItemsList query)
{ {
return new ApiResponse(ResponseType.OK, "", _service.SchemeItemsList(query)); return new ApiResponse(ResponseType.OK, "", _service.SchemeItemsList(query));
...@@ -286,13 +287,13 @@ public IActionResult SchemeItemsDownload([FromBody] QuerySchemeItemsList query) ...@@ -286,13 +287,13 @@ public IActionResult SchemeItemsDownload([FromBody] QuerySchemeItemsList query)
{ {
List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>() List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>()
{ {
new ExcelDownloadHeads { Alias = "指标编码", Name = nameof(per_assess_scheme_items.ItemCode) }, new ExcelDownloadHeads { Alias = "考核指标编码", Name = nameof(per_assess_scheme_items.ItemCode) },
new ExcelDownloadHeads { Alias = "一级指标名称", Name = nameof(per_assess_scheme_items.ItemName1) }, new ExcelDownloadHeads { Alias = "一级指标名称", Name = nameof(per_assess_scheme_items.ItemName1) },
new ExcelDownloadHeads { Alias = "二级指标名称", Name = nameof(per_assess_scheme_items.ItemName2) }, new ExcelDownloadHeads { Alias = "二级指标名称", Name = nameof(per_assess_scheme_items.ItemName2) },
new ExcelDownloadHeads { Alias = "考核分值", Name = nameof(per_assess_scheme_items.AssessScore) }, new ExcelDownloadHeads { Alias = "考核分值", Name = nameof(per_assess_scheme_items.AssessScore) },
new ExcelDownloadHeads { Alias = "考核标准", Name = nameof(per_assess_scheme_items.AssessNorm) }, new ExcelDownloadHeads { Alias = "考核标准", Name = nameof(per_assess_scheme_items.AssessNorm) },
new ExcelDownloadHeads { Alias = "核算组别", Name = nameof(per_assess_scheme_items.UnitType) }, new ExcelDownloadHeads { Alias = "考核单元组别", Name = nameof(per_assess_scheme_items.UnitType) },
new ExcelDownloadHeads { Alias = "考核负责部门", Name = nameof(per_assess_scheme_items.AccountingUnit) }, new ExcelDownloadHeads { Alias = "考核单元名称", Name = nameof(per_assess_scheme_items.AccountingUnit) },
new ExcelDownloadHeads { Alias = "创建时间", Name = nameof(per_assess_scheme_items.CreateTime) }, new ExcelDownloadHeads { Alias = "创建时间", Name = nameof(per_assess_scheme_items.CreateTime) },
new ExcelDownloadHeads { Alias = "最后修改时间", Name = nameof(per_assess_scheme_items.UpdateTime) }, new ExcelDownloadHeads { Alias = "最后修改时间", Name = nameof(per_assess_scheme_items.UpdateTime) },
}; };
...@@ -385,6 +386,58 @@ public ApiResponse SchemeItemsTargetDelete([FromBody] TargetSchemeItemsTargetDel ...@@ -385,6 +386,58 @@ public ApiResponse SchemeItemsTargetDelete([FromBody] TargetSchemeItemsTargetDel
#region 核算单元上报考核结果 #region 核算单元上报考核结果
/// <summary> /// <summary>
/// 考核结果列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpPost]
[Route("scheme/result/list")]
[ProducesResponseType(typeof(PagedList<AssessSchemeResultListResponse>), StatusCodes.Status200OK)]
public ApiResponse SchemeResultList([FromBody] QuerySchemeResultList query)
{
return new ApiResponse(ResponseType.OK, "", _service.SchemeResultList(query));
}
/// <summary>
/// 考核结果下载
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpPost]
[Route("scheme/result/download")]
public IActionResult SchemeEnterDownload([FromBody] QuerySchemeResultList query)
{
List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>()
{
new ExcelDownloadHeads { Alias = "核算组别", Name = nameof(AssessSchemeResultListResponse.TargetUnitType) },
new ExcelDownloadHeads { Alias = "核算单元名称", Name = nameof(AssessSchemeResultListResponse.TargetAccountingUnit) },
};
query.Page = 1;
query.PageSize = int.MaxValue;
var result = _service.SchemeResultList(query).Data;
foreach (var item in result.SelectMany(w => w.DictionaryResults).Select(w => w.Title).Distinct())
{
excelDownloadHeads.Add(new ExcelDownloadHeads() { Alias = item, Name = item });
}
excelDownloadHeads.Add(new ExcelDownloadHeads() { Alias = "合计", Name = "TotalAssessScore" });
var ser = JsonConvert.SerializeObject(result);
var rows = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(ser);
var filepath = _service.ExcelDownload(rows, "考核结果", excelDownloadHeads);
var memoryStream = new MemoryStream();
using (var stream = new FileStream(filepath, FileMode.Open))
{
stream.CopyToAsync(memoryStream).Wait();
}
memoryStream.Seek(0, SeekOrigin.Begin);
var provider = new FileExtensionContentTypeProvider();
FileInfo fileInfo = new FileInfo(filepath);
var memi = provider.Mappings[".xlsx"];
return File(memoryStream, memi, Path.GetFileName(fileInfo.Name));
}
/// <summary>
/// 核算单元上报考核列表 /// 核算单元上报考核列表
/// </summary> /// </summary>
/// <param name="allotId"></param> /// <param name="allotId"></param>
...@@ -502,15 +555,14 @@ public IActionResult SchemeEnterDownload([FromBody] QuerySchemeEnterDetailList q ...@@ -502,15 +555,14 @@ public IActionResult SchemeEnterDownload([FromBody] QuerySchemeEnterDetailList q
{ {
List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>() List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>()
{ {
new ExcelDownloadHeads { Alias = "核算单元", Name = nameof(AssessSchemeEnterDetaiListResponse.TargetAccountingUnit) },
new ExcelDownloadHeads { Alias = "核算组别", Name = nameof(AssessSchemeEnterDetaiListResponse.TargetUnitType) }, new ExcelDownloadHeads { Alias = "核算组别", Name = nameof(AssessSchemeEnterDetaiListResponse.TargetUnitType) },
new ExcelDownloadHeads { Alias = "核算单元名称", Name = nameof(AssessSchemeEnterDetaiListResponse.TargetAccountingUnit) },
new ExcelDownloadHeads { Alias = "一级指标名称", Name = nameof(AssessSchemeEnterDetaiListResponse.ItemName1) }, new ExcelDownloadHeads { Alias = "一级指标名称", Name = nameof(AssessSchemeEnterDetaiListResponse.ItemName1) },
new ExcelDownloadHeads { Alias = "考核项目", Name = nameof(AssessSchemeEnterDetaiListResponse.ItemName2) }, new ExcelDownloadHeads { Alias = "考核项目", Name = nameof(AssessSchemeEnterDetaiListResponse.ItemName2) },
new ExcelDownloadHeads { Alias = "考核标准", Name = nameof(AssessSchemeEnterDetaiListResponse.AssessNorm) },
new ExcelDownloadHeads { Alias = "考核分值", Name = nameof(AssessSchemeEnterDetaiListResponse.AssessScore) }, new ExcelDownloadHeads { Alias = "考核分值", Name = nameof(AssessSchemeEnterDetaiListResponse.AssessScore) },
new ExcelDownloadHeads { Alias = "考核扣分", Name = nameof(AssessSchemeEnterDetaiListResponse.Score) }, new ExcelDownloadHeads { Alias = "考核扣分", Name = nameof(AssessSchemeEnterDetaiListResponse.Score) },
new ExcelDownloadHeads { Alias = "扣分原因", Name = nameof(AssessSchemeEnterDetaiListResponse.ScoreRemark) }, new ExcelDownloadHeads { Alias = "扣分原因", Name = nameof(AssessSchemeEnterDetaiListResponse.ScoreRemark) },
new ExcelDownloadHeads { Alias = "创建时间", Name = nameof(AssessSchemeEnterDetaiListResponse.CreateTime) },
new ExcelDownloadHeads { Alias = "最后修改时间", Name = nameof(AssessSchemeEnterDetaiListResponse.UpdateTime) },
}; };
query.Page = 1; query.Page = 1;
query.PageSize = int.MaxValue; query.PageSize = int.MaxValue;
......
...@@ -468,6 +468,20 @@ ...@@ -468,6 +468,20 @@
<param name="delete"></param> <param name="delete"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:Performance.Api.Controllers.AssessNewController.SchemeResultList(Performance.DtoModels.Request.QuerySchemeResultList)">
<summary>
考核结果列表
</summary>
<param name="query"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AssessNewController.SchemeEnterDownload(Performance.DtoModels.Request.QuerySchemeResultList)">
<summary>
考核结果下载
</summary>
<param name="query"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AssessNewController.SchemeEnterList(System.Int32)"> <member name="M:Performance.Api.Controllers.AssessNewController.SchemeEnterList(System.Int32)">
<summary> <summary>
核算单元上报考核列表 核算单元上报考核列表
......
...@@ -3109,6 +3109,11 @@ ...@@ -3109,6 +3109,11 @@
考核方案名称 考核方案名称
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.AssessSchemeDataResponse.SchemeRemarks">
<summary>
考核方案备注
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeDataResponse.CreateBy"> <member name="P:Performance.DtoModels.AssessSchemeDataResponse.CreateBy">
<summary> <summary>
创建人 创建人
...@@ -3179,6 +3184,26 @@ ...@@ -3179,6 +3184,26 @@
修改时间 修改时间
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.AssessSchemeResultListResponse.TargetUnitType">
<summary>
考核目标核算组别
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeResultListResponse.TargetAccountingUnit">
<summary>
考核目标核算单元
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeResultListResponse.ItemName2">
<summary>
二级指标名称
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeResultListResponse.TotalAssessScore">
<summary>
合计
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeEnterListResponse.UnitType"> <member name="P:Performance.DtoModels.AssessSchemeEnterListResponse.UnitType">
<summary> <summary>
核算组别 核算组别
...@@ -3264,6 +3289,11 @@ ...@@ -3264,6 +3289,11 @@
审核或驳回原因 审核或驳回原因
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.AssessSchemeEnterListResponse.AssessNorm">
<summary>
考核标准
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeEnterDetaiListResponse.TargetUnitType"> <member name="P:Performance.DtoModels.AssessSchemeEnterDetaiListResponse.TargetUnitType">
<summary> <summary>
考核目标核算组别 考核目标核算组别
...@@ -3364,6 +3394,11 @@ ...@@ -3364,6 +3394,11 @@
审核或驳回原因 审核或驳回原因
</summary> </summary>
</member> </member>
<member name="P:Performance.DtoModels.AssessSchemeEnterDetaiListResponse.AssessNorm">
<summary>
考核标准
</summary>
</member>
<member name="P:Performance.DtoModels.AssessSchemeItemsUploadResponse.ItemName1"> <member name="P:Performance.DtoModels.AssessSchemeItemsUploadResponse.ItemName1">
<summary> <summary>
一级指标名称 一级指标名称
......
...@@ -6835,6 +6835,11 @@ ...@@ -6835,6 +6835,11 @@
考核方案名称 考核方案名称
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.per_assess_scheme.SchemeRemarks">
<summary>
考核方案备注
</summary>
</member>
<member name="P:Performance.EntityModels.per_assess_scheme.CreateBy"> <member name="P:Performance.EntityModels.per_assess_scheme.CreateBy">
<summary> <summary>
创建人 创建人
...@@ -10210,6 +10215,67 @@ ...@@ -10210,6 +10215,67 @@
考核目标核算单元 考核目标核算单元
</summary> </summary>
</member> </member>
<member name="P:Performance.EntityModels.Other.view_assess_result.AllotId">
<summary>
绩效ID
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.AssessId">
<summary>
考核类型ID
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.SchemeId">
<summary>
考核方案ID
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.ItemId">
<summary>
指标Id
</summary>
</member>
<!-- Badly formed XML comment ignored for member "P:Performance.EntityModels.Other.view_assess_result.ItemName2" -->
<member name="P:Performance.EntityModels.Other.view_assess_result.State">
<summary>
状态
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.Score">
<summary>
分值
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.UnitCode">
<summary>
责任部门核算单元编码
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.UnitType">
<summary>
责任部门核算组别
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.AccountingUnit">
<summary>
责任部门核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.TargetUnitCode">
<summary>
考核目标核算单元编码
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.TargetUnitType">
<summary>
考核目标核算组别
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_assess_result.TargetAccountingUnit">
<summary>
考核目标核算单元
</summary>
</member>
<member name="P:Performance.EntityModels.Other.view_attendance.UnitType"> <member name="P:Performance.EntityModels.Other.view_attendance.UnitType">
<summary> <summary>
人员类别 人员类别
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
using Performance.DtoModels.Response; using Performance.DtoModels.Response;
using Performance.EntityModels; using Performance.EntityModels;
using Performance.EntityModels.Entity; using Performance.EntityModels.Entity;
using Performance.EntityModels.Other;
using Performance.Infrastructure; using Performance.Infrastructure;
using System.Linq; using System.Linq;
...@@ -294,7 +295,6 @@ public AutoMapperConfigs() ...@@ -294,7 +295,6 @@ public AutoMapperConfigs()
CreateMap<AttendanceData, per_attendance>().ReverseMap(); CreateMap<AttendanceData, per_attendance>().ReverseMap();
CreateMap<AttendanceVacationData, per_attendance_vacation>().ReverseMap(); CreateMap<AttendanceVacationData, per_attendance_vacation>().ReverseMap();
} }
} }
} }
namespace Performance.DtoModels.Request namespace Performance.DtoModels.Request
{ {
public class QuerySchemeResultList
{
///// <summary>
///// 核算组别(页面带进来)
///// </summary>
//public string UnitType { get; set; }
///// <summary>
///// 核算单元(页面带进来)
///// </summary>
//public string AccountingUnit { get; set; }
public int SchemeId { get; set; }
public int AllotId { get; set; }
public string? TargetUnitType { get; set; }
public string? TargetAccountingUnit { get; set; }
public string? ItemName2 { get; set; }
public int Page { get; set; } = 1;
public int PageSize { get; set; } = 20;
}
public class QuerySchemeEnterDetailList public class QuerySchemeEnterDetailList
{ {
public int AllotId { get; set; } public int AllotId { get; set; }
...@@ -13,6 +31,10 @@ public class QuerySchemeEnterDetailList ...@@ -13,6 +31,10 @@ public class QuerySchemeEnterDetailList
/// </summary> /// </summary>
public string? TargetAccountingUnit { get; set; } public string? TargetAccountingUnit { get; set; }
/// <summary> /// <summary>
/// 操作类型 未提交 = 1,待审核 = 2,审核通过 = 3,驳回 = 4,
/// </summary>
public Assess.AssessState State { get; set; }
/// <summary>
/// 二级指标名称 /// 二级指标名称
/// </summary> /// </summary>
public string? ItemName2 { get; set; } public string? ItemName2 { get; set; }
......
...@@ -5,6 +5,7 @@ public class AddAssessSchemeRequest ...@@ -5,6 +5,7 @@ public class AddAssessSchemeRequest
public int AllotId { get; set; } public int AllotId { get; set; }
public int CategoryId { get; set; } public int CategoryId { get; set; }
public string SchemeName { get; set; } public string SchemeName { get; set; }
public string SchemeRemarks { get; set; }
} }
public class UpdateAssessSchemeRequest : AddAssessSchemeRequest public class UpdateAssessSchemeRequest : AddAssessSchemeRequest
{ {
......
using System; using System;
using System.Collections.Generic;
namespace Performance.DtoModels namespace Performance.DtoModels
{ {
...@@ -33,6 +34,10 @@ public class AssessSchemeDataResponse ...@@ -33,6 +34,10 @@ public class AssessSchemeDataResponse
/// </summary> /// </summary>
public string SchemeName { get; set; } public string SchemeName { get; set; }
/// <summary> /// <summary>
/// 考核方案备注
/// </summary>
public string SchemeRemarks { get; set; }
/// <summary>
/// 创建人 /// 创建人
/// </summary> /// </summary>
public int CreateBy { get; set; } public int CreateBy { get; set; }
...@@ -94,7 +99,34 @@ public class AssessSchemeTargetResponse ...@@ -94,7 +99,34 @@ public class AssessSchemeTargetResponse
/// </summary> /// </summary>
public DateTime? UpdateTime { get; set; } public DateTime? UpdateTime { get; set; }
} }
public class AssessSchemeResultListResponse
{
/// <summary>
/// 考核目标核算组别
/// </summary>
public string? TargetUnitType { get; set; }
/// <summary>
/// 考核目标核算单元
/// </summary>
public string? TargetAccountingUnit { get; set; }
/// <summary>
/// 二级指标名称
/// </summary>
public string? ItemName2 { get; set; }
public List<AssessSchemeDictionaryResults> DictionaryResults { get; set; }
public int? Score { get; set; }
/// <summary>
/// 合计
/// </summary>
public int? TotalAssessScore { get; set; }
}
public class AssessSchemeDictionaryResults
{
public int? Value { get; set; }
public string Title { get; set; }
}
public class AssessSchemeEnterListResponse public class AssessSchemeEnterListResponse
{ {
/// <summary> /// <summary>
...@@ -166,6 +198,10 @@ public class AssessSchemeEnterListResponse ...@@ -166,6 +198,10 @@ public class AssessSchemeEnterListResponse
/// 审核或驳回原因 /// 审核或驳回原因
/// </summary> /// </summary>
public string? AuditRemark { get; set; } public string? AuditRemark { get; set; }
/// <summary>
/// 考核标准
/// </summary>
public string AssessNorm { get; set; }
} }
public class AssessSchemeEnterDetaiListResponse public class AssessSchemeEnterDetaiListResponse
{ {
...@@ -250,6 +286,10 @@ public class AssessSchemeEnterDetaiListResponse ...@@ -250,6 +286,10 @@ public class AssessSchemeEnterDetaiListResponse
/// 审核或驳回原因 /// 审核或驳回原因
/// </summary> /// </summary>
public string? AuditRemark { get; set; } public string? AuditRemark { get; set; }
/// <summary>
/// 考核标准
/// </summary>
public string AssessNorm { get; set; }
} }
//上传 //上传
public class AssessSchemeItemsUploadResponse public class AssessSchemeItemsUploadResponse
......
...@@ -38,6 +38,10 @@ public class per_assess_scheme ...@@ -38,6 +38,10 @@ public class per_assess_scheme
/// </summary> /// </summary>
public string SchemeName { get; set; } public string SchemeName { get; set; }
/// <summary> /// <summary>
/// 考核方案备注
/// </summary>
public string SchemeRemarks { get; set; }
/// <summary>
/// 创建人 /// 创建人
/// </summary> /// </summary>
public int CreateBy { get; set; } public int CreateBy { get; set; }
......
using Performance.EntityModels.Entity;
using System;
namespace Performance.EntityModels.Other
{
public class view_assess_result
{
/// <summary>
/// 绩效ID
/// </summary>
public Nullable<int> AllotId { get; set; }
/// <summary>
/// 考核类型ID
/// </summary>
public int AssessId { get; set; }
/// <summary>
/// 考核方案ID
/// </summary>
public int SchemeId { get; set; }
/// <summary>
/// 指标Id
/// </summary>
public int ItemId { get; set; }
/// 二级指标名称
/// </summary>
public string ItemName2 { get; set; }
/// <summary>
/// 状态
/// </summary>
public int State { get; set; }
/// <summary>
/// 分值
/// </summary>
public int Score { get; set; }
/// <summary>
/// 责任部门核算单元编码
/// </summary>
public string UnitCode { get; set; }
/// <summary>
/// 责任部门核算组别
/// </summary>
public string UnitType { get; set; }
/// <summary>
/// 责任部门核算单元
/// </summary>
public string AccountingUnit { get; set; }
/// <summary>
/// 考核目标核算单元编码
/// </summary>
public string TargetUnitCode { get; set; }
/// <summary>
/// 考核目标核算组别
/// </summary>
public string TargetUnitType { get; set; }
/// <summary>
/// 考核目标核算单元
/// </summary>
public string TargetAccountingUnit { get; set; }
}
}
...@@ -340,7 +340,6 @@ public IEnumerable<view_attendance> GetAttendance(int allotId) ...@@ -340,7 +340,6 @@ public IEnumerable<view_attendance> GetAttendance(int allotId)
/// <summary> /// <summary>
/// 考核视图 /// 考核视图
/// </summary> /// </summary>
/// <param name="categoryId"></param>
/// <param name="allotId"></param> /// <param name="allotId"></param>
/// <returns></returns> /// <returns></returns>
public IEnumerable<view_assess_issue> GetAssessIssue(int allotId) public IEnumerable<view_assess_issue> GetAssessIssue(int allotId)
...@@ -359,6 +358,26 @@ public IEnumerable<view_assess_issue> GetAssessIssue(int allotId) ...@@ -359,6 +358,26 @@ public IEnumerable<view_assess_issue> GetAssessIssue(int allotId)
} }
} }
/// <summary> /// <summary>
/// 考核结果视图
/// </summary>
/// <param name="allotId"></param>
/// <returns></returns>
public IEnumerable<view_assess_result> GetAssessResult(int allotId)
{
var connection = context.Database.GetDbConnection();
if (connection.State != ConnectionState.Open) connection.Open();
try
{
string query = $@"SELECT * FROM view_assess_result where AllotId = @allotId";
return connection.Query<view_assess_result>(query, new { allotId }, commandTimeout: 60 * 60);
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// 查询人员字典 /// 查询人员字典
/// </summary> /// </summary>
/// <param name="allotId"></param> /// <param name="allotId"></param>
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using OfficeOpenXml; using OfficeOpenXml;
using OfficeOpenXml.Style; using OfficeOpenXml.Style;
using Performance.DtoModels; using Performance.DtoModels;
...@@ -17,7 +18,7 @@ ...@@ -17,7 +18,7 @@
using System.Data; using System.Data;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Reflection;
namespace Performance.Services namespace Performance.Services
{ {
...@@ -346,6 +347,7 @@ public ApiResponse SchemeAdd(AddAssessSchemeRequest request, int userid) ...@@ -346,6 +347,7 @@ public ApiResponse SchemeAdd(AddAssessSchemeRequest request, int userid)
AssessId = request.CategoryId, AssessId = request.CategoryId,
SchemeCode = schemeCode, SchemeCode = schemeCode,
SchemeName = request.SchemeName, SchemeName = request.SchemeName,
SchemeRemarks = request.SchemeRemarks,
CreateBy = userid, CreateBy = userid,
CreateTime = dateTime, CreateTime = dateTime,
UpdateBy = userid, UpdateBy = userid,
...@@ -363,6 +365,7 @@ public ApiResponse<UpdateAssessSchemeRequest> SchemeUpdate(UpdateAssessSchemeReq ...@@ -363,6 +365,7 @@ public ApiResponse<UpdateAssessSchemeRequest> SchemeUpdate(UpdateAssessSchemeReq
var any = perforPerAssessSchemeRepository.GetEntity(w => w.Id == request.SchemeId); var any = perforPerAssessSchemeRepository.GetEntity(w => w.Id == request.SchemeId);
any.AssessId = request.CategoryId; any.AssessId = request.CategoryId;
any.SchemeName = request.SchemeName; any.SchemeName = request.SchemeName;
any.SchemeRemarks = request.SchemeRemarks;
any.UpdateBy = userid; any.UpdateBy = userid;
any.UpdateTime = DateTime.Now; any.UpdateTime = DateTime.Now;
if (perforPerAssessSchemeRepository.Update(any)) return new ApiResponse<UpdateAssessSchemeRequest>(ResponseType.OK, "修改成功"); if (perforPerAssessSchemeRepository.Update(any)) return new ApiResponse<UpdateAssessSchemeRequest>(ResponseType.OK, "修改成功");
...@@ -389,7 +392,22 @@ public string ExcelDownload(List<Dictionary<string, object>> rows, string name, ...@@ -389,7 +392,22 @@ public string ExcelDownload(List<Dictionary<string, object>> rows, string name,
{ {
var lower = item.Key.ToLower(); var lower = item.Key.ToLower();
if (lower.Contains("etime")) if (lower.Contains("etime"))
{ nobj[lower] = Convert.ToDateTime(item.Value).ToString("d"); } nobj[lower] = Convert.ToDateTime(item.Value).ToString("d");
else if (lower.Contains("results"))
{
var detRows = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(item.Value.ToString());
foreach (var detlist in detRows)
{
object value = null;
foreach (var detitem in detlist)
{
if (detitem.Key.Equals("Value", StringComparison.OrdinalIgnoreCase))
value = detitem.Value;
if (detitem.Key.Equals("Title", StringComparison.OrdinalIgnoreCase))
nobj[detitem.Value.ToString()] = value;
}
}
}
else nobj[lower] = item.Value; else nobj[lower] = item.Value;
} }
data.Add(nobj); data.Add(nobj);
...@@ -414,7 +432,7 @@ public string ExcelDownload(List<Dictionary<string, object>> rows, string name, ...@@ -414,7 +432,7 @@ public string ExcelDownload(List<Dictionary<string, object>> rows, string name,
{ {
var temp = data.ElementAt(row); var temp = data.ElementAt(row);
var low = temp.Keys.ToString().ToLower(); var low = temp.Keys.ToString().ToLower();
var value = temp[headList[col].Name.ToLower()]; var value = temp.GetValue(headList[col].Name, "");
worksheet.Cells[row + 2, col + 1].Value = value; worksheet.Cells[row + 2, col + 1].Value = value;
} }
...@@ -656,28 +674,28 @@ public ApiResponse SchemeItemsUpload(int schemeId, int allotId, IFormCollection ...@@ -656,28 +674,28 @@ public ApiResponse SchemeItemsUpload(int schemeId, int allotId, IFormCollection
var datas = ToListDictionary(dt); var datas = ToListDictionary(dt);
if (datas.Count == 0 || !datas.Any()) if (datas.Count == 0 || !datas.Any())
throw new PerformanceException("未在文件中找到数据"); throw new PerformanceException("未在文件中找到数据");
Tables error = new Tables("行", "指标编码", "一级指标名称", "二级指标名称", "考核分值", "考核标准", "核算组别", "考核负责部门", "原因"); Tables error = new Tables("行", "考核指标编码", "一级指标名称", "二级指标名称", "考核分值", "考核标准", "考核单元组别", "考核单元名称", "原因");
var upload = new List<AssessSchemeItemsUploadResponse>(); var upload = new List<AssessSchemeItemsUploadResponse>();
foreach (var item in datas.Select((value, i) => new { value, index = $"第{i + 1}行" })) foreach (var item in datas.Select((value, i) => new { value, index = $"第{i + 1}行" }))
{ {
if (string.IsNullOrEmpty(string.Join("", item.value.Values))) continue; if (string.IsNullOrEmpty(string.Join("", item.value.Values))) continue;
var eItemCode = item.value.GetOrAdd("指标编码", "")?.ToString() ?? ""; var eItemCode = item.value.GetOrAdd("考核指标编码", "")?.ToString() ?? "";
var eItemName1 = item.value.GetOrAdd("一级指标名称", "")?.ToString() ?? ""; var eItemName1 = item.value.GetOrAdd("一级指标名称", "")?.ToString() ?? "";
var eItemName2 = item.value.GetOrAdd("二级指标名称", "")?.ToString() ?? ""; var eItemName2 = item.value.GetOrAdd("二级指标名称", "")?.ToString() ?? "";
var eAssessScore = item.value.GetOrAdd("考核分值", "")?.ToString() ?? ""; var eAssessScore = item.value.GetOrAdd("考核分值", "")?.ToString() ?? "";
var eAssessNorm = item.value.GetOrAdd("考核标准", "")?.ToString() ?? ""; var eAssessNorm = item.value.GetOrAdd("考核标准", "")?.ToString() ?? "";
var eUnitType = item.value.GetOrAdd("核算组别", "")?.ToString() ?? ""; var eUnitType = item.value.GetOrAdd("考核单元组别", "")?.ToString() ?? "";
var eAccountingUnit = item.value.GetOrAdd("考核负责部门", "")?.ToString() ?? ""; var eAccountingUnit = item.value.GetOrAdd("考核单元名称", "")?.ToString() ?? "";
eAssessScore = String.IsNullOrEmpty(eAssessScore) ? "0" : eAssessScore; eAssessScore = String.IsNullOrEmpty(eAssessScore) ? "0" : eAssessScore;
error.AddIf(string.IsNullOrEmpty(eItemName1), item.index, eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "一级指标名称空值无效,请检查后重试!"); error.AddIf(string.IsNullOrEmpty(eItemName1), item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "一级指标名称空值无效,请检查后重试!");
error.AddIf(string.IsNullOrEmpty(eItemName2), item.index, eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "二级指标名称空值无效,请检查后重试!"); error.AddIf(string.IsNullOrEmpty(eItemName2), item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "二级指标名称空值无效,请检查后重试!");
error.AddIf(string.IsNullOrEmpty(eAssessNorm), item.index, eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核标准空值无效,请检查后重试!"); error.AddIf(!int.TryParse(eAssessScore, out int eAScore), item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核分值填写无效,请检查后重试!");
error.AddIf(string.IsNullOrEmpty(eUnitType), item.index, eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "核算组别空值无效,请检查后重试!"); error.AddIf(eAScore == 0, item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核分值不能为0,请检查后重试!");
error.AddIf(string.IsNullOrEmpty(eAccountingUnit), item.index, eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核负责部门空值无效,请检查后重试!"); error.AddIf(string.IsNullOrEmpty(eAssessNorm), item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核标准空值无效,请检查后重试!");
error.AddIf(!int.TryParse(eAssessScore, out int eAScore), item.index, eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核分值填写无效,请检查后重试!"); error.AddIf(string.IsNullOrEmpty(eUnitType), item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核单元组别空值无效,请检查后重试!");
error.AddIf(eAScore == 0, item.index, eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核分值不能为0,请检查后重试!"); error.AddIf(string.IsNullOrEmpty(eAccountingUnit), item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "考核单元名称空值无效,请检查后重试!");
var cofaccountingdata = cofaccountingdatas.FirstOrDefault(w => w.AccountingUnit == eAccountingUnit && w.UnitType == eUnitType); var cofaccountingdata = cofaccountingdatas.FirstOrDefault(w => w.AccountingUnit == eAccountingUnit && w.UnitType == eUnitType);
error.AddIf(cofaccountingdata == null, item.index, eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "未找到考核负责部门,请检查后重试!"); error.AddIf(cofaccountingdata == null, item.index, "", eItemName1, eItemName2, eAssessScore, eAssessNorm, eAccountingUnit, "未找到相关考核单元组别或者考核单元名称,请检查后重试!");
if (cofaccountingdata == null) continue; if (cofaccountingdata == null) continue;
var itemsData = itemsDatas.FirstOrDefault(w => w.ItemCode == eItemCode); var itemsData = itemsDatas.FirstOrDefault(w => w.ItemCode == eItemCode);
var data = new AssessSchemeItemsUploadResponse(); var data = new AssessSchemeItemsUploadResponse();
...@@ -810,12 +828,13 @@ public ApiResponse<List<AssessSchemeEnterListResponse>> SchemeEnterList(int allo ...@@ -810,12 +828,13 @@ public ApiResponse<List<AssessSchemeEnterListResponse>> SchemeEnterList(int allo
if (unitTypes?.Any() == true) if (unitTypes?.Any() == true)
issueSchemes = issueSchemes.Where(w => w.AccountingUnit == userInfo.User.Department && UnitTypeUtil.Is(w.UnitType, unitTypes)).ToList(); issueSchemes = issueSchemes.Where(w => w.AccountingUnit == userInfo.User.Department && UnitTypeUtil.Is(w.UnitType, unitTypes)).ToList();
var stateOrders = new int[] { (int)Assess.AssessState.待审核, (int)Assess.AssessState.驳回, (int)Assess.AssessState.审核通过, (int)Assess.AssessState.未提交 }; var stateOrders = new int[] { (int)Assess.AssessState.待审核, (int)Assess.AssessState.驳回, (int)Assess.AssessState.审核通过, (int)Assess.AssessState.未提交 };
var items = issueSchemes.GroupBy(w => new { w.AssessId, w.AssessCode, w.AssessName, w.ItemId, w.ItemCode, w.ItemName2, w.UnitType, w.AccountingUnit }) var items = issueSchemes.GroupBy(w => new { w.AssessId, w.AssessCode, w.AssessName, w.AssessNorm, w.ItemId, w.ItemCode, w.ItemName2, w.UnitType, w.AccountingUnit })
.Select(w => new AssessSchemeEnterListResponse .Select(w => new AssessSchemeEnterListResponse
{ {
AssessId = w.Key.AssessId, AssessId = w.Key.AssessId,
AssessCode = w.Key.AssessCode, AssessCode = w.Key.AssessCode,
AssessName = w.Key.AssessName, AssessName = w.Key.AssessName,
AssessNorm = w.Key.AssessNorm,
UnitType = w.Key.UnitType, UnitType = w.Key.UnitType,
AccountingUnit = w.Key.AccountingUnit, AccountingUnit = w.Key.AccountingUnit,
ItemId = w.Key.ItemId, ItemId = w.Key.ItemId,
...@@ -844,19 +863,90 @@ public ApiResponse<List<AssessSchemeEnterListResponse>> SchemeEnterList(int allo ...@@ -844,19 +863,90 @@ public ApiResponse<List<AssessSchemeEnterListResponse>> SchemeEnterList(int allo
items = items.OrderBy(w => stateOrders.Contains(w.State) ? Array.IndexOf(stateOrders, w.State) : int.MaxValue).ToList(); items = items.OrderBy(w => stateOrders.Contains(w.State) ? Array.IndexOf(stateOrders, w.State) : int.MaxValue).ToList();
return new ApiResponse<List<AssessSchemeEnterListResponse>>(ResponseType.OK, items); return new ApiResponse<List<AssessSchemeEnterListResponse>>(ResponseType.OK, items);
} }
public PagedList<AssessSchemeResultListResponse> SchemeResultList(QuerySchemeResultList query)
{
var allot = perforPerallotRepository.GetEntity(w => w.ID == query.AllotId);
if (allot == null)
throw new PerformanceException("当前绩效记录不存在");
var viewAResult = perforPerallotRepository.GetAssessResult(query.AllotId);
var viewAResultQuery = viewAResult.AsQueryable();
if (query.SchemeId > 0)
viewAResultQuery = viewAResultQuery.Where(w => w.SchemeId == query.SchemeId);
if (!string.IsNullOrEmpty(query.TargetUnitType))
viewAResultQuery = viewAResultQuery.Where(w => w.TargetUnitType == query.TargetUnitType);
if (!string.IsNullOrEmpty(query.TargetAccountingUnit))
viewAResultQuery = viewAResultQuery.Where(w => w.TargetAccountingUnit == query.TargetAccountingUnit);
if (!string.IsNullOrEmpty(query.ItemName2))
viewAResultQuery = viewAResultQuery.Where(w => w.ItemName2 == query.ItemName2);
var result = viewAResultQuery.ToList();
var data = result.Select(item =>
{
return new AssessSchemeResultListResponse()
{
TargetUnitType = item.TargetUnitType,
TargetAccountingUnit = item.TargetAccountingUnit,
ItemName2 = item.ItemName2,
Score = item.Score,
};
}).ToList();
var columns = data.Select(item => item.ItemName2).Distinct().ToList();
var results = data.GroupBy(item => new { item.TargetUnitType, item.TargetAccountingUnit })
.Select(t =>
{
var dict = new Dictionary<string, object>
{
{ "TargetUnitType" , t.Key.TargetUnitType },
{ "TargetAccountingUnit" , t.Key.TargetAccountingUnit },
};
var asb = new List<AssessSchemeDictionaryResults>();
foreach (var column in columns)
{
var score = t.Where(w => w.ItemName2 == column).Sum(w => w.Score);
dict.Add(column, score);
var a = new AssessSchemeDictionaryResults()
{
Title = column,
Value = score
};
asb.Add(a);
}
var totalAssessScore = dict.Where(w => columns.Contains(w.Key)).Sum(w => (int)w.Value);
dict.AddOrUpdate("TotalAssessScore", totalAssessScore);
return new AssessSchemeResultListResponse()
{
TargetUnitType = t.Key.TargetUnitType,
TargetAccountingUnit = t.Key.TargetAccountingUnit,
DictionaryResults = asb,
TotalAssessScore = totalAssessScore
};
}).ToList();
var totalItems = results.Count();
var pagedIssueSchemes = results.Skip((query.Page - 1) * query.PageSize).Take(query.PageSize).ToList();
return new PagedList<AssessSchemeResultListResponse>(pagedIssueSchemes, query.Page, query.PageSize, totalItems);
}
public PagedList<AssessSchemeEnterDetaiListResponse> SchemeEnterDetailList(QuerySchemeEnterDetailList query) public PagedList<AssessSchemeEnterDetaiListResponse> SchemeEnterDetailList(QuerySchemeEnterDetailList query)
{ {
var issueSchemes = perforPerAssessIssueSchemeRepository.GetEntities(w => w.AllotId == query.AllotId && w.ItemId == query.ItemId); var issueSchemes = perforPerAssessIssueSchemeRepository.GetEntities(w => w.AllotId == query.AllotId);
issueSchemes = issueSchemes.Where(w => if (!issueSchemes.Any())
(string.IsNullOrEmpty(query.TargetUnitType) || w.TargetUnitType.Contains(query.TargetUnitType)) && throw new PerformanceException("暂无数据");
(string.IsNullOrEmpty(query.TargetAccountingUnit) || w.AccountingUnit.Contains(query.TargetAccountingUnit)) && var issueSchemesQuery = issueSchemes.AsQueryable();
(string.IsNullOrEmpty(query.ItemName2) || w.ItemName2.Contains(query.ItemName2)) if (query.ItemId > 0)
).ToList(); issueSchemesQuery = issueSchemesQuery.Where(w => w.ItemId == query.ItemId);
if (!string.IsNullOrEmpty(query.TargetUnitType))
issueSchemesQuery = issueSchemesQuery.Where(w => w.TargetUnitType == query.TargetUnitType);
if (!string.IsNullOrEmpty(query.TargetAccountingUnit))
issueSchemesQuery = issueSchemesQuery.Where(w => w.TargetAccountingUnit == query.TargetAccountingUnit);
if (!string.IsNullOrEmpty(query.ItemName2))
issueSchemesQuery = issueSchemesQuery.Where(w => w.ItemName2 == query.ItemName2);
if ((int)query.State == (int)Assess.AssessState.审核通过)
issueSchemesQuery = issueSchemesQuery.Where(w => w.State == (int)query.State);
var result = issueSchemesQuery.ToList();
var stateOrders = new int[] { (int)Assess.AssessState.待审核, (int)Assess.AssessState.驳回, (int)Assess.AssessState.审核通过, (int)Assess.AssessState.未提交 }; var stateOrders = new int[] { (int)Assess.AssessState.待审核, (int)Assess.AssessState.驳回, (int)Assess.AssessState.审核通过, (int)Assess.AssessState.未提交 };
var datas = mapper.Map<List<AssessSchemeEnterDetaiListResponse>>(issueSchemes); var datas = mapper.Map<List<AssessSchemeEnterDetaiListResponse>>(result);
datas = datas.OrderBy(w => stateOrders.Contains(w.State) ? Array.IndexOf(stateOrders, w.State) : int.MaxValue).ToList(); datas = datas.OrderBy(w => stateOrders.Contains(w.State) ? Array.IndexOf(stateOrders, w.State) : int.MaxValue).ToList();
var totalItems = issueSchemes.Count(); var totalItems = datas.Count();
var pagedIssueSchemes = datas.Skip((query.Page - 1) * query.PageSize).Take(query.PageSize).ToList(); var pagedIssueSchemes = datas.Skip((query.Page - 1) * query.PageSize).Take(query.PageSize).ToList();
return new PagedList<AssessSchemeEnterDetaiListResponse>(pagedIssueSchemes, query.Page, query.PageSize, totalItems); return new PagedList<AssessSchemeEnterDetaiListResponse>(pagedIssueSchemes, query.Page, query.PageSize, totalItems);
} }
......
...@@ -2594,7 +2594,7 @@ public string ExcelDownload(List<Dictionary<string, object>> rows, string name, ...@@ -2594,7 +2594,7 @@ public string ExcelDownload(List<Dictionary<string, object>> rows, string name,
{ {
var temp = data.ElementAt(row); var temp = data.ElementAt(row);
var low = temp.Keys.ToString().ToLower(); var low = temp.Keys.ToString().ToLower();
var value = temp[headList[col].Name.ToLower()]; var value = temp.GetValue(headList[col].Name, "");
worksheet.Cells[row + 3, col + 1].Value = value; worksheet.Cells[row + 3, col + 1].Value = value;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment