InnerCarJISCO.cs 100 KB

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