Commit 6abb1e02 by wyc

考核管理下载和分页

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