validLianDaWgtDiff.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using System;
  4. using System.Collections.Generic;
  5. namespace MeterConditionLibrary
  6. {
  7. /// <summary>
  8. /// 联达的重量偏差,对应基础信息001050001向
  9. /// 若都没得则提示
  10. /// </summary>
  11. public class validLianDaWgtDiff
  12. {
  13. /// <summary>
  14. /// 联达码头;江西联达联达料场限制毛重《按码头+单位》:验证预报超差,如果预报里面有毛重则验证毛重,有净重则验证净重
  15. /// </summary>
  16. /// <param name="scale">预报信息</param>
  17. /// <param name="sMeterType">计量类型,1过毛重,2过皮重,3结净</param>
  18. /// <param name="fristMeter">一次计量信息,若为结净状态才有值</param>
  19. public void ValidMethod(PreTrackScale scale, string sMeterType, MeterWorkCarActualFirst fristMeter)
  20. {
  21. //未锁定的情况下
  22. //if (!PbCache.isLockFrm)
  23. {
  24. PbCache.ResultMessage = "";
  25. if (PbCache.monitor.validPredictionDiff == "1" && !PbCache.isNotValid)
  26. {
  27. if (!string.IsNullOrEmpty(scale.meterPierNo) && "001048009".Equals(scale.meterPierNo)
  28. && !string.IsNullOrEmpty(scale.receivingUintName) && "江西联达联达料场".Equals(scale.receivingUintName) && scale.shipmentGrossWeight != null )
  29. {
  30. if (sMeterType == "1") //过毛
  31. {
  32. if (scale.shipmentGrossWeight != null && scale.shipmentGrossWeight > 0)
  33. {
  34. ValidMethods(scale, "1", fristMeter);
  35. }
  36. else
  37. {
  38. PbCache.monitorResult.valid_prediction_diff = true;
  39. }
  40. }
  41. }
  42. else
  43. {
  44. PbCache.monitorResult.valid_prediction_diff = true;
  45. //PbCache.ResultMessage = "预报中未配置发运重量";
  46. }
  47. }
  48. else
  49. {
  50. PbCache.monitorResult.valid_prediction_diff = true;
  51. }
  52. }
  53. }
  54. /// <summary>
  55. ///
  56. /// </summary>
  57. /// <param name="scale">预报信息</param>
  58. /// <param name="sType">1则取预报毛重 2则取预报净重</param>
  59. /// <param name="fristMeter"></param>
  60. private void ValidMethods(PreTrackScale scale, string sType, MeterWorkCarActualFirst fristMeter)
  61. {
  62. ComBaseInfoService comBaseInfoService = new ComBaseInfoService(); //基础数服务
  63. RESTfulResult<List<ComBaseInfo>> rm = comBaseInfoService.doQueryBaseList(new ComBaseInfo { validFlag = "1", pBaseCode = "001050" });
  64. if (rm.Succeed)
  65. {
  66. if (rm.Data != null && rm.Data.Count > 0)
  67. {
  68. List<ComBaseInfo> dt = rm.Data;
  69. double maxWgt = 0, minWgt = 0, wgt = 0;
  70. if (sType == "1") //PbCache.lockWgt在预报毛重+-固定值
  71. {
  72. maxWgt = scale.shipmentGrossWeight.Value + (dt[0].baseName == null ? 0 : Convert.ToDouble(dt[0].baseName));
  73. minWgt = scale.shipmentGrossWeight.Value - (dt[0].baseName == null ? 0 : Convert.ToDouble(dt[0].baseName));
  74. wgt = PbCache.lockWgt;//计量重量
  75. }
  76. else
  77. {
  78. maxWgt = scale.shipmentNetWeight.Value + (dt[0].baseName == null ? 0 : Convert.ToDouble(dt[0].baseName));
  79. minWgt = scale.shipmentNetWeight.Value - (dt[0].baseName == null ? 0 : Convert.ToDouble(dt[0].baseName));
  80. wgt = Math.Abs(PbCache.lockWgt - fristMeter.meterWeight.Value - (fristMeter.addWeight == null ? 0 : fristMeter.addWeight.Value));//当前重量-上次重量-附加重量
  81. }
  82. if (maxWgt >= wgt && wgt >= minWgt)
  83. {
  84. PbCache.monitorResult.valid_prediction_diff = true;
  85. }
  86. else
  87. { //2021年5月10日界面显示单位,调整为T
  88. PbCache.monitorResult.valid_prediction_diff = false;
  89. if (sType == "1")
  90. {
  91. PbCache.ResultMessage = "车辆重量[" + Math.Round(PbCache.lockWgt / 1000, 2) + "]" +
  92. "与预报重量[" + Math.Round(scale.shipmentGrossWeight.Value / 1000, 2) + "]" +
  93. "的差值超出偏差范围,偏差值[" + Math.Round(Convert.ToDouble(dt[0].baseName) / 1000, 2) + "]";
  94. }
  95. }
  96. }
  97. else
  98. {
  99. PbCache.monitorResult.valid_prediction_diff = true;
  100. PbCache.ResultMessage = "";
  101. //PbCache.ResultMessage = "没有超差方式[" + dt.Rows[0]["DIFF_TYPE_NAME"].ToString() + "]的逻辑";
  102. }
  103. }
  104. else
  105. {
  106. PbCache.monitorResult.valid_prediction_diff = true;
  107. //PbCache.ResultMessage = "未找到物料对应的预报超差值";
  108. }
  109. }
  110. }
  111. }