validExceedWgt.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. namespace MeterConditionLibrary
  7. {
  8. /// <summary>
  9. /// 验证危化品超重,是否可运危化品
  10. /// 这个类应该是在计量验证重量及
  11. /// 验证流程后,从计量场景库的类中调用过来的
  12. /// </summary>
  13. public class validExceedWgt
  14. {
  15. private Log lg = Log.GetInstance();
  16. /// <summary>
  17. /// 验证物料是否是危化品(是否在物资限载配配置表:meter_base_limit_chemical中配置数据)
  18. /// </summary>
  19. /// <param name="scale">预报信息</param>
  20. /// <param name="sMeterType">计量类型,1过毛重,2过皮重,3结净</param>
  21. /// <param name="fristMeter">一次计量信息,若为结净状态才有值</param>
  22. public void validMatMethod(PreTrackScale scale, string sMeterType, MeterWorkCarActualFirst fristMeter)
  23. {
  24. //未锁定的情况下
  25. //if (!PbCache.isLockFrm)
  26. {
  27. //验证危化品
  28. if (PbCache.monitor.validExceedWgt == "1" && !PbCache.isNotValid)
  29. {
  30. if (PbCache.limit != null && PbCache.limit.Count > 0)
  31. {
  32. List<MeterBaseLimitChemical> mblc = PbCache.limit.Where(s => s.matterNo == scale.matterNo).ToList();
  33. //该物料是危化品
  34. if (mblc.Count > 0)
  35. {
  36. PbCache.monitorResult.valid_exceed_mat = true;
  37. validTransMethod(scale, sMeterType, fristMeter);
  38. }
  39. else
  40. {
  41. PbCache.monitorResult.valid_exceed_mat = false;
  42. PbCache.monitorResult.valid_exceed_train = false;
  43. PbCache.monitorResult.valid_exceed_wgt = true;
  44. }
  45. }
  46. else
  47. {
  48. PbCache.monitorResult.valid_exceed_mat = false;
  49. PbCache.monitorResult.valid_exceed_train = false;
  50. PbCache.monitorResult.valid_exceed_wgt = true;
  51. }
  52. }
  53. else
  54. {
  55. PbCache.monitorResult.valid_exceed_mat = false;
  56. PbCache.monitorResult.valid_exceed_train = false;
  57. PbCache.monitorResult.valid_exceed_wgt = true;
  58. }
  59. }
  60. }
  61. /// <summary>
  62. /// 验证该车是否能拖危化品
  63. /// 这个需要在得到预报的情况下开始验证,且要比所有其它的验证要靠前一点,且只验证一次
  64. /// </summary>
  65. /// <param name="scale">预报信息</param>
  66. /// <param name="sMeterType">计量类型,1过毛重,2过皮重,3结净</param>
  67. private void validTransMethod(PreTrackScale scale, string sMeterType, MeterWorkCarActualFirst fristMeter)
  68. {
  69. MeterWorkCarCheckService service = new MeterWorkCarCheckService();
  70. MeterWorkCarCheck oci = new MeterWorkCarCheck();
  71. oci.predictionNo = scale.predictionNo;
  72. RESTfulResult<List<MeterWorkCarCheck>> rlm = service.doQueryWf(oci);
  73. if (rlm.Succeed)
  74. {
  75. if (rlm.Data != null && rlm.Data.Count > 0)
  76. {
  77. PbCache.monitorResult.valid_exceed_train = true;
  78. //验证危化品是否超重
  79. validWgtMethod(scale, rlm.Data[0], sMeterType, fristMeter);
  80. }
  81. else
  82. {
  83. PbCache.monitorResult.valid_exceed_train = false;
  84. PbCache.monitorResult.valid_exceed_wgt = false;
  85. PbCache.ResultMessage = "未找到预报对应的物资限载配置信息";
  86. }
  87. }
  88. else
  89. {
  90. PbCache.monitorResult.valid_exceed_train = false;
  91. PbCache.monitorResult.valid_exceed_wgt = false;
  92. PbCache.ResultMessage = rlm.ResultMessage;
  93. }
  94. }
  95. /// <summary>
  96. /// 危化品是否超重
  97. /// </summary>
  98. /// <param name="scale">预报信息</param>
  99. /// <param name="sMeterType">计量类型,1过毛重,2过皮重,3结净</param>
  100. private void validWgtMethod(PreTrackScale scale, MeterWorkCarCheck data, string sMeterType, MeterWorkCarActualFirst fristMeter)
  101. {
  102. //配置了危化品验证信息
  103. if (PbCache.limit != null && PbCache.limit.Count > 0)
  104. {
  105. List<MeterBaseLimitChemical> mblc = PbCache.limit.Where(s => s.matterNo == scale.matterNo).ToList();
  106. if (mblc != null)
  107. {
  108. if (mblc.Count == 1)
  109. {
  110. //******** eason 2020-10-10 001015002为毛重计量类型 001015001净重计量类型
  111. if (sMeterType == "1" && mblc[0].limitTypeNo == "001015002")
  112. {
  113. //mblc[0].limit_class_no 001016001固定重量 001016002跟车重量
  114. if (mblc[0].limitClassNo == "001016001") //固定重量
  115. {
  116. if (mblc[0].limitWeight > PbCache.lockWgt)
  117. {
  118. PbCache.monitorResult.valid_exceed_wgt = true;
  119. }
  120. else
  121. {
  122. PbCache.monitorResult.valid_exceed_wgt = false;
  123. PbCache.ResultMessage = "车辆重量超过物资限载重量[" + mblc[0].limitWeight / 1000 + "T]";
  124. }
  125. }
  126. else if (mblc[0].limitClassNo == "001016002") //跟车重量
  127. {
  128. if (data.limitWeight > PbCache.lockWgt)
  129. {
  130. PbCache.monitorResult.valid_exceed_wgt = true;
  131. }
  132. else
  133. {
  134. PbCache.monitorResult.valid_exceed_wgt = false;
  135. PbCache.ResultMessage = "车辆重量超过跟车重量[" + mblc[0].limitWeight / 1000 + "T]";
  136. }
  137. }
  138. else
  139. {
  140. PbCache.monitorResult.valid_exceed_wgt = false;
  141. PbCache.ResultMessage = "没有限载种类的逻辑请远程求助";
  142. lg.WriteLog(3, "没有限载种类[" + mblc[0].limitClassName + "]的逻辑");
  143. }
  144. }
  145. //出净重时,毛重限载
  146. else if (sMeterType == "3" && mblc[0].limitTypeNo == "001015002")
  147. {
  148. //mblc[0].limit_class_no 001016001固定重量 001016002跟车重量
  149. if (mblc[0].limitClassNo == "001016001") //固定重量
  150. {
  151. if (mblc[0].limitWeight > PbCache.lockWgt)
  152. {
  153. PbCache.monitorResult.valid_exceed_wgt = true;
  154. }
  155. else
  156. {
  157. PbCache.monitorResult.valid_exceed_wgt = false;
  158. PbCache.ResultMessage = "车辆重量超过物资限载重量[" + mblc[0].limitWeight / 1000 + "T]";
  159. }
  160. }
  161. else if (mblc[0].limitClassNo == "001016002") //跟车重量
  162. {
  163. if (data.limitWeight > PbCache.lockWgt)
  164. {
  165. PbCache.monitorResult.valid_exceed_wgt = true;
  166. }
  167. else
  168. {
  169. PbCache.monitorResult.valid_exceed_wgt = false;
  170. PbCache.ResultMessage = "车辆重量超过跟车重量[" + mblc[0].limitWeight / 1000 + "T]";
  171. }
  172. }
  173. else
  174. {
  175. PbCache.monitorResult.valid_exceed_wgt = false;
  176. PbCache.ResultMessage = "没有限载种类的逻辑请远程求助";
  177. lg.WriteLog(3, "没有限载种类[" + mblc[0].limitClassName + "]的逻辑");
  178. }
  179. }
  180. else if (sMeterType == "3" && mblc[0].limitTypeNo == "001015001")
  181. {
  182. //mblc[0].limit_class_no 001016001固定重量 001016002跟车重量
  183. if (mblc[0].limitClassNo == "001016001")
  184. {
  185. if (mblc[0].limitWeight > Math.Abs(fristMeter.meterWeight.Value - PbCache.lockWgt - (fristMeter.addWeight == null ? 0 : fristMeter.addWeight.Value))) //毛重-皮重的值- 附加重量
  186. {
  187. PbCache.monitorResult.valid_exceed_wgt = true;
  188. }
  189. else
  190. {
  191. PbCache.monitorResult.valid_exceed_wgt = false;
  192. PbCache.ResultMessage = "车辆重量超过物资限载重量[" + mblc[0].limitWeight / 1000 + "T]";
  193. }
  194. }
  195. else if (mblc[0].limitClassNo == "001016002") //跟车重量
  196. {
  197. if (data.limitWeight > Math.Abs(fristMeter.meterWeight.Value - PbCache.lockWgt - (fristMeter.addWeight == null ? 0 : fristMeter.addWeight.Value))) //毛重-皮重的值- 附加重量
  198. {
  199. PbCache.monitorResult.valid_exceed_wgt = true;
  200. }
  201. else
  202. {
  203. PbCache.monitorResult.valid_exceed_wgt = false;
  204. PbCache.ResultMessage = "车辆重量超过跟车重量[" + mblc[0].limitWeight / 1000 + "T]";
  205. }
  206. }
  207. else
  208. {
  209. PbCache.monitorResult.valid_exceed_wgt = false;
  210. PbCache.ResultMessage = "没有限载种类的逻辑请远程求助";
  211. lg.WriteLog(3, "没有限载种类[" + mblc[0].limitClassName + "]的逻辑");
  212. }
  213. }
  214. else
  215. {
  216. PbCache.monitorResult.valid_exceed_wgt = false;
  217. lg.WriteLog(3, string.Format("未找到物料为[{0}],限制类型为[{0}],的物资限载配置信息", mblc[0].matterName, (sMeterType == "1" ? "毛重" : "净重")));
  218. PbCache.ResultMessage = string.Format("未找到物料为[{0}],限制类型为[{0}],的物资限载配置信息", mblc[0].matterName, (sMeterType == "1" ? "毛重" : "净重"));
  219. }
  220. }
  221. else
  222. {
  223. PbCache.monitorResult.valid_exceed_wgt = false;
  224. PbCache.ResultMessage = "该物料配置了多条物资限载配置信息";
  225. }
  226. }
  227. else
  228. {
  229. PbCache.monitorResult.valid_exceed_wgt = false;
  230. PbCache.ResultMessage = "未配置物资限载配置信息";
  231. }
  232. }
  233. else
  234. {
  235. PbCache.monitorResult.valid_exceed_wgt = false;
  236. PbCache.ResultMessage = "未配置物资限载配置信息";
  237. }
  238. }
  239. }
  240. }