DataCheckBase.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. /* ==============================================================================
  2. * 功能描述:数据检查的检查项
  3. * 创 建 者:Garrett
  4. * 创建日期:2018/10/23 15:50:19
  5. * ==============================================================================*/
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Linq;
  9. using NPOI.SS.UserModel;
  10. using SAGA.DotNetUtils.Others;
  11. using SAGA.MBI.ToolsData.CheckBase;
  12. using SAGA.MBI.ToolsData.ModeCheck;
  13. namespace SAGA.MBI.ToolsData.DataCheck
  14. {
  15. /// <summary>
  16. /// CheckBase
  17. /// </summary>
  18. public class DataCheckBase: ICheckBase
  19. {
  20. public string Name { get; set; }
  21. public CheckContext Context { get; set; }
  22. private List<DataCheckResultBase> results = new List<DataCheckResultBase>();
  23. internal List<DataCheckResultBase> Results { get => results; set => results = value; }
  24. public void Check2(CheckContext context)
  25. {
  26. Context = context;
  27. if (!RIsChecked) return;
  28. Check();
  29. }
  30. public virtual bool Check()
  31. {
  32. throw new NotImplementedException();
  33. }
  34. public virtual void Correct()
  35. {
  36. throw new NotImplementedException();
  37. }
  38. public virtual void Export()
  39. {
  40. throw new NotImplementedException();
  41. }
  42. #region 检查结果
  43. /// <summary>
  44. /// 是否通过较验
  45. /// </summary>
  46. public bool IsRight { get; set; }
  47. /// <summary>
  48. /// 提示信息
  49. /// </summary>
  50. public string RMessage { get; set; }
  51. /// <summary>
  52. /// 设置表可见性
  53. /// </summary>
  54. public bool SetSheetVisible()
  55. {
  56. bool result = RIsChecked;
  57. if (result)
  58. result = !(results.All(t => t.IsRight));
  59. //如果有没有通过的项
  60. if (!result)
  61. {
  62. try
  63. {
  64. IWorkbook book = DCRExport.GetWorkbook();
  65. int index = book.GetSheetIndex(Name);
  66. //隐藏
  67. book.SetSheetHidden(index, SheetState.VeryHidden);
  68. //关联项隐藏
  69. foreach (var str in RSPecificationSheet) {
  70. int i = book.GetSheetIndex(str);
  71. //隐藏
  72. book.SetSheetHidden(i, SheetState.VeryHidden);
  73. }
  74. }
  75. catch (Exception e)
  76. {
  77. MessageShowBase.Show(e);
  78. }
  79. }
  80. return result;
  81. }
  82. /// <summary>
  83. /// 保存并隐藏全部通过的sheet
  84. /// </summary>
  85. public void Export2()
  86. {
  87. DCRExport.SetTemplatePath(Context.TemplatePath);
  88. Export();
  89. SetSheetVisible();
  90. }
  91. #endregion
  92. #region 样式控制
  93. /// <summary>
  94. /// 是否强制勾选
  95. /// </summary>
  96. public bool RIsReadOnly { get; set; }
  97. /// <summary>
  98. /// 是否选中
  99. /// </summary>
  100. public bool RIsChecked { get; set; }
  101. private List<string> m_SpecificationSheet=new List<string>();
  102. /// <summary>
  103. /// 关联规范项
  104. /// </summary>
  105. public List<string> RSPecificationSheet
  106. {
  107. get { return m_SpecificationSheet; }
  108. set { m_SpecificationSheet = value; }
  109. }
  110. #endregion
  111. }
  112. }