培训模块Excel导出检核

master
xiaochanghai 10 months ago
parent 45b5ea36fb
commit 4d3298ba61
  1. 137
      Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordController.cs
  2. 8
      Tiobon.Core.IServices/Ghre/IGhre_ExamRecordServices.cs
  3. 2
      Tiobon.Core.Model/View/Ghre/Ghre_ExamRecord.Dto.View.cs
  4. 1
      Tiobon.Core.Services/CommonServices.cs
  5. 5
      Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs

@ -1,4 +1,10 @@
namespace Tiobon.Core.Api.Controllers;
using System.Collections;
using System.Data;
using System.Reflection;
using SqlSugar;
using Tiobon.Core.Common.DB.Dapper;
namespace Tiobon.Core.Api.Controllers;
/// <summary>
/// 考试记录(Controller)
@ -114,4 +120,133 @@ public class Ghre_ExamRecordController : BaseController<IGhre_ExamRecordServices
{
return await _service.ViewExamPaperCallBackAsync(examRecordId);
}
[HttpPost, Route("ExportExcel/{examId}")]
public async Task<ServiceResult<ExcelData>> ExportExcel([FromBody] QueryExport body, long examId)
{
QueryBody filter = new QueryBody();
filter.pageNum = 1;
filter.pageSize = 1000000;
filter.langId = body.langId;
var condition = $"ExamId='{examId}'";
if (body.exportSet.SelectRowKeys != null && body.exportSet.SelectRowKeys.Any())
condition += $" AND Id IN({string.Join(",", body.exportSet.SelectRowKeys)})";
var data = await _service.QueryFilterPage(filter, condition);
//var data = await _service.Query(examId, filter) QueryTotal(filter, condition);
string sql = $@"SELECT *
FROM Ghrs_PageSettingQuery
WHERE IsEnable = 1
AND PageNo = '{body.menuName}'
AND (defaultHidden = 'false' OR defaultHidden is null)
ORDER BY SortNo ASC";
var columns = DbAccess.QueryList<QueryExportColumn>(sql);
var fieldDescs = new Dictionary<string, string>();
if (body.exportSet.ExFields.Any())
body.exportSet.ExFields.ForEach(x =>
{
if (columns.Any(o => o.field == x))
fieldDescs.Add(x, columns.FirstOrDefault(o => o.field == x)?.label);
});
else
fieldDescs = columns.ToDictionary(item => item.field, item => item.label);
var dt = ToDataTable1(data.result.DT_TableDataT1, fieldDescs, null);
// 获取所有列名
var dtColumns = dt.Columns;
var id = SnowFlakeSingle.instance.getID();
var physicsPath = $"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}wwwroot";
var path = $"{$"{Path.DirectorySeparatorChar}files{Path.DirectorySeparatorChar}export{Path.DirectorySeparatorChar}{id}{Path.DirectorySeparatorChar}"}";
if (!Directory.Exists(physicsPath + path))
Directory.CreateDirectory(physicsPath + path);
path = path + body.exportSet.TitleName + ".xlsx";
NPOIHelper.ExportExcel(dt, body.exportSet.TitleName, "sheet1", physicsPath + path);
var result = new ExcelData();
result.filePath = path;
result.fileName = body.exportSet.TitleName + ".xlsx";
return ServiceResult<ExcelData>.OprateSuccess("导出成功", result);
}
public static DataTable ToDataTable1(List<Ghre_ExamRecordDto> list, Dictionary<string, string> fieldDescs = null, params string[] propertyName)
{
var (fields, colunms) = Sort(fieldDescs, null);
List<string> propertyNameList = new List<string>();
if (propertyName != null)
{
propertyNameList.AddRange(propertyName);
}
DataTable result = new DataTable();
if (list.Count > 0)
{
PropertyInfo[] propertys = list[0].GetType().GetProperties();
for (int i = 0; i < fields.Count; i++)
{
foreach (PropertyInfo pi in propertys)
{
if (propertyNameList.Count == 0)
{
//if (DBNull.Value.Equals(pi.PropertyType))
//{
// // pi.PropertyType = DateTime;
//}
Type colType = pi.PropertyType;
if (colType.IsGenericType && colType.GetGenericTypeDefinition() == typeof(Nullable<>))
{
colType = colType.GetGenericArguments()[0];
}
if (fields[i] == pi.Name)
{
if (!result.Columns.Contains(colunms[i]))
result.Columns.Add(colunms[i], colType);
}
//result.Columns.Add(pi.Name, pi.PropertyType);
}
else
{
if (propertyNameList.Contains(pi.Name))
{
if (fields[i] == pi.Name)
result.Columns.Add(fields[i], pi.PropertyType);
}
}
}
}
for (int i = 0; i < list.Count; i++)
{
ArrayList tempList = new ArrayList();
for (int j = 0; j < fields.Count; j++)
{
foreach (PropertyInfo pi in propertys)
{
if (fields[j] == pi.Name)
{
if (propertyNameList.Count == 0)
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
else
{
if (propertyNameList.Contains(pi.Name))
{
object obj = pi.GetValue(list[i], null);
tempList.Add(obj);
}
}
}
}
}
object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
}
}

@ -8,11 +8,11 @@ namespace Tiobon.Core.IServices
/// <summary>
/// 考试记录(自定义服务接口)
/// </summary>
public interface IGhre_ExamRecordServices :IBaseServices<Ghre_ExamRecord, Ghre_ExamRecordDto, InsertGhre_ExamRecordInput, EditGhre_ExamRecordInput>
{
Task<ServicePageResult<Ghre_ExamRecordDto>> Query(string examId, QueryBody body);
public interface IGhre_ExamRecordServices : IBaseServices<Ghre_ExamRecord, Ghre_ExamRecordDto, InsertGhre_ExamRecordInput, EditGhre_ExamRecordInput>
{
Task<ServicePageResult<Ghre_ExamRecordDto>> Query(string examId, QueryBody body);
Task<ServiceResult> ModifyAdjustScore(string examRecordId, EditGhre_ExamRecordInput edit);
Task<ServiceResult> ModifyAdjustScore(string examRecordId, EditGhre_ExamRecordInput edit);
Task<ServiceResult<Ghre_ExamRecordExtend>> ExtendAsync(long examRecordId);

@ -43,7 +43,7 @@ public class Ghre_ExamRecordDto : Ghre_ExamRecord
public string TitleName { get; set; }
public DateTime? Indate { get; set; }
public string InStatus { get; set; }
public string ExamDate { get; set; }
public string ExamDate1 { get; set; }
public string StaffPhotoUrl { get; set; }
public string ExamNo { get; set; }
public string ExamName { get; set; }

@ -1075,6 +1075,7 @@ public partial class CommonServices : BaseServices<RootEntityTkey<int>>, ICommon
case "F_OnlineExamScores":
result.DT_Procedure.QueryProcedure = dt.Rows[0]["QueryProcedure"].ToString();
result.DT_Procedure.QueryProcedure += "/" + param.jsonParam.MasterId;
result.DT_Procedure.ExportExcel += "/" + param.jsonParam.MasterId;
toolbar = result.JM_PageControlT1.Toolbar.Where(x => x.fnKey == "DetailYN").FirstOrDefault();
if (toolbar != null) { toolbar.fnKey = "TBD3YN"; }

@ -119,8 +119,11 @@ public class Ghre_ExamRecordServices : BaseServices<Ghre_ExamRecord, Ghre_ExamRe
//x.InStatusLabel = x.InStatus == "1" ? "在职" : null;
//x.InStatusLabel = x.InStatus == "2" ? "离职" : null;
//x.InStatusLabel = x.InStatus == "0" ? "未入职" : null;
if (!x.ExamDate.IsNull())
x.ExamDate1 = DateTimeHelper.ConvertToDayString(x.ExamDate);
if (x.BeginTime != null)
x.ExamDate = x.BeginTime.Value.ToString("yyyy-MM-dd");
x.ExamDate1 = x.BeginTime.Value.ToString("yyyy-MM-dd");
x.TotalScore += x.Score ?? 0;

Loading…
Cancel
Save