validWgt.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281
  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. /// 验证重量 这里必须是皮重计量,只能通过流程来估算
  9. /// 这里是指与历史皮重比较,如果超了可通过该功能跳过
  10. /// </summary>
  11. /// <param name="scale">预报信息</param>
  12. public class validWgt
  13. {
  14. public void ValidMethod(PreTrackScale scale)
  15. {
  16. //未锁定的情况下
  17. //if (!PbCache.isLockFrm)
  18. {
  19. //验证重量
  20. if (PbCache.monitor.validWgt == "1")
  21. {
  22. MeterBaseHisTareDataService mbtds = new MeterBaseHisTareDataService();
  23. RESTfulResult<List<MeterBaseHisTareData>> rm = mbtds.doQueryWf(new MeterBaseHisTareData { valueFlag = "0", carNo = scale.carNo });
  24. if (rm.Succeed)
  25. {
  26. if (rm.Data != null && rm.Data.Count > 0)
  27. {
  28. //比较历史皮重与当前重量验证;默认为通用
  29. MeterBaseHisTareCount mbtc = PbCache.tareCount;
  30. //特殊配置项处理;物资类:
  31. if (scale != null && !string.IsNullOrEmpty(scale.matterNo))
  32. {
  33. MeterBaseHisTareCountService meterCount = new MeterBaseHisTareCountService();
  34. RESTfulResult<List<MeterBaseHisTareCount>> rmMeterCount = meterCount.doQuerySpecWf(new MeterBaseHisTareCount { countTypeNo = scale.matterNo });
  35. if (rmMeterCount.Succeed && rmMeterCount.Data != null && rmMeterCount.Data.Count > 0)
  36. {
  37. mbtc = rmMeterCount.Data[0];
  38. }
  39. }
  40. //计算
  41. double maxWgt = 0, minWgt = 0, wgt = PbCache.lockWgt;
  42. if (mbtc.countTypeNo == "001011001") //固重 当前重量>=历史皮重-固重 当前重量<=历史皮重+固重
  43. {
  44. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? rm.Data[0].upWeight.Value : rm.Data[0].meterWeight.Value);
  45. maxWgt = meterWeight + mbtc.fixedWeightValue.Value;
  46. minWgt = meterWeight - mbtc.fixedWeightValue.Value;
  47. if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt)
  48. {
  49. PbCache.monitorResult.valid_wgt = true;
  50. }
  51. else
  52. {
  53. PbCache.monitorResult.valid_wgt = false;
  54. PbCache.ResultMessage = "当前皮重【"+ PbCache.lockWgt/1000 + "T 】不在皮重配置范围,历史皮重为【" + Convert.ToDouble(meterWeight) / 1000 + "T】,偏差最大允许重量为【" + mbtc.fixedWeightValue.Value + "kg】";
  55. }
  56. }
  57. else if (mbtc.countTypeNo == "001011002") //比例 当前重量>=历史皮重-历史皮重*比例 当前重量<=历史皮重+历史皮重*比例
  58. {
  59. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? rm.Data[0].upWeight.Value : rm.Data[0].meterWeight.Value);
  60. maxWgt = meterWeight + meterWeight * (mbtc.rateValue.Value / 100); //历史皮重+历史皮重*比例
  61. minWgt = meterWeight - meterWeight * (mbtc.rateValue.Value / 100); //历史皮重-历史皮重*比例
  62. if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt)
  63. {
  64. PbCache.monitorResult.valid_wgt = true;
  65. }
  66. else
  67. {
  68. PbCache.monitorResult.valid_wgt = false;
  69. PbCache.ResultMessage = "当前皮重【" + PbCache.lockWgt / 1000 + "T 】不在皮重配置范围,历史皮重为【" + Convert.ToDouble(meterWeight) / 1000 + "T】,偏差最大允许比例值为【" + mbtc.fixedWeightValue.Value + "%】";
  70. }
  71. }
  72. else
  73. {
  74. PbCache.monitorResult.valid_wgt = false;
  75. PbCache.ResultMessage = string.Format("未找到历史皮重计算类型{0}配置数据", mbtc.countTypeNo);
  76. }
  77. //当前重量>=历史皮重+历史皮重*比例 当前重量<=历史皮重+历史皮重*比例
  78. }
  79. else
  80. {
  81. PbCache.monitorResult.valid_wgt = false;
  82. PbCache.ResultMessage = "未找到历史皮重数据";
  83. }
  84. }
  85. else
  86. {
  87. PbCache.monitorResult.valid_wgt = false;
  88. PbCache.ResultMessage = "查询异常!请点击语音求助,联系系统管理员处理!";
  89. }
  90. }
  91. else
  92. {
  93. PbCache.monitorResult.valid_wgt = true;
  94. }
  95. }
  96. }
  97. /// <summary>
  98. /// 非内倒的重量验证,这里验证的是历史皮重
  99. /// </summary>
  100. /// <param name="scale"></param>
  101. public void ValidNotInnerMethod(PreTrackScale scale)
  102. {
  103. PbCache.monitorResult.haveHisTare = false;//不存在历史皮
  104. List<MeterBaseHisTareData> validHis = validHisTare(scale);
  105. //计量中心默认 PbCache.monitorResult.valid_wgt = true;
  106. if (PbCache.isNotValid)
  107. {
  108. string sql = @"select t1.meter_weight meterWeight,
  109. t1.data_no dataNo,
  110. t1.create_time createTime,
  111. t1.base_spot_no baseSpotNo,
  112. t1.base_spot_name baseSpotName
  113. from Meter_Base_Term_Tare_Data t1, Meter_Base_Term_Tare_Car t2
  114. where t1.car_no = t2.car_no
  115. and t2.value_flag = '0'
  116. and t1.value_flag = '0'
  117. and t1.car_no = '" + scale.carNo + @"'
  118. and t1.end_time>sysdate";
  119. PbModelDbService<List<MeterBaseTermTareData>> pb = new PbModelDbService<List<MeterBaseTermTareData>>();
  120. RESTfulResult<List<MeterBaseTermTareData>> rmType = pb.executeSqlDataWf(sql);
  121. if (rmType.Succeed)
  122. {
  123. if (rmType.Data != null && rmType.Data.Count > 0)
  124. {
  125. //查下当前拖的物料是否可用期限皮;验证业务类型是否允许使用期限皮重
  126. //and t.meter_nature_name like '%外%' //此为物料计量属性,例如:若不是外购物料,则不允许使用期限皮重;(九江取消了)
  127. string sqls = @"select t.matter_no id, t.matter_name text
  128. from meter_base_matter_info t,meter_base_metertype_conf t2
  129. where t.allowed_tare_weight = '1'
  130. and t.valid_flag = '1'
  131. and t.matter_no='" + scale.matterNo + @"'
  132. and t2.is_allow_term_tare = '1' and t2.meter_type_no = '" + scale.meterTypeNo + @"'";
  133. PbModelDbService<List<PbModelDb>> pbp = new PbModelDbService<List<PbModelDb>>();
  134. RESTfulResult<List<PbModelDb>> rmT = pbp.executeSqlDataWf(sqls);
  135. if (rmT.Succeed)
  136. {
  137. if (rmT.Data != null && rmT.Data.Count > 0)
  138. {
  139. // false 的时候,且有期限皮重,则默认为毛重,
  140. PbCache.monitorResult.valid_wgt = false;
  141. }
  142. else
  143. {
  144. PbCache.monitorResult.valid_wgt = true;
  145. }
  146. }
  147. else
  148. {
  149. PbCache.monitorResult.valid_wgt = true;
  150. PbCache.ResultMessage = "计量失败,获取期限皮可用物料异常:" + rmType.ResultMessage;
  151. }
  152. }
  153. else
  154. {
  155. //没有期限皮重,则不验证重量
  156. PbCache.monitorResult.valid_wgt = true;
  157. }
  158. }
  159. else
  160. {
  161. PbCache.monitorResult.valid_wgt = true;
  162. PbCache.ResultMessage = "计量失败,获取期限皮数据异常:" + rmType.ResultMessage;
  163. }
  164. return;
  165. }
  166. if (validHis != null)
  167. {
  168. if (validHis.Count > 0)
  169. {
  170. if (PbCache.monitor.validWgt == "1")
  171. {
  172. //比较历史皮重与当前重量验证;默认为通用
  173. MeterBaseHisTareCount mbtc = PbCache.tareCount;
  174. //特殊配置项处理;物资类:
  175. if (scale != null && !string.IsNullOrEmpty(scale.matterNo))
  176. {
  177. MeterBaseHisTareCountService meterCount = new MeterBaseHisTareCountService();
  178. RESTfulResult<List<MeterBaseHisTareCount>> rmMeterCount = meterCount.doQuerySpecWf(new MeterBaseHisTareCount { countTypeNo = scale.matterNo });
  179. if (rmMeterCount.Succeed && rmMeterCount.Data != null && rmMeterCount.Data.Count > 0)
  180. {
  181. mbtc = rmMeterCount.Data[0];
  182. }
  183. }
  184. double maxWgt = 0, minWgt = 0, wgt = PbCache.lockWgt;
  185. if (mbtc.countTypeNo == "001011001") //固重 当前重量>=历史皮重-固重 当前重量<=历史皮重+固重
  186. {
  187. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? validHis[0].upWeight.Value : validHis[0].meterWeight.Value);
  188. maxWgt = meterWeight + mbtc.fixedWeightValue.Value;
  189. minWgt = meterWeight - mbtc.fixedWeightValue.Value;
  190. if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt)
  191. {
  192. PbCache.monitorResult.valid_wgt = true;
  193. }
  194. else
  195. {
  196. PbCache.monitorResult.valid_wgt = false;
  197. PbCache.ResultMessage = "当前皮重【" + PbCache.lockWgt / 1000 + "T 】不在皮重配置范围,历史皮重为【" + Convert.ToDouble(meterWeight) / 1000 + "T】,偏差最大允许重量为【" + mbtc.fixedWeightValue.Value + "kg】";
  198. }
  199. }
  200. else if (mbtc.countTypeNo == "001011002") //比例 当前重量>=历史皮重-历史皮重*比例 当前重量<=历史皮重+历史皮重*比例
  201. {
  202. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? validHis[0].upWeight.Value : validHis[0].meterWeight.Value);
  203. maxWgt = meterWeight + meterWeight * (mbtc.rateValue.Value / 100); //历史皮重+历史皮重*比例
  204. minWgt = meterWeight - meterWeight * (mbtc.rateValue.Value / 100); //历史皮重-历史皮重*比例
  205. if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt)
  206. {
  207. PbCache.monitorResult.valid_wgt = true;
  208. }
  209. else
  210. {
  211. PbCache.monitorResult.valid_wgt = false;
  212. PbCache.ResultMessage = "当前皮重【" + PbCache.lockWgt / 1000 + "T 】不在皮重配置范围,历史皮重为【" + (double)Convert.ToDouble(meterWeight) / 1000 + "T】,偏差最大允许比例值为【" + mbtc.fixedWeightValue.Value + "%】";
  213. }
  214. }
  215. else
  216. {
  217. PbCache.monitorResult.valid_wgt = false;
  218. PbCache.ResultMessage = string.Format("未找到历史皮重计算类型{0}配置数据", mbtc.countTypeNo);
  219. }
  220. }
  221. }
  222. else
  223. {
  224. //非内倒的在内有历史皮的时候让其正常计量
  225. PbCache.monitorResult.valid_wgt = true;
  226. }
  227. }
  228. else
  229. {
  230. PbCache.monitorResult.valid_wgt = false;
  231. PbCache.ResultMessage = "查询异常!未找到历史皮重数据";
  232. }
  233. if (PbCache.monitor.validWgt == "0")
  234. {
  235. PbCache.monitorResult.valid_wgt = true;
  236. }
  237. }
  238. public List<MeterBaseHisTareData> validHisTare(PreTrackScale scale)
  239. {
  240. List<MeterBaseHisTareData> lmhtd = new List<MeterBaseHisTareData>();
  241. PbCache.monitorResult.haveHisTare = false;//不存在历史皮
  242. MeterBaseHisTareDataService mbtds = new MeterBaseHisTareDataService();
  243. RESTfulResult<List<MeterBaseHisTareData>> rm = mbtds.doQueryWf(new MeterBaseHisTareData { valueFlag = "0", carNo = scale.carNo });
  244. if (rm.Succeed)
  245. {
  246. if (rm.Data != null && rm.Data.Count > 0)
  247. {
  248. PbCache.monitorResult.haveHisTare = true;//存在历史皮
  249. lmhtd = rm.Data;
  250. }
  251. }
  252. else
  253. {
  254. lmhtd = null;
  255. }
  256. PbCache.monitorResult.hisTareData = lmhtd;
  257. return lmhtd;
  258. }
  259. }
  260. }