InnerMeter.cs 92 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using MeterConditionLibrary;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. namespace MeterSceneLibrary
  8. {
  9. /// <summary>
  10. /// 内倒计量业务
  11. /// </summary>
  12. public class InnerMeter
  13. {
  14. /// <summary>
  15. /// InnerMeterInfo 如果没有一次数据,那么scale的物料会为空,若有一次数据,由于会写到界面上,所以这个也会有值
  16. /// </summary>
  17. /// <param name="scale"></param>
  18. /// <returns></returns>
  19. public rtInfo MeterMethod(InnerMeterInfo scale)
  20. {
  21. Log lg = Log.GetInstance();
  22. rtInfo rt = new rtInfo();
  23. rt.isError = false;
  24. string ResultMessage = "";
  25. bool isError = false;
  26. //验证架子号与附加重量的关系;2021年6月23日 发现存在有架子号没重量的情况
  27. if (PbCache.addWgt == 0 && !string.IsNullOrEmpty(scale.addWgtPk))
  28. {
  29. rt.result = false;
  30. rt.isError = isError;
  31. rt.resultInfo = "已经输入架子号,但附加重量为 0 ,请重新选择架子号或清空架子号!";
  32. PbCache.ResultMessage = "已经输入架子号,但附加重量为 0 ,请重新选择架子号或清空架子号!";
  33. return rt;
  34. }
  35. //验证是否是内倒车辆
  36. //*
  37. if (string.IsNullOrEmpty(scale.predictionNo) || !scale.predictionNo.StartsWith("000"))
  38. {
  39. validCarCard vcc = new validCarCard();
  40. if (!vcc.ValidMethod(scale, out ResultMessage, out isError))
  41. {
  42. rt.result = false;
  43. rt.isError = isError;
  44. rt.resultInfo = ResultMessage;
  45. return rt;
  46. }
  47. }
  48. //*/
  49. //验证两次计量时间间隔
  50. PreTrackScale preTrack = new PreTrackScale();
  51. preTrack.carNo = scale.carNo;
  52. validTimeInterval vti = new validTimeInterval();
  53. vti.ValidMethod(preTrack, "1", null);
  54. if (!PbCache.monitorResult.valid_time_interval)
  55. {
  56. rt.result = false;
  57. rt.isError = true;
  58. rt.resultInfo = PbCache.ResultMessage;
  59. return rt;
  60. }
  61. validWgt validWgt = new validWgt();
  62. //验证是否是皮重,若为true则是皮,否则无法判断是毛还是皮
  63. validWgt.ValidMethod(new PreTrackScale { carNo = scale.carNo, matterNo = scale.matterNo });
  64. //查询车辆的历史皮重
  65. MeterBaseHisTareDataService mbtds = new MeterBaseHisTareDataService();
  66. RESTfulResult<List<MeterBaseHisTareData>> rm = mbtds.doQueryWf(new MeterBaseHisTareData { valueFlag = "0", carNo = scale.carNo });
  67. if (!rm.Succeed)
  68. {
  69. rt.result = false;
  70. rt.isError = true;
  71. rt.resultInfo = "没有计量信息点语音求助";
  72. PbCache.ResultMessage = "获取历史皮重异常!";
  73. return rt;
  74. }
  75. //*
  76. //厂内车,验证危化品验证,存在物料,且不为皮重
  77. if (!string.IsNullOrEmpty(scale.matterNo) && !PbCache.monitorResult.valid_wgt)
  78. {
  79. validInnerExceedWgt vew = new validInnerExceedWgt();
  80. vew.validMatMethod(scale, rm);
  81. if (!PbCache.monitorResult.valid_exceed_wgt)
  82. {
  83. rt.result = false;
  84. rt.isError = true;
  85. rt.resultInfo = PbCache.ResultMessage;
  86. return rt;
  87. }
  88. }
  89. //*/
  90. //获取一次计量数据
  91. MeterWorkCarActualFirstService mwcfs = new MeterWorkCarActualFirstService();
  92. RESTfulResult<List<MeterWorkCarActualFirst>> rmX = mwcfs.doQueryWf(new MeterWorkCarActualFirst { valueFlag = "1", carNo = scale.carNo });
  93. if (!rmX.Succeed)
  94. {
  95. rt.result = false;
  96. rt.resultInfo = "没有计量信息点语音求助";
  97. PbCache.ResultMessage = "获取一次计量数据异常!请点[语音求助]";
  98. rt.isError = true;
  99. }
  100. else
  101. {
  102. if (rmX.Data != null && rmX.Data.Count == 1 && !"中控倒运".Equals(rmX.Data[0].meterTypeName))
  103. {
  104. rt.result = false;
  105. rt.isError = isError;
  106. rt.resultInfo = "已经存在一次计量信息";
  107. lg.WriteLog(3, "一次计量数据的类型[" + rmX.Data[0].meterTypeName + "]与当前的业务类型[中控倒运]不一致,请点击[返回主界面]重新选择业务类型!");
  108. PbCache.ResultMessage = "一次计量数据的类型[" + rmX.Data[0].meterTypeName + "]与当前的业务类型[中控倒运]不一致,请点击[返回主界面]重新选择业务类型!";
  109. return rt;
  110. }
  111. }
  112. //相同名称的均赋值一次
  113. MeterWorkCarActualFirst mwaf = new MeterWorkCarActualFirst();
  114. EntityBase<InnerMeterInfo> entityBase = new EntityBase<InnerMeterInfo>();
  115. mwaf = entityBase.format<MeterWorkCarActualFirst>(scale, mwaf);
  116. mwaf.actualFirstNo = DateTime.Now.ToString("yyyyMMdd");//10
  117. mwaf.meterWeight = PbCache.lockWgt;//计量重量
  118. mwaf.addWeight = PbCache.addWgt;//附加重量
  119. //mwaf.weightType = "0"; //0=毛重;1=常规皮重;2=期限皮重;3=历史皮重;4=标识皮重;5=自重皮重
  120. mwaf.createManNo = "";
  121. mwaf.createManName = "";
  122. mwaf.createTime = DateTime.Now;
  123. mwaf.baseSpotNo = PbCache.sportInfo.baseSpotNo;//计量点编号
  124. mwaf.baseSpotName = PbCache.sportInfo.baseSpotName;
  125. //mwaf.memo = "";
  126. mwaf.valueFlag = "1"; //1有效
  127. mwaf.updateManName = "";
  128. mwaf.updateManNo = "";
  129. mwaf.updateTime = null;
  130. mwaf.checkFlag = "0"; //0未审核
  131. mwaf.meterMode = "2"; //智能计量
  132. //车辆上来后,若scale中的物料没有值,则认为是过皮,此时要去验证下是否存在历史皮,若有且符合则过皮,否则若重量大于提示请录入xxx
  133. if (string.IsNullOrEmpty(scale.matterNo))
  134. {
  135. //若物料没信息,则认为是过皮重
  136. //如果是皮重或者计量员勾选了不验证重量
  137. if (PbCache.monitorResult.valid_wgt)
  138. {
  139. //如果没有一次计量数据
  140. if (rmX.Data == null || rmX.Data.Count == 0)
  141. {
  142. //操作日志
  143. MeterMonitorNote monitorNote = new MeterMonitorNote();
  144. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  145. monitorNote.baseSpotName = mwaf.baseSpotName;
  146. monitorNote.operationContent = string.Format("称重保存");
  147. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  148. monitorNote.carNo = mwaf.carNo;
  149. monitorNote.meterNoteSource = "0";
  150. //存储皮重信息
  151. mwaf.weightType = "1";
  152. RESTfulResult<string> rmI = mwcfs.doAddInnerWf(mwaf, monitorNote, PbCache.monitor.validWgt);//说明是需验证皮重,且皮重验证通过了
  153. if (rmI.Succeed)
  154. {
  155. rt.result = true;
  156. rt.isError = false;
  157. rt.resultInfo = "称重完成";
  158. rt.message = rmI.Message;
  159. PbCache.ResultMessage = "称重完成";
  160. PbCache.actualFirstNo = rmI.Data;
  161. PbCache.isTareWeight = true;//皮重
  162. }
  163. else
  164. {
  165. rt.result = false;
  166. rt.isError = true;
  167. rt.resultInfo = "称重数据保存失败";
  168. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  169. }
  170. }
  171. else //存在一次计量数据
  172. {
  173. //看下两次数据差值是否在1t内,若一次减去当前值在1t内则认为是重复计量,若大于1t则比较两者时间差是否满足要求
  174. //若时满足要求,则可进行计量,否则提示时间异常
  175. //若时间也正常,则毛皮结合,然后保存历史皮重
  176. if (Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) >= AppConfigCache.differenceWgt) //一次为毛重
  177. {
  178. if (PbCache.lockWgt > rmX.Data[0].meterWeight)
  179. {
  180. rt.result = false;
  181. rt.isError = true;
  182. PbCache.ResultMessage = "当前重量【" + PbCache.lockWgt / 1000 + "】大于一次计量重量【" + rmX.Data[0].meterWeight / 1000 + "】,系统判断为毛重,计量毛重需要录入业务编号信息";
  183. rt.resultInfo = "信息输入有误";
  184. return rt;
  185. }
  186. else if (string.IsNullOrEmpty(rmX.Data[0].matterNo)) //一次为毛,且没有物料信息
  187. {
  188. rt.result = false;
  189. rt.isError = true;
  190. rt.resultInfo = "信息输入有误";
  191. PbCache.ResultMessage = "一次计量毛重时,未录入业务编号信息,所以当前计量皮重需要录入业务编号信息";
  192. return rt;
  193. }
  194. validTimeInterval vtime = new validTimeInterval();
  195. vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
  196. if (PbCache.monitorResult.valid_time_interval)
  197. {
  198. validTareTime vttime = new validTareTime();
  199. vttime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003", matterNo = rmX.Data[0].matterNo }, "3", rmX.Data[0]);
  200. if (PbCache.monitorResult.valid_tare_time)
  201. {
  202. scale.matterNo = rmX.Data[0].matterNo;
  203. scale.matterName = rmX.Data[0].matterName;
  204. scale.batchNo = rmX.Data[0].batchNo;
  205. scale.meterTypeNo = "001006003";
  206. scale.forwardingUnitNo = rmX.Data[0].forwardingUnitNo;
  207. scale.forwardingUnitName = rmX.Data[0].forwardingUnitName;
  208. scale.receivingUintNo = rmX.Data[0].receivingUintNo;
  209. scale.receivingUintName = rmX.Data[0].receivingUintName;
  210. // 结净数据
  211. MeterWorkCarActual netDb = new MeterWorkCarActual();
  212. EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
  213. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  214. //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
  215. netDb.tareTime = DateTime.Now;
  216. netDb.tareWeight = PbCache.lockWgt;
  217. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  218. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  219. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  220. /* netDb.tare_man_no = "";
  221. netDb.tare_man_name = "";
  222. netDb.tare_class = "";
  223. netDb.tare_group = "";*/
  224. netDb.actualFirst1No = rmX.Data[0].actualFirstNo;
  225. netDb.grossTime = rmX.Data[0].createTime;
  226. netDb.grossWeight = rmX.Data[0].meterWeight;
  227. netDb.baseSpot1No = rmX.Data[0].baseSpotNo;
  228. netDb.baseSpot1Name = rmX.Data[0].baseSpotName;
  229. netDb.grossMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  230. netDb.grossManNo = rmX.Data[0].createManNo;
  231. netDb.grossManName = rmX.Data[0].createManName;
  232. netDb.grossClass = rmX.Data[0].meterClass;
  233. netDb.grossGroup = rmX.Data[0].meterGroup;
  234. netDb.netTime = DateTime.Now;
  235. //netDb.netManNo = appUser.userid; //净重计量员编码
  236. //netDb.netManName = appUser.username; //净重计量员名称
  237. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  238. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  239. netDb.addWeight = (rmX.Data[0].addWeight == null ? 0 : rmX.Data[0].addWeight.Value);
  240. //净重=毛-皮-附加重量
  241. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  242. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  243. netDb.valueFlag = "0"; //0=有效,1=作废
  244. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  245. //要判断下当前是否勾选了不验证皮重
  246. mwaf.weightType = "1";
  247. //操作日志
  248. MeterMonitorNote monitorNote = new MeterMonitorNote();
  249. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  250. monitorNote.baseSpotName = mwaf.baseSpotName;
  251. monitorNote.operationContent = string.Format("结净称重保存");
  252. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  253. monitorNote.carNo = mwaf.carNo;
  254. monitorNote.meterNoteSource = "0";
  255. RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, PbCache.monitor.validWgt);
  256. if (rmI.Succeed)
  257. {
  258. rt.result = true;
  259. rt.isError = false;
  260. rt.resultInfo = "称重完成";
  261. rt.message = rmI.Message;
  262. PbCache.ResultMessage = "称重完成";
  263. PbCache.actualFirstNo = rmI.Data;
  264. PbCache.isTareWeight = true;//皮重
  265. }
  266. else
  267. {
  268. rt.result = false;
  269. rt.isError = true;
  270. rt.resultInfo = "称重数据保存失败";
  271. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  272. }
  273. }
  274. else
  275. {
  276. rt.result = false;
  277. rt.isError = true;
  278. rt.resultInfo = PbCache.ResultMessage;
  279. }
  280. }
  281. else
  282. {
  283. rt.result = false;
  284. rt.isError = true;
  285. rt.resultInfo = PbCache.ResultMessage;
  286. }
  287. }
  288. else
  289. {
  290. //重复计量称重完成
  291. rt.result = false;
  292. rt.isError = true;
  293. rt.resultInfo = "第一次计量重量和第二次计量重量接近";
  294. //PbCache.ResultMessage = "第一次计量重量和第二次计量重量接近";
  295. PbCache.ResultMessage = "第一次计量重量【" + rmX.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + AppConfigCache.differenceWgt / 1000 + " T】,请点击[语音求助],由司秤工过磅!";
  296. }
  297. }
  298. }
  299. else //皮重验证不通过
  300. {
  301. //存在历史皮重
  302. if (rm.Data != null && rm.Data.Count > 0)
  303. {
  304. //有历史皮重,且当前重量不一定是皮重
  305. //当前重量-历史皮重<1t 则认为是皮重异常,提示
  306. //当前重量-历史皮重>1t 则认为是过毛重,此时提示计量毛重需要录入物料等信息
  307. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? rm.Data[0].upWeight.Value : rm.Data[0].avgWeight.Value);
  308. if (PbCache.lockWgt - meterWeight >= AppConfigCache.differenceWgt)
  309. {
  310. //当前是毛重
  311. rt.result = false;
  312. rt.isError = true;
  313. PbCache.ResultMessage = "当前重量【" + PbCache.lockWgt / 1000 + "T】减历史皮重【" + meterWeight / 1000 + "T】大于结净最低值【" + AppConfigCache.differenceWgt / 1000 + "T】,系统判断为毛重,计量毛重需要录入业务编号信息";
  314. rt.resultInfo = "信息输入有误";
  315. }
  316. }
  317. else //没有历史皮重信息
  318. {
  319. //不存在一次计量数据
  320. if (rmX.Data == null || rmX.Data.Count == 0)
  321. {
  322. //操作日志
  323. MeterMonitorNote monitorNote = new MeterMonitorNote();
  324. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  325. monitorNote.baseSpotName = mwaf.baseSpotName;
  326. monitorNote.operationContent = string.Format("称重保存");
  327. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  328. monitorNote.carNo = mwaf.carNo;
  329. monitorNote.meterNoteSource = "0";
  330. //此时直接存储一条皮重计量数据,等后面二次上秤计量的时候,根据重量差值来判断前一条与当前这条哪个是毛哪个是皮
  331. //存储皮重信息
  332. mwaf.weightType = "1";
  333. mwaf.addWeight = PbCache.addWgt;
  334. RESTfulResult<string> rmI = mwcfs.doAddInnerWf(mwaf, monitorNote, "0");//
  335. if (rmI.Succeed)
  336. {
  337. rt.result = true;
  338. rt.resultInfo = "称重完成";
  339. rt.message = rmI.Message;
  340. PbCache.ResultMessage = "称重完成";
  341. PbCache.actualFirstNo = rmI.Data;
  342. PbCache.isTareWeight = true;//皮重
  343. }
  344. else
  345. {
  346. rt.result = false;
  347. rt.isError = true;
  348. rt.resultInfo = "称重数据保存失败";
  349. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  350. }
  351. }
  352. else //存在一次计量数据
  353. {
  354. //看下两次数据差值是否在1t内,若一次减去当前值在1t内则认为是重复计量,若大于且1t且一次为毛重则比较两者时间差是否满足要求
  355. //若满足要求,则可进行计量,否则提示时间异常
  356. //若时间正常,则毛皮结合,然后保存历史皮重
  357. if (Math.Abs(PbCache.lockWgt - rmX.Data[0].meterWeight.Value) < AppConfigCache.differenceWgt)
  358. {
  359. //重复计量
  360. rt.result = false;
  361. rt.isError = true;
  362. rt.resultInfo = "第一次计量重量和第二次计量重量接近";
  363. //PbCache.ResultMessage = "第一次计量重量和第二次计量重量接近";
  364. PbCache.ResultMessage = "第一次计量重量【" + rmX.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + AppConfigCache.differenceWgt / 1000 + " T】,请点击[语音求助],由司秤工过磅!";
  365. }
  366. else
  367. {
  368. //当前是毛重
  369. if (PbCache.lockWgt > rmX.Data[0].meterWeight)
  370. {
  371. rt.result = false;
  372. rt.isError = true;
  373. PbCache.ResultMessage = "当前重量【" + PbCache.lockWgt / 1000 + "T】大于一次计量重量【" + rmX.Data[0].meterWeight / 1000 + "T】,系统判断为毛重,计量毛重需要录入业务编号信息";
  374. rt.resultInfo = "信息输入有误";
  375. }
  376. else //当前是皮,第一次是毛
  377. {
  378. //没有历史皮,存在一次计量数据,当前是皮,且计量数据没有物料信息
  379. if (string.IsNullOrEmpty(rmX.Data[0].matterNo))
  380. {
  381. rt.result = false;
  382. rt.isError = true;
  383. rt.resultInfo = "信息输入有误";
  384. PbCache.ResultMessage = "一次计量毛重时,未录入业务编号信息,所以当前计量皮重需要录入业务编号信息";
  385. return rt;
  386. }
  387. //时间间隔
  388. validTimeInterval vtime = new validTimeInterval();
  389. vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
  390. if (PbCache.monitorResult.valid_time_interval)
  391. {
  392. //回皮时间
  393. validTareTime vttime = new validTareTime();
  394. vttime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003", matterNo = rmX.Data[0].matterNo }, "3", rmX.Data[0]);
  395. if (PbCache.monitorResult.valid_tare_time)
  396. {
  397. scale.matterNo = rmX.Data[0].matterNo;
  398. scale.matterName = rmX.Data[0].matterName;
  399. scale.batchNo = rmX.Data[0].batchNo;
  400. scale.meterTypeNo = "001006003";
  401. scale.forwardingUnitNo = rmX.Data[0].forwardingUnitNo;
  402. scale.forwardingUnitName = rmX.Data[0].forwardingUnitName;
  403. scale.receivingUintNo = rmX.Data[0].receivingUintNo;
  404. scale.receivingUintName = rmX.Data[0].receivingUintName;
  405. // 结净数据
  406. MeterWorkCarActual netDb = new MeterWorkCarActual();
  407. EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
  408. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  409. //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
  410. netDb.tareTime = DateTime.Now;
  411. netDb.tareWeight = PbCache.lockWgt;
  412. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  413. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  414. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  415. /* netDb.tare_man_no = "";
  416. netDb.tare_man_name = "";
  417. netDb.tare_class = "";
  418. netDb.tare_group = "";*/
  419. netDb.actualFirst1No = rmX.Data[0].actualFirstNo;
  420. netDb.grossTime = rmX.Data[0].createTime;
  421. netDb.grossWeight = rmX.Data[0].meterWeight;
  422. netDb.baseSpot1No = rmX.Data[0].baseSpotNo;
  423. netDb.baseSpot1Name = rmX.Data[0].baseSpotName;
  424. netDb.grossMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  425. netDb.grossManNo = rmX.Data[0].createManNo;
  426. netDb.grossManName = rmX.Data[0].createManName;
  427. netDb.grossClass = rmX.Data[0].meterClass;
  428. netDb.grossGroup = rmX.Data[0].meterGroup;
  429. netDb.netTime = DateTime.Now;
  430. //netDb.netManNo = appUser.userid; //净重计量员编码
  431. //netDb.netManName = appUser.username; //净重计量员名称
  432. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  433. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  434. netDb.addWeight = (rmX.Data[0].addWeight == null ? 0 : rmX.Data[0].addWeight.Value);
  435. //净重=毛-皮-附加重量
  436. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  437. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  438. netDb.valueFlag = "0"; //0=有效,1=作废
  439. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  440. //要判断下当前是否勾选了不验证皮重
  441. mwaf.weightType = "1";
  442. //操作日志
  443. MeterMonitorNote monitorNote = new MeterMonitorNote();
  444. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  445. monitorNote.baseSpotName = mwaf.baseSpotName;
  446. monitorNote.operationContent = string.Format("结净称重保存");
  447. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  448. monitorNote.carNo = mwaf.carNo;
  449. monitorNote.meterNoteSource = "0";
  450. RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, PbCache.monitor.validWgt);
  451. if (rmI.Succeed)
  452. {
  453. rt.result = true;
  454. rt.isError = false;
  455. rt.resultInfo = "称重完成";
  456. rt.message = rmI.Message;
  457. PbCache.ResultMessage = "称重完成";
  458. PbCache.actualFirstNo = rmI.Data;
  459. PbCache.isTareWeight = true;//皮重
  460. }
  461. else
  462. {
  463. rt.result = false;
  464. rt.isError = true;
  465. rt.resultInfo = "称重数据保存失败";
  466. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  467. }
  468. }
  469. else
  470. {
  471. rt.result = false;
  472. rt.isError = true;
  473. rt.resultInfo = PbCache.ResultMessage;
  474. }
  475. }
  476. else
  477. {
  478. rt.result = false;
  479. rt.isError = true;
  480. rt.resultInfo = PbCache.ResultMessage;
  481. }
  482. }
  483. }
  484. }
  485. }
  486. }
  487. }
  488. else //若录入了物料等信息
  489. {
  490. //如果是皮重
  491. if (PbCache.monitorResult.valid_wgt)
  492. {
  493. //如果没有一次计量数据
  494. if (rmX.Data == null || rmX.Data.Count == 0)
  495. {
  496. //操作日志
  497. MeterMonitorNote monitorNote = new MeterMonitorNote();
  498. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  499. monitorNote.baseSpotName = mwaf.baseSpotName;
  500. monitorNote.operationContent = string.Format("称重保存");
  501. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  502. monitorNote.carNo = mwaf.carNo;
  503. monitorNote.meterNoteSource = "0";
  504. //存储皮重信息及历史皮重信息
  505. mwaf.weightType = "1";
  506. RESTfulResult<string> rmI = mwcfs.doAddInnerWf(mwaf, monitorNote, PbCache.monitor.validWgt);
  507. if (rmI.Succeed)
  508. {
  509. rt.result = true;
  510. rt.resultInfo = "称重完成";
  511. rt.message = rmI.Message;
  512. PbCache.ResultMessage = "称重完成";
  513. PbCache.actualFirstNo = rmI.Data;
  514. PbCache.isTareWeight = true;//皮重
  515. }
  516. else
  517. {
  518. rt.result = false;
  519. rt.isError = true;
  520. rt.resultInfo = "服务端执行失败,计量失败:" + rmI.ResultMessage;
  521. }
  522. }
  523. else //存在一次计量数据
  524. {
  525. //如果车辆上磅,且重量稳定,当司机点了内倒计量后,判断是内倒业务的车辆后,如果有一次过毛信息,则会锁定界面上的物料信息,按钮不可编辑
  526. //两次数据差值是否在1t内,若一次减去当前值在1t内则认为是重复计量,若一次计量减去当前重量>1t 则比较两者时间差是否满足要求,否则
  527. //若时间满足要求则看物料是否处于可计量的时间范围内,若时间不允许物料计量,则提示
  528. //若时间正常则进行 保存二次计量、历史皮重、结净操作
  529. if (rmX.Data[0].meterWeight.Value - PbCache.lockWgt >= AppConfigCache.differenceWgt) //一次为毛,当前为皮 先毛后皮流程
  530. {
  531. //时间间隔
  532. validTimeInterval vtime = new validTimeInterval();
  533. vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
  534. if (PbCache.monitorResult.valid_time_interval)
  535. {
  536. //回皮时间
  537. validTareTime vttime = new validTareTime();
  538. vttime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003", matterNo = rmX.Data[0].matterNo }, "3", rmX.Data[0]);
  539. if (PbCache.monitorResult.valid_tare_time)
  540. {
  541. // 结净数据
  542. MeterWorkCarActual netDb = new MeterWorkCarActual();
  543. EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
  544. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  545. //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
  546. netDb.tareTime = DateTime.Now;
  547. netDb.tareWeight = PbCache.lockWgt;
  548. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  549. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  550. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  551. /* netDb.tare_man_no = "";
  552. netDb.tare_man_name = "";
  553. netDb.tare_class = "";
  554. netDb.tare_group = "";*/
  555. netDb.actualFirst1No = rmX.Data[0].actualFirstNo;
  556. netDb.grossTime = rmX.Data[0].createTime;
  557. netDb.grossWeight = rmX.Data[0].meterWeight;
  558. netDb.baseSpot1No = rmX.Data[0].baseSpotNo;
  559. netDb.baseSpot1Name = rmX.Data[0].baseSpotName;
  560. netDb.grossMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  561. netDb.grossManNo = rmX.Data[0].createManNo;
  562. netDb.grossManName = rmX.Data[0].createManName;
  563. netDb.grossClass = rmX.Data[0].meterClass;
  564. netDb.grossGroup = rmX.Data[0].meterGroup;
  565. netDb.netTime = DateTime.Now;
  566. //netDb.netManNo = appUser.userid; //净重计量员编码
  567. //netDb.netManName = appUser.username; //净重计量员名称
  568. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  569. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  570. netDb.addWeight = (rmX.Data[0].addWeight == null ? 0 : rmX.Data[0].addWeight.Value);
  571. //净重=毛-皮-附加重量
  572. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  573. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  574. netDb.valueFlag = "0"; //0=有效,1=作废
  575. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  576. //要判断下当前是否勾选了不验证皮重
  577. mwaf.weightType = "1";
  578. //操作日志
  579. MeterMonitorNote monitorNote = new MeterMonitorNote();
  580. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  581. monitorNote.baseSpotName = mwaf.baseSpotName;
  582. monitorNote.operationContent = string.Format("结净称重保存");
  583. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  584. monitorNote.carNo = mwaf.carNo;
  585. monitorNote.meterNoteSource = "0";
  586. RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, PbCache.monitor.validWgt);
  587. if (rmI.Succeed)
  588. {
  589. rt.result = true;
  590. rt.isError = false;
  591. rt.resultInfo = "称重完成";
  592. rt.message = rmI.Message;
  593. PbCache.ResultMessage = "称重完成";
  594. PbCache.actualFirstNo = rmI.Data;
  595. PbCache.isTareWeight = true;//皮重
  596. }
  597. else
  598. {
  599. rt.result = false;
  600. rt.isError = true;
  601. rt.resultInfo = "称重数据保存失败";
  602. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  603. }
  604. }
  605. else
  606. {
  607. rt.result = false;
  608. rt.isError = true;
  609. rt.resultInfo = PbCache.ResultMessage;
  610. }
  611. }
  612. else
  613. {
  614. rt.result = false;
  615. rt.isError = true;
  616. rt.resultInfo = PbCache.ResultMessage;
  617. }
  618. }
  619. else
  620. {
  621. //重复计量
  622. rt.result = false;
  623. rt.isError = true;
  624. rt.resultInfo = "第一次计量重量和第二次计量重量接近";
  625. //PbCache.ResultMessage = "第一次计量重量和第二次计量重量接近";
  626. PbCache.ResultMessage = "第一次计量重量【" + rmX.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + AppConfigCache.differenceWgt / 1000 + " T】,请点击[语音求助],由司秤工过磅!";
  627. }
  628. }
  629. }
  630. else //录入了物料等信息 不确定是皮重还是毛重
  631. {
  632. //存在历史皮重
  633. if (rm.Data != null && rm.Data.Count > 0)
  634. {
  635. //如果没有一次计量数据
  636. if (rmX.Data == null || rmX.Data.Count == 0)
  637. {
  638. //存在历史皮重信息,若当前车辆重量大于历史皮重1t,则认为是过毛,否则提示皮重异常,所有皮重异常都可以跳过验证
  639. //如果是过毛则物料是否处于可计量的时间范围内,若时间不允许物料计量,则提示
  640. //若时间正常则查看是否存在期限皮重,若存在期限皮重,则当前重量与期限皮结合进行结净
  641. //若没有期限皮重,则直接存储毛重信息
  642. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? rm.Data[0].upWeight.Value : rm.Data[0].avgWeight.Value);
  643. if (PbCache.lockWgt - meterWeight >= AppConfigCache.differenceWgt) //当前过毛
  644. {
  645. //验证物料时间段
  646. validMatTime vmt = new validMatTime();
  647. vmt.ValidMethod(new PreTrackScale { matterNo = scale.matterNo }, "1");
  648. if (!PbCache.monitorResult.valid_mat_time)
  649. {
  650. rt.result = false;
  651. rt.isError = true;
  652. rt.resultInfo = PbCache.ResultMessage;
  653. return rt;
  654. }
  655. #region 获取车辆是否能使用中控的皮重信息
  656. int i = 0;
  657. MeterBaseTermTareCarService carService = new MeterBaseTermTareCarService();
  658. RESTfulResult<List<MeterBaseTermTareCar>> rmCar = carService.doQueryWf(new MeterBaseTermTareCar { carNo = scale.carNo, valueFlag = "0" });
  659. if (rmCar.Succeed)
  660. {
  661. if (rmCar.Data != null && rmCar.Data.Count > 0)
  662. {
  663. i = rmCar.Data.Where(s => s.meterNatureName !=null && s.meterNatureName.Contains("中控")).Count();
  664. }
  665. }
  666. else
  667. {
  668. //获取服务端数据异常!
  669. rt.result = false;
  670. rt.isError = true;
  671. rt.resultInfo = "称重数据保存失败";
  672. PbCache.ResultMessage = "计量失败,获取期限皮重车辆信息:" + rmCar.ResultMessage;
  673. return rt;
  674. }
  675. #endregion 获取车辆是否能使用中控的皮重信息
  676. //查下是否有期限皮重
  677. MeterBaseTermTareDataService mbttd = new MeterBaseTermTareDataService();
  678. RESTfulResult<List<MeterBaseTermTareData>> rml = mbttd.doQueryWf(new MeterBaseTermTareData { carNo = scale.carNo, valueFlag = "0" });
  679. if (rml.Succeed)
  680. {
  681. //存在有效的期限皮重,且物料可用期限皮重
  682. if (i > 0 && rml.Data != null && rml.Data.Count > 0 && PbCache.isTermTare)
  683. {
  684. mwaf.weightType = "0";//毛重信息
  685. mwaf.addWeight = PbCache.addWgt;
  686. // 结净数据
  687. MeterWorkCarActual netDb = new MeterWorkCarActual();
  688. EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
  689. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  690. //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
  691. netDb.grossTime = DateTime.Now;
  692. netDb.grossWeight = PbCache.lockWgt;
  693. netDb.baseSpot1No = PbCache.sportInfo.baseSpotNo;
  694. netDb.baseSpot1Name = PbCache.sportInfo.baseSpotName;
  695. netDb.grossMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  696. /* netDb.tare_man_no = "";
  697. netDb.tare_man_name = "";
  698. netDb.tare_class = "";
  699. netDb.tare_group = "";*/
  700. netDb.actualFirst2No = rml.Data[0].dataNo;
  701. netDb.tareTime = rml.Data[0].createTime;
  702. netDb.tareWeight = rml.Data[0].meterWeight;
  703. netDb.baseSpot2No = rml.Data[0].baseSpotNo;
  704. netDb.baseSpot2Name = rml.Data[0].baseSpotName;
  705. /*netDb.tareMode = "9";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  706. netDb.tare_man_no = "";
  707. netDb.tare_man_name = "";
  708. netDb.tare_class = "";
  709. netDb.tare_group = "";*/
  710. netDb.netTime = DateTime.Now;
  711. //netDb.netManNo = appUser.userid; //净重计量员编码
  712. //netDb.netManName = appUser.username; //净重计量员名称
  713. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  714. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  715. netDb.addWeight = PbCache.addWgt;
  716. //净重=毛-皮-附加重量
  717. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  718. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  719. netDb.valueFlag = "0"; //0=有效,1=作废
  720. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  721. //操作日志
  722. MeterMonitorNote monitorNote = new MeterMonitorNote();
  723. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  724. monitorNote.baseSpotName = mwaf.baseSpotName;
  725. monitorNote.operationContent = string.Format("结净称重保存");
  726. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  727. monitorNote.carNo = mwaf.carNo;
  728. monitorNote.meterNoteSource = "0";
  729. RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, "0");
  730. if (rmI.Succeed)
  731. {
  732. rt.result = true;
  733. rt.isError = false;
  734. rt.resultInfo = "称重完成";
  735. rt.message = rmI.Message;
  736. PbCache.ResultMessage = "称重完成";
  737. PbCache.actualFirstNo = rmI.Data;
  738. PbCache.isTareWeight = false;//毛重
  739. }
  740. else
  741. {
  742. rt.result = false;
  743. rt.isError = true;
  744. rt.resultInfo = "称重数据保存失败";
  745. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  746. }
  747. }
  748. else
  749. {
  750. //操作日志
  751. MeterMonitorNote monitorNote = new MeterMonitorNote();
  752. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  753. monitorNote.baseSpotName = mwaf.baseSpotName;
  754. monitorNote.operationContent = string.Format("称重保存");
  755. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  756. monitorNote.carNo = mwaf.carNo;
  757. monitorNote.meterNoteSource = "0";
  758. //保存毛重计量信息
  759. mwaf.weightType = "0";//毛重信息
  760. RESTfulResult<string> rmI = mwcfs.doAddInnerWf(mwaf, monitorNote, "0");
  761. if (rmI.Succeed)
  762. {
  763. rt.result = true;
  764. rt.isError = false;
  765. rt.resultInfo = "称重完成";
  766. rt.message = rmI.Message;
  767. PbCache.ResultMessage = "称重完成";
  768. PbCache.actualFirstNo = rmI.Data;
  769. }
  770. else
  771. {
  772. rt.result = false;
  773. rt.isError = true;
  774. rt.resultInfo = "称重数据保存失败";
  775. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  776. }
  777. }
  778. }
  779. else
  780. {
  781. //获取服务端数据异常!
  782. rt.result = false;
  783. rt.isError = true;
  784. rt.resultInfo = "称重数据保存失败";
  785. PbCache.ResultMessage = "计量失败:" + rml.ResultMessage;
  786. return rt;
  787. }
  788. }
  789. else //当前过皮,且皮重验证未通过
  790. {
  791. //皮重异常不允许计量
  792. rt.result = false;
  793. rt.isError = true;
  794. rt.resultInfo = "皮重已经超出偏差";
  795. PbCache.ResultMessage = "当前重量【" + PbCache.lockWgt / 1000 + "T】减历史皮重【" + meterWeight / 1000 + "T】小于毛重、皮重判断标准【" + AppConfigCache.differenceWgt / 1000 + "T】,请点击语音求助,由计量员进行远程计量!";
  796. }
  797. }
  798. else //存在历史皮重信息,存在一次计量数据
  799. {
  800. //若一次计量数据为皮重,且当前重量-一次重量大于1t,则认为当前过毛,此时毛皮结合,小于1t则提示不允许重复计量
  801. //若一次计量数据为毛重,且一次重量-当前重量大于1t,则认为当前过皮,此时皮毛结合,小于1t则提示不允许重复计量
  802. //毛皮结合后,若不是勾选的不验证皮重,则还需存储历史皮重到表中
  803. //rmX 一次数据 rm为历史数据
  804. if (rmX.Data[0].weightType == "1") //一次为皮
  805. {
  806. if (PbCache.lockWgt - rmX.Data[0].meterWeight.Value >= AppConfigCache.differenceWgt) //当前重量-一次重量大于1t
  807. {
  808. //当前为毛,验证物料条件
  809. //验证物料时间段
  810. validMatTime vmt = new validMatTime();
  811. vmt.ValidMethod(new PreTrackScale { matterNo = scale.matterNo }, "1");
  812. if (!PbCache.monitorResult.valid_mat_time)
  813. {
  814. rt.result = false;
  815. rt.isError = true;
  816. rt.resultInfo = PbCache.ResultMessage;
  817. return rt;
  818. }
  819. //两次计量时间间隔
  820. validTimeInterval vtime = new validTimeInterval();
  821. vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
  822. if (PbCache.monitorResult.valid_time_interval)
  823. {
  824. mwaf.weightType = "0";//毛重信息
  825. mwaf.addWeight = PbCache.addWgt;
  826. // 结净数据
  827. MeterWorkCarActual netDb = new MeterWorkCarActual();
  828. EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
  829. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  830. //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
  831. netDb.grossTime = DateTime.Now;
  832. netDb.grossWeight = PbCache.lockWgt;
  833. netDb.baseSpot1No = PbCache.sportInfo.baseSpotNo;
  834. netDb.baseSpot1Name = PbCache.sportInfo.baseSpotName;
  835. netDb.grossMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  836. /* netDb.tare_man_no = "";
  837. netDb.tare_man_name = "";
  838. netDb.tare_class = "";
  839. netDb.tare_group = "";*/
  840. netDb.actualFirst2No = rmX.Data[0].actualFirstNo;
  841. netDb.tareTime = rmX.Data[0].createTime;
  842. netDb.tareWeight = rmX.Data[0].meterWeight;
  843. netDb.baseSpot2No = rmX.Data[0].baseSpotNo;
  844. netDb.baseSpot2Name = rmX.Data[0].baseSpotName;
  845. netDb.tareMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  846. netDb.tareManNo = rmX.Data[0].createManNo;
  847. netDb.tareManName = rmX.Data[0].createManName;
  848. netDb.tareClass = rmX.Data[0].meterClass;
  849. netDb.tareGroup = rmX.Data[0].meterGroup;
  850. netDb.netTime = DateTime.Now;
  851. //netDb.netManNo = appUser.userid; //净重计量员编码
  852. //netDb.netManName = appUser.username; //净重计量员名称
  853. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  854. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  855. netDb.addWeight = PbCache.addWgt;
  856. //净重=毛-皮-附加重量
  857. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  858. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  859. netDb.valueFlag = "0"; //0=有效,1=作废
  860. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  861. //操作日志
  862. MeterMonitorNote monitorNote = new MeterMonitorNote();
  863. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  864. monitorNote.baseSpotName = mwaf.baseSpotName;
  865. monitorNote.operationContent = string.Format("结净称重保存");
  866. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  867. monitorNote.carNo = mwaf.carNo;
  868. monitorNote.meterNoteSource = "0";
  869. RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, "0");
  870. if (rmI.Succeed)
  871. {
  872. rt.result = true;
  873. rt.isError = false;
  874. rt.resultInfo = "称重完成";
  875. rt.message = rmI.Message;
  876. PbCache.ResultMessage = "称重完成";
  877. PbCache.actualFirstNo = rmI.Data;
  878. PbCache.isTareWeight = false;//毛重
  879. }
  880. else
  881. {
  882. rt.result = false;
  883. rt.isError = true;
  884. rt.resultInfo = "称重数据保存失败";
  885. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  886. }
  887. }
  888. else
  889. {
  890. rt.result = false;
  891. rt.isError = true;
  892. rt.resultInfo = PbCache.ResultMessage;
  893. }
  894. }
  895. else
  896. {
  897. if (PbCache.lockWgt - rmX.Data[0].meterWeight.Value < 0)
  898. {
  899. //如果第一个是皮,第二个重量又小于第一个
  900. rt.result = false;
  901. rt.isError = true;
  902. rt.resultInfo = "存在一次皮重信息,当前重量小于一次皮重皮皮不能结合";
  903. PbCache.ResultMessage = "存在一次皮重信息,当前重量小于一次皮重皮皮不能结合";
  904. }
  905. else
  906. {
  907. //重复计量
  908. rt.result = false;
  909. rt.isError = true;
  910. rt.resultInfo = "第一次计量重量和第二次计量重量接近";
  911. //PbCache.ResultMessage = "第一次计量重量和第二次计量重量接近";
  912. PbCache.ResultMessage = "第一次计量重量【" + rmX.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + AppConfigCache.differenceWgt / 1000 + " T】,请点击[语音求助],由司秤工过磅!";
  913. }
  914. }
  915. }
  916. else //存在历史皮重信息,存在一次计量数据 一次为毛 当前不确定是毛还是皮
  917. {
  918. if (rmX.Data[0].meterWeight - PbCache.lockWgt >= AppConfigCache.differenceWgt) //一次-当前> 1t
  919. {
  920. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? rm.Data[0].upWeight.Value : rm.Data[0].avgWeight.Value);
  921. //先验证 Math.Abs(当前重-历史皮重)<1t 认为是皮,否则提示 毛毛不能结合
  922. if (Math.Abs(PbCache.lockWgt - meterWeight) < AppConfigCache.differenceWgt)
  923. {
  924. //当前为皮
  925. //两次计量时间间隔
  926. validTimeInterval vtime = new validTimeInterval();
  927. vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
  928. if (PbCache.monitorResult.valid_time_interval)
  929. {
  930. //回皮时间
  931. validTareTime vttime = new validTareTime();
  932. vttime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003", matterNo = rmX.Data[0].matterNo }, "3", rmX.Data[0]);
  933. if (PbCache.monitorResult.valid_tare_time)
  934. {
  935. mwaf.weightType = "1";//皮重信息
  936. //*
  937. // 结净数据
  938. MeterWorkCarActual netDb = new MeterWorkCarActual();
  939. EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
  940. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  941. //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
  942. netDb.tareTime = DateTime.Now;
  943. netDb.tareWeight = PbCache.lockWgt;
  944. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  945. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  946. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  947. /* netDb.tare_man_no = "";
  948. netDb.tare_man_name = "";
  949. netDb.tare_class = "";
  950. netDb.tare_group = "";
  951. */
  952. netDb.actualFirst1No = rmX.Data[0].actualFirstNo;
  953. netDb.grossTime = rmX.Data[0].createTime;
  954. netDb.grossWeight = rmX.Data[0].meterWeight;
  955. netDb.baseSpot1No = rmX.Data[0].baseSpotNo;
  956. netDb.baseSpot1Name = rmX.Data[0].baseSpotName;
  957. netDb.grossMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  958. netDb.grossManNo = rmX.Data[0].createManNo;
  959. netDb.grossManName = rmX.Data[0].createManName;
  960. netDb.grossClass = rmX.Data[0].meterClass;
  961. netDb.grossGroup = rmX.Data[0].meterGroup;
  962. netDb.netTime = DateTime.Now;
  963. //netDb.netManNo = appUser.userid; //净重计量员编码
  964. //netDb.netManName = appUser.username; //净重计量员名称
  965. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  966. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  967. netDb.addWeight = (rmX.Data[0].addWeight == null ? 0 : rmX.Data[0].addWeight.Value);
  968. //净重=毛-皮-附加重量
  969. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  970. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  971. netDb.valueFlag = "0"; //0=有效,1=作废
  972. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  973. //操作日志
  974. MeterMonitorNote monitorNote = new MeterMonitorNote();
  975. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  976. monitorNote.baseSpotName = mwaf.baseSpotName;
  977. monitorNote.operationContent = string.Format("结净称重保存");
  978. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  979. monitorNote.carNo = mwaf.carNo;
  980. monitorNote.meterNoteSource = "0";
  981. RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, PbCache.monitor.validWgt);
  982. if (rmI.Succeed)
  983. {
  984. rt.result = true;
  985. rt.isError = false;
  986. rt.resultInfo = "称重完成";
  987. rt.message = rmI.Message;
  988. PbCache.ResultMessage = "称重完成";
  989. PbCache.actualFirstNo = rmI.Data;
  990. PbCache.isTareWeight = true;//皮重
  991. }
  992. else
  993. {
  994. rt.result = false;
  995. rt.isError = true;
  996. rt.resultInfo = "称重数据保存失败";
  997. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  998. }
  999. }
  1000. else
  1001. {
  1002. rt.result = false;
  1003. rt.isError = true;
  1004. rt.resultInfo = PbCache.ResultMessage;
  1005. }
  1006. }
  1007. else
  1008. {
  1009. rt.result = false;
  1010. rt.isError = true;
  1011. rt.resultInfo = PbCache.ResultMessage;
  1012. }
  1013. }
  1014. else
  1015. {
  1016. if (PbCache.lockWgt < meterWeight)
  1017. {
  1018. rt.result = false;
  1019. rt.isError = true;
  1020. rt.resultInfo = PbCache.ResultMessage;
  1021. }
  1022. else
  1023. {
  1024. rt.result = false;
  1025. rt.isError = true;
  1026. rt.resultInfo = "不允许毛重跟毛重计量";
  1027. PbCache.ResultMessage = "保存失败:存在一条未结净毛重记录,请语音求助"; //一次为毛,且当前重量-历史> 1t
  1028. }
  1029. }
  1030. }
  1031. else
  1032. {
  1033. //重复计量
  1034. rt.result = false;
  1035. rt.isError = true;
  1036. rt.resultInfo = "当前重量为【" + PbCache.lockWgt / 1000 + "T】,一次计量重量为【" + rmX.Data[0].meterWeight / 1000 + "】差值小于结净最低值【" + AppConfigCache.differenceWgt / 1000 + "T】,不允许毛重跟毛重计量";
  1037. PbCache.ResultMessage = "保存失败:存在一条未结净毛重记录,请语音求助";
  1038. }
  1039. }
  1040. }
  1041. }
  1042. else //录入了物料等信息 当前皮重验证不通过 不存在历史皮重
  1043. {
  1044. //如果没有一次计量数据
  1045. if (rmX.Data == null || rmX.Data.Count == 0)
  1046. {
  1047. //操作日志
  1048. MeterMonitorNote monitorNote = new MeterMonitorNote();
  1049. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  1050. monitorNote.baseSpotName = mwaf.baseSpotName;
  1051. monitorNote.operationContent = string.Format("称重保存");
  1052. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  1053. monitorNote.carNo = mwaf.carNo;
  1054. monitorNote.meterNoteSource = "0";
  1055. //存储一次毛重信息
  1056. mwaf.weightType = "0";
  1057. RESTfulResult<string> rmI = mwcfs.doAddInnerWf(mwaf, monitorNote, "0");
  1058. if (rmI.Succeed)
  1059. {
  1060. rt.result = true;
  1061. rt.isError = false;
  1062. rt.resultInfo = "称重完成";
  1063. rt.message = rmI.Message;
  1064. PbCache.ResultMessage = "称重完成";
  1065. PbCache.actualFirstNo = rmI.Data;
  1066. PbCache.isTareWeight = false;//毛重
  1067. }
  1068. else
  1069. {
  1070. rt.result = false;
  1071. rt.isError = true;
  1072. rt.resultInfo = "称重数据保存失败";
  1073. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  1074. }
  1075. }
  1076. else
  1077. {
  1078. //有一次信息,则当前重量与一次进行比较,若Math.Abs(当前-一次)>1t ,当前大则一次为皮,当前为毛,将一次存储为历史皮,且毛皮结合结净
  1079. //当前小则一次为毛,当前为皮,将当前存储为历史皮,且毛皮结合结净
  1080. //若 Math.Abs(当前-一次)<=1t 则提示不允许重复计量
  1081. if (Math.Abs(PbCache.lockWgt - rmX.Data[0].meterWeight.Value) >= AppConfigCache.differenceWgt)
  1082. {
  1083. if (PbCache.lockWgt > rmX.Data[0].meterWeight)
  1084. {
  1085. //一次weightType修改为皮1
  1086. if (rmX.Data[0].weightType == "0")
  1087. {
  1088. mwcfs.doUpdateWf(new MeterWorkCarActualFirst { actualFirstNo = rmX.Data[0].actualFirstNo, weightType = "1" });
  1089. lg.WriteLog(3, string.Format("车辆[{0}]计量时,无历史皮重,存在一次记录,当前记录小于一次记录,修改一次weightType[{1}]为1", scale.carNo, rmX.Data[0].weightType));
  1090. }
  1091. //当前为毛,验证物料条件
  1092. //验证物料时间段
  1093. validMatTime vmt = new validMatTime();
  1094. vmt.ValidMethod(new PreTrackScale { matterNo = scale.matterNo }, "1");
  1095. if (!PbCache.monitorResult.valid_mat_time)
  1096. {
  1097. rt.result = false;
  1098. rt.isError = true;
  1099. rt.resultInfo = PbCache.ResultMessage;
  1100. return rt;
  1101. }
  1102. //两次计量时间间隔
  1103. validTimeInterval vtime = new validTimeInterval();
  1104. vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
  1105. if (PbCache.monitorResult.valid_time_interval)
  1106. {
  1107. mwaf.weightType = "0";//毛重信息
  1108. mwaf.addWeight = PbCache.addWgt;
  1109. // 结净数据
  1110. MeterWorkCarActual netDb = new MeterWorkCarActual();
  1111. EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
  1112. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  1113. //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
  1114. netDb.grossTime = DateTime.Now;
  1115. netDb.grossWeight = PbCache.lockWgt;
  1116. netDb.baseSpot1No = PbCache.sportInfo.baseSpotNo;
  1117. netDb.baseSpot1Name = PbCache.sportInfo.baseSpotName;
  1118. netDb.grossMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  1119. /* netDb.tare_man_no = "";
  1120. netDb.tare_man_name = "";
  1121. netDb.tare_class = "";
  1122. netDb.tare_group = "";*/
  1123. netDb.actualFirst2No = rmX.Data[0].actualFirstNo;
  1124. netDb.tareTime = rmX.Data[0].createTime;
  1125. netDb.tareWeight = rmX.Data[0].meterWeight;
  1126. netDb.baseSpot2No = rmX.Data[0].baseSpotNo;
  1127. netDb.baseSpot2Name = rmX.Data[0].baseSpotName;
  1128. netDb.tareMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  1129. netDb.tareManNo = rmX.Data[0].createManNo;
  1130. netDb.tareManName = rmX.Data[0].createManName;
  1131. netDb.tareClass = rmX.Data[0].meterClass;
  1132. netDb.tareGroup = rmX.Data[0].meterGroup;
  1133. netDb.netTime = DateTime.Now;
  1134. //netDb.netManNo = appUser.userid; //净重计量员编码
  1135. //netDb.netManName = appUser.username; //净重计量员名称
  1136. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  1137. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  1138. netDb.addWeight = PbCache.addWgt;
  1139. //净重=毛-皮-附加重量
  1140. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  1141. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  1142. netDb.valueFlag = "0"; //0=有效,1=作废
  1143. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  1144. //操作日志
  1145. MeterMonitorNote monitorNote = new MeterMonitorNote();
  1146. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  1147. monitorNote.baseSpotName = mwaf.baseSpotName;
  1148. monitorNote.operationContent = string.Format("结净称重保存");
  1149. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  1150. monitorNote.carNo = mwaf.carNo;
  1151. monitorNote.meterNoteSource = "0";
  1152. RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, PbCache.monitor.validWgt);
  1153. if (rmI.Succeed)
  1154. {
  1155. rt.result = true;
  1156. rt.isError = false;
  1157. rt.resultInfo = "称重完成";
  1158. rt.message = rmI.Message;
  1159. PbCache.ResultMessage = "称重完成";
  1160. PbCache.actualFirstNo = rmI.Data;
  1161. PbCache.isTareWeight = false;//毛重
  1162. }
  1163. else
  1164. {
  1165. rt.result = false;
  1166. rt.isError = true;
  1167. rt.resultInfo = "称重数据保存失败";
  1168. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  1169. }
  1170. }
  1171. else
  1172. {
  1173. rt.result = false;
  1174. rt.isError = true;
  1175. rt.resultInfo = PbCache.ResultMessage;
  1176. }
  1177. }
  1178. else
  1179. {
  1180. //一次weightType修改为毛
  1181. if (rmX.Data[0].weightType != "0")
  1182. {
  1183. mwcfs.doUpdateWf(new MeterWorkCarActualFirst { actualFirstNo = rmX.Data[0].actualFirstNo, weightType = "0" });
  1184. lg.WriteLog(3, string.Format("车辆[{0}]计量时,无历史皮重,存在一次记录,当前记录小于一次记录,修改一次weightType[{1}]为0", scale.carNo, rmX.Data[0].weightType));
  1185. }
  1186. //当前为皮重
  1187. //两次计量时间间隔
  1188. validTimeInterval vtime = new validTimeInterval();
  1189. vtime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003" }, "3", rmX.Data[0]);
  1190. if (PbCache.monitorResult.valid_time_interval)
  1191. {
  1192. //验证回皮时间,必须是先毛后皮的流程才验证回皮时间
  1193. validTareTime vttime = new validTareTime();
  1194. vttime.ValidMethod(new PreTrackScale { meterTypeNo = "001006003", matterNo = rmX.Data[0].matterNo }, "3", rmX.Data[0]);
  1195. if (PbCache.monitorResult.valid_tare_time)
  1196. {
  1197. mwaf.weightType = "1";
  1198. // 结净数据
  1199. MeterWorkCarActual netDb = new MeterWorkCarActual();
  1200. EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
  1201. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  1202. //netDb.actualFirst1No = mb.actualFirstNo; //皮重计量作业编号
  1203. netDb.tareTime = DateTime.Now;
  1204. netDb.tareWeight = PbCache.lockWgt;
  1205. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  1206. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  1207. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  1208. /* netDb.tare_man_no = "";
  1209. netDb.tare_man_name = "";
  1210. netDb.tare_class = "";
  1211. netDb.tare_group = "";*/
  1212. netDb.actualFirst1No = rmX.Data[0].actualFirstNo;
  1213. netDb.grossTime = rmX.Data[0].createTime;
  1214. netDb.grossWeight = rmX.Data[0].meterWeight;
  1215. netDb.baseSpot1No = rmX.Data[0].baseSpotNo;
  1216. netDb.baseSpot1Name = rmX.Data[0].baseSpotName;
  1217. netDb.grossMode = rmX.Data[0].meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  1218. netDb.grossManNo = rmX.Data[0].createManNo;
  1219. netDb.grossManName = rmX.Data[0].createManName;
  1220. netDb.grossClass = rmX.Data[0].meterClass;
  1221. netDb.grossGroup = rmX.Data[0].meterGroup;
  1222. netDb.netTime = DateTime.Now;
  1223. //netDb.netManNo = appUser.userid; //净重计量员编码
  1224. //netDb.netManName = appUser.username; //净重计量员名称
  1225. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  1226. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  1227. netDb.addWeight = (rmX.Data[0].addWeight == null ? 0 : rmX.Data[0].addWeight.Value);
  1228. //净重=毛-皮-附加重量
  1229. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  1230. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  1231. netDb.valueFlag = "0"; //0=有效,1=作废
  1232. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  1233. //操作日志
  1234. MeterMonitorNote monitorNote = new MeterMonitorNote();
  1235. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  1236. monitorNote.baseSpotName = mwaf.baseSpotName;
  1237. monitorNote.operationContent = string.Format("结净称重保存");
  1238. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  1239. monitorNote.carNo = mwaf.carNo;
  1240. monitorNote.meterNoteSource = "0";
  1241. RESTfulResult<string> rmI = mwcfs.doAddNetInnerWf(mwaf, netDb, monitorNote, PbCache.monitor.validWgt);
  1242. if (rmI.Succeed)
  1243. {
  1244. rt.result = true;
  1245. rt.isError = false;
  1246. rt.resultInfo = "称重完成";
  1247. rt.message = rmI.Message;
  1248. PbCache.ResultMessage = "称重完成";
  1249. PbCache.actualFirstNo = rmI.Data;
  1250. PbCache.isTareWeight = true;//皮重
  1251. }
  1252. else
  1253. {
  1254. rt.result = false;
  1255. rt.isError = true;
  1256. rt.resultInfo = "称重数据保存失败";
  1257. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  1258. }
  1259. }
  1260. else
  1261. {
  1262. rt.result = false;
  1263. rt.isError = true;
  1264. rt.resultInfo = PbCache.ResultMessage;
  1265. }
  1266. }
  1267. else
  1268. {
  1269. rt.result = false;
  1270. rt.isError = true;
  1271. rt.resultInfo = PbCache.ResultMessage;
  1272. }
  1273. }
  1274. }
  1275. else
  1276. {
  1277. //重复计量
  1278. rt.result = false;
  1279. rt.isError = true;
  1280. rt.resultInfo = "第一次计量重量和第二次计量重量接近";
  1281. //PbCache.ResultMessage = "第一次计量重量和第二次计量重量接近";
  1282. PbCache.ResultMessage = "第一次计量重量【" + rmX.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + AppConfigCache.differenceWgt / 1000 + " T】,请点击[语音求助],由司秤工过磅!";
  1283. }
  1284. }
  1285. }
  1286. }
  1287. }
  1288. return rt;
  1289. }
  1290. }
  1291. }