SaveMethod.cs 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using Common.utils;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace MeterSceneLibrary.JISCO
  10. {
  11. public class SaveMethod
  12. {
  13. // 一次计量数据
  14. private MeterWorkCarActualFirstService mwcfs = new MeterWorkCarActualFirstService();
  15. // 车辆委托表
  16. private PreTrackScaleService preTrackScaleService = new PreTrackScaleService();
  17. // 留期限皮操作
  18. private MeterBaseTermTareDataService termTareDate = new MeterBaseTermTareDataService();
  19. private rtInfo rt = new rtInfo();
  20. // 构建一次计量数据
  21. private MeterWorkCarActualFirst mwaf = new MeterWorkCarActualFirst();
  22. // 结净最小值,默认取配置文件
  23. private double diffrentWgt = AppConfigCache.differenceWgt;
  24. // 根据车号查询委托表中未使用和使用中的委托
  25. private List<PreTrackScale> listPreScale;
  26. #region 私有方法
  27. /// <summary>
  28. /// 保存一次计量数据
  29. /// </summary>
  30. public void doAddFirst(MeterWorkCarActualFirst model)
  31. {
  32. //操作日志
  33. MeterMonitorNote monitorNote = new MeterMonitorNote();
  34. monitorNote.baseSpotNo = model.baseSpotNo;
  35. monitorNote.baseSpotName = model.baseSpotName;
  36. monitorNote.operationContent = string.Format("产生一次计量数据");
  37. monitorNote.operationTime = model.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  38. monitorNote.carNo = model.carNo;
  39. monitorNote.meterNoteSource = "0";
  40. PbSomeModel<MeterWorkCarActualFirst, MeterMonitorNote, MeterMonitorNote, MeterMonitorNote> pbSomeModel = new PbSomeModel<MeterWorkCarActualFirst, MeterMonitorNote, MeterMonitorNote, MeterMonitorNote>();
  41. pbSomeModel.one = model;
  42. pbSomeModel.two = monitorNote;
  43. RESTfulResult<string> rmI = mwcfs.doAdd(pbSomeModel);
  44. if (rmI.Succeed)
  45. {
  46. rt.result = true;
  47. rt.resultInfo = "称重完成";
  48. PbCache.actualFirstNo = rmI.Data;
  49. PbCache.strQRCode = rmI.Message;
  50. PbCache.isTareWeight = false;//毛重
  51. }
  52. else
  53. {
  54. rt.result = false;
  55. rt.isError = true;
  56. rt.resultInfo = "称重数据保存失败";
  57. }
  58. }
  59. /// <summary>
  60. /// 产生一次计量数据和没有委托的洁净数据
  61. /// </summary>
  62. /// <param name="scale"></param>
  63. /// <param name="actualFirst"></param>
  64. public void doNet(InnerMeterInfo scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst2)
  65. {
  66. // 构造结净数据
  67. MeterWorkCarActual netDb = new MeterWorkCarActual();
  68. // 将第一个一次数据状态改为 已结净
  69. //actualFirst.valueFlag = "2";
  70. // 复制对象
  71. EntityBase<InnerMeterInfo> entityBase = new EntityBase<InnerMeterInfo>();
  72. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  73. netDb.carNo = actualFirst.carNo;
  74. netDb.tareTime = DateTime.Now;
  75. netDb.tareWeight = actualFirst.meterWeight.Value < PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁小谁是皮 BourneCao
  76. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  77. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  78. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  79. /* netDb.tare_man_no = "";
  80. netDb.tare_man_name = "";
  81. netDb.tare_class = "";
  82. netDb.tare_group = "";*/
  83. // 毛重计量作业编号
  84. netDb.actualFirst1No = actualFirst.meterWeight.Value > PbCache.lockWgt ? actualFirst.actualFirstNo : actualFirst2.actualFirstNo;
  85. // 皮重计量作业编号
  86. netDb.actualFirst2No = actualFirst.meterWeight.Value < PbCache.lockWgt ? actualFirst.actualFirstNo : actualFirst2.actualFirstNo;
  87. netDb.grossTime = actualFirst.createTime;
  88. netDb.grossWeight = actualFirst.meterWeight.Value > PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁大谁是毛 BourneCao
  89. netDb.baseSpot1No = actualFirst.baseSpotNo;
  90. netDb.baseSpot1Name = actualFirst.baseSpotName;
  91. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  92. netDb.grossManNo = actualFirst.createManNo;
  93. netDb.grossManName = actualFirst.createManName;
  94. netDb.grossClass = actualFirst.meterClass;
  95. netDb.grossGroup = actualFirst.meterGroup;
  96. netDb.valueFlag = "3";
  97. netDb.netTime = DateTime.Now;
  98. //netDb.netManNo = appUser.userid; //净重计量员编码
  99. //netDb.netManName = appUser.username; //净重计量员名称
  100. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  101. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  102. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  103. //净重=毛-皮-附加重量
  104. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  105. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  106. netDb.valueFlag = "0"; //0=有效,1=作废
  107. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  108. //要判断下当前是否勾选了不验证皮重
  109. //操作日志
  110. MeterMonitorNote monitorNote = new MeterMonitorNote();
  111. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  112. monitorNote.baseSpotName = mwaf.baseSpotName;
  113. monitorNote.operationContent = string.Format("产生一次计量数据和没有委托的洁净数据");
  114. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  115. monitorNote.carNo = mwaf.carNo;
  116. monitorNote.meterNoteSource = "0";
  117. // 保存结净记录,后续改成统一提交模式 BourneCao
  118. MeterWorkCarActualService actualService = new MeterWorkCarActualService();
  119. actualService.doAddNet(actualFirst, actualFirst2, netDb, monitorNote, "0");
  120. }
  121. /// <summary>
  122. /// 混装/混卸保存逻辑
  123. /// </summary>
  124. /// <param name="scale">委托数据</param>
  125. /// <param name="actualFirst">自动创建的一次计量数据</param>
  126. /// <param name="actualFirst2">本次一次计量数据</param>
  127. public void doNetHZHX(InnerMeterInfo scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst2)
  128. {
  129. // 构造结净数据
  130. MeterWorkCarActual netDb = new MeterWorkCarActual();
  131. // 复制委托
  132. EntityBase<InnerMeterInfo> entityBase1 = new EntityBase<InnerMeterInfo>();
  133. actualFirst = entityBase1.format<MeterWorkCarActualFirst>(scale, actualFirst);
  134. EntityBase<InnerMeterInfo> entityBase2 = new EntityBase<InnerMeterInfo>();
  135. actualFirst2 = entityBase2.format<MeterWorkCarActualFirst>(scale, actualFirst2);
  136. EntityBase<InnerMeterInfo> entityBase3 = new EntityBase<InnerMeterInfo>();
  137. netDb = entityBase3.format<MeterWorkCarActual>(scale, netDb);
  138. netDb.carNo = actualFirst.carNo;
  139. netDb.tareTime = DateTime.Now;
  140. netDb.tareWeight = actualFirst.meterWeight.Value < actualFirst2.meterWeight.Value ? actualFirst.meterWeight.Value : actualFirst2.meterWeight.Value; // 谁小谁是皮 BourneCao
  141. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  142. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  143. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  144. /* netDb.tare_man_no = "";
  145. netDb.tare_man_name = "";
  146. netDb.tare_class = "";
  147. netDb.tare_group = "";*/
  148. netDb.actualFirst1No = actualFirst.meterWeight.Value > actualFirst2.meterWeight.Value ? actualFirst.actualFirstNo : actualFirst2.actualFirstNo;
  149. netDb.actualFirst2No = actualFirst.meterWeight.Value < actualFirst2.meterWeight.Value ? actualFirst.actualFirstNo : actualFirst2.actualFirstNo;
  150. netDb.grossTime = actualFirst.createTime;
  151. netDb.grossWeight = actualFirst.meterWeight.Value > actualFirst2.meterWeight.Value ? actualFirst.meterWeight.Value : actualFirst2.meterWeight.Value; // 谁大谁是毛 BourneCao
  152. netDb.baseSpot1No = actualFirst.baseSpotNo;
  153. netDb.baseSpot1Name = actualFirst.baseSpotName;
  154. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  155. netDb.grossManNo = actualFirst.createManNo;
  156. netDb.grossManName = actualFirst.createManName;
  157. netDb.grossClass = actualFirst.meterClass;
  158. netDb.grossGroup = actualFirst.meterGroup;
  159. netDb.valueFlag = "3";
  160. netDb.netTime = DateTime.Now;
  161. //netDb.netManNo = appUser.userid; //净重计量员编码
  162. //netDb.netManName = appUser.username; //净重计量员名称
  163. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  164. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  165. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  166. //净重=毛-皮-附加重量
  167. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  168. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  169. netDb.valueFlag = "0"; //0=有效,1=作废
  170. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  171. //要判断下当前是否勾选了不验证皮重
  172. //操作日志
  173. MeterMonitorNote monitorNote = new MeterMonitorNote();
  174. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  175. monitorNote.baseSpotName = mwaf.baseSpotName;
  176. monitorNote.operationContent = string.Format("混装/混卸保存逻辑");
  177. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  178. monitorNote.carNo = mwaf.carNo;
  179. monitorNote.meterNoteSource = "0";
  180. // 保存结净记录,后续改成统一提交模式 BourneCao
  181. MeterWorkCarActualService actualService = new MeterWorkCarActualService();
  182. actualService.doAddNetHZHX(actualFirst2, actualFirst, netDb, monitorNote, "0");
  183. }
  184. /// <summary>
  185. /// 产生一次计量数据,同时结净并匹配委托
  186. /// </summary>
  187. /// <param name="scale"></param>
  188. /// <param name="actualFirst"></param>
  189. public void doNetAndScale(InnerMeterInfo scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst2)
  190. {
  191. // 构造结净数据
  192. MeterWorkCarActual netDb = new MeterWorkCarActual();
  193. // 复制对象
  194. EntityBase<InnerMeterInfo> entityBase = new EntityBase<InnerMeterInfo>();
  195. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  196. netDb.tareTime = DateTime.Now;
  197. netDb.tareWeight = actualFirst.meterWeight.Value < PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁小谁是皮 BourneCao
  198. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  199. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  200. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  201. /* netDb.tare_man_no = "";
  202. netDb.tare_man_name = "";
  203. netDb.tare_class = "";
  204. netDb.tare_group = "";*/
  205. netDb.actualFirst1No = actualFirst.actualFirstNo;
  206. netDb.actualFirst2No = actualFirst.actualFirstNo;
  207. netDb.grossTime = actualFirst.createTime;
  208. netDb.grossWeight = actualFirst.meterWeight.Value > PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁大谁是毛 BourneCao
  209. netDb.baseSpot1No = actualFirst.baseSpotNo;
  210. netDb.baseSpot1Name = actualFirst.baseSpotName;
  211. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  212. netDb.grossManNo = actualFirst.createManNo;
  213. netDb.grossManName = actualFirst.createManName;
  214. netDb.grossClass = actualFirst.meterClass;
  215. netDb.grossGroup = actualFirst.meterGroup;
  216. netDb.valueFlag = "1";
  217. netDb.netTime = DateTime.Now;
  218. //netDb.netManNo = appUser.userid; //净重计量员编码
  219. //netDb.netManName = appUser.username; //净重计量员名称
  220. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  221. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  222. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  223. //净重=毛-皮-附加重量
  224. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  225. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  226. netDb.valueFlag = "0"; //0=有效,1=作废
  227. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  228. //要判断下当前是否勾选了不验证皮重
  229. // 保存结净记录,后续改成统一提交模式 BourneCao
  230. }
  231. /// <summary>
  232. /// 产生一次计量数据,同时结净并匹配委托(多委托)
  233. /// </summary>
  234. /// <param name="scale"></param>
  235. /// <param name="actualFirst"></param>
  236. public void doNetAddTwo(InnerMeterInfo scale, MeterWorkCarActualFirst actualFirst)
  237. {
  238. // 构造结净数据
  239. MeterWorkCarActual netDb = new MeterWorkCarActual();
  240. // 复制对象
  241. EntityBase<InnerMeterInfo> entityBase = new EntityBase<InnerMeterInfo>();
  242. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  243. netDb.tareTime = DateTime.Now;
  244. netDb.tareWeight = actualFirst.meterWeight.Value < PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁小谁是皮 BourneCao
  245. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  246. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  247. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  248. /* netDb.tare_man_no = "";
  249. netDb.tare_man_name = "";
  250. netDb.tare_class = "";
  251. netDb.tare_group = "";*/
  252. netDb.actualFirst1No = actualFirst.actualFirstNo;
  253. netDb.grossTime = actualFirst.createTime;
  254. netDb.grossWeight = actualFirst.meterWeight.Value > PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁大谁是毛 BourneCao
  255. netDb.baseSpot1No = actualFirst.baseSpotNo;
  256. netDb.baseSpot1Name = actualFirst.baseSpotName;
  257. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  258. netDb.grossManNo = actualFirst.createManNo;
  259. netDb.grossManName = actualFirst.createManName;
  260. netDb.grossClass = actualFirst.meterClass;
  261. netDb.grossGroup = actualFirst.meterGroup;
  262. netDb.netTime = DateTime.Now;
  263. //netDb.netManNo = appUser.userid; //净重计量员编码
  264. //netDb.netManName = appUser.username; //净重计量员名称
  265. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  266. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  267. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  268. //净重=毛-皮-附加重量
  269. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  270. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  271. netDb.valueFlag = "0"; //0=有效,1=作废
  272. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  273. //要判断下当前是否勾选了不验证皮重
  274. // 保存结净记录,后续改成统一提交模式 BourneCao
  275. }
  276. /// <summary>
  277. /// 一车多卸
  278. /// a. 取第一条委托正常洁净产生一条净重记录
  279. /// b.并自动生成一条一次毛重计量数据并和第二条委托匹配,重量值为当次计量数据中的毛重
  280. /// </summary>
  281. /// <param name="scale"></param>
  282. /// <param name="actualFirst"></param>
  283. public void doNetMass(InnerMeterInfo scale, MeterWorkCarActualFirst actualFirst)
  284. {
  285. // 构造结净数据
  286. MeterWorkCarActual netDb = new MeterWorkCarActual();
  287. // 复制对象
  288. EntityBase<InnerMeterInfo> entityBase = new EntityBase<InnerMeterInfo>();
  289. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  290. netDb.tareTime = DateTime.Now;
  291. netDb.tareWeight = actualFirst.meterWeight.Value < PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁小谁是皮 BourneCao
  292. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  293. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  294. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  295. /* netDb.tare_man_no = "";
  296. netDb.tare_man_name = "";
  297. netDb.tare_class = "";
  298. netDb.tare_group = "";*/
  299. netDb.actualFirst1No = actualFirst.actualFirstNo;
  300. netDb.grossTime = actualFirst.createTime;
  301. netDb.grossWeight = actualFirst.meterWeight.Value > PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁大谁是毛 BourneCao
  302. netDb.baseSpot1No = actualFirst.baseSpotNo;
  303. netDb.baseSpot1Name = actualFirst.baseSpotName;
  304. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  305. netDb.grossManNo = actualFirst.createManNo;
  306. netDb.grossManName = actualFirst.createManName;
  307. netDb.grossClass = actualFirst.meterClass;
  308. netDb.grossGroup = actualFirst.meterGroup;
  309. netDb.netTime = DateTime.Now;
  310. //netDb.netManNo = appUser.userid; //净重计量员编码
  311. //netDb.netManName = appUser.username; //净重计量员名称
  312. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  313. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  314. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  315. //净重=毛-皮-附加重量
  316. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  317. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  318. netDb.valueFlag = "0"; //0=有效,1=作废
  319. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  320. //要判断下当前是否勾选了不验证皮重
  321. // 保存结净记录,后续改成统一提交模式 BourneCao
  322. }
  323. public void validHisTare()
  324. {
  325. // 查询当前秤点是否启用历史皮重判断(暂时不考虑此限制)By BourneCao
  326. //String spotNo = PbCache.sportInfo.baseSpotNo;
  327. /* 判断当前重量是否满足历史皮重相应限制 */
  328. // 读取车辆历史皮重信息
  329. List<MeterBaseHisTareData> validHis = getHisTare(CarNoUtil.CarNoChange(PbCache.lockCarNo));
  330. // 读取历史皮重计算配置
  331. MeterBaseHisTareCount hisTareCount = PbCache.tareCount;
  332. // 没有历史皮重记录,相关操作都可跳过
  333. if (validHis.Count >= 1)
  334. {
  335. double maxWgt = 0, minWgt = 0, wgt = PbCache.lockWgt;
  336. if (hisTareCount.countTypeNo == "001011001") //固重 当前重量>=历史皮重-固重 当前重量<=历史皮重+固重
  337. {
  338. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? validHis[0].upWeight.Value : validHis[0].meterWeight.Value);
  339. maxWgt = meterWeight + hisTareCount.fixedWeightValue.Value;
  340. minWgt = meterWeight - hisTareCount.fixedWeightValue.Value;
  341. if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt)
  342. {
  343. PbCache.monitorResult.valid_wgt = true;
  344. }
  345. else
  346. {
  347. PbCache.monitorResult.valid_wgt = false;
  348. PbCache.ResultMessage = "当前皮重【" + PbCache.lockWgt / 1000 + "T 】不在皮重配置范围,历史皮重为【" + Convert.ToDouble(meterWeight) / 1000 + "T】,偏差最大允许重量为【" + hisTareCount.fixedWeightValue.Value + "kg】";
  349. }
  350. }
  351. else if (hisTareCount.countTypeNo == "001011002") //比例 当前重量>=历史皮重-历史皮重*比例 当前重量<=历史皮重+历史皮重*比例
  352. {
  353. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? validHis[0].upWeight.Value : validHis[0].meterWeight.Value);
  354. maxWgt = meterWeight + meterWeight * (hisTareCount.rateValue.Value / 100); //历史皮重+历史皮重*比例
  355. minWgt = meterWeight - meterWeight * (hisTareCount.rateValue.Value / 100); //历史皮重-历史皮重*比例
  356. if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt)
  357. {
  358. PbCache.monitorResult.valid_wgt = true;
  359. }
  360. else
  361. {
  362. PbCache.monitorResult.valid_wgt = false;
  363. PbCache.ResultMessage = "当前皮重【" + PbCache.lockWgt / 1000 + "T 】不在皮重配置范围,历史皮重为【" + (double)Convert.ToDouble(meterWeight) / 1000 + "T】,偏差最大允许比例值为【" + hisTareCount.fixedWeightValue.Value + "%】";
  364. }
  365. }
  366. else
  367. {
  368. PbCache.monitorResult.valid_wgt = false;
  369. PbCache.ResultMessage = string.Format("未找到历史皮重计算类型{0}配置数据", hisTareCount.countTypeNo);
  370. }
  371. }
  372. }
  373. public List<MeterBaseHisTareData> getHisTare(string carNo)
  374. {
  375. List<MeterBaseHisTareData> lmhtd = new List<MeterBaseHisTareData>();
  376. PbCache.monitorResult.haveHisTare = false;//不存在历史皮
  377. MeterBaseHisTareDataService mbtds = new MeterBaseHisTareDataService();
  378. RESTfulResult<List<MeterBaseHisTareData>> rm = mbtds.doQueryWf(new MeterBaseHisTareData { valueFlag = "0", carNo = carNo });
  379. if (rm.Succeed)
  380. {
  381. if (rm.Data != null && rm.Data.Count > 0)
  382. {
  383. PbCache.monitorResult.haveHisTare = true;//存在历史皮
  384. lmhtd = rm.Data;
  385. }
  386. }
  387. else
  388. {
  389. lmhtd = null;
  390. }
  391. PbCache.monitorResult.hisTareData = lmhtd;
  392. return lmhtd;
  393. }
  394. public void doTermTareData()
  395. {
  396. MeterBaseTermTareData mbttd = new MeterBaseTermTareData();
  397. mbttd.baseSpotNo = PbCache.sportInfo.baseSpotNo;
  398. mbttd.baseSpotName = PbCache.sportInfo.baseSpotName;
  399. mbttd.carNo = PbCache.collect.carno;
  400. mbttd.meterWeight = PbCache.lockWgt;
  401. mbttd.valueFlag = "0";
  402. mbttd.createTime = DateTime.Now;
  403. mbttd.createManNo = PbCache.sportInfo.baseSpotNo;
  404. mbttd.createManName = PbCache.sportInfo.baseSpotName;
  405. mbttd.meterTime = mbttd.createTime.Value;
  406. mbttd.startTime = mbttd.createTime.Value;
  407. //操作日志
  408. MeterMonitorNote monitorNote = new MeterMonitorNote();
  409. monitorNote.baseSpotNo = mbttd.baseSpotNo;
  410. monitorNote.baseSpotName = mbttd.baseSpotName;
  411. monitorNote.operationContent = string.Format("保存期限皮重");
  412. monitorNote.operationTime = mbttd.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  413. monitorNote.carNo = mbttd.carNo;
  414. monitorNote.meterNoteSource = "0";
  415. //期限皮重数据保存
  416. RESTfulResult<string> RESTfulResult = termTareDate.doSaveWf(mbttd, monitorNote);
  417. }
  418. /// <summary>
  419. /// 失败执行逻辑
  420. /// </summary>
  421. public void doError(string msg)
  422. {
  423. rt.result = false;
  424. rt.isError = true;
  425. rt.resultInfo = "计量失败:" + msg;
  426. }
  427. #endregion
  428. }
  429. }