InnerCarJISCO.cs 104 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using Common.DbOption.work;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace MeterSceneLibrary
  10. {
  11. /// <summary>
  12. /// 酒钢厂内车辆计量业务
  13. /// </summary>
  14. public class InnerCarJISCO
  15. {
  16. // 一次计量数据
  17. private MeterWorkCarActualFirstService mwcfs = new MeterWorkCarActualFirstService();
  18. // 重量类型预处理表
  19. private MeterWorkPreWgttypeService wgttypeService = new MeterWorkPreWgttypeService();
  20. // 车辆委托表
  21. private PreTrackScaleService preTrackScaleService = new PreTrackScaleService();
  22. // 留期限皮操作
  23. private MeterBaseTermTareDataService termTareDate = new MeterBaseTermTareDataService();
  24. private MeterBaseSpotInfoService meterBaseSpotInfoService = new MeterBaseSpotInfoService();
  25. private rtInfo rt = new rtInfo();
  26. // 构建一次计量数据
  27. private MeterWorkCarActualFirst mwaf = new MeterWorkCarActualFirst();
  28. // 结净最小值,默认取配置文件
  29. private double diffrentWgt = AppConfigCache.differenceWgt;
  30. // 根据称点查询监控信息
  31. private RESTfulResult<List<MeterWorkMonitor>> listMonitor;
  32. // 根据车号查询委托表中未使用和使用中的委托
  33. private List<PreTrackScale> listPreScale;
  34. private JISCO.SaveMethod saveMethod = new JISCO.SaveMethod();
  35. public rtInfo MeterMethod(PreTrackScale scale)
  36. {
  37. Log lg = Log.GetInstance();
  38. rt.isError = false;
  39. string ResultMessage = "";
  40. bool isError = false;
  41. //根据称点查询监控信息
  42. MeterWorkMonitorService meterWorkMonitorService = new MeterWorkMonitorService();
  43. listMonitor = meterWorkMonitorService.doQueryOneWf(new MeterWorkMonitor { pointNo = PbCache.sportInfo.baseSpotNo });
  44. mwaf.carNo = PbCache.lockCarNo;
  45. mwaf.weightType = ""; // 默认重量类型为空
  46. mwaf.actualFirstNo = DateTime.Now.ToString("yyyyMMdd");//10
  47. mwaf.meterWeight = PbCache.lockWgt;//计量重量
  48. mwaf.addWeight = PbCache.addWgt;//附加重量
  49. mwaf.createManNo = "admin";
  50. mwaf.createManName = "admin";
  51. mwaf.meterGroup = "";
  52. mwaf.meterClass = "";
  53. mwaf.createManNo = "SYSTEM";
  54. mwaf.createManName = "system";
  55. mwaf.createTime = DateTime.Now;
  56. mwaf.baseSpotNo = PbCache.sportInfo.baseSpotNo;//计量点编号
  57. mwaf.baseSpotName = PbCache.sportInfo.baseSpotName;
  58. //mwaf.memo = "";
  59. mwaf.valueFlag = "1"; //状态(0 = 作废,1 = 有效(已匹配),2 = 结净)
  60. mwaf.updateManName = "";
  61. mwaf.updateManNo = "";
  62. mwaf.updateTime = null;
  63. mwaf.checkFlag = "1"; //0未审核,1已审核
  64. mwaf.meterMode = "2"; //1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  65. mwaf.addWeight = PbCache.addWgt;
  66. mwaf.dataSource = "1"; //数据来源(1=智能终端,2=本地计量,3=应急计量,4=手动录入(计量票据录入))
  67. PbCache.isActual = false;
  68. PbCache.isInnerCar = false;
  69. PbCache.ResultMessage = "";
  70. PbCache.monitorResultMessage = "";
  71. PbCache.LEDResultMessage = "";
  72. // 根据车号查询重量类型预处理表
  73. RESTfulResult<List<MeterWorkPreWgttype>> rmX = wgttypeService.doQueryWf(new MeterWorkPreWgttype { carNo = PbCache.lockCarNo, valueFlag = "1" });
  74. if (scale.carNo != "")
  75. {
  76. if (rmX.Succeed)
  77. {
  78. List<MeterWorkPreWgttype> list = rmX.Data;
  79. // 不存在一次预处理数据
  80. if (list == null || list.Count == 0)
  81. {
  82. /* a. 程序报警
  83. * b. 自动进行语音求助
  84. */
  85. rt = saveMethod.doError("未选择称重类型,请选择后开始计量");
  86. PbCache.monitorResultMessage = "未选择称重类型,请选择后开始计量";
  87. return rt;
  88. }
  89. else
  90. {
  91. if (list[0].weightTypeNo == "001033001")
  92. {
  93. if (list[0].submitFlag != "1")
  94. {
  95. rt = saveMethod.doError("吉瑞、铁合金车辆未确认重量");
  96. return rt;
  97. }
  98. }
  99. }
  100. }
  101. }
  102. // 不存在未使用的重量类型数据
  103. if (rmX.Succeed)
  104. {
  105. List<MeterWorkPreWgttype> list = rmX.Data;
  106. // 不存在一次预处理数据
  107. if (list == null || list.Count == 0)
  108. {
  109. /* a. 程序报警
  110. * b. 自动进行语音求助
  111. */
  112. rt = saveMethod.doError("未选择称重类型,请选择后开始计量");
  113. PbCache.monitorResultMessage = "未选择称重类型,请选择后开始计量";
  114. }
  115. // 存在一条预处理数据
  116. else if (list == null || list.Count == 1)
  117. {
  118. // 查已选择的委托
  119. RESTfulResult<List<PreTrackScale>> rmScale = preTrackScaleService.doQueryByFlag(new PreTrackScale { carNo = PbCache.lockCarNo, lineDesc = "1" });
  120. if (rmScale.Succeed && rmScale.Data.Count == 1)
  121. {
  122. // 重量类型为期限皮重
  123. if (list[0].weightTypeNo == "001033003")
  124. {
  125. // 判断这个车是否有留存期限皮重的权限
  126. MeterBaseTermTareCarService meterBaseTermTareCarService = new MeterBaseTermTareCarService();
  127. RESTfulResult<List<MeterBaseTermTareCar>> tareCarResult = meterBaseTermTareCarService.doQueryWf(new MeterBaseTermTareCar { carNo = PbCache.lockCarNo, valueFlag = "0" });
  128. if (tareCarResult.Succeed)
  129. {
  130. // 没有期限皮重权限
  131. if (tareCarResult.Data == null || tareCarResult.Data.Count == 0)
  132. {
  133. rt = saveMethod.doError("该车辆没有期限皮重权限,请联系计量大厅");
  134. PbCache.monitorResultMessage = "该车辆没有期限皮重权限";
  135. }
  136. // 有期限皮重权限
  137. else if (tareCarResult.Data.Count >= 1)
  138. {
  139. // 正常保存期限皮重
  140. rt = saveMethod.doTermTareData();
  141. }
  142. }
  143. }
  144. // 重量类型为普通毛重/皮重
  145. else if (list[0].weightTypeNo == "001033001" || list[0].weightTypeNo == "001033002")
  146. {
  147. // 查询一次计量数据表
  148. RESTfulResult<List<MeterWorkCarActualFirst>> rmFirst = mwcfs.doQueryByFlag(new MeterWorkCarActualFirst { carNo = PbCache.lockCarNo });
  149. if (rmX.Succeed)
  150. {
  151. List<MeterWorkCarActualFirst> firstList = rmFirst.Data;
  152. // 不存在有效的一次计量数据
  153. if (firstList == null || firstList.Count == 0)
  154. {
  155. // 历史皮重验证
  156. rt = saveMethod.validHisTare(list[0].weightTypeNo);
  157. // 重量类型为皮重且在皮重误差内
  158. if (list[0].weightTypeNo == "001033002" && (PbCache.monitorResult.valid_wgt == true || listMonitor.Data[0].validWgt == "0"))
  159. {
  160. /*sds
  161. * a. 正常保存重量匹配委托
  162. * b. 提示称重完成
  163. */
  164. mwaf.weightType = "1";
  165. rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  166. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  167. }
  168. // 重量类型为皮重且在皮重误差外
  169. else if (list[0].weightTypeNo == "001033002" && PbCache.monitorResult.valid_wgt == false && listMonitor.Data[0].validWgt == "1")
  170. {
  171. if (PbCache.ResultMessage == "")
  172. {
  173. PbCache.ResultMessage = "重量类型为皮重且不在皮重误差内";
  174. }
  175. rt = saveMethod.doError(PbCache.ResultMessage);
  176. rt.isWarn = true;
  177. rt.WarnContent = "validWgt";
  178. }
  179. // 重量类型为毛重,在皮重误差内
  180. else if (list[0].weightTypeNo == "001033001" && PbCache.monitorResult.valid_wgt == true && listMonitor.Data[0].validWgt == "1")
  181. {
  182. if (PbCache.ResultMessage == "")
  183. {
  184. PbCache.ResultMessage = "重量类型为毛重,在皮重误差内";
  185. }
  186. rt = saveMethod.doError(PbCache.ResultMessage);
  187. rt.isWarn = true;
  188. rt.WarnContent = "validWgt";
  189. }
  190. // 重量类型为毛重,不在皮重误差内
  191. else if (list[0].weightTypeNo == "001033001" && (PbCache.monitorResult.valid_wgt == false || listMonitor.Data[0].validWgt == "0"))
  192. {
  193. #region 期限皮注释
  194. //// 判断车辆是否具有期限皮重权限
  195. //MeterBaseTermTareCarService meterBaseTermTareCarService = new MeterBaseTermTareCarService();
  196. //RESTfulResult<List<MeterBaseTermTareCar>> tareCarResult = meterBaseTermTareCarService.doQueryWf(new MeterBaseTermTareCar { carNo = PbCache.lockCarNo, valueFlag = "0" });
  197. //if (tareCarResult.Succeed)
  198. //{
  199. // // 没有期限皮重权限
  200. // if (tareCarResult.Data == null || tareCarResult.Data.Count == 0)
  201. // {
  202. // mwaf.weightType = "0";
  203. // rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  204. // PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  205. // }
  206. // // 有期限皮重权限
  207. // else if (tareCarResult.Data.Count >= 1)
  208. // {
  209. // //查下当前拖的物料是否可用期限皮;验证业务类型是否允许使用期限皮重
  210. // string sqls = @"select t.matter_no id, t.matter_name text
  211. // from meter_base_matter_info t
  212. // where t.allowed_tare_weight = '1'
  213. // and t.valid_flag = '1'
  214. // and t.matter_no='" + rmScale.Data[0].matterNo + @"'";
  215. // PbModelDbService<List<PbModelDb>> pbp = new PbModelDbService<List<PbModelDb>>();
  216. // RESTfulResult<List<PbModelDb>> rmT = pbp.executeSqlDataWf(sqls);
  217. // if (rmT.Succeed)
  218. // {
  219. // if (rmT.Data != null && rmT.Data.Count > 0)
  220. // {
  221. // }
  222. // else
  223. // {
  224. // mwaf.weightType = "0";
  225. // // 只保存一次计量数据
  226. // rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  227. // PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  228. // }
  229. // }
  230. // }
  231. //}
  232. #endregion
  233. //判断是使用车号-物料-称点,还是使用车号-物料-路线判断期限皮
  234. #region 车号-物料-路线
  235. if (AppConfigCache.TareControlType == "1")
  236. {
  237. // 判断收发货单位是否具有期限皮重权限
  238. MeterBaseUnitInfoService meterBaseUnitInfoService = new MeterBaseUnitInfoService();
  239. MeterBaseUnitInfo meterBaseUnitInfo = new MeterBaseUnitInfo();
  240. meterBaseUnitInfo.forwardingUnitName = rmScale.Data[0].forwardingUnitName;
  241. meterBaseUnitInfo.forwardingUnitNo = rmScale.Data[0].forwardingUnitNo;
  242. meterBaseUnitInfo.receivingUnitName = rmScale.Data[0].receivingUintName;
  243. meterBaseUnitInfo.receivingUnitNo = rmScale.Data[0].receivingUintNo;
  244. meterBaseUnitInfo.matterNo = rmScale.Data[0].matterNo;
  245. meterBaseUnitInfo.matterName = rmScale.Data[0].matterName;
  246. meterBaseUnitInfo.allowedTareWeight = "1";
  247. RESTfulResult<List<MeterBaseUnitInfo>> tareUnitResult = meterBaseUnitInfoService.doQueryWf(meterBaseUnitInfo);
  248. if (tareUnitResult.Succeed)
  249. {
  250. if (tareUnitResult.Data == null || tareUnitResult.Data.Count == 0)
  251. {
  252. mwaf.weightType = "0";
  253. // 只保存一次计量数据
  254. rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  255. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  256. }
  257. else
  258. {
  259. if (tareUnitResult.Data[0].caoNo != "" && tareUnitResult.Data[0].caoNo != PbCache.lockCarNo)
  260. {
  261. mwaf.weightType = "0";
  262. // 只保存一次计量数据
  263. rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  264. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  265. }
  266. else
  267. {
  268. MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
  269. RESTfulResult<MeterBaseTermTareData> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
  270. if (termTareData.Succeed)
  271. {
  272. if (termTareData.Data == null)
  273. {
  274. mwaf.weightType = "0";
  275. // 只保存一次计量数据
  276. rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  277. rt.resultInfo += ",期限皮不存在或者已过期,请留存期限皮";
  278. PbCache.ResultMessage = "计量成功,期限皮不存在或者已过期,请留存期限皮";
  279. PbCache.monitorResultMessage = "计量成功,期限皮不存在或者已过期,请留存期限皮";
  280. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮不存在或者已过期请留存期限皮", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  281. }
  282. else
  283. {
  284. // 存在使用期限皮重权限,并使用期限皮重洁净
  285. List<string> l = new List<string>();
  286. l.Add("create");
  287. //给一次数据匹配委托
  288. EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
  289. mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  290. mwaf.isPreScale = "1";
  291. mwaf.weightType = "0";
  292. rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
  293. rt.resultInfo += ",期限皮结净";
  294. PbCache.ResultMessage = "计量成功,期限皮结净";
  295. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  296. }
  297. }
  298. }
  299. }
  300. }
  301. }
  302. #endregion
  303. #region 车号-物料-称点
  304. if (AppConfigCache.TareControlType == "2")
  305. {
  306. // 判断称点是否具有期限皮重权限
  307. MeterBaseSpotInfo meterBaseSpotInfo = new MeterBaseSpotInfo();
  308. meterBaseSpotInfo.baseSpotNo = PbCache.sportInfo.baseSpotNo;
  309. meterBaseSpotInfo.allowedTareWeight = "1";
  310. RESTfulResult<List<MeterBaseSpotInfo>> tareSpotResult = meterBaseSpotInfoService.doQueryWf(meterBaseSpotInfo);
  311. if (tareSpotResult.Succeed)
  312. {
  313. if (tareSpotResult.Data == null || tareSpotResult.Data.Count == 0)
  314. {
  315. mwaf.weightType = "0";
  316. // 只保存一次计量数据
  317. rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  318. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  319. }
  320. else
  321. {
  322. MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
  323. RESTfulResult<MeterBaseTermTareData> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
  324. if (termTareData.Succeed)
  325. {
  326. if (termTareData.Data == null)
  327. {
  328. mwaf.weightType = "0";
  329. // 只保存一次计量数据
  330. rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  331. rt.resultInfo += ",期限皮不存在或者已过期,请留存期限皮";
  332. PbCache.ResultMessage = "计量成功,期限皮不存在或者已过期,请留存期限皮";
  333. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮不存在或者已过期请留存期限皮", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  334. }
  335. else
  336. {
  337. // 存在使用期限皮重权限,并使用期限皮重洁净
  338. List<string> l = new List<string>();
  339. l.Add("create");
  340. //给一次数据匹配委托
  341. EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
  342. mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  343. mwaf.isPreScale = "1";
  344. mwaf.weightType = "0";
  345. PbCache.ResultMessage = "计量成功,期限皮结净";
  346. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  347. rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
  348. rt.resultInfo += ",期限皮结净";
  349. }
  350. }
  351. }
  352. }
  353. }
  354. #endregion
  355. }
  356. }
  357. // 只存在一条有效的一次计量数据
  358. else if (firstList == null || firstList.Count == 1)
  359. {
  360. // 读结净最小值配置
  361. ComBaseInfoService cbis = new ComBaseInfoService();
  362. RESTfulResult<List<ComBaseInfo>> res = cbis.doQueryBaseList(new ComBaseInfo { baseCode = "001031001" });
  363. if (res.Succeed)
  364. {
  365. if (res.Data != null && res.Data.Count == 1)
  366. {
  367. try
  368. {
  369. diffrentWgt = Double.Parse(res.Data[0].baseName);
  370. }
  371. finally
  372. {
  373. }
  374. }
  375. }
  376. // 当次重量和上次重量满足洁净最小值条件
  377. if (Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) > diffrentWgt || listMonitor.Data[0].validPredictionDiff == "0")
  378. {
  379. //判断上一次的一次数据是为皮重的,这次为毛重,上一次重量比这一次大;
  380. //上一次为皮重4200,这一次是毛重3200
  381. if (firstList[0].weightType == "1" && list[0].weightTypeNo == "001033001" && rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt > 0)
  382. {
  383. EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
  384. mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  385. mwaf.weightType = "0";
  386. mwaf.isPreScale = "1";
  387. mwaf.actualFirstNo = "";
  388. rt = saveMethod.doNetError(rmScale.Data[0], firstList[0], mwaf, mwaf);
  389. return rt;
  390. }
  391. //判断上一次的一次数据是为毛重的,这次为皮重,上一次重量比这一次小;
  392. if (firstList[0].weightType == "0" && list[0].weightTypeNo == "001033002" && rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt < 0)
  393. {
  394. EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
  395. mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  396. mwaf.weightType = "1";
  397. mwaf.isPreScale = "1";
  398. mwaf.actualFirstNo = "";
  399. rt = saveMethod.doNetError(rmScale.Data[0], mwaf, firstList[0], mwaf);
  400. return rt;
  401. }
  402. // 查询当前秤点是否启用历史皮重判断(暂时不考虑此限制)By BourneCao
  403. // String spotNo = PbCache.sportInfo.baseSpotNo;
  404. // 历史皮重验证
  405. rt = saveMethod.validHisTare(list[0].weightTypeNo);
  406. // 重量类型为皮重且在皮重误差内,正常结净
  407. if (list[0].weightTypeNo == "001033002" && (PbCache.monitorResult.valid_wgt == true || listMonitor.Data[0].validWgt == "0"))
  408. {
  409. // 正常结净
  410. //给一次数据匹配委托
  411. EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
  412. mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  413. mwaf.isPreScale = "1";
  414. rt = saveMethod.doNet(rmScale.Data[0], firstList[0], mwaf);
  415. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
  416. }
  417. // 重量类型为皮重且不在皮重误差内
  418. else if (list[0].weightTypeNo == "001033002" && PbCache.monitorResult.valid_wgt == false && listMonitor.Data[0].validWgt == "1")
  419. {
  420. if (PbCache.ResultMessage == "")
  421. {
  422. PbCache.ResultMessage = "重量类型为皮重且不在皮重误差内";
  423. }
  424. rt = saveMethod.doError(PbCache.ResultMessage);
  425. }
  426. // 重量类型为毛重,不在皮重误差内,正常结净
  427. else if (list[0].weightTypeNo == "001033001" && (PbCache.monitorResult.valid_wgt == false || listMonitor.Data[0].validWgt == "0"))
  428. {
  429. if (firstList[0].weightType == "0")
  430. {
  431. RESTfulResult<List<PreTrackScale>> scales = preTrackScaleService.doQueryWf(new PreTrackScale { predictionNo = firstList[0].predictionNo });
  432. #region 期限皮注释
  433. //// 判断车辆是否具有期限皮重权限
  434. //MeterBaseTermTareCarService meterBaseTermTareCarService = new MeterBaseTermTareCarService();
  435. //RESTfulResult<List<MeterBaseTermTareCar>> tareCarResult = meterBaseTermTareCarService.doQueryWf(new MeterBaseTermTareCar { carNo = PbCache.lockCarNo, valueFlag = "0" });
  436. //if (tareCarResult.Succeed)
  437. //{
  438. // // 没有期限皮重权限
  439. // if (tareCarResult.Data == null || tareCarResult.Data.Count == 0)
  440. // {
  441. // mwaf.weightType = "0";
  442. // rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  443. // rt.resultInfo = "之前存在一个未结净的毛重";
  444. // PbCache.ResultMessage = "之前存在一个未结净的毛重";
  445. // PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  446. // PbCache.monitorResultMessage = "之前存在一个未结净的毛重";
  447. // rt.isWarn = true;
  448. // rt.WarnContent = "validWgt";
  449. // }
  450. // // 有期限皮重权限
  451. // else if (tareCarResult.Data.Count >= 1)
  452. // {
  453. // //查下当前拖的物料是否可用期限皮;验证业务类型是否允许使用期限皮重
  454. // string sqls = @"select t.matter_no id, t.matter_name text
  455. // from meter_base_matter_info t
  456. // where t.allowed_tare_weight = '1'
  457. // and t.valid_flag = '1'
  458. // and t.matter_no='" + scales.Data[0].matterNo + "'";
  459. // PbModelDbService<List<PbModelDb>> pbp = new PbModelDbService<List<PbModelDb>>();
  460. // RESTfulResult<List<PbModelDb>> rmT = pbp.executeSqlDataWf(sqls);
  461. // if (rmT.Succeed)
  462. // {
  463. // // 存在使用期限皮重权限,并使用期限皮重洁净
  464. // if (rmT.Data != null && rmT.Data.Count > 0)
  465. // {
  466. // }
  467. // else
  468. // {
  469. // mwaf.weightType = "0";
  470. // rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  471. // rt.resultInfo = "之前存在一个未结净的毛重";
  472. // PbCache.ResultMessage = "之前存在一个未结净的毛重";
  473. // PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  474. // PbCache.monitorResultMessage = "之前存在一个未结净的毛重";
  475. // rt.isWarn = true;
  476. // rt.WarnContent = "validWgt";
  477. // }
  478. // }
  479. // }
  480. //}
  481. #endregion
  482. //判断是使用车号-物料-称点,还是使用车号-物料-路线判断期限皮
  483. #region 车号-物料-路线
  484. if (AppConfigCache.TareControlType == "1")
  485. {
  486. // 判断收发货单位是否具有期限皮重权限
  487. MeterBaseUnitInfoService meterBaseUnitInfoService = new MeterBaseUnitInfoService();
  488. MeterBaseUnitInfo meterBaseUnitInfo = new MeterBaseUnitInfo();
  489. meterBaseUnitInfo.forwardingUnitName = scales.Data[0].forwardingUnitName;
  490. meterBaseUnitInfo.forwardingUnitNo = scales.Data[0].forwardingUnitNo;
  491. meterBaseUnitInfo.receivingUnitName = scales.Data[0].receivingUintName;
  492. meterBaseUnitInfo.receivingUnitNo = scales.Data[0].receivingUintNo;
  493. meterBaseUnitInfo.caoNo = PbCache.lockCarNo;
  494. meterBaseUnitInfo.matterNo = scales.Data[0].matterNo;
  495. meterBaseUnitInfo.matterName = scales.Data[0].matterName;
  496. meterBaseUnitInfo.allowedTareWeight = "1";
  497. RESTfulResult<List<MeterBaseUnitInfo>> tareUnitResult = meterBaseUnitInfoService.doQueryWf(meterBaseUnitInfo);
  498. if (tareUnitResult.Succeed)
  499. {
  500. if (tareUnitResult.Data == null || tareUnitResult.Data.Count == 0)
  501. {
  502. mwaf.weightType = "0";
  503. rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  504. rt.resultInfo = "之前存在一个未结净的毛重";
  505. PbCache.ResultMessage = "之前存在一个未结净的毛重";
  506. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  507. PbCache.monitorResultMessage = "之前存在一个未结净的毛重";
  508. rt.isWarn = true;
  509. rt.WarnContent = "validWgt";
  510. }
  511. else
  512. {
  513. if (tareUnitResult.Data[0].caoNo != "" && tareUnitResult.Data[0].caoNo != PbCache.lockCarNo)
  514. {
  515. mwaf.weightType = "0";
  516. rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  517. rt.resultInfo = "之前存在一个未结净的毛重";
  518. PbCache.ResultMessage = "之前存在一个未结净的毛重";
  519. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  520. PbCache.monitorResultMessage = "之前存在一个未结净的毛重";
  521. rt.isWarn = true;
  522. rt.WarnContent = "validWgt";
  523. }
  524. else
  525. {
  526. MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
  527. RESTfulResult<MeterBaseTermTareData> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
  528. if (termTareData.Succeed)
  529. {
  530. if (termTareData.Data == null)
  531. {
  532. mwaf.weightType = "0";
  533. rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  534. rt.resultInfo = "期限皮过期并之前存在一个未结净的毛重";
  535. PbCache.ResultMessage = "期限皮过期并之前存在一个未结净的毛重";
  536. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,期限皮过期并之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  537. PbCache.monitorResultMessage = "期限皮过期并之前存在一个未结净的毛重";
  538. rt.isWarn = true;
  539. rt.WarnContent = "validWgt";
  540. }
  541. else
  542. {
  543. // 存在使用期限皮重权限,并使用期限皮重洁净
  544. List<string> l = new List<string>();
  545. l.Add("create");
  546. //给一次数据匹配委托
  547. EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
  548. mwaf = entityBase1.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  549. mwaf.isPreScale = "1";
  550. mwaf.weightType = "0";
  551. PbCache.ResultMessage = "计量成功,期限皮结净";
  552. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  553. rt = saveMethod.doNetTermTare(scales.Data[0], mwaf);
  554. rt.resultInfo += ",期限皮结净";
  555. }
  556. }
  557. }
  558. }
  559. }
  560. }
  561. #endregion
  562. #region 车号-物料-称点
  563. if (AppConfigCache.TareControlType == "2")
  564. {
  565. // 判断收发货单位是否具有期限皮重权限
  566. // 判断称点是否具有期限皮重权限
  567. MeterBaseSpotInfo meterBaseSpotInfo = new MeterBaseSpotInfo();
  568. meterBaseSpotInfo.baseSpotNo = PbCache.sportInfo.baseSpotNo;
  569. meterBaseSpotInfo.allowedTareWeight = "1";
  570. RESTfulResult<List<MeterBaseSpotInfo>> tareSpotResult = meterBaseSpotInfoService.doQueryWf(meterBaseSpotInfo);
  571. if (tareSpotResult.Succeed)
  572. {
  573. if (tareSpotResult.Data == null || tareSpotResult.Data.Count == 0)
  574. {
  575. // 正常结净
  576. //给一次数据匹配委托
  577. EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  578. mwaf = entityBase3.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  579. mwaf.isPreScale = "1";
  580. mwaf.weightType = "1";
  581. rt = saveMethod.doNet(scales.Data[0], firstList[0], mwaf);
  582. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
  583. }
  584. else
  585. {
  586. MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
  587. RESTfulResult<MeterBaseTermTareData> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
  588. if (termTareData.Succeed)
  589. {
  590. if (termTareData.Data == null)
  591. {
  592. mwaf.weightType = "0";
  593. rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  594. rt.resultInfo = "期限皮过期并之前存在一个未结净的毛重";
  595. PbCache.ResultMessage = "期限皮过期并之前存在一个未结净的毛重";
  596. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,期限皮过期并之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  597. PbCache.monitorResultMessage = "期限皮过期并之前存在一个未结净的毛重";
  598. rt.isWarn = true;
  599. rt.WarnContent = "validWgt";
  600. }
  601. else
  602. {
  603. // 存在使用期限皮重权限,并使用期限皮重洁净
  604. List<string> l = new List<string>();
  605. l.Add("create");
  606. //给一次数据匹配委托
  607. EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
  608. mwaf = entityBase1.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  609. mwaf.isPreScale = "1";
  610. mwaf.weightType = "1";
  611. PbCache.ResultMessage = "计量成功,期限皮结净";
  612. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  613. rt = saveMethod.doNetTermTare(scales.Data[0], mwaf);
  614. rt.resultInfo += ",期限皮结净";
  615. }
  616. }
  617. }
  618. }
  619. }
  620. #endregion
  621. }
  622. else
  623. {
  624. #region 期限皮注释
  625. //// 判断车辆是否具有期限皮重权限
  626. //MeterBaseTermTareCarService meterBaseTermTareCarService = new MeterBaseTermTareCarService();
  627. //RESTfulResult<List<MeterBaseTermTareCar>> tareCarResult = meterBaseTermTareCarService.doQueryWf(new MeterBaseTermTareCar { carNo = PbCache.lockCarNo, valueFlag = "0" });
  628. //if (tareCarResult.Succeed)
  629. //{
  630. // // 没有期限皮重权限
  631. // if (tareCarResult.Data == null || tareCarResult.Data.Count == 0)
  632. // {
  633. // // 正常结净
  634. // //给一次数据匹配委托
  635. // EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
  636. // mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  637. // mwaf.isPreScale = "1";
  638. // mwaf.weightType = "0";
  639. // rt = saveMethod.doNet(rmScale.Data[0], firstList[0], mwaf);
  640. // PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
  641. // }
  642. // // 有期限皮重权限
  643. // else if (tareCarResult.Data.Count >= 1)
  644. // {
  645. // //查下当前拖的物料是否可用期限皮;验证业务类型是否允许使用期限皮重
  646. // string sqls = @"select t.matter_no id, t.matter_name text
  647. // from meter_base_matter_info t
  648. // where t.allowed_tare_weight = '1'
  649. // and t.valid_flag = '1'
  650. // and t.matter_no='" + rmScale.Data[0].matterNo + "'";
  651. // PbModelDbService<List<PbModelDb>> pbp = new PbModelDbService<List<PbModelDb>>();
  652. // RESTfulResult<List<PbModelDb>> rmT = pbp.executeSqlDataWf(sqls);
  653. // if (rmT.Succeed)
  654. // {
  655. // // 存在使用期限皮重权限,并使用期限皮重洁净
  656. // if (rmT.Data != null && rmT.Data.Count > 0)
  657. // {
  658. // }
  659. // else
  660. // {
  661. // // 正常结净
  662. // //给一次数据匹配委托
  663. // EntityBase<PreTrackScale> entityBase2 = new EntityBase<PreTrackScale>();
  664. // mwaf = entityBase2.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  665. // mwaf.isPreScale = "1";
  666. // mwaf.weightType = "0";
  667. // rt = saveMethod.doNet(rmScale.Data[0], firstList[0], mwaf);
  668. // PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2},计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
  669. // }
  670. // }
  671. // }
  672. //}
  673. #endregion
  674. //判断是使用车号-物料-称点,还是使用车号-物料-路线判断期限皮
  675. #region 车号-物料-路线
  676. if (AppConfigCache.TareControlType == "1")
  677. {
  678. // 判断收发货单位是否具有期限皮重权限
  679. MeterBaseUnitInfoService meterBaseUnitInfoService = new MeterBaseUnitInfoService();
  680. MeterBaseUnitInfo meterBaseUnitInfo = new MeterBaseUnitInfo();
  681. meterBaseUnitInfo.forwardingUnitName = rmScale.Data[0].forwardingUnitName;
  682. meterBaseUnitInfo.forwardingUnitNo = rmScale.Data[0].forwardingUnitNo;
  683. meterBaseUnitInfo.receivingUnitName = rmScale.Data[0].receivingUintName;
  684. meterBaseUnitInfo.receivingUnitNo = rmScale.Data[0].receivingUintNo;
  685. meterBaseUnitInfo.matterNo = rmScale.Data[0].matterNo;
  686. meterBaseUnitInfo.matterName = rmScale.Data[0].matterName;
  687. meterBaseUnitInfo.caoNo = PbCache.lockCarNo;
  688. meterBaseUnitInfo.allowedTareWeight = "1";
  689. RESTfulResult<List<MeterBaseUnitInfo>> tareUnitResult = meterBaseUnitInfoService.doQueryWf(meterBaseUnitInfo);
  690. if (tareUnitResult.Succeed)
  691. {
  692. if (tareUnitResult.Data == null || tareUnitResult.Data.Count == 0)
  693. {
  694. // 正常结净
  695. //给一次数据匹配委托
  696. EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  697. mwaf = entityBase3.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  698. mwaf.isPreScale = "1";
  699. mwaf.weightType = "0";
  700. rt = saveMethod.doNet(rmScale.Data[0], firstList[0], mwaf);
  701. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
  702. }
  703. else
  704. {
  705. if (tareUnitResult.Data[0].caoNo != "" && tareUnitResult.Data[0].caoNo != PbCache.lockCarNo)
  706. {
  707. // 正常结净
  708. //给一次数据匹配委托
  709. EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  710. mwaf = entityBase3.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  711. mwaf.isPreScale = "1";
  712. mwaf.weightType = "0";
  713. rt = saveMethod.doNet(rmScale.Data[0], firstList[0], mwaf);
  714. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
  715. }
  716. else
  717. {
  718. MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
  719. RESTfulResult<MeterBaseTermTareData> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
  720. if (termTareData.Succeed)
  721. {
  722. // 正常结净
  723. //给一次数据匹配委托
  724. EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  725. mwaf = entityBase3.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  726. mwaf.isPreScale = "1";
  727. mwaf.weightType = "0";
  728. rt = saveMethod.doTermTareNet(rmScale.Data[0], mwaf, firstList[0]);
  729. rt.resultInfo += ",留存期限皮成功";
  730. PbCache.ResultMessage = "计量成功,留存期限皮成功";
  731. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,留存期限皮成功", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  732. //if (termTareData.Data == null)
  733. //{
  734. // 正常结净
  735. //给一次数据匹配委托
  736. //EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  737. //mwaf = entityBase3.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  738. //mwaf.isPreScale = "1";
  739. //mwaf.weightType = "0";
  740. //rt = saveMethod.doTermTareNet(rmScale.Data[0], mwaf, firstList[0]);
  741. //rt.resultInfo += ",留存期限皮成功";
  742. //PbCache.ResultMessage = "计量成功,留存期限皮成功";
  743. //PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,留存期限皮成功", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  744. //}
  745. //else
  746. //{
  747. // // 存在使用期限皮重权限,并使用期限皮重洁净
  748. // List<string> l = new List<string>();
  749. // l.Add("create");
  750. // //给一次数据匹配委托
  751. // EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
  752. // mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  753. // mwaf.isPreScale = "1";
  754. // mwaf.weightType = "0";
  755. // rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
  756. // rt.resultInfo += ",期限皮结净";
  757. // PbCache.ResultMessage = "计量成功,期限皮结净";
  758. // PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  759. //}
  760. }
  761. }
  762. }
  763. }
  764. }
  765. #endregion
  766. #region 车号-物料-称点
  767. if (AppConfigCache.TareControlType == "2")
  768. {
  769. // 判断收发货单位是否具有期限皮重权限
  770. // 判断称点是否具有期限皮重权限
  771. MeterBaseSpotInfo meterBaseSpotInfo = new MeterBaseSpotInfo();
  772. meterBaseSpotInfo.baseSpotNo = PbCache.sportInfo.baseSpotNo;
  773. meterBaseSpotInfo.allowedTareWeight = "1";
  774. RESTfulResult<List<MeterBaseSpotInfo>> tareSpotResult = meterBaseSpotInfoService.doQueryWf(meterBaseSpotInfo);
  775. if (tareSpotResult.Succeed)
  776. {
  777. if (tareSpotResult.Data == null || tareSpotResult.Data.Count == 0)
  778. {
  779. // 正常结净
  780. //给一次数据匹配委托
  781. EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  782. mwaf = entityBase3.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  783. mwaf.isPreScale = "1";
  784. mwaf.weightType = "0";
  785. rt = saveMethod.doNet(rmScale.Data[0], firstList[0], mwaf);
  786. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
  787. }
  788. else
  789. {
  790. MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
  791. RESTfulResult<MeterBaseTermTareData> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
  792. if (termTareData.Succeed)
  793. {
  794. if (termTareData.Data == null)
  795. {
  796. // 正常结净
  797. //给一次数据匹配委托
  798. EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  799. mwaf = entityBase3.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  800. mwaf.isPreScale = "1";
  801. mwaf.weightType = "0";
  802. rt = saveMethod.doTermTareNet(rmScale.Data[0], mwaf, firstList[0]);
  803. rt.resultInfo += ",留存期限皮成功";
  804. PbCache.ResultMessage = "计量成功,留存期限皮成功";
  805. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,留存期限皮成功", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  806. }
  807. else
  808. {
  809. // 存在使用期限皮重权限,并使用期限皮重洁净
  810. List<string> l = new List<string>();
  811. l.Add("create");
  812. //给一次数据匹配委托
  813. EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
  814. mwaf = entityBase1.format<MeterWorkCarActualFirst>(rmScale.Data[0], mwaf);
  815. mwaf.isPreScale = "1";
  816. mwaf.weightType = "0";
  817. PbCache.ResultMessage = "计量成功,期限皮结净";
  818. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  819. rt = saveMethod.doNetTermTare(rmScale.Data[0], mwaf);
  820. rt.resultInfo += ",期限皮结净";
  821. PbCache.ResultMessage = "计量成功,期限皮结净";
  822. }
  823. }
  824. }
  825. }
  826. }
  827. #endregion
  828. }
  829. }
  830. // 重量类型为毛重,在皮重误差内
  831. else if (list[0].weightTypeNo == "001033001" && PbCache.monitorResult.valid_wgt == true && listMonitor.Data[0].validWgt == "1")
  832. {
  833. if (PbCache.ResultMessage == "")
  834. {
  835. PbCache.ResultMessage = "重量类型为毛重,在皮重误差内";
  836. }
  837. rt = saveMethod.doError(PbCache.ResultMessage);
  838. }
  839. }
  840. else
  841. {
  842. rt = saveMethod.doError("第一次计量重量【" + rmFirst.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + diffrentWgt / 1000 + " T】");
  843. rt.isWarn = true;
  844. rt.WarnContent = "validWgt";
  845. }
  846. }
  847. // 存在多条有效的一次计量数据
  848. else if (firstList == null || firstList.Count > 1)
  849. {
  850. /* a. 程序报警a
  851. * b. 自动进行语音求助
  852. */
  853. //多条一次记录下判断是否全为毛重,是全部结净
  854. if (firstList[firstList.Count - 1].weightType == "0" && list[0].weightTypeNo == "001033002")
  855. {
  856. mwaf.weightType = "1";
  857. rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  858. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  859. }
  860. else if (firstList[firstList.Count - 1].weightType == "0" && list[0].weightTypeNo == "001033001")
  861. {
  862. mwaf.weightType = "0";
  863. rt = saveMethod.doAddFirst(rmScale.Data[0], mwaf);
  864. rt.resultInfo = "之前存在一个未结净的毛重";
  865. PbCache.ResultMessage = "之前存在一个未结净的毛重";
  866. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,之前存在一个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  867. PbCache.monitorResultMessage = "之前存在一个未结净的毛重";
  868. rt.isWarn = true;
  869. rt.WarnContent = "validWgt";
  870. }
  871. else
  872. {
  873. rt = saveMethod.doError("存在多条有效的一次计量数据,请联系计量大厅");
  874. }
  875. }
  876. }
  877. }
  878. }
  879. else
  880. {
  881. if (rmScale.Succeed && rmScale.Data.Count == 0)
  882. {
  883. // 查询一次计量数据表
  884. RESTfulResult<List<MeterWorkCarActualFirst>> rmFirst = mwcfs.doQueryByFlag(new MeterWorkCarActualFirst { carNo = PbCache.lockCarNo });
  885. if (rmFirst.Succeed)
  886. {
  887. List<MeterWorkCarActualFirst> firstList = rmFirst.Data;
  888. // 重量类型为皮重
  889. if (list[0].weightTypeNo == "001033002")
  890. {
  891. // 历史皮重验证
  892. rt = saveMethod.validHisTare(list[0].weightTypeNo);
  893. if (firstList == null || firstList.Count == 0)
  894. {
  895. //在皮重误差内
  896. if (PbCache.monitorResult.valid_wgt == true || listMonitor.Data[0].validPredictionDiff == "0")
  897. {
  898. //正常保存一次数据
  899. mwaf.weightType = "1";
  900. rt = saveMethod.doAddFirst(null, mwaf);
  901. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  902. }
  903. else
  904. {
  905. if (PbCache.ResultMessage == "")
  906. {
  907. PbCache.ResultMessage = "重量类型为皮重且不在皮重误差内";
  908. }
  909. rt = saveMethod.doError(PbCache.ResultMessage);
  910. rt.isWarn = true;
  911. rt.WarnContent = "validWgt";
  912. }
  913. }
  914. else if (firstList.Count == 1 && firstList[0].weightType != "0")
  915. {
  916. // 在皮重误差内
  917. if (PbCache.monitorResult.valid_wgt == true || listMonitor.Data[0].validPredictionDiff == "0")
  918. {
  919. //保存一条作废的皮重数据
  920. mwaf.weightType = "1";
  921. mwaf.valueFlag = "0";
  922. rt = saveMethod.doAddFirst(null, mwaf);
  923. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  924. }
  925. else
  926. {
  927. if (PbCache.ResultMessage == "")
  928. {
  929. PbCache.ResultMessage = "重量类型为皮重且不在皮重误差内";
  930. }
  931. rt = saveMethod.doError(PbCache.ResultMessage);
  932. rt.isWarn = true;
  933. rt.WarnContent = "validWgt";
  934. }
  935. }
  936. else if (firstList.Count == 1 && firstList[0].weightType == "0")
  937. {
  938. RESTfulResult<List<PreTrackScale>> scales = preTrackScaleService.doQueryWf(new PreTrackScale { predictionNo = firstList[0].predictionNo });
  939. if (PbCache.monitorResult.valid_wgt == true || listMonitor.Data[0].validPredictionDiff == "0")
  940. {
  941. #region 期限皮注释
  942. // 判断车辆是否具有期限皮重权限
  943. //MeterBaseTermTareCarService meterBaseTermTareCarService = new MeterBaseTermTareCarService();
  944. //RESTfulResult<List<MeterBaseTermTareCar>> tareCarResult = meterBaseTermTareCarService.doQueryWf(new MeterBaseTermTareCar { carNo = PbCache.lockCarNo, valueFlag = "0" });
  945. //if (tareCarResult.Succeed)
  946. //{
  947. // // 没有期限皮重权限
  948. // if (tareCarResult.Data == null || tareCarResult.Data.Count == 0)
  949. // {
  950. // //匹配结净
  951. // EntityBase<PreTrackScale> entityBase2 = new EntityBase<PreTrackScale>();
  952. // mwaf = entityBase2.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  953. // mwaf.isPreScale = "1";
  954. // mwaf.weightType = "1";
  955. // rt = saveMethod.doNet(scales.Data[0], firstList[0], mwaf);
  956. // PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
  957. // }
  958. // // 有期限皮重权限
  959. // else if (tareCarResult.Data.Count >= 1)
  960. // {
  961. // //查下当前拖的物料是否可用期限皮;验证业务类型是否允许使用期限皮重
  962. // string sqls = @"select t.matter_no id, t.matter_name text
  963. // from meter_base_matter_info t
  964. // where t.allowed_tare_weight = '1'
  965. // and t.valid_flag = '1'
  966. // and t.matter_no='" + scales.Data[0].matterNo + "'";
  967. // PbModelDbService<List<PbModelDb>> pbp = new PbModelDbService<List<PbModelDb>>();
  968. // RESTfulResult<List<PbModelDb>> rmT = pbp.executeSqlDataWf(sqls);
  969. // if (rmT.Succeed)
  970. // {
  971. // // 存在使用期限皮重权限,并使用期限皮重洁净
  972. // if (rmT.Data != null && rmT.Data.Count > 0)
  973. // {
  974. // }
  975. // else
  976. // {
  977. // //匹配结净
  978. // EntityBase<PreTrackScale> entityBase2 = new EntityBase<PreTrackScale>();
  979. // mwaf = entityBase2.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  980. // mwaf.isPreScale = "1";
  981. // mwaf.weightType = "1";
  982. // rt = saveMethod.doNet(scales.Data[0], firstList[0], mwaf);
  983. // PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
  984. // }
  985. // }
  986. // }
  987. //}
  988. #endregion
  989. //判断是使用车号-物料-称点,还是使用车号-物料-路线判断期限皮
  990. #region 车号-物料-路线
  991. if (AppConfigCache.TareControlType == "1")
  992. {
  993. // 判断收发货单位是否具有期限皮重权限
  994. MeterBaseUnitInfoService meterBaseUnitInfoService = new MeterBaseUnitInfoService();
  995. MeterBaseUnitInfo meterBaseUnitInfo = new MeterBaseUnitInfo();
  996. meterBaseUnitInfo.forwardingUnitName = scales.Data[0].forwardingUnitName;
  997. meterBaseUnitInfo.forwardingUnitNo = scales.Data[0].forwardingUnitNo;
  998. meterBaseUnitInfo.receivingUnitName = scales.Data[0].receivingUintName;
  999. meterBaseUnitInfo.receivingUnitNo = scales.Data[0].receivingUintNo;
  1000. meterBaseUnitInfo.matterName = scales.Data[0].matterName;
  1001. meterBaseUnitInfo.matterNo = scales.Data[0].matterNo;
  1002. meterBaseUnitInfo.caoNo = PbCache.lockCarNo;
  1003. meterBaseUnitInfo.allowedTareWeight = "1";
  1004. RESTfulResult<List<MeterBaseUnitInfo>> tareUnitResult = meterBaseUnitInfoService.doQueryWf(meterBaseUnitInfo);
  1005. if (tareUnitResult.Succeed)
  1006. {
  1007. if (tareUnitResult.Data == null || tareUnitResult.Data.Count == 0)
  1008. {
  1009. //匹配结净
  1010. EntityBase<PreTrackScale> entityBase2 = new EntityBase<PreTrackScale>();
  1011. mwaf = entityBase2.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  1012. mwaf.isPreScale = "1";
  1013. mwaf.weightType = "0";
  1014. rt = saveMethod.doNet(scales.Data[0], firstList[0], mwaf);
  1015. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
  1016. }
  1017. else
  1018. {
  1019. if (tareUnitResult.Data[0].caoNo != "" && tareUnitResult.Data[0].caoNo != PbCache.lockCarNo)
  1020. {
  1021. //匹配结净
  1022. EntityBase<PreTrackScale> entityBase2 = new EntityBase<PreTrackScale>();
  1023. mwaf = entityBase2.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  1024. mwaf.isPreScale = "1";
  1025. mwaf.weightType = "0";
  1026. rt = saveMethod.doNet(scales.Data[0], firstList[0], mwaf);
  1027. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
  1028. }
  1029. else
  1030. {
  1031. MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
  1032. RESTfulResult<MeterBaseTermTareData> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
  1033. if (termTareData.Succeed)
  1034. {
  1035. // 正常结净
  1036. //给一次数据匹配委托
  1037. EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  1038. mwaf = entityBase3.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  1039. mwaf.isPreScale = "1";
  1040. mwaf.weightType = "1";
  1041. rt = saveMethod.doTermTareNet(scales.Data[0], mwaf, firstList[0]);
  1042. rt.resultInfo += ",留存期限皮成功";
  1043. PbCache.ResultMessage = "计量成功,期限皮不存在或者已过期,请留存期限皮";
  1044. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  1045. //if (termTareData.Data == null)
  1046. //{
  1047. // // 正常结净
  1048. // //给一次数据匹配委托
  1049. // EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  1050. // mwaf = entityBase3.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  1051. // mwaf.isPreScale = "1";
  1052. // mwaf.weightType = "1";
  1053. // rt = saveMethod.doTermTareNet(scales.Data[0], mwaf, firstList[0]);
  1054. // rt.resultInfo += ",留存期限皮成功";
  1055. // PbCache.ResultMessage = "计量成功,期限皮不存在或者已过期,请留存期限皮";
  1056. // PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  1057. //}
  1058. //else
  1059. //{
  1060. // // 存在使用期限皮重权限,并使用期限皮重洁净
  1061. // List<string> l = new List<string>();
  1062. // l.Add("create");
  1063. // //给一次数据匹配委托
  1064. // EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
  1065. // mwaf = entityBase1.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  1066. // mwaf.isPreScale = "1";
  1067. // mwaf.weightType = "0";
  1068. // PbCache.ResultMessage = "计量成功,期限皮结净";
  1069. // PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  1070. // rt = saveMethod.doNetTermTare(scales.Data[0], mwaf);
  1071. // rt.resultInfo += ",期限皮结净";
  1072. //}
  1073. }
  1074. }
  1075. }
  1076. }
  1077. }
  1078. #endregion
  1079. #region 车号-物料-称点
  1080. if (AppConfigCache.TareControlType == "2")
  1081. {
  1082. // 判断收发货单位是否具有期限皮重权限
  1083. // 判断称点是否具有期限皮重权限
  1084. MeterBaseSpotInfo meterBaseSpotInfo = new MeterBaseSpotInfo();
  1085. meterBaseSpotInfo.baseSpotNo = PbCache.sportInfo.baseSpotNo;
  1086. meterBaseSpotInfo.allowedTareWeight = "1";
  1087. RESTfulResult<List<MeterBaseSpotInfo>> tareSpotResult = meterBaseSpotInfoService.doQueryWf(meterBaseSpotInfo);
  1088. if (tareSpotResult.Succeed)
  1089. {
  1090. if (tareSpotResult.Data == null || tareSpotResult.Data.Count == 0)
  1091. {
  1092. // 正常结净
  1093. //给一次数据匹配委托
  1094. EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  1095. mwaf = entityBase3.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  1096. mwaf.isPreScale = "1";
  1097. mwaf.weightType = "1";
  1098. rt = saveMethod.doNet(scales.Data[0], firstList[0], mwaf);
  1099. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,净重{2}吨,计量完成", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2), Math.Round((Math.Abs(rmFirst.Data[0].meterWeight.Value - PbCache.lockWgt) / 1000), 2));
  1100. }
  1101. else
  1102. {
  1103. MeterBaseTermTareDataService meterBaseTermTareDataService = new MeterBaseTermTareDataService();
  1104. RESTfulResult<MeterBaseTermTareData> termTareData = meterBaseTermTareDataService.doQueryPageWf(new MeterBaseTermTareData { carNo = PbCache.lockCarNo, valueFlag = "0" });
  1105. if (termTareData.Succeed)
  1106. {
  1107. if (termTareData.Data == null)
  1108. {
  1109. // 正常结净
  1110. //给一次数据匹配委托
  1111. EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  1112. mwaf = entityBase3.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  1113. mwaf.isPreScale = "1";
  1114. mwaf.weightType = "1";
  1115. rt = saveMethod.doTermTareNet(scales.Data[0], mwaf, firstList[0]);
  1116. rt.resultInfo += ",留存期限皮成功";
  1117. PbCache.ResultMessage = "计量成功,留存期限皮成功";
  1118. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,留存期限皮成功", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  1119. }
  1120. else
  1121. {
  1122. // 存在使用期限皮重权限,并使用期限皮重洁净
  1123. List<string> l = new List<string>();
  1124. l.Add("create");
  1125. //给一次数据匹配委托
  1126. EntityBase<PreTrackScale> entityBase1 = new EntityBase<PreTrackScale>();
  1127. mwaf = entityBase1.format<MeterWorkCarActualFirst>(scales.Data[0], mwaf);
  1128. mwaf.isPreScale = "1";
  1129. mwaf.weightType = "1";
  1130. PbCache.ResultMessage = "计量成功,期限皮结净";
  1131. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,计量完成,期限皮结净", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  1132. rt = saveMethod.doNetTermTare(scales.Data[0], mwaf);
  1133. rt.resultInfo += ",期限皮结净";
  1134. }
  1135. }
  1136. }
  1137. }
  1138. }
  1139. #endregion
  1140. }
  1141. else
  1142. {
  1143. if (PbCache.ResultMessage == "")
  1144. {
  1145. PbCache.ResultMessage = "重量类型为皮重且不在皮重误差内";
  1146. }
  1147. rt = saveMethod.doError(PbCache.ResultMessage);
  1148. rt.isWarn = true;
  1149. rt.WarnContent = "validWgt";
  1150. }
  1151. }
  1152. // 存在多条有效的一次计量数据
  1153. else if (firstList.Count > 1)
  1154. {
  1155. mwaf.weightType = "1";
  1156. rt = saveMethod.doAddFirst(null, mwaf);
  1157. PbCache.LEDResultMessage = string.Format("车号{0},重量{1}吨,之前存在多个未结净的毛重,请联系", PbCache.lockCarNo, Math.Round((PbCache.lockWgt / 1000), 2));
  1158. rt.resultInfo = "之前存在多个未结净的毛重";
  1159. PbCache.ResultMessage = "之前存在多个未结净的毛重";
  1160. PbCache.monitorResultMessage = "之前存在多个未结净的毛重";
  1161. }
  1162. }
  1163. else
  1164. {
  1165. rt = saveMethod.doError("委托匹配异常,无法计量,请联系处理");
  1166. rt.isWarn = true;
  1167. rt.WarnContent = "validIsPre";
  1168. }
  1169. }
  1170. }
  1171. else
  1172. {
  1173. rt = saveMethod.doError("存在多条已选择的委托,请联系计量大厅");
  1174. rt.isWarn = true;
  1175. rt.WarnContent = "validIsPre";
  1176. }
  1177. }
  1178. }
  1179. else
  1180. {
  1181. rt = saveMethod.doError("存在多条上称申请数据,请联系计量大厅");
  1182. }
  1183. }
  1184. return rt;
  1185. }
  1186. }
  1187. }