validPrediction.cs 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using Common;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using com.hnshituo.core.webapp.vo;
  8. namespace MeterConditionLibrary
  9. {
  10. public class validPrediction
  11. {
  12. /// <summary>
  13. /// 验证预报信息,在扫码的时候验证
  14. /// </summary>
  15. /// <param name="scale">预报信息</param>
  16. public bool ValidMethod(PreTrackScale scale,out string ResultMessage)
  17. {
  18. bool flag = false;
  19. ResultMessage = "";
  20. //若预报是批次预报PREDICTION_TYPE 0:批次预报;1:单次预报;2:联运预报;3:分检预报,需验证预报类型USED_TYPE 0:次数;1:时间;2:总量
  21. //一次计量类型为次数时,验证EFFECTIVE_NUM-METER_NUM>0,服务端每结净一次++METER_NUM
  22. //一次计量类型为时间时,验证当前时间在EFFECTIVE_START_TIME、EFFECTIVE_END_TIME范围内即可
  23. //一次计量类型为总量时,验证EFFECTIVE_WEIGHT-METER_WEIGHT>0,服务端每次结净一次METER_WEIGHT+净重
  24. //一次计量时若预报是分检预报,验证EFFECTIVE_NUM-METER_NUM>0,服务端每结净一次++METER_NUM
  25. //一次计量时不是批次预报,则只要有效即可
  26. PreTrackScaleService mwmss = new PreTrackScaleService();
  27. RESTfulResult<List<PreTrackScale>> rm = mwmss.doQueryWf(new PreTrackScale { predictionNo = scale.predictionNo });
  28. if (!rm.Succeed)
  29. {
  30. ResultMessage = "未找到有效预报!";
  31. PbCache.ResultMessage = "获取预报信息异常:" + rm.ResultMessage;
  32. }
  33. else
  34. {
  35. if (rm.Data == null || rm.Data.Count == 0)
  36. {
  37. ResultMessage = "【"+ scale.predictionNo + "】未找到有效预报";
  38. }
  39. else
  40. {
  41. switch (rm.Data[0].valueFlag)
  42. {
  43. case "0": //未配车
  44. ResultMessage = "【" + scale.predictionNo + "】,未找到有效预报,请先进行配车操作!";
  45. break;
  46. case "1": //未使用,说明是一次计量
  47. {
  48. if (rm.Data[0].predictionType == "0") //0:批次预报
  49. {
  50. if (rm.Data[0].usedType == "0") //0:次数;
  51. {
  52. if (rm.Data[0].effectiveNum - rm.Data[0].meterNum > 0)
  53. {
  54. flag = true;
  55. }
  56. else
  57. {
  58. ResultMessage = "计量预报已经使用";//该预报检斤次数已用完,无法继续使用
  59. PbCache.ResultMessage = "预报【" + scale.predictionNo + "】检斤次数已用完,无法继续使用";
  60. }
  61. }
  62. else if (rm.Data[0].usedType == "1") //1:时间;
  63. {
  64. if (rm.Data[0].effectiveStartTime <= DateTime.Now && DateTime.Now <= rm.Data[0].effectiveEndTime)
  65. {
  66. flag = true;
  67. }
  68. else
  69. {
  70. ResultMessage = "计量预报已经过期";
  71. PbCache.ResultMessage = "计量预报【" + scale.predictionNo + "】已经过期";
  72. }
  73. }
  74. else if (rm.Data[0].usedType == "2") //2:总量
  75. {
  76. if (rm.Data[0].effectiveWeight > rm.Data[0].meterWeight)
  77. {
  78. flag = true;
  79. }
  80. else
  81. {
  82. ResultMessage = "计量预报已经使用";//
  83. PbCache.ResultMessage = "预报【" + scale.predictionNo + "】有效重量已用完,无法继续使用";
  84. }
  85. }
  86. }
  87. else if (rm.Data[0].predictionType == "1" || rm.Data[0].predictionType == "2") //1:单次预报;2:联运预报
  88. {
  89. flag = true;
  90. }
  91. else if (rm.Data[0].predictionType == "3") //3:分检预报
  92. {
  93. if (rm.Data[0].effectiveNum - rm.Data[0].meterNum > 0)
  94. {
  95. flag = true;
  96. }
  97. else
  98. {
  99. ResultMessage = "计量预报已经使用";//该预报检斤次数已用完,无法继续使用
  100. PbCache.ResultMessage = "预报检斤【" + scale.predictionNo + "】次数已用完,无法继续使用";
  101. }
  102. }
  103. else
  104. {
  105. ResultMessage = "未找到有效预报";
  106. PbCache.ResultMessage = string.Format("没有预报类型为【{0}】的逻辑", rm.Data[0].predictionType);
  107. }
  108. };
  109. break;
  110. case "2":
  111. ResultMessage = "计量预报已经使用";//
  112. PbCache.ResultMessage = "计量预报【" + scale.predictionNo + "】已经使用";
  113. //flag = true;
  114. break;
  115. case "3":
  116. ResultMessage = "计量预报已经过期";
  117. PbCache.ResultMessage = "该预报【" + scale.predictionNo + "】已作废";
  118. break;
  119. case "4": //正使用 //已使用,则不验证,因为一次计量的时候会验证一次
  120. flag = true;
  121. //ResultMessage = "计量预报已经使用";//
  122. //PbCache.ResultMessage = "计量预报已经使用";
  123. break;
  124. }
  125. }
  126. }
  127. return flag;
  128. }
  129. }
  130. }