namespace SHJX.Service.Control.Utils { public class ExportFile { private readonly ReadConfigUtil _readConfig; private readonly IDataManager _dataManager; public ExportFile(ReadConfigUtil readConfig, IDataManager dataManager) { _readConfig = readConfig; _dataManager = dataManager; } public void ExportExcel(List tasks) { DataTable dt = new("Result"); dt.Columns.Add("类型", Type.GetType("System.String")!); dt.Columns.Add("样品编号", Type.GetType("System.String")!); dt.Columns.Add("取样体积", Type.GetType("System.String")!); dt.Columns.Add("取样倍数", Type.GetType("System.String")!); dt.Columns.Add("滴定体积", Type.GetType("System.String")!); dt.Columns.Add("结果", Type.GetType("System.String")!); dt.Columns.Add("分析时间", Type.GetType("System.String")!); List calibrationTasks = tasks.Where(item => item.TaskType.Equals(TaskTypeName.CALIBRATION_ZH)).ToList(); if (calibrationTasks is null or { Count: 0 }) { calibrationTasks = SearchOtherTask(TaskTypeName.CALIBRATION_ZH); } if (calibrationTasks is not null) { InsertDataTable(calibrationTasks); } List blankTasks = tasks.Where(item => item.TaskType.Equals(TaskTypeName.BLANK_ZH)).ToList(); if (blankTasks is null or { Count: 0 }) { blankTasks = SearchOtherTask(TaskTypeName.BLANK_ZH); } if (blankTasks is not null) { InsertDataTable(blankTasks); } List sampleTasks = tasks.Where(item => item.TaskType.Equals(TaskTypeName.SAMPLE_ZH)).ToList(); if (sampleTasks is not null) { InsertDataTable(sampleTasks); } dt.ExportResult(_readConfig.ResultFilePath); void InsertDataTable(List insertTasks) { insertTasks.ForEach(task => { dt.Rows.Add(task.TaskType, task.TaskDetailName, task.SampleVolume.ToString("F2"), task.SampleMultiple.ToString("F2"), task.Amount.ToString("F2"), task.Result.ToString("F2"), task.CreateTime.ToString("yyyy-MM-dd")); }); } } public void ExportWord(List tasks) { List calibrationTasks = tasks.Where(item => item.TaskType.Equals(TaskTypeName.CALIBRATION_ZH)).ToList(); if (calibrationTasks is null or { Count: 0 }) { tasks.AddRange(SearchOtherTask(TaskTypeName.CALIBRATION_ZH)); } List blankTasks = tasks.Where(item => item.TaskType.Equals(TaskTypeName.BLANK_ZH)).ToList(); if (blankTasks is null or { Count: 0 }) { tasks.AddRange(SearchOtherTask(TaskTypeName.BLANK_ZH)); } ExportWordByNPOI export = new ExportWordByNPOI(); export.Write(tasks, _readConfig.ResultFilePath); } private List SearchOtherTask(string type) { return _dataManager.Query().Where(it => it.TaskType.Equals(type)).With(t1 => t1.WaveKey, t2 => t2.WaveKey, _dataManager.Query().Where(it => it.TaskType.Equals(type) && it.Status.Equals(TaskState.Finished)).OrderBy(it => it.CreateTime, OrderPattern.Desc).Take(1), WithPattern.Equals).ToList(); } } }