validTermTareCar.cs 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472
  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. /// <summary>
  11. /// 验证是否可留期限皮重
  12. /// </summary>
  13. public class validTermTareCar
  14. {
  15. Log lg = Log.GetInstance();
  16. public bool ValidMethod(string carNo)
  17. {
  18. //是否在黑名单内
  19. MeterBaseCarBlacelistService bService = new MeterBaseCarBlacelistService();
  20. RESTfulResult<List<MeterBaseCarBlacelist>> rmB = bService.doQueryWf(new MeterBaseCarBlacelist { carNo = carNo, valueFlag = "0" });
  21. if (rmB.Succeed)
  22. {
  23. if (rmB.Data != null && rmB.Data.Count > 0)
  24. {
  25. PbCache.ResultMessage = string.Format("车辆[{0}]在黑名单内,不能留皮", carNo);
  26. lg.WriteLog(3, string.Format("车辆[{0}]在黑名单内,不能留皮", carNo));
  27. return false;
  28. }
  29. else
  30. {
  31. //是否可留期限皮
  32. MeterBaseTermTareCarService service = new MeterBaseTermTareCarService();
  33. RESTfulResult<List<MeterBaseTermTareCar>> rm = service.doQueryWf(new MeterBaseTermTareCar { carNo = carNo, valueFlag = "0" });
  34. if (rm.Succeed)
  35. {
  36. if (rm.Data != null && rm.Data.Count == 1)
  37. {
  38. //如果可以留期限皮重,则判断车辆历史皮重,若当前皮重在 历史皮重最大最小偏差范围内,则认为当前确实是皮重允许留皮
  39. MeterBaseHisTareDataService mbhds = new MeterBaseHisTareDataService();
  40. RESTfulResult<List<MeterBaseHisTareData>> rtHisTare = mbhds.doQueryWf(new MeterBaseHisTareData { carNo = carNo, valueFlag = "0" });
  41. if (!rtHisTare.Succeed)
  42. {
  43. PbCache.ResultMessage = string.Format("车辆[{0}]获取历史皮重维护数据失败,请语音求助", carNo);
  44. lg.WriteLog(3, string.Format("车辆[{0}]获取历史皮重维护数据失败,请语音求助", carNo));
  45. return false;
  46. }
  47. else
  48. {
  49. if (rtHisTare.Data == null || rtHisTare.Data.Count == 0)
  50. {
  51. PbCache.ResultMessage = string.Format("车辆[{0}]首次进行计量业务时,无法留期限皮", carNo);
  52. lg.WriteLog(3, string.Format("车辆[{0}]首次进行计量业务时,无法留期限皮", carNo));
  53. return false;
  54. }
  55. else
  56. {
  57. //查下是否有有效的期限皮重信息
  58. MeterBaseTermTareDataService termTareDataService = new MeterBaseTermTareDataService();
  59. RESTfulResult<List<MeterBaseTermTareData>> resTermData = termTareDataService.doQueryWf(new MeterBaseTermTareData { carNo = carNo, valueFlag = "0" });
  60. //2021年12月23日 杨秀东添加,九钢的特殊处理,全部的皮重校验,都走历史皮重;
  61. if (resTermData.Succeed && resTermData.Data.Count > 0 && false)
  62. {
  63. MeterBaseTermTareCount mbhtc = PbCache.termTareCount;
  64. double maxWgt = 0, minWgt = 0;
  65. if (mbhtc.countTypeNo == "001011001") //固重 当前重量>=历史皮重-固重 当前重量<=历史皮重+固重
  66. {
  67. double meterWeight = (PbCache.termTareCount.contrastTypeNo == "001012001" ? resTermData.Data[0].upWeight.Value : resTermData.Data[0].meterWeight.Value);
  68. maxWgt = meterWeight + mbhtc.fixedWeightValue.Value;
  69. minWgt = meterWeight - mbhtc.fixedWeightValue.Value;
  70. // 杨秀东 2021年3月15日 新增逻辑,若不验证车号则可以强制进行期限皮重保存;
  71. if ((PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt) || PbCache.monitor.validWgt.Equals("0"))
  72. {
  73. return true;
  74. }
  75. else
  76. {
  77. PbCache.ResultMessage = string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在期限皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围【" + mbhtc.fixedWeightValue + "kg】内,无法留期限皮,请点击语音求助", carNo);
  78. lg.WriteLog(3, string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在期限皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围内【" + mbhtc.fixedWeightValue + "kg】,无法留期限皮,请点击语音求助", carNo));
  79. //不在范围内,无法留期限皮
  80. return false;
  81. }
  82. }
  83. else if (mbhtc.countTypeNo == "001011002") //比例 当前重量>=历史皮重-历史皮重*比例 当前重量<=历史皮重+历史皮重*比例
  84. {
  85. double meterWeight = (PbCache.termTareCount.contrastTypeNo == "001012001" ? resTermData.Data[0].upWeight.Value : resTermData.Data[0].meterWeight.Value);
  86. maxWgt = meterWeight + meterWeight * (mbhtc.rateValue.Value / 100);
  87. minWgt = meterWeight - meterWeight * (mbhtc.rateValue.Value / 100);
  88. //杨秀东 2021年3月15日 新增逻辑,若不验证车号则可以强制进行期限皮重保存;
  89. if ((PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt) || PbCache.monitor.validWgt.Equals("0"))
  90. {
  91. return true;
  92. }
  93. else
  94. {
  95. PbCache.ResultMessage = string.Format("车辆[{0}]当前重【" + PbCache.lockWgt / 1000 + " T】不在期限皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围【" + mbhtc.fixedWeightValue + "%】内,无法留期限皮,请点击语音求助", carNo);
  96. lg.WriteLog(3, string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在期限皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围内【" + mbhtc.fixedWeightValue + "%】,无法留期限皮,请点击语音求助", carNo));
  97. //不在范围内,无法留期限皮
  98. return false;
  99. }
  100. }
  101. else
  102. {
  103. PbCache.ResultMessage = string.Format("车辆[{0}]期限皮重计算配置表中配置的计算方式[{1}]无对应逻辑", carNo, mbhtc.countTypeName);
  104. //没有配置比例,也没配置固重,这个需要增加逻辑代码
  105. lg.WriteLog(3, string.Format("车辆[{0}]期限皮重计算配置表中配置的计算方式[{1}]无对应逻辑", carNo, mbhtc.countTypeName));
  106. return false;
  107. }
  108. }
  109. else
  110. {
  111. //lg.WriteLog(3, string.Format("6车辆[{0}进入留皮判断", carNo));
  112. #region 外面的那一层是新加的代码,这个里面的是原有的判断
  113. //历史皮重计算方式
  114. MeterBaseHisTareCount mbhtc = PbCache.tareCount;
  115. double maxWgt = 0, minWgt = 0;
  116. if (mbhtc.countTypeNo == "001011001") //固重 当前重量>=历史皮重-固重 当前重量<=历史皮重+固重
  117. {
  118. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? rtHisTare.Data[0].upWeight.Value : rtHisTare.Data[0].meterWeight.Value);
  119. maxWgt = meterWeight + mbhtc.fixedWeightValue.Value;
  120. minWgt = meterWeight - mbhtc.fixedWeightValue.Value;
  121. if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt || PbCache.monitor.validWgt.Equals("0"))
  122. {
  123. return true;
  124. }
  125. else
  126. {
  127. PbCache.ResultMessage = string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在历史皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围【" + mbhtc.fixedWeightValue + "kg】内,无法留皮重,请点击语音求助", carNo);
  128. lg.WriteLog(3, string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在历史皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围内【" + mbhtc.fixedWeightValue + "kg】,无法留皮重,请点击语音求助", carNo));
  129. //不在范围内,无法留期限皮
  130. return false;
  131. }
  132. }
  133. else if (mbhtc.countTypeNo == "001011002") //比例 当前重量>=历史皮重-历史皮重*比例 当前重量<=历史皮重+历史皮重*比例
  134. {
  135. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? rtHisTare.Data[0].upWeight.Value : rtHisTare.Data[0].meterWeight.Value);
  136. maxWgt = meterWeight + meterWeight * (mbhtc.rateValue.Value / 100);
  137. minWgt = meterWeight - meterWeight * (mbhtc.rateValue.Value / 100);
  138. if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt || PbCache.monitor.validWgt.Equals("0"))
  139. {
  140. return true;
  141. }
  142. else
  143. {
  144. lg.WriteLog(3, string.Format("8车辆[{0}进入留皮判断min:{1},max:{2},当前{3}", carNo, minWgt, maxWgt, PbCache.lockWgt));
  145. PbCache.ResultMessage = string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在期限皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围【" + mbhtc.rateValue + "%】内,无法留期限皮,请点击语音求助", carNo);
  146. lg.WriteLog(3, string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在期限皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围内【" + mbhtc.rateValue + "%】,无法留期限皮,请点击语音求助", carNo));
  147. //不在范围内,无法留期限皮
  148. return false;
  149. }
  150. }
  151. else
  152. {
  153. PbCache.ResultMessage = string.Format("车辆[{0}]历史皮重计算配置表中配置的计算方式[{1}]无对应逻辑", carNo, mbhtc.countTypeName);
  154. //没有配置比例,也没配置固重,这个需要增加逻辑代码
  155. lg.WriteLog(3, string.Format("车辆[{0}]历史皮重计算配置表中配置的计算方式[{1}]无对应逻辑", carNo, mbhtc.countTypeName));
  156. return false;
  157. }
  158. #endregion
  159. }
  160. }
  161. }
  162. }
  163. else
  164. {
  165. PbCache.ResultMessage = string.Format("车辆[{0}]未给留期限皮权限,不允许留期限皮", carNo);
  166. if (rm.Data == null)
  167. {
  168. lg.WriteLog(3, string.Format("车辆[{0}]未给留期限皮权限,不允许留期限皮!!车号[{0}],状态[0],数据条数为0", carNo));
  169. }
  170. else
  171. {
  172. lg.WriteLog(3, string.Format("车辆[{0}]未给留期限皮权限,不允许留期限皮!!车号[{0}],状态[0],数据条数大于1,为[{1}]", carNo, rm.Data.Count));
  173. }
  174. return false;
  175. }
  176. }
  177. else
  178. {
  179. PbCache.ResultMessage = string.Format("车辆[{0}]获取是否可留期限皮时异常,请语音求助", carNo);
  180. lg.WriteLog(3, string.Format("车辆[{0}]获取是否可留期限皮时,服务端查询失败", carNo));
  181. return false;
  182. }
  183. }
  184. }
  185. else
  186. {
  187. PbCache.ResultMessage = string.Format("车辆[{0}]获取黑名单数据时,请语音求助", carNo);
  188. lg.WriteLog(3, string.Format("车辆[{0}]获取黑名单数据时,服务端查询失败", carNo));
  189. return false;
  190. }
  191. }
  192. /// <summary>
  193. /// 是否显示期限皮重按钮
  194. /// </summary>
  195. /// <param name="carNo"></param>
  196. /// <returns></returns>
  197. public bool isShowBtnTare(string carNo)
  198. {
  199. Log lg = Log.GetInstance();
  200. //是否可留期限皮
  201. MeterBaseTermTareCarService service = new MeterBaseTermTareCarService();
  202. RESTfulResult<List<MeterBaseTermTareCar>> rm = service.doQueryWf(new MeterBaseTermTareCar { carNo = carNo, valueFlag = "0" });
  203. if (rm.Succeed && rm.Data != null && rm.Data.Count == 1)
  204. {
  205. return true;
  206. }
  207. return false;
  208. }
  209. #region
  210. /// <summary>
  211. /// 我们在这个对象中存储
  212. /// </summary>
  213. /// <param name="tareCarInfo"></param>
  214. /// <returns></returns>
  215. public bool ValidMethod(PreTrackScale pre)
  216. {
  217. string carNo = pre.carNo;
  218. //是否可留期限皮
  219. MeterBaseTermTareCarService service = new MeterBaseTermTareCarService();
  220. RESTfulResult<List<MeterBaseTermTareCar>> rm = service.doValidTareWf(pre); //业务类型、物资、车辆均配置能够使用期限皮重
  221. if (rm.Succeed)
  222. {
  223. if (rm.Data != null && rm.Data.Count == 1)
  224. {
  225. //如果可以留期限皮重,则判断车辆历史皮重,若当前皮重在 历史皮重最大最小偏差范围内,则认为当前确实是皮重允许留皮
  226. MeterBaseHisTareDataService mbhds = new MeterBaseHisTareDataService();
  227. RESTfulResult<List<MeterBaseHisTareData>> rtHisTare = mbhds.doQueryWf(new MeterBaseHisTareData { carNo = carNo, valueFlag = "0" });
  228. if (!rtHisTare.Succeed)
  229. {
  230. PbCache.ResultMessage = string.Format("车辆[{0}]获取历史皮重维护数据失败,请语音求助", carNo);
  231. lg.WriteLog(3, string.Format("车辆[{0}]获取历史皮重维护数据失败,请语音求助", carNo));
  232. return false;
  233. }
  234. else
  235. {
  236. if (rtHisTare.Data == null || rtHisTare.Data.Count == 0)
  237. {
  238. PbCache.ResultMessage = string.Format("车辆[{0}]首次进行计量业务时,无法留期限皮", carNo);
  239. lg.WriteLog(3, string.Format("车辆[{0}]首次进行计量业务时,无法留期限皮", carNo));
  240. return false;
  241. }
  242. else
  243. {
  244. //查下是否有有效的期限皮重信息
  245. MeterBaseTermTareDataService termTareDataService = new MeterBaseTermTareDataService();
  246. RESTfulResult<List<MeterBaseTermTareData>> resTermData = termTareDataService.doQueryWf(new MeterBaseTermTareData { carNo = carNo, valueFlag = "0" });
  247. if (resTermData.Succeed && resTermData.Data.Count > 0)
  248. {
  249. MeterBaseTermTareCount mbhtc = PbCache.termTareCount;
  250. double maxWgt = 0, minWgt = 0;
  251. if (mbhtc.countTypeNo == "001011001") //固重 当前重量>=历史皮重-固重 当前重量<=历史皮重+固重
  252. {
  253. double meterWeight = (PbCache.termTareCount.contrastTypeNo == "001012001" ? resTermData.Data[0].upWeight.Value : resTermData.Data[0].meterWeight.Value);
  254. maxWgt = meterWeight + mbhtc.fixedWeightValue.Value;
  255. minWgt = meterWeight - mbhtc.fixedWeightValue.Value;
  256. // 杨秀东 2021年3月15日 新增逻辑,若不验证车号则可以强制进行期限皮重保存;
  257. if ((PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt) || PbCache.monitor.validWgt.Equals("0"))
  258. {
  259. return true;
  260. }
  261. else
  262. {
  263. PbCache.ResultMessage = string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在期限皮重允许的范围【" + meterWeight + "kg】内,无法留期限皮,请点击语音求助", carNo);
  264. lg.WriteLog(3, string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在期限皮重允许的范围内,无法留期限皮,请点击语音求助", carNo));
  265. //不在范围内,无法留期限皮
  266. return false;
  267. }
  268. }
  269. else if (mbhtc.countTypeNo == "001011002") //比例 当前重量>=历史皮重-历史皮重*比例 当前重量<=历史皮重+历史皮重*比例
  270. {
  271. double meterWeight = (PbCache.termTareCount.contrastTypeNo == "001012001" ? resTermData.Data[0].upWeight.Value : resTermData.Data[0].meterWeight.Value);
  272. maxWgt = meterWeight + meterWeight * (mbhtc.rateValue.Value / 100);
  273. minWgt = meterWeight - meterWeight * (mbhtc.rateValue.Value / 100);
  274. //杨秀东 2021年3月15日 新增逻辑,若不验证车号则可以强制进行期限皮重保存;
  275. if ((PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt) || PbCache.monitor.validWgt.Equals("0"))
  276. {
  277. return true;
  278. }
  279. else
  280. {
  281. PbCache.ResultMessage = string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在期限皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围【" + mbhtc.rateValue + "%】内,无法留期限皮,请点击语音求助", carNo);
  282. lg.WriteLog(3, string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在期限皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围内【" + mbhtc.rateValue + "%】,无法留期限皮,请点击语音求助", carNo));
  283. //不在范围内,无法留期限皮
  284. return false;
  285. }
  286. }
  287. else
  288. {
  289. PbCache.ResultMessage = string.Format("车辆[{0}]期限皮重计算配置表中配置的计算方式[{1}]无对应逻辑", carNo, mbhtc.countTypeName);
  290. //没有配置比例,也没配置固重,这个需要增加逻辑代码
  291. lg.WriteLog(3, string.Format("车辆[{0}]期限皮重计算配置表中配置的计算方式[{1}]无对应逻辑", carNo, mbhtc.countTypeName));
  292. return false;
  293. }
  294. }
  295. else
  296. {
  297. //lg.WriteLog(3, string.Format("6车辆[{0}进入留皮判断", carNo));
  298. #region 外面的那一层是新加的代码,这个里面的是原有的判断
  299. //历史皮重计算方式
  300. MeterBaseHisTareCount mbhtc = PbCache.tareCount;
  301. double maxWgt = 0, minWgt = 0;
  302. if (mbhtc.countTypeNo == "001011001") //固重 当前重量>=历史皮重-固重 当前重量<=历史皮重+固重
  303. {
  304. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? rtHisTare.Data[0].upWeight.Value : rtHisTare.Data[0].meterWeight.Value);
  305. maxWgt = meterWeight + mbhtc.fixedWeightValue.Value;
  306. minWgt = meterWeight - mbhtc.fixedWeightValue.Value;
  307. if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt || PbCache.monitor.validWgt.Equals("0"))
  308. {
  309. return true;
  310. }
  311. else
  312. {
  313. PbCache.ResultMessage = string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在历史皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围【" + mbhtc.fixedWeightValue + "kg】内,无法留皮重,请点击语音求助", carNo);
  314. lg.WriteLog(3, string.Format("7车辆[{0}进入留皮判断;车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在历史皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围内【" + mbhtc.fixedWeightValue + "kg】,无法留皮重,请点击语音求助", carNo));
  315. //不在范围内,无法留期限皮
  316. return false;
  317. }
  318. }
  319. else if (mbhtc.countTypeNo == "001011002") //比例 当前重量>=历史皮重-历史皮重*比例 当前重量<=历史皮重+历史皮重*比例
  320. {
  321. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? rtHisTare.Data[0].upWeight.Value : rtHisTare.Data[0].meterWeight.Value);
  322. maxWgt = meterWeight + meterWeight * (mbhtc.rateValue.Value / 100);
  323. minWgt = meterWeight - meterWeight * (mbhtc.rateValue.Value / 100);
  324. if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt || PbCache.monitor.validWgt.Equals("0"))
  325. {
  326. return true;
  327. }
  328. else
  329. {
  330. PbCache.ResultMessage = string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在历史皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围【" + mbhtc.rateValue + "%】内,无法留皮重,请点击语音求助", carNo);
  331. lg.WriteLog(3, string.Format("车辆[{0}]当前重量【" + PbCache.lockWgt / 1000 + " T】不在历史皮重【" + Convert.ToDouble(meterWeight) / 1000 + "T】允许的范围内【" + mbhtc.rateValue + "%】,无法留皮重,请点击语音求助", carNo));
  332. //不在范围内,无法留期限皮
  333. return false;
  334. }
  335. }
  336. else
  337. {
  338. PbCache.ResultMessage = string.Format("车辆[{0}]历史皮重计算配置表中配置的计算方式[{1}]无对应逻辑", carNo, mbhtc.countTypeName);
  339. //没有配置比例,也没配置固重,这个需要增加逻辑代码
  340. lg.WriteLog(3, string.Format("车辆[{0}]历史皮重计算配置表中配置的计算方式[{1}]无对应逻辑", carNo, mbhtc.countTypeName));
  341. return false;
  342. }
  343. #endregion
  344. }
  345. }
  346. }
  347. }
  348. else
  349. {
  350. PbCache.ResultMessage = string.Format("车辆[{0}]未给留期限皮权限,不允许留期限皮", carNo);
  351. if (rm.Data == null)
  352. {
  353. lg.WriteLog(3, string.Format("车辆[{0}]未给留期限皮权限,不允许留期限皮!!车号[{0}],状态[0],数据条数为0", carNo));
  354. }
  355. else
  356. {
  357. lg.WriteLog(3, string.Format("车辆[{0}]未给留期限皮权限,不允许留期限皮!!车号[{0}],状态[0],数据条数大于1,为[{1}]", carNo, rm.Data.Count));
  358. }
  359. return false;
  360. }
  361. }
  362. else
  363. {
  364. PbCache.ResultMessage = string.Format("车辆[{0}]获取是否可留期限皮时异常,请语音求助", carNo);
  365. lg.WriteLog(3, string.Format("车辆[{0}]获取是否可留期限皮时,服务端查询失败", carNo));
  366. return false;
  367. }
  368. }
  369. #endregion
  370. /// <summary>
  371. /// 按业务类型,物资编码、车辆、业务类型
  372. /// </summary>
  373. /// <param name="pre"></param>
  374. /// <returns></returns>
  375. public bool ValidMethodThree(PreTrackScale pre)
  376. {
  377. if (pre == null || string.IsNullOrEmpty(pre.matterNo) || string.IsNullOrEmpty(pre.meterTypeNo) || string.IsNullOrEmpty(pre.carNo))
  378. {
  379. PbCache.ResultMessage = string.Format("车辆[{0}]预报中的物资名称、业务类型、车号,均不允许为空!请重新扫描二维码!", pre.carNo);
  380. lg.WriteLog(3, string.Format("车辆[{0}]预报中的物资名称、业务类型、车号,均不允许为空!请重新扫描二维码!", pre.carNo));
  381. return false;
  382. }
  383. //查下当前拖的物料是否可用期限皮;验证业务类型是否允许使用期限皮重
  384. string sqls = @"select t.matter_no id, t.matter_name text
  385. from meter_base_matter_info t,meter_base_metertype_conf t2
  386. where t.allowed_tare_weight = '1'
  387. and t.valid_flag = '1'
  388. and t.matter_no='" + pre.matterNo + @"'
  389. and t2.is_allow_term_tare = '1' and t2.meter_type_no = '" + pre.meterTypeNo + @"'";
  390. PbModelDbService<List<PbModelDb>> pbp = new PbModelDbService<List<PbModelDb>>();
  391. RESTfulResult<List<PbModelDb>> rmT = pbp.executeSqlDataWf(sqls);
  392. if (rmT.Succeed)
  393. {
  394. if (rmT.Data != null && rmT.Data.Count > 0)
  395. {
  396. PbCache.ResultMessage = string.Format("物资【{0}】在使用【{1}】业务类型计量时,不能使用一次皮重计量," +
  397. "请点击【期限皮重】留期限皮重,然后计量重车!", pre.matterName, pre.meterTypeName);
  398. return true;
  399. }
  400. else
  401. {
  402. PbCache.ResultMessage = string.Format("物资【{0}】在使用【{1}】业务类型计量时,不允许留期限皮重," +
  403. "请点击【保存】普通皮重,然后计量重车!", pre.matterName, pre.meterTypeName);
  404. return false;
  405. }
  406. }
  407. else
  408. {
  409. PbCache.ResultMessage = "计量失败,获取期限皮可用物料异常:" + rmT.ResultMessage;
  410. return false;
  411. }
  412. }
  413. /// <summary>
  414. /// 若存在有效的一次计量数据,则不允许进行期限皮重保存
  415. /// </summary>
  416. /// <param name="pre"></param>
  417. /// <returns></returns>
  418. public bool ValidActualFirst(PreTrackScale pre)
  419. {
  420. if (pre == null || string.IsNullOrEmpty(pre.matterNo) || string.IsNullOrEmpty(pre.meterTypeNo) || string.IsNullOrEmpty(pre.carNo))
  421. {
  422. PbCache.ResultMessage = string.Format("车辆[{0}]预报中的物资名称、业务类型、车号,均不允许为空!请重新扫描二维码!", pre.carNo);
  423. lg.WriteLog(3, string.Format("车辆[{0}]预报中的物资名称、业务类型、车号,均不允许为空!请重新扫描二维码!", pre.carNo));
  424. return false;
  425. }
  426. MeterWorkCarActualFirstService mwcfs = new MeterWorkCarActualFirstService();
  427. //VALUE_FLAG 状态(0=作废,1=有效,2=结净)
  428. RESTfulResult<List<MeterWorkCarActualFirst>> rmX = mwcfs.doQueryOrderByTime(new MeterWorkCarActualFirst { valueFlag="1", carNo = pre.carNo });
  429. if (rmX.Succeed)
  430. {
  431. if (rmX.Data != null && rmX.Data.Count > 0)
  432. {
  433. PbCache.ResultMessage = string.Format("车辆【{0}】存在一条计量时间为【" + rmX.Data[0].createTime?.ToString("yyyy-MM-dd HH:mm:ss") + "】," +
  434. "重量为【" + rmX.Data[0].meterWeight / 1000 + "T】的一次计量数据,不允许留期限皮重," +
  435. "请完成上一次计量流程,或点击【语音求助】联系司秤工处理!", pre.carNo, pre.meterTypeName);
  436. return false;
  437. }
  438. }
  439. else
  440. {
  441. PbCache.ResultMessage = "计量失败,一次计量数据异常:" + rmX.ResultMessage;
  442. return false;
  443. }
  444. return true;
  445. }
  446. }
  447. }