ExportFile.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. namespace SHJX.Service.Control.Utils
  2. {
  3. public class ExportFile
  4. {
  5. private readonly ReadConfigUtil _readConfig;
  6. private readonly IDataManager _dataManager;
  7. public ExportFile(ReadConfigUtil readConfig, IDataManager dataManager)
  8. {
  9. _readConfig = readConfig;
  10. _dataManager = dataManager;
  11. }
  12. public void ExportExcel(List<EquipmentTask> tasks)
  13. {
  14. DataTable dt = new("Result");
  15. dt.Columns.Add("类型", Type.GetType("System.String")!);
  16. dt.Columns.Add("样品编号", Type.GetType("System.String")!);
  17. dt.Columns.Add("取样体积", Type.GetType("System.String")!);
  18. dt.Columns.Add("取样倍数", Type.GetType("System.String")!);
  19. dt.Columns.Add("滴定体积", Type.GetType("System.String")!);
  20. dt.Columns.Add("结果", Type.GetType("System.String")!);
  21. dt.Columns.Add("分析时间", Type.GetType("System.String")!);
  22. List<EquipmentTask> calibrationTasks = tasks.Where(item => item.TaskType.Equals(TaskTypeName.CALIBRATION_ZH)).ToList();
  23. if (calibrationTasks is null or { Count: 0 })
  24. {
  25. calibrationTasks = SearchOtherTask(TaskTypeName.CALIBRATION_ZH);
  26. }
  27. if (calibrationTasks is not null)
  28. {
  29. InsertDataTable(calibrationTasks);
  30. }
  31. List<EquipmentTask> blankTasks = tasks.Where(item => item.TaskType.Equals(TaskTypeName.BLANK_ZH)).ToList();
  32. if (blankTasks is null or { Count: 0 })
  33. {
  34. blankTasks = SearchOtherTask(TaskTypeName.BLANK_ZH);
  35. }
  36. if (blankTasks is not null)
  37. {
  38. InsertDataTable(blankTasks);
  39. }
  40. List<EquipmentTask> sampleTasks = tasks.Where(item => item.TaskType.Equals(TaskTypeName.SAMPLE_ZH)).ToList();
  41. if (sampleTasks is not null)
  42. {
  43. InsertDataTable(sampleTasks);
  44. }
  45. dt.ExportResult(_readConfig.ResultFilePath);
  46. void InsertDataTable(List<EquipmentTask> insertTasks)
  47. {
  48. insertTasks.ForEach(task =>
  49. {
  50. dt.Rows.Add(task.TaskType, task.TaskDetailName, task.SampleVolume.ToString("F2"),
  51. task.SampleMultiple.ToString("F2"), task.Amount.ToString("F2"),
  52. task.Result.ToString("F2"), task.CreateTime.ToString("yyyy-MM-dd"));
  53. });
  54. }
  55. }
  56. public void ExportWord(List<EquipmentTask> tasks)
  57. {
  58. List<EquipmentTask> calibrationTasks = tasks.Where(item => item.TaskType.Equals(TaskTypeName.CALIBRATION_ZH)).ToList();
  59. if (calibrationTasks is null or { Count: 0 })
  60. {
  61. tasks.AddRange(SearchOtherTask(TaskTypeName.CALIBRATION_ZH));
  62. }
  63. List<EquipmentTask> blankTasks = tasks.Where(item => item.TaskType.Equals(TaskTypeName.BLANK_ZH)).ToList();
  64. if (blankTasks is null or { Count: 0 })
  65. {
  66. tasks.AddRange(SearchOtherTask(TaskTypeName.BLANK_ZH));
  67. }
  68. ExportWordByNPOI export = new ExportWordByNPOI();
  69. export.Write(tasks, _readConfig.ResultFilePath);
  70. }
  71. private List<EquipmentTask> SearchOtherTask(string type)
  72. {
  73. return _dataManager.Query<EquipmentTask>().Where(it => it.TaskType.Equals(type)).With(t1 => t1.WaveKey, t2 => t2.WaveKey, _dataManager.Query<EquipmentTask>().Where(it => it.TaskType.Equals(type) && it.Status.Equals(TaskState.Finished)).OrderBy(it => it.CreateTime, OrderPattern.Desc).Take(1), WithPattern.Equals).ToList();
  74. }
  75. }
  76. }