JcyjzbReportIo.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. using QM.KJGH.Model.KJGH;
  2. using QM.KJGH.Model.View;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using WS;
  9. using WS.IO.Office;
  10. namespace QM.KJGH.CGGL.Model.QxCghj
  11. {
  12. public class JcyjzbReportIo
  13. {
  14. /// <summary>
  15. /// 指标编号(2021003)
  16. /// </summary>
  17. [Export("指标编号", 1)]
  18. public string code { set; get; }
  19. /// <summary>
  20. /// 行政区划代码(150100)
  21. /// </summary>
  22. [Export("行政区划代码", 2)]
  23. public string divisionCode { set; get; }
  24. /// <summary>
  25. /// 监测时间(注:监测时间为监测值的时间更新频率为年度时,
  26. /// 监测时间仅填写年份,如2020;
  27. /// 更新频率为季度时,填写年度-季度,如2020-2;
  28. /// 更新频率为月度时,填写年度-月度,如2020-03;)
  29. /// </summary>
  30. [Export("监测时间", 3)]
  31. public string monitorTime { set; get; }
  32. /// <summary>
  33. /// 监测数值(注:如果监测值填写了,则上面监测时间字段也必须填写。反之亦然,否则接口会过滤)
  34. /// </summary>
  35. [Export("监测值", 4)]
  36. public string monitorValue { set; get; }
  37. /// <summary>
  38. /// 规划年份(注:如果规划年份填写了,则下面规划值也必须填写。反之亦然,否则接口会过滤。如2020)
  39. /// </summary>
  40. [Export("近期规划年", 5)]
  41. public string targetYear { set; get; }
  42. /// <summary>
  43. /// 规划值(注:如果规划值填写了,则上面规划年份也必须填写。反之亦然,否则接口会过滤。如12.32)
  44. /// </summary>
  45. [Export("近期规划值", 6)]
  46. public string targetValue { set; get; }
  47. /// <summary>
  48. /// 基期年(注:基期年需要更新则上面两个规划年份、规划值都必须填写,否则接口会过滤。如2020)
  49. /// </summary>
  50. [Export("基期年", 7)]
  51. public string baseYear { set; get; }
  52. /// <summary>
  53. /// 基期值(注:基期年填写了,则上面基期年也必须填写。反之亦然,否则接口会过滤。如2020)
  54. /// </summary>
  55. [Export("基期值", 8)]
  56. public string baseValue { set; get; }
  57. /// <summary>
  58. /// 远期规划年份(注:如果远期规划年份填写了,则下面远期规划值也必须填写。反之亦然,否则接口会过滤。如2050)
  59. /// </summary>
  60. [Export("远期规划目标年", 9)]
  61. public string forwardTargetYear { set; get; }
  62. /// <summary>
  63. /// 远期规划值(注:如果远期规划值填写了,则上面远期规划年份也必须填写。反之亦然,否则接口会过滤。如12.32)
  64. /// </summary>
  65. [Export("远期规划目标值", 10)]
  66. public string forwardTargetValue { set; get; }
  67. public string JCSJLX { get
  68. {
  69. var len = monitorTime.Trim().Length;
  70. switch (len)
  71. {
  72. case 4:
  73. return "年";
  74. case 6:
  75. return "季";
  76. case 7:
  77. return "月";
  78. default:
  79. return "";
  80. }
  81. }
  82. }
  83. /// <summary>
  84. /// 检查数据
  85. /// </summary>
  86. /// <returns></returns>
  87. public string CheckData(Dictionary<string, string> listZbx, Dictionary<string, string> listXzq)
  88. {
  89. List<string> msgs = new List<string>();
  90. #region 必填性
  91. if (string.IsNullOrWhiteSpace(code))
  92. msgs.Add($"指标编号(code)不能为空");
  93. if (string.IsNullOrWhiteSpace(divisionCode))
  94. msgs.Add($"行政区划代码(divisionCode)不能为空");
  95. if (string.IsNullOrWhiteSpace(monitorTime))
  96. msgs.Add($"监测时间(monitorTime)不能为空");
  97. if (string.IsNullOrWhiteSpace(monitorValue))
  98. msgs.Add($"监测值(monitorValue)不能为空");
  99. #endregion
  100. #region 完整性
  101. if (string.IsNullOrWhiteSpace(targetYear) != string.IsNullOrWhiteSpace(targetValue))
  102. msgs.Add($"近期规划年(targetYear)、近期规划值(targetValue)必须都为空或都不为空");
  103. if (string.IsNullOrWhiteSpace(baseYear) != string.IsNullOrWhiteSpace(baseValue))
  104. msgs.Add($"基期年(baseYear)、基期值(baseValue)必须都为空或都不为空");
  105. if (string.IsNullOrWhiteSpace(forwardTargetYear) != string.IsNullOrWhiteSpace(forwardTargetValue))
  106. msgs.Add($"远期规划目标年(forwardTargetYear)、远期规划目标值(forwardTargetValue)必须都为空或都不为空");
  107. #endregion
  108. #region 正确性
  109. if (!string.IsNullOrWhiteSpace(code) && !listZbx.Keys.Contains(code))
  110. msgs.Add($"指标编号({code})不存在");
  111. if (!string.IsNullOrWhiteSpace(divisionCode) && !listXzq.Keys.Contains(divisionCode))
  112. msgs.Add($"行政区划代码({divisionCode})不存在");
  113. #endregion
  114. if (msgs.Count > 0)
  115. return msgs.Join("、");
  116. return string.Empty;
  117. }
  118. }
  119. }