Commit 6abb1e02 by wyc

考核管理下载和分页

parent eda39454
......@@ -130,13 +130,14 @@ public ApiResponse CategoryIssueConfirm([FromBody] BatchAssessCategoryRequest re
/// <summary>
/// 考核方案列表
/// </summary>
/// <param name="categoryId"></param>
/// <param name="query"></param>
/// <returns></returns>
[HttpPost]
[Route("scheme/list")]
public ApiResponse<List<AssessSchemeDataResponse>> SchemeList([FromQuery] int categoryId)
[ProducesResponseType(typeof(PagedList<AssessSchemeDataResponse>), StatusCodes.Status200OK)]
public ApiResponse SchemeList([FromBody] QuerySchemeList query)
{
return _service.SchemeList(categoryId);
return new ApiResponse(ResponseType.OK, "", _service.SchemeList(query));
}
/// <summary>
/// 考核方案新增
......@@ -185,23 +186,30 @@ public ApiResponse SchemeDelete([FromBody] BatchAssessSchemeRequest request)
/// <summary>
/// 考核方案下载
/// </summary>
/// <param name="categoryId"></param>
/// <remarks>
/// 空数据时也要能下载,下载的数据只有对应的列头数据
/// </remarks>
/// <param name="query"></param>
/// <returns></returns>
[HttpPost]
[Route("scheme/download")]
[Produces("application/octet-stream", Type = typeof(FileResult))]
public IActionResult SchemeDownload([FromQuery] int categoryId)
public IActionResult SchemeDownload([FromBody] AddAssessSchemeRequest query)
{
List<ExcelDownloadHeads> excelDownloadHeads = new List<ExcelDownloadHeads>()
{
new ExcelDownloadHeads { Alias = "考核方案ID", Name = nameof(RecordAssessScheme.SchemeCode) },
new ExcelDownloadHeads { Alias = "考核方案名称", Name = nameof(RecordAssessScheme.SchemeName) },
new ExcelDownloadHeads { Alias = "考核方案类型", Name = nameof(RecordAssessScheme.AssessName) },
new ExcelDownloadHeads { Alias = "创建时间", Name = nameof(RecordAssessScheme.CreateTime) },
new ExcelDownloadHeads { Alias = "最后修改时间", Name = nameof(RecordAssessScheme.UpdateTime) },
};
var result = _service.SchemeList(categoryId).Data;
var q = new QuerySchemeList
{
Page = 1,
PageSize = int.MaxValue,
AllotId = query.AllotId,
CategoryId = query.CategoryId,
SchemeName = query.SchemeName,
};
var result = _service.SchemeList(q).Data;
var ser = JsonConvert.SerializeObject(result);
var rows = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(ser);
......@@ -243,9 +251,10 @@ public IActionResult SchemeDownload([FromQuery] int categoryId)
/// <returns></returns>
[HttpPost]
[Route("scheme/items/list")]
public PagedList<per_assess_scheme_items> SchemeItemsList([FromBody] QuerySchemeItemsList query)
[ProducesResponseType(typeof(PagedList<AssessSchemeDataResponse>), StatusCodes.Status200OK)]
public ApiResponse SchemeItemsList([FromBody] QuerySchemeItemsList query)
{
return _service.SchemeItemsList(query);
return new ApiResponse(ResponseType.OK, "", _service.SchemeItemsList(query));
}
/// <summary>
/// 考核指标项新增
......@@ -304,7 +313,11 @@ public IActionResult SchemeItemsDownload([FromBody] QuerySchemeItemsList query)
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.AccountingUnit) },
new ExcelDownloadHeads { Alias = "创建时间", Name = nameof(per_assess_scheme_items.CreateTime) },
new ExcelDownloadHeads { Alias = "最后修改时间", Name = nameof(per_assess_scheme_items.UpdateTime) },
};
query.Page = 1;
query.PageSize = int.MaxValue;
var result = _service.SchemeItemsList(query).Data;
var ser = JsonConvert.SerializeObject(result);
var rows = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(ser);
......@@ -382,7 +395,7 @@ public ApiResponse SchemeItemsTargetEdit([FromBody] TargetSchemeItemsTargetEdit
/// <returns></returns>
[HttpPost]
[Route("scheme/items/target/delete")]
public ApiResponse SchemeItemsTargetDelete([FromBody] TargetSchemeItemsTargetDelete delete)
public ApiResponse SchemeItemsTargetDelete([FromBody] TargetSchemeItemsTargetDelete delete)
{
return _service.SchemeItemsTargetDelete(delete);
}
......@@ -409,10 +422,12 @@ public ApiResponse<List<AssessSchemeEnterListResponse>> SchemeEnterList([FromQue
/// <returns></returns>
[HttpPost]
[Route("scheme/enter/detail/list")]
public PagedList<AssessSchemeEnterDetaiListResponse> SchemeEnterDetailList([FromBody] QuerySchemeEnterDetailList query)
[ProducesResponseType(typeof(PagedList<AssessSchemeEnterDetaiListResponse>), StatusCodes.Status200OK)]
public ApiResponse SchemeEnterDetailList([FromBody] QuerySchemeEnterDetailList query)
{
return _service.SchemeEnterDetailList(query);
return new ApiResponse(ResponseType.OK, "", _service.SchemeEnterDetailList(query));
}
/// <summary>
/// 核算单元上报考核指标项修改
/// </summary>
......@@ -513,7 +528,11 @@ public IActionResult SchemeEnterDownload([FromBody] QuerySchemeEnterDetailList q
new ExcelDownloadHeads { Alias = "考核分值", Name = nameof(AssessSchemeEnterDetaiListResponse.AssessScore) },
new ExcelDownloadHeads { Alias = "考核扣分", Name = nameof(AssessSchemeEnterDetaiListResponse.Score) },
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.PageSize = int.MaxValue;
var result = _service.SchemeEnterDetailList(query).Data;
var ser = JsonConvert.SerializeObject(result);
var rows = JsonConvert.DeserializeObject<List<Dictionary<string, object>>>(ser);
......
......@@ -369,11 +369,11 @@
<param name="request"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AssessNewController.SchemeList(System.Int32)">
<member name="M:Performance.Api.Controllers.AssessNewController.SchemeList(Performance.DtoModels.Request.QuerySchemeList)">
<summary>
考核方案列表
</summary>
<param name="categoryId"></param>
<param name="query"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AssessNewController.SchemeAdd(Performance.DtoModels.Request.AddAssessSchemeRequest)">
......@@ -406,14 +406,11 @@
</remarks>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AssessNewController.SchemeDownload(System.Int32)">
<member name="M:Performance.Api.Controllers.AssessNewController.SchemeDownload(Performance.DtoModels.Request.AddAssessSchemeRequest)">
<summary>
考核方案下载
</summary>
<param name="categoryId"></param>
<remarks>
空数据时也要能下载,下载的数据只有对应的列头数据
</remarks>
<param name="query"></param>
<returns></returns>
</member>
<member name="M:Performance.Api.Controllers.AssessNewController.SchemeItemsList(Performance.DtoModels.Request.QuerySchemeItemsList)">
......
......@@ -16,8 +16,8 @@ public class QuerySchemeEnterDetailList
/// 二级指标名称
/// </summary>
public string? ItemName2 { get; set; }
public int Page { get; set; } = 0;
public int PageSize { get; set; } = 0;
public int Page { get; set; } = 1;
public int PageSize { get; set; } = 20;
}
public class EditSchemeEnterAudit
......
......@@ -66,8 +66,8 @@ public class QuerySchemeItemsList
/// 二级指标名称
/// </summary>
public string? ItemName2 { get; set; }
public int Page { get; set; } = 0;
public int PageSize { get; set; } = 0;
public int Page { get; set; } = 1;
public int PageSize { get; set; } = 20;
}
public class TargetAssessSchemeItemsRequest
{
......
......@@ -2,6 +2,7 @@
{
public class AddAssessSchemeRequest
{
public int AllotId { get; set; }
public int CategoryId { get; set; }
public string SchemeName { get; set; }
}
......@@ -13,6 +14,13 @@ public class BatchAssessSchemeRequest
{
public int[] SchemeId { get; set; }
}
public class QuerySchemeList : AddAssessSchemeRequest
{
public int Page { get; set; } = 1;
public int PageSize { get; set; } = 20;
}
public class RecordAssessScheme : AssessSchemeDataResponse
{
......
......@@ -350,7 +350,7 @@ public IEnumerable<view_assess_issue> GetAssessIssue(int[] categoryId, int allot
if (connection.State != ConnectionState.Open) connection.Open();
try
{
string query = $@"SELECT * FROM view_assess_issue where AssessId = @categoryId and AllotId = @allotId";
string query = $@"SELECT * FROM view_assess_issue where AssessId in @categoryId and AllotId = @allotId";
return connection.Query<view_assess_issue>(query, new { categoryId, allotId }, commandTimeout: 60 * 60);
}
catch (Exception)
......
......@@ -291,14 +291,26 @@ public ApiResponse CategoryIssueConfirm(BatchAssessCategoryRequest request, int
#endregion
#region 考核方案
public ApiResponse<List<AssessSchemeDataResponse>> SchemeList(int categoryId)
public PagedList<AssessSchemeDataResponse> SchemeList(QuerySchemeList query)
{
var scheme = perforPerAssessSchemeRepository.GetEntities(t => t.AssessId == categoryId).ToList();
var category = perforPerAssessCategoryRepository.GetEntities().FirstOrDefault(t => t.Id == categoryId);
var scheme = perforPerAssessSchemeRepository.GetEntities(t => t.AllotId == query.AllotId);
var category = perforPerAssessCategoryRepository.GetEntities(t => t.AllotId == query.AllotId);
if (query.CategoryId > 0)
{
scheme = scheme.Where(w => w.AssessId == query.CategoryId).ToList();
category = category.Where(w => w.Id == query.CategoryId).ToList();
}
var result = mapper.Map<List<AssessSchemeDataResponse>>(scheme);
result.ForEach(t => t.AssessName = category.AssessName);
foreach (var item in result)
{
item.AssessName = category.FirstOrDefault(w => w.Id == item.AssessId).AssessName;
}
result = result.OrderByDescending(w => w.UpdateTime).ToList();
return new ApiResponse<List<AssessSchemeDataResponse>>(ResponseType.OK, result);
if (!string.IsNullOrEmpty(query.SchemeName))
result = result.Where(w => w.SchemeName.Contains(query.SchemeName)).ToList();
var totalItems = result.Count();
var pagedIssueSchemes = result.Skip((query.Page - 1) * query.PageSize).Take(query.PageSize);
return new PagedList<AssessSchemeDataResponse>(result, totalItems, query.Page, query.PageSize);
}
public ApiResponse<AddAssessSchemeRequest> SchemeAdd(AddAssessSchemeRequest request, int userid)
{
......@@ -369,7 +381,9 @@ public string ExcelDownload(List<Dictionary<string, object>> rows, string name,
foreach (var item in obj)
{
var lower = item.Key.ToLower();
nobj[lower] = item.Value;
if (lower.Contains("etime"))
{ nobj[lower] = Convert.ToDateTime(item.Value).ToString("d"); }
else nobj[lower] = item.Value;
}
data.Add(nobj);
}
......@@ -383,40 +397,44 @@ public string ExcelDownload(List<Dictionary<string, object>> rows, string name,
using (ExcelPackage package = new ExcelPackage(fs))
{
var worksheet = package.Workbook.Worksheets.Add(name);
for (int col = 0; col < headList.Count; col++)
{
worksheet.SetValue(1, col + 1, headList[col].Alias);
}
for (int col = 0; col < headList.Count; col++)
if (rows != null && rows.Count() > 0)
{
for (int row = 0; row < data.Count(); row++)
for (int col = 0; col < headList.Count; col++)
{
var temp = data.ElementAt(row);
var low = temp.Keys.ToString().ToLower();
var value = temp[headList[col].Name.ToLower()];
worksheet.SetValue(1, col + 1, headList[col].Alias);
}
for (int col = 0; col < headList.Count; col++)
{
for (int row = 0; row < data.Count(); row++)
{
var temp = data.ElementAt(row);
var low = temp.Keys.ToString().ToLower();
var value = temp[headList[col].Name.ToLower()];
worksheet.Cells[row + 2, col + 1].Value = value;
worksheet.Cells[row + 2, col + 1].Value = value;
}
}
}
#region 样式设置
for (int row = worksheet.Dimension.Start.Row; row <= worksheet.Dimension.End.Row; row++)
{
worksheet.Row(row).Height = 20;
#region 样式设置
for (int row = worksheet.Dimension.Start.Row; row <= worksheet.Dimension.End.Row; row++)
{
worksheet.Row(row).Height = 20;
for (int col = worksheet.Dimension.Start.Column; col <= worksheet.Dimension.End.Column; col++)
{
worksheet.Cells[row, col].Style.Border.BorderAround(ExcelBorderStyle.Thin);
worksheet.Cells[row, col].Style.VerticalAlignment = ExcelVerticalAlignment.Center;
worksheet.Cells[row, col].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
}
}
worksheet.Cells[1, 1, 1, headList.Count].Style.Font.Bold = true;
worksheet.View.FreezePanes(1, 1);
worksheet.Cells.AutoFitColumns();
for (int col = worksheet.Dimension.Start.Column; col <= worksheet.Dimension.End.Column; col++)
{
worksheet.Cells[row, col].Style.Border.BorderAround(ExcelBorderStyle.Thin);
worksheet.Cells[row, col].Style.VerticalAlignment = ExcelVerticalAlignment.Center;
worksheet.Cells[row, col].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
worksheet.Column(col).Width = worksheet.Column(col).Width > 20 ? 20 : worksheet.Column(col).Width;
}
#endregion
}
worksheet.Cells[1, 1, 1, headList.Count].Style.Font.Bold = true;
worksheet.View.FreezePanes(1, 1);
worksheet.Cells.AutoFitColumns();
for (int col = worksheet.Dimension.Start.Column; col <= worksheet.Dimension.End.Column; col++)
{
worksheet.Column(col).Width = worksheet.Column(col).Width > 20 ? 20 : worksheet.Column(col).Width;
}
#endregion
package.Save();
}
return filepath;
......@@ -430,9 +448,7 @@ public PagedList<per_assess_scheme_items> SchemeItemsList(QuerySchemeItemsList q
result = result.Where(w => (string.IsNullOrEmpty(query.UnitType) || w.UnitType.Contains(query.UnitType))
&& (string.IsNullOrEmpty(query.AccountingUnit) || w.AccountingUnit.Contains(query.AccountingUnit))
&& (string.IsNullOrEmpty(query.ItemName2) || w.ItemName2.Contains(query.ItemName2))).ToList();
var totalItems = result.FirstOrDefault() == null ? 0 : result.Count();
if (query.PageSize <= 0)
query.PageSize = totalItems;
var totalItems = result.Count();
var pagedIssueSchemes = result.Skip((query.Page - 1) * query.PageSize).Take(query.PageSize);
return new PagedList<per_assess_scheme_items>(result, totalItems, query.Page, query.PageSize);
}
......@@ -830,9 +846,7 @@ public PagedList<AssessSchemeEnterDetaiListResponse> SchemeEnterDetailList(Query
(string.IsNullOrEmpty(query.ItemName2) || w.ItemName2.Contains(query.ItemName2))
).ToList();
var stateOrders = new int[] { (int)Assess.AssessState.待审核, (int)Assess.AssessState.驳回, (int)Assess.AssessState.审核通过, (int)Assess.AssessState.未提交 };
var totalItems = issueSchemes.FirstOrDefault() == null ? 0 : issueSchemes.Count();
if (query.PageSize <= 0)
query.PageSize = totalItems;
var totalItems = issueSchemes.Count();
var pagedIssueSchemes = issueSchemes.Skip((query.Page - 1) * query.PageSize).Take(query.PageSize);
var datas = mapper.Map<List<AssessSchemeEnterDetaiListResponse>>(pagedIssueSchemes);
datas = datas.OrderBy(w => stateOrders.Contains(w.State) ? Array.IndexOf(stateOrders, w.State) : int.MaxValue).OrderByDescending(w => w.UpdateTime).ToList();
......
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