OneGrossOneTare.cs 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using MeterConditionLibrary;
  4. using System;
  5. using System.Collections.Generic;
  6. namespace MeterSceneLibrary
  7. {
  8. /// <summary>
  9. /// 一毛一皮
  10. /// 业务都是用的内部倒运的车子,存在历史皮
  11. /// </summary>
  12. public class OneGrossOneTare
  13. {
  14. private MeterBaseTermTareDataService termTareDate = new MeterBaseTermTareDataService();//期限皮操作
  15. public rtInfo MeterMethod(PreTrackScale scale, CoreAppUser appUser, RESTfulResult<List<MeterWorkPreLink>> rmDb)
  16. {
  17. rtInfo rt = new rtInfo();
  18. rt.isError = false;
  19. //0:批次预报;1:单次预报;2:联运预报;3:分检预报
  20. if (scale.predictionType == "2")
  21. {
  22. rt.result = false;
  23. rt.isError = false;
  24. return rt;
  25. }
  26. RESTfulResult<List<MeterWorkPreLink>> rm = rmDb;
  27. //如果配置了则走下面的流程
  28. //如果存在一次计量未结净数据,则认为是结净计量,否则认为一次计量
  29. MeterWorkCarActualFirstService mwcfs = new MeterWorkCarActualFirstService();
  30. RESTfulResult<List<MeterWorkCarActualFirst>> rmX = mwcfs.doQueryWf(new MeterWorkCarActualFirst { valueFlag = "1", predictionNo = scale.predictionNo, carNo = scale.carNo });
  31. if (!rmX.Succeed)
  32. {
  33. rt.result = false;
  34. rt.resultInfo = "没有计量信息点语音求助";
  35. PbCache.ResultMessage = "获取一次计量数据异常!";
  36. rt.isError = true;
  37. }
  38. //验证是否存在历史皮
  39. validWgt vw = new validWgt();
  40. if (rm.Data[0].linkCode == "001021003") //计量环节为 一次计量 计量场景为先一毛一皮
  41. {
  42. if (rmX.Data != null && rmX.Data.Count > 0)
  43. {
  44. PbCache.ResultMessage = "计量环节为一次计量,但存在一次计量数据!";
  45. rt.resultInfo = "已经存在一次计量信息";
  46. rt.result = false;
  47. rt.isError = true;
  48. }
  49. else
  50. {
  51. MeterWorkCarActualFirst mwaf = new MeterWorkCarActualFirst();
  52. vw.ValidNotInnerMethod(scale);
  53. mwaf.weightType = "0"; //默认为毛 //0=毛重;1=常规皮重;2=期限皮重;3=历史皮重;4=标识皮重;5=自重皮重
  54. //存在历史皮
  55. if (PbCache.monitorResult.haveHisTare)
  56. {
  57. if (!PbCache.monitorResult.valid_wgt) //皮重验证不通过
  58. {
  59. rt.result = false;
  60. rt.isError = true;
  61. rt.resultInfo = "当前皮重不在皮重配置范围";
  62. if (PbCache.ResultMessage != null && !PbCache.ResultMessage.Contains("皮重"))
  63. {
  64. PbCache.ResultMessage = "当前皮重不在皮重配置范围";
  65. }
  66. return rt;
  67. }
  68. else //否则认为是毛
  69. {
  70. mwaf.weightType = "1";
  71. }
  72. }
  73. if (mwaf.weightType == "0")
  74. {
  75. //验证预报超差信息
  76. validPredictionDiff vpd = new validPredictionDiff();
  77. vpd.ValidMethod(scale, "1", new MeterWorkCarActualFirst { meterWeight = PbCache.lockWgt }); //验证毛重
  78. if (!PbCache.monitorResult.valid_prediction_diff)
  79. {
  80. rt.result = false;
  81. rt.isError = true;
  82. rt.resultInfo = PbCache.ResultMessage;
  83. return rt;
  84. }
  85. //验证联达码头;江西联达联达料场,预报超差
  86. validLianDaWgtDiff lianDaWgtDiff = new validLianDaWgtDiff();
  87. lianDaWgtDiff.ValidMethod(scale, "1", new MeterWorkCarActualFirst { meterWeight = PbCache.lockWgt }); //验证毛重
  88. if (!PbCache.monitorResult.valid_prediction_diff)
  89. {
  90. rt.result = false;
  91. rt.isError = true;
  92. rt.resultInfo = PbCache.ResultMessage;
  93. return rt;
  94. }
  95. }
  96. //验证两次计量时间间隔
  97. validTimeInterval vti = new validTimeInterval();
  98. if (mwaf.weightType == "0")
  99. {
  100. vti.ValidMethod(scale, "1", null);
  101. }
  102. else
  103. {
  104. vti.ValidMethod(scale, "2", null);
  105. }
  106. if (!PbCache.monitorResult.valid_time_interval)
  107. {
  108. rt.result = false;
  109. rt.isError = true;
  110. rt.resultInfo = PbCache.ResultMessage;
  111. return rt;
  112. }
  113. //验证物料时间段
  114. validMatTime vmt = new validMatTime();
  115. vmt.ValidMethod(scale, "1");
  116. if (!PbCache.monitorResult.valid_mat_time)
  117. {
  118. rt.result = false;
  119. rt.isError = true;
  120. rt.resultInfo = PbCache.ResultMessage;
  121. return rt;
  122. }
  123. //验证危化品验证
  124. validExceedWgt vew = new validExceedWgt();
  125. vew.validMatMethod(scale, "1", null);
  126. if (!PbCache.monitorResult.valid_exceed_wgt)
  127. {
  128. rt.result = false;
  129. rt.isError = true;
  130. rt.resultInfo = PbCache.ResultMessage;
  131. return rt;
  132. }
  133. //验证通过,保存重量信息***********************
  134. //相同名称的均赋值一次
  135. EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
  136. mwaf = entityBase.format<MeterWorkCarActualFirst>(scale, mwaf);
  137. mwaf.actualFirstNo = DateTime.Now.ToString("yyyyMMdd");//10
  138. mwaf.meterWeight = PbCache.lockWgt;//计量重量
  139. mwaf.addWeight = PbCache.addWgt;//附加重量
  140. mwaf.createManNo = appUser.userid;
  141. mwaf.createManName = appUser.username;
  142. mwaf.meterGroup = appUser.userGroup;
  143. mwaf.meterClass = appUser.userClass;
  144. mwaf.createTime = DateTime.Now;
  145. mwaf.baseSpotNo = PbCache.sportInfo.baseSpotNo;//计量点编号
  146. mwaf.baseSpotName = PbCache.sportInfo.baseSpotName;
  147. //mwaf.memo = "";
  148. mwaf.valueFlag = "1"; //0有效
  149. mwaf.updateManName = "";
  150. mwaf.updateManNo = "";
  151. mwaf.updateTime = null;
  152. mwaf.checkFlag = "0"; //0未审核
  153. mwaf.meterMode = string.IsNullOrEmpty(appUser.userid) ? "2" : "1"; //1远程计量,2智能计量
  154. mwaf.addWeight = PbCache.addWgt;
  155. MeterWorkPreLink mwpl = new MeterWorkPreLink();
  156. mwpl.preLinkNo = rm.Data[0].preLinkNo;
  157. mwpl.preProcessNo = rm.Data[0].preProcessNo;
  158. //操作日志
  159. MeterMonitorNote monitorNote = new MeterMonitorNote();
  160. monitorNote.baseSpotNo = mwaf.baseSpotNo;
  161. monitorNote.baseSpotName = mwaf.baseSpotName;
  162. monitorNote.operationContent = string.Format("称重保存");
  163. monitorNote.operationTime = mwaf.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  164. monitorNote.carNo = mwaf.carNo;
  165. monitorNote.meterNoteSource = string.IsNullOrEmpty(appUser.userid) ? "0" : "4";
  166. monitorNote.meterManNo = appUser.userid;
  167. monitorNote.meterManName = appUser.username;
  168. #region 如果是过毛重,且当前物料属于可用期限皮,且当前车存在期限皮
  169. if (mwaf.weightType == "0")
  170. {
  171. #region 若此时有期限皮,且当前物料是可用期限皮的数据,则走着看的代码,否则走下面的doAddWf方法
  172. // and t2.meter_nature_name like '%外%' //此为车辆计量属性; 例如:若不是中控,则不允许使用期限皮重(九江取消了)
  173. bool bTerm = false;
  174. string sql = @"select t1.meter_weight meterWeight,
  175. t1.data_no dataNo,
  176. t1.create_time createTime,
  177. t1.base_spot_no baseSpotNo,
  178. t1.base_spot_name baseSpotName
  179. from Meter_Base_Term_Tare_Data t1, Meter_Base_Term_Tare_Car t2
  180. where t1.car_no = t2.car_no
  181. and t2.value_flag = '0'
  182. and t1.value_flag = '0'
  183. and t1.car_no = '" + scale.carNo + @"'
  184. and t1.end_time>sysdate";
  185. PbModelDbService<List<MeterBaseTermTareData>> pb = new PbModelDbService<List<MeterBaseTermTareData>>();
  186. RESTfulResult<List<MeterBaseTermTareData>> rmType = pb.executeSqlDataWf(sql);
  187. if (rmType.Succeed)
  188. {
  189. //and t.meter_nature_name like '%外%' //此为物料计量属性,例如:若不是外购物料,则不允许使用期限皮重;(九江取消了)
  190. if (rmType.Data != null && rmType.Data.Count > 0)
  191. {
  192. //查下当前拖的物料是否可用期限皮;验证业务类型是否允许使用期限皮重
  193. string sqls = @"select t.matter_no id, t.matter_name text
  194. from meter_base_matter_info t,meter_base_metertype_conf t2
  195. where t.allowed_tare_weight = '1'
  196. and t.valid_flag = '1'
  197. and t.matter_no='" + scale.matterNo + @"'
  198. and t2.is_allow_term_tare = '1' and t2.meter_type_no = '" + scale.meterTypeNo + @"'";
  199. PbModelDbService<List<PbModelDb>> pbp = new PbModelDbService<List<PbModelDb>>();
  200. RESTfulResult<List<PbModelDb>> rmT = pbp.executeSqlDataWf(sqls);
  201. if (rmT.Succeed)
  202. {
  203. if (rmT.Data != null && rmT.Data.Count > 0)
  204. {
  205. bTerm = true;
  206. }
  207. }
  208. else
  209. {
  210. rt.result = false;
  211. rt.isError = true;
  212. rt.resultInfo = "称重数据保存失败";
  213. PbCache.ResultMessage = "计量失败,获取期限皮可用物料异常:" + rmType.ResultMessage;
  214. }
  215. }
  216. }
  217. else
  218. {
  219. rt.result = false;
  220. rt.isError = true;
  221. rt.resultInfo = "称重数据保存失败";
  222. PbCache.ResultMessage = "计量失败,获取期限皮数据异常:" + rmType.ResultMessage;
  223. }
  224. if (bTerm)
  225. {
  226. //结净数据
  227. MeterWorkCarActual netDb = new MeterWorkCarActual();
  228. EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
  229. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  230. netDb.grossTime = DateTime.Now;
  231. netDb.grossWeight = PbCache.lockWgt;
  232. netDb.baseSpot1No = PbCache.sportInfo.baseSpotNo;
  233. netDb.baseSpot1Name = PbCache.sportInfo.baseSpotName;
  234. netDb.grossMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  235. netDb.actualFirst2No = rmType.Data[0].dataNo;
  236. netDb.tareTime = rmType.Data[0].createTime;
  237. netDb.tareWeight = rmType.Data[0].meterWeight;
  238. netDb.baseSpot2No = rmType.Data[0].baseSpotNo;
  239. netDb.baseSpot2Name = rmType.Data[0].baseSpotName;
  240. netDb.netTime = DateTime.Now;
  241. netDb.addWeight = PbCache.addWgt;
  242. //净重=毛-皮-附加重量
  243. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  244. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  245. netDb.valueFlag = "0"; //0=有效,1=作废
  246. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  247. RESTfulResult<string> rmIs = mwcfs.doAddNetByTermWf(mwaf, netDb, monitorNote);
  248. if (rmIs.Succeed)
  249. {
  250. rt.result = true;
  251. rt.resultInfo = "称重完成";
  252. PbCache.ResultMessage = "称重完成";
  253. PbCache.actualFirstNo = rmIs.Data;
  254. PbCache.strQRCode = rmIs.Message;
  255. PbCache.isTareWeight = false;//毛重
  256. RESTfulResult<string> RESTfulResult = termTareDate.abolishForCSharp(new MeterBaseTermTareData { carNo = mwaf.carNo });
  257. if (RESTfulResult.Succeed)
  258. {
  259. if (!string.IsNullOrEmpty(RESTfulResult.Message))
  260. {
  261. PbCache.ResultMessage = PbCache.ResultMessage + ";请注意期限皮重已作废";
  262. }
  263. }
  264. else
  265. {
  266. PbCache.ResultMessage = PbCache.ResultMessage + ";作废期限皮重异常,请点击【语音求助】联系计量员";
  267. }
  268. }
  269. else
  270. {
  271. rt.result = false;
  272. rt.isError = true;
  273. rt.resultInfo = "称重数据保存失败";
  274. PbCache.ResultMessage = "计量失败:" + rmIs.ResultMessage;
  275. }
  276. return rt;
  277. }
  278. #endregion 若此时有期限皮,且当前物料是可用期限皮的数据,则走着看的代码,否则走下面的doAddWf方法
  279. }
  280. #endregion 如果是过毛重,且当前物料属于可用期限皮,且当前车存在期限皮
  281. RESTfulResult<string> rmI = mwcfs.doAddWf(mwaf, mwpl, monitorNote, "", "0");
  282. if (rmI.Succeed)
  283. {
  284. rt.result = true;
  285. rt.resultInfo = "称重完成";
  286. PbCache.ResultMessage = "称重完成";
  287. PbCache.actualFirstNo = rmI.Data;
  288. PbCache.strQRCode = rmI.Message;
  289. PbCache.isTareWeight = false;//毛重
  290. }
  291. else
  292. {
  293. rt.result = false;
  294. rt.isError = true;
  295. rt.resultInfo = "称重数据保存失败";
  296. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  297. }
  298. }
  299. }
  300. else if (rm.Data[0].linkCode == "001021005") //结净
  301. {
  302. if (string.IsNullOrEmpty(scale.forwardingUnitName) || string.IsNullOrEmpty(scale.receivingUintName))
  303. {
  304. PbCache.ResultMessage = "结净时,预报中的发货单位以及收货单位均不允许为空,请点击[语音求助]!";
  305. rt.result = false;
  306. rt.isError = false;
  307. return rt;
  308. }
  309. if (rmX.Data == null || rmX.Data.Count == 0)
  310. {
  311. //rt.resultInfo = "未找到一次计量数据!";
  312. rt.result = false;
  313. rt.isError = false;
  314. }
  315. else if (rmX.Data.Count == 1)
  316. {
  317. MeterWorkCarActualFirst first = rmX.Data[0];
  318. {
  319. //*
  320. if (!PbCache.isNotValid)
  321. {
  322. if (Math.Abs(rmX.Data[0].meterWeight.Value - PbCache.lockWgt) < AppConfigCache.differenceWgt)
  323. {
  324. //重复计量
  325. rt.result = false;
  326. rt.isError = true;
  327. rt.resultInfo = "第一次计量重量和第二次计量重量接近";
  328. //PbCache.ResultMessage = "第一次计量重量和第二次计量重量接近";
  329. PbCache.ResultMessage = "第一次计量重量【" + rmX.Data[0].meterWeight.Value / 1000 + "T】和第二次计量重量【" + PbCache.lockWgt / 1000 + "T】接近,小于结净最小值【" + AppConfigCache.differenceWgt / 1000 + " T】,请点击[语音求助],由司秤工过磅!";
  330. return rt;
  331. }
  332. }
  333. //*/
  334. vw.ValidNotInnerMethod(scale);
  335. //存在历史皮
  336. if (PbCache.monitorResult.haveHisTare)
  337. {
  338. if (!PbCache.monitorResult.valid_wgt) //皮重验证不通过,当前可能是毛也可能不在范围
  339. {
  340. if (first.weightType == "0") //一次为毛
  341. {
  342. rt.result = false;
  343. rt.isError = true;
  344. rt.resultInfo = "存在一次毛重信息,毛毛不能结合";
  345. PbCache.ResultMessage = "存在一次毛重信息,毛毛不能结合";
  346. return rt;
  347. }
  348. }
  349. }
  350. //当前大于一次,且一次为皮
  351. if (PbCache.lockWgt > first.meterWeight && first.weightType == "0")
  352. {
  353. mwcfs.doUpdateWf(new MeterWorkCarActualFirst { actualFirstNo = rmX.Data[0].actualFirstNo, weightType = "1" });
  354. first.weightType = "1";
  355. }
  356. else if (PbCache.lockWgt < first.meterWeight && first.weightType != "0") //当前小于一次,且一次不为毛
  357. {
  358. mwcfs.doUpdateWf(new MeterWorkCarActualFirst { actualFirstNo = rmX.Data[0].actualFirstNo, weightType = "0" });
  359. first.weightType = "0";
  360. }
  361. //存在一次计量,则进行结净操作
  362. //验证两次计量时间间隔
  363. validTimeInterval vti = new validTimeInterval();
  364. vti.ValidMethod(scale, "3", first);
  365. if (!PbCache.monitorResult.valid_time_interval)
  366. {
  367. rt.result = false;
  368. rt.isError = true;
  369. rt.resultInfo = PbCache.ResultMessage;
  370. return rt;
  371. }
  372. //验证预报超差信息
  373. validPredictionDiff vpd = new validPredictionDiff();
  374. vpd.ValidMethod(scale, "3", first); //验证净重
  375. if (!PbCache.monitorResult.valid_prediction_diff)
  376. {
  377. rt.result = false;
  378. rt.isError = true;
  379. rt.resultInfo = PbCache.ResultMessage;
  380. return rt;
  381. }
  382. //验证物料时间段
  383. validMatTime vmt = new validMatTime();
  384. vmt.ValidMethod(scale, "1");
  385. if (!PbCache.monitorResult.valid_mat_time)
  386. {
  387. rt.result = false;
  388. rt.isError = true;
  389. rt.resultInfo = PbCache.ResultMessage;
  390. return rt;
  391. }
  392. //验证危化品验证
  393. validExceedWgt vew = new validExceedWgt();
  394. vew.validMatMethod(scale, "3", null);
  395. if (!PbCache.monitorResult.valid_exceed_wgt)
  396. {
  397. rt.result = false;
  398. rt.isError = true;
  399. rt.resultInfo = PbCache.ResultMessage;
  400. return rt;
  401. }
  402. //验证计量区域:若二次计量数据的计量区域与一次计量的计量区域不一致,则禁止自助计量;
  403. validMeterArea vMeterArea = new validMeterArea();
  404. vMeterArea.ValidMethod(first.baseSpotNo);
  405. if (!PbCache.monitorResult.valid_meter_area)
  406. {
  407. rt.result = false;
  408. rt.isError = true;
  409. rt.resultInfo = PbCache.ResultMessage;
  410. return rt;
  411. }
  412. //====所有验证均通过后,此时进行结净=====================
  413. //保存皮重信息 即:二次计量信息***********************
  414. MeterWorkCarActualFirst secondDb = new MeterWorkCarActualFirst();
  415. //相同名称的均赋值一次
  416. EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
  417. secondDb = entityBase.format<MeterWorkCarActualFirst>(scale, secondDb);
  418. secondDb.actualFirstNo = DateTime.Now.ToString("yyyyMMdd");//10
  419. secondDb.meterWeight = PbCache.lockWgt;//计量重量
  420. secondDb.addWeight = first.addWeight;//附加重量
  421. secondDb.weightType = "1"; //0=毛重;1=常规皮重;2=期限皮重;3=历史皮重;4=标识皮重;5=自重皮重
  422. secondDb.createManNo = appUser.userid;
  423. secondDb.createManName = appUser.username;
  424. secondDb.meterGroup = appUser.userGroup;
  425. secondDb.meterClass = appUser.userClass;
  426. secondDb.createTime = DateTime.Now;
  427. secondDb.baseSpotNo = PbCache.sportInfo.baseSpotNo;//计量点编号
  428. secondDb.baseSpotName = PbCache.sportInfo.baseSpotName;
  429. //secondDb.memo = "";
  430. secondDb.valueFlag = "1"; //0有效
  431. secondDb.updateManName = "";
  432. secondDb.updateManNo = "";
  433. secondDb.updateTime = null;
  434. secondDb.checkFlag = "0"; //0未审核
  435. secondDb.meterMode = string.IsNullOrEmpty(appUser.userid) ? "2" : "1"; //1远程计量,2智能计量
  436. //环节信息
  437. MeterWorkPreLink link = new MeterWorkPreLink();
  438. link.preLinkNo = rm.Data[0].preLinkNo;
  439. link.preProcessNo = rm.Data[0].preProcessNo;
  440. //结净数据
  441. MeterWorkCarActual netDb = new MeterWorkCarActual();
  442. EntityBase<PreTrackScale> entityActual = new EntityBase<PreTrackScale>();
  443. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  444. //当前小于一次则先毛后皮
  445. if (PbCache.lockWgt < first.meterWeight)
  446. {
  447. secondDb.addWeight = first.addWeight;
  448. netDb.actualFirst1No = first.actualFirstNo; //毛重计量作业编号
  449. netDb.grossTime = first.createTime;
  450. netDb.grossWeight = first.meterWeight;
  451. netDb.baseSpot1No = first.baseSpotNo;
  452. netDb.baseSpot1Name = first.baseSpotName;
  453. netDb.grossMode = first.meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  454. netDb.grossManNo = first.createManNo;
  455. netDb.grossManName = first.createManName;
  456. netDb.grossClass = first.meterClass;
  457. netDb.grossGroup = first.meterGroup;
  458. netDb.tareManNo = appUser.userid;
  459. netDb.tareManName = appUser.username;
  460. netDb.tareClass = appUser.userClass;
  461. netDb.tareGroup = appUser.userGroup;
  462. //netDb.actualFirst2No = ""; //皮重计量作业编号
  463. netDb.tareWeight = PbCache.lockWgt; //皮重
  464. netDb.tareTime = DateTime.Now;
  465. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo; //皮重计量点编号
  466. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName; //皮重计量点
  467. netDb.tareMode = string.IsNullOrEmpty(appUser.userid) ? "2" : "1"; //1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  468. netDb.addWeight = (first.addWeight == null ? 0 : first.addWeight.Value);
  469. //净重=毛-皮-附加重量
  470. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  471. PbCache.isTareWeight = true;//皮重
  472. }
  473. else //先皮后毛
  474. {
  475. secondDb.addWeight = PbCache.addWgt;
  476. secondDb.weightType = "0";
  477. netDb.actualFirst2No = first.actualFirstNo; //皮重计量作业编号
  478. netDb.tareTime = DateTime.Now;
  479. netDb.tareWeight = first.meterWeight;
  480. netDb.baseSpot2No = first.baseSpotNo;
  481. netDb.baseSpot2Name = first.baseSpotName;
  482. netDb.tareMode = first.meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  483. netDb.tareManNo = first.createManNo;
  484. netDb.tareManName = first.createManName;
  485. netDb.tareClass = first.meterClass;
  486. netDb.tareGroup = first.meterGroup;
  487. netDb.grossManNo = appUser.userid;
  488. netDb.grossManName = appUser.username;
  489. netDb.grossClass = appUser.userClass;
  490. netDb.grossGroup = appUser.userGroup;
  491. //netDb.actualFirst2No = ""; //毛重计量作业编号
  492. netDb.grossWeight = PbCache.lockWgt; //毛重
  493. netDb.grossTime = first.createTime;
  494. netDb.baseSpot1No = PbCache.sportInfo.baseSpotNo; //皮重计量点编号
  495. netDb.baseSpot1Name = PbCache.sportInfo.baseSpotName; //皮重计量点
  496. netDb.grossMode = string.IsNullOrEmpty(appUser.userid) ? "2" : "1"; //1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  497. netDb.addWeight = PbCache.addWgt;
  498. //净重=毛-皮-附加重量
  499. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  500. PbCache.isTareWeight = false;//毛重
  501. }
  502. netDb.netTime = DateTime.Now;
  503. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  504. netDb.valueFlag = "0"; //0=有效,1=作废
  505. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  506. //操作日志
  507. MeterMonitorNote monitorNote = new MeterMonitorNote();
  508. monitorNote.baseSpotNo = secondDb.baseSpotNo;
  509. monitorNote.baseSpotName = secondDb.baseSpotName;
  510. monitorNote.operationContent = string.Format("结净称重保存");
  511. monitorNote.operationTime = secondDb.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  512. monitorNote.carNo = secondDb.carNo;
  513. monitorNote.meterNoteSource = string.IsNullOrEmpty(appUser.userid) ? "0" : "4";
  514. monitorNote.meterManNo = appUser.userid;
  515. monitorNote.meterManName = appUser.username;
  516. RESTfulResult<string> rmI = mwcfs.doAddNetWf(secondDb, netDb, link, monitorNote, "", "1");
  517. if (rmI.Succeed)
  518. {
  519. rt.result = true;
  520. rt.resultInfo = "称重完成";
  521. PbCache.ResultMessage = "称重完成";
  522. PbCache.actualFirstNo = rmI.Data;
  523. PbCache.strQRCode = rmI.Message;
  524. RESTfulResult<string> RESTfulResult = termTareDate.abolishForCSharp(new MeterBaseTermTareData { carNo = netDb.carNo });
  525. if (RESTfulResult.Succeed)
  526. {
  527. if (!string.IsNullOrEmpty(RESTfulResult.Message))
  528. {
  529. PbCache.ResultMessage = PbCache.ResultMessage + ";请注意期限皮重已作废";
  530. }
  531. }
  532. else
  533. {
  534. PbCache.ResultMessage = PbCache.ResultMessage + ";作废期限皮重异常,请点击【语音求助】联系计量员";
  535. }
  536. }
  537. else
  538. {
  539. rt.result = false;
  540. rt.isError = true;
  541. rt.resultInfo = "称重数据保存失败";
  542. PbCache.ResultMessage = "计量失败:" + rmI.ResultMessage;
  543. }
  544. }
  545. }
  546. else
  547. {
  548. PbCache.ResultMessage = string.Format("当前预报[{0}]存在多条未结净数据", scale.predictionNo);
  549. rt.resultInfo = "找到多条未结净数据";
  550. rt.result = false;
  551. rt.isError = true;
  552. }
  553. }
  554. return rt;
  555. }
  556. }
  557. }