SaveMethod.cs 50 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. //using CarMeterSystem;
  8. namespace MeterSceneLibrary.JISCO
  9. {
  10. public class SaveMethod
  11. {
  12. // 一次计量数据
  13. private MeterWorkCarActualFirstService mwcfs = new MeterWorkCarActualFirstService();
  14. // 车辆委托表
  15. private PreTrackScaleService preTrackScaleService = new PreTrackScaleService();
  16. // 留期限皮操作
  17. private MeterBaseTermTareDataService termTareDate = new MeterBaseTermTareDataService();
  18. private rtInfo rt = new rtInfo();
  19. // 结净最小值,默认取配置文件
  20. private double diffrentWgt = AppConfigCache.differenceWgt;
  21. // 根据车号查询委托表中未使用和使用中的委托
  22. private List<PreTrackScale> listPreScale;
  23. #region 私有方法
  24. /// <summary>
  25. /// 保存一次计量数据
  26. /// </summary>
  27. public rtInfo doAddFirst(PreTrackScale scale,MeterWorkCarActualFirst model)
  28. {
  29. if(scale != null)
  30. {
  31. EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
  32. model = entityBase.format<MeterWorkCarActualFirst>(scale, model);
  33. }
  34. //操作日志
  35. MeterMonitorNote monitorNote = new MeterMonitorNote();
  36. monitorNote.baseSpotNo = model.baseSpotNo;
  37. monitorNote.baseSpotName = model.baseSpotName;
  38. monitorNote.operationContent = string.Format("产生一次计量数据");
  39. monitorNote.operationTime = model.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  40. monitorNote.carNo = model.carNo;
  41. monitorNote.meterNoteSource = "0";
  42. PbSomeModel<MeterWorkCarActualFirst, MeterMonitorNote, MeterMonitorNote, MeterMonitorNote> pbSomeModel = new PbSomeModel<MeterWorkCarActualFirst, MeterMonitorNote, MeterMonitorNote, MeterMonitorNote>();
  43. pbSomeModel.one = model;
  44. pbSomeModel.two = monitorNote;
  45. RESTfulResult<string> rmI = mwcfs.doAdd(pbSomeModel);
  46. if (PbCache.sportInfo.baseSpotNo == "")
  47. {
  48. PbCache.weightInfoBeta.DeviceNo = model.baseSpotNo;//计量站点
  49. PbCache.weightInfoBeta.ConveyanceNo = model.carNo;//车号
  50. PbCache.weightInfoBeta.WeightVoucherNo = model.predictionNo;//委托编号
  51. PbCache.weightInfoBeta.GrossWeight = model.meterWeight;
  52. PbCache.weightInfoBeta.MeteringPerson = "admin";
  53. PbCache.weightInfoBeta.MeteringTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  54. }
  55. if (rmI.Succeed)
  56. {
  57. rt.result = true;
  58. rt.resultInfo = "计量完成";
  59. PbCache.actualFirstNo = rmI.Data;
  60. PbCache.strQRCode = rmI.Message;
  61. if (model.weightType == "0")
  62. {
  63. PbCache.isTareWeight = false;//毛重
  64. }
  65. else
  66. {
  67. PbCache.isTareWeight = true;//皮重
  68. }
  69. }
  70. else
  71. {
  72. rt.result = false;
  73. rt.isError = true;
  74. rt.resultInfo = "称重数据保存失败";
  75. }
  76. return rt;
  77. }
  78. /// <summary>
  79. /// 产生一次计量数据和没有委托的洁净数据
  80. /// </summary>
  81. /// <param name="scale"></param>
  82. /// <param name="actualFirst"></param>
  83. public rtInfo doNet(PreTrackScale scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst2)
  84. {
  85. // 构造结净数据
  86. MeterWorkCarActual netDb = new MeterWorkCarActual();
  87. // 将第一个一次数据状态改为 已结净
  88. //actualFirst.valueFlag = "2";
  89. netDb.isPreScale = "0";
  90. // 复制对象
  91. if (scale != null)
  92. {
  93. EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
  94. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  95. netDb.isPreScale = "1";
  96. }
  97. if (actualFirst2.meterWeight.Value > actualFirst.meterWeight.Value)
  98. {
  99. actualFirst2.weightType = "0";//毛重
  100. }
  101. else
  102. {
  103. actualFirst2.weightType = "1";//皮重
  104. }
  105. netDb.carNo = actualFirst.carNo;
  106. netDb.tareTime = DateTime.Now;
  107. netDb.tareWeight = actualFirst.meterWeight.Value < PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁小谁是皮 BourneCao
  108. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  109. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  110. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  111. /* netDb.tare_man_no = "";
  112. netDb.tare_man_name = "";
  113. netDb.tare_class = "";
  114. netDb.tare_group = "";*/
  115. // 毛重计量作业编号
  116. // netDb.actualFirst1No = actualFirst.meterWeight.Value > PbCache.lockWgt ? actualFirst.actualFirstNo : actualFirst2.actualFirstNo;
  117. // 皮重计量作业编号
  118. // netDb.actualFirst2No = actualFirst.meterWeight.Value < PbCache.lockWgt ? actualFirst.actualFirstNo : actualFirst2.actualFirstNo;
  119. netDb.actualFirst1No = actualFirst2.meterWeight.Value > actualFirst.meterWeight.Value ? "" : actualFirst.actualFirstNo;
  120. netDb.actualFirst2No = actualFirst2.meterWeight.Value > actualFirst.meterWeight.Value ? actualFirst.actualFirstNo : "";
  121. netDb.grossTime = actualFirst.createTime;
  122. netDb.grossWeight = actualFirst.meterWeight.Value > PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁大谁是毛 BourneCao
  123. netDb.baseSpot1No = actualFirst.baseSpotNo;
  124. netDb.baseSpot1Name = actualFirst.baseSpotName;
  125. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  126. netDb.grossClass = actualFirst.meterClass;
  127. netDb.grossGroup = actualFirst.meterGroup;
  128. netDb.valueFlag = "1";
  129. netDb.netTime = DateTime.Now;
  130. //netDb.netManNo = appUser.userid; //净重计量员编码
  131. //netDb.netManName = appUser.username; //净重计量员名称
  132. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  133. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  134. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  135. //净重=毛-皮-附加重量
  136. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  137. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  138. netDb.uploadFlag = "1"; //0=待审核;1:待上传;2=已上传
  139. netDb.dataSource = "1";//1 = 智能终端,2 = 本地计量,3 = 应急计量,4 = 手动录入(计量票据录入)
  140. //要判断下当前是否勾选了不验证皮重
  141. if (actualFirst2.weightType == "0")
  142. {
  143. netDb.grossManNo = "admin";
  144. netDb.grossManName = "admin";
  145. netDb.grossTime = DateTime.Now;
  146. netDb.tareManName = actualFirst.createManName;
  147. netDb.tareManNo = actualFirst.createManNo;
  148. netDb.tareTime = actualFirst.createTime;
  149. }
  150. else
  151. {
  152. netDb.tareManName = "admin";
  153. netDb.tareManNo = "admin";
  154. netDb.tareTime = DateTime.Now;
  155. netDb.grossManName = actualFirst.createManName;
  156. netDb.grossManNo = actualFirst.createManNo;
  157. netDb.grossTime = actualFirst.createTime;
  158. }
  159. netDb.netManName = "admin";
  160. netDb.netManNo = "admin";
  161. netDb.netTime = DateTime.Now;
  162. netDb.createManName = "admin";
  163. netDb.createTime = DateTime.Now;
  164. netDb.updateManName = "admin";
  165. netDb.updateManNo = "admin";
  166. netDb.updateTime = DateTime.Now;
  167. //操作日志
  168. MeterMonitorNote monitorNote = new MeterMonitorNote();
  169. monitorNote.baseSpotNo = actualFirst2.baseSpotNo;
  170. monitorNote.baseSpotName = actualFirst2.baseSpotName;
  171. monitorNote.operationContent = string.Format("产生一次计量数据和洁净数据");
  172. monitorNote.operationTime = actualFirst2.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  173. monitorNote.carNo = actualFirst2.carNo;
  174. monitorNote.meterNoteSource = "0";
  175. // 保存结净记录,后续改成统一提交模式 BourneCao
  176. //特殊称点智能料场
  177. if (PbCache.sportInfo.baseSpotNo == "")
  178. {
  179. PbCache.weightInfoBeta.DeviceNo = actualFirst2.baseSpotNo;//计量站点
  180. PbCache.weightInfoBeta.ConveyanceNo = netDb.carNo;//车号
  181. PbCache.weightInfoBeta.WeightVoucherNo = netDb.predictionNo;//委托编号
  182. PbCache.weightInfoBeta.GrossWeight = netDb.grossWeight;
  183. PbCache.weightInfoBeta.TareWeight = netDb.tareWeight;
  184. PbCache.weightInfoBeta.NetWeight = netDb.netWeight;
  185. PbCache.weightInfoBeta.MeteringPerson = "admin";
  186. PbCache.weightInfoBeta.MeteringTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  187. }
  188. MeterWorkCarActualService actualService = new MeterWorkCarActualService();
  189. RESTfulResult<string> rmI = actualService.doAddNet(actualFirst, actualFirst2, netDb, monitorNote, "1");
  190. if (rmI.Succeed)
  191. {
  192. rt.result = true;
  193. rt.resultInfo = "计量完成";
  194. PbCache.actualFirstNo = rmI.Data;
  195. PbCache.strQRCode = rmI.Message;
  196. if (actualFirst2.meterWeight.Value > actualFirst.meterWeight.Value)
  197. {
  198. PbCache.isTareWeight = false;//毛重
  199. }
  200. else
  201. {
  202. PbCache.isTareWeight = true;//皮重
  203. }
  204. }
  205. else
  206. {
  207. rt.result = false;
  208. rt.isError = true;
  209. rt.resultInfo = "称重数据保存失败";
  210. }
  211. return rt;
  212. }
  213. /// <summary>
  214. /// 混装/混卸保存逻辑
  215. /// </summary>
  216. /// <param name="scale">委托数据</param>
  217. /// <param name="actualFirst">自动创建的一次计量数据</param>
  218. /// <param name="actualFirst2">本次一次计量数据</param>
  219. public rtInfo doNetHZHX(PreTrackScale scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst2)
  220. {
  221. // 构造结净数据
  222. MeterWorkCarActual netDb = new MeterWorkCarActual();
  223. // 复制委托
  224. if (scale != null)
  225. {
  226. EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  227. netDb = entityBase3.format<MeterWorkCarActual>(scale, netDb);
  228. netDb.isPreScale = "1";
  229. }
  230. actualFirst.weightType = "1";
  231. actualFirst2.weightType = "0";
  232. netDb.carNo = actualFirst.carNo;
  233. netDb.tareTime = DateTime.Now;
  234. netDb.tareWeight = actualFirst.meterWeight.Value < actualFirst2.meterWeight.Value ? actualFirst.meterWeight.Value : actualFirst2.meterWeight.Value; // 谁小谁是皮 BourneCao
  235. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  236. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  237. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  238. /* netDb.tare_man_no = "";
  239. netDb.tare_man_name = "";
  240. netDb.tare_class = "";
  241. netDb.tare_group = "";*/
  242. //netDb.actualFirst1No = actualFirst.meterWeight.Value > actualFirst2.meterWeight.Value ? actualFirst.actualFirstNo : actualFirst2.actualFirstNo;
  243. //netDb.actualFirst2No = actualFirst.meterWeight.Value < actualFirst2.meterWeight.Value ? actualFirst.actualFirstNo : actualFirst2.actualFirstNo;
  244. netDb.grossTime = actualFirst.createTime;
  245. netDb.grossWeight = actualFirst.meterWeight.Value > actualFirst2.meterWeight.Value ? actualFirst.meterWeight.Value : actualFirst2.meterWeight.Value; // 谁大谁是毛 BourneCao
  246. netDb.baseSpot1No = actualFirst.baseSpotNo;
  247. netDb.baseSpot1Name = actualFirst.baseSpotName;
  248. netDb.actualFirst2No = actualFirst.actualFirstNo;
  249. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  250. netDb.netManName = "admin";
  251. netDb.netManNo = "admin";
  252. netDb.netTime = DateTime.Now;
  253. netDb.grossManNo = "admin";
  254. netDb.grossManName = "admin";
  255. netDb.grossTime = DateTime.Now;
  256. netDb.tareManName = "admin";
  257. netDb.tareManNo = "admin";
  258. netDb.tareTime = DateTime.Now;
  259. netDb.createManName = "admin";
  260. netDb.createTime = DateTime.Now;
  261. netDb.updateManName = "admin";
  262. netDb.updateManNo = "admin";
  263. netDb.updateTime = DateTime.Now;
  264. netDb.grossClass = actualFirst.meterClass;
  265. netDb.grossGroup = actualFirst.meterGroup;
  266. netDb.valueFlag = "1";
  267. netDb.netTime = DateTime.Now;
  268. //netDb.netManNo = appUser.userid; //净重计量员编码
  269. //netDb.netManName = appUser.username; //净重计量员名称
  270. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  271. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  272. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  273. //净重=毛-皮-附加重量
  274. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  275. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  276. netDb.valueFlag = "0"; //0=有效,1=作废
  277. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  278. netDb.dataSource = "1";//1 = 智能终端,2 = 本地计量,3 = 应急计量,4 = 手动录入(计量票据录入)
  279. //要判断下当前是否勾选了不验证皮重
  280. //操作日志
  281. MeterMonitorNote monitorNote = new MeterMonitorNote();
  282. monitorNote.baseSpotNo = actualFirst2.baseSpotNo;
  283. monitorNote.baseSpotName = actualFirst2.baseSpotName;
  284. monitorNote.operationContent = string.Format("混装/混卸保存逻辑");
  285. monitorNote.operationTime = actualFirst2.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  286. monitorNote.carNo = actualFirst2.carNo;
  287. monitorNote.meterNoteSource = "0";
  288. // 保存结净记录,后续改成统一提交模式 BourneCao
  289. MeterWorkCarActualService actualService = new MeterWorkCarActualService();
  290. RESTfulResult<string> rmI = actualService.doAddNetHZHX(actualFirst2, actualFirst, netDb, monitorNote, "0");
  291. if (rmI.Succeed)
  292. {
  293. rt.result = true;
  294. rt.resultInfo = "计量完成";
  295. PbCache.actualFirstNo = rmI.Data;
  296. PbCache.strQRCode = rmI.Message;
  297. if (actualFirst2.meterWeight.Value > actualFirst.meterWeight.Value)
  298. {
  299. PbCache.isTareWeight = false;//毛重
  300. }
  301. else
  302. {
  303. PbCache.isTareWeight = true;//皮重
  304. }
  305. }
  306. else
  307. {
  308. rt.result = false;
  309. rt.isError = true;
  310. rt.resultInfo = "称重数据保存失败";
  311. }
  312. return rt;
  313. }
  314. /// <summary>
  315. /// 混装/混卸保存逻辑
  316. /// </summary>
  317. /// <param name="scale">委托数据</param>
  318. /// <param name="actualFirst">自动创建的一次计量数据</param>
  319. /// <param name="actualFirst2">本次一次计量数据</param>
  320. public rtInfo doAddNetNewHZHX(PreTrackScale scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst2)
  321. {
  322. // 构造结净数据
  323. MeterWorkCarActual netDb = new MeterWorkCarActual();
  324. // 复制委托
  325. if (scale != null)
  326. {
  327. EntityBase<PreTrackScale> entityBase3 = new EntityBase<PreTrackScale>();
  328. netDb = entityBase3.format<MeterWorkCarActual>(scale, netDb);
  329. netDb.isPreScale = "1";
  330. }
  331. actualFirst.weightType = "1";
  332. actualFirst2.weightType = "0";
  333. netDb.carNo = actualFirst.carNo;
  334. netDb.tareTime = DateTime.Now;
  335. netDb.tareWeight = actualFirst.meterWeight.Value < actualFirst2.meterWeight.Value ? actualFirst.meterWeight.Value : actualFirst2.meterWeight.Value; // 谁小谁是皮 BourneCao
  336. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  337. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  338. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  339. /* netDb.tare_man_no = "";
  340. netDb.tare_man_name = "";
  341. netDb.tare_class = "";
  342. netDb.tare_group = "";*/
  343. //netDb.actualFirst1No = actualFirst.meterWeight.Value > actualFirst2.meterWeight.Value ? actualFirst.actualFirstNo : actualFirst2.actualFirstNo;
  344. //netDb.actualFirst2No = actualFirst.meterWeight.Value < actualFirst2.meterWeight.Value ? actualFirst.actualFirstNo : actualFirst2.actualFirstNo;
  345. netDb.grossTime = actualFirst.createTime;
  346. netDb.grossWeight = actualFirst.meterWeight.Value > actualFirst2.meterWeight.Value ? actualFirst.meterWeight.Value : actualFirst2.meterWeight.Value; // 谁大谁是毛 BourneCao
  347. netDb.baseSpot1No = actualFirst.baseSpotNo;
  348. netDb.baseSpot1Name = actualFirst.baseSpotName;
  349. netDb.actualFirst2No = actualFirst.actualFirstNo;
  350. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  351. netDb.netManName = "admin";
  352. netDb.netManNo = "admin";
  353. netDb.netTime = DateTime.Now;
  354. netDb.grossManNo = "admin";
  355. netDb.grossManName = "admin";
  356. netDb.grossTime = DateTime.Now;
  357. netDb.tareManName = "admin";
  358. netDb.tareManNo = "admin";
  359. netDb.tareTime = DateTime.Now;
  360. netDb.createManName = "admin";
  361. netDb.createTime = DateTime.Now;
  362. netDb.updateManName = "admin";
  363. netDb.updateManNo = "admin";
  364. netDb.updateTime = DateTime.Now;
  365. netDb.grossClass = actualFirst.meterClass;
  366. netDb.grossGroup = actualFirst.meterGroup;
  367. netDb.valueFlag = "1";
  368. netDb.netTime = DateTime.Now;
  369. //netDb.netManNo = appUser.userid; //净重计量员编码
  370. //netDb.netManName = appUser.username; //净重计量员名称
  371. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  372. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  373. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  374. //净重=毛-皮-附加重量
  375. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  376. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  377. netDb.valueFlag = "0"; //0=有效,1=作废
  378. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  379. netDb.dataSource = "1";//1 = 智能终端,2 = 本地计量,3 = 应急计量,4 = 手动录入(计量票据录入)
  380. //要判断下当前是否勾选了不验证皮重
  381. //操作日志
  382. MeterMonitorNote monitorNote = new MeterMonitorNote();
  383. monitorNote.baseSpotNo = actualFirst2.baseSpotNo;
  384. monitorNote.baseSpotName = actualFirst2.baseSpotName;
  385. monitorNote.operationContent = string.Format("混装/混卸保存逻辑");
  386. monitorNote.operationTime = actualFirst2.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  387. monitorNote.carNo = actualFirst2.carNo;
  388. monitorNote.meterNoteSource = "0";
  389. // 保存结净记录,后续改成统一提交模式 BourneCao
  390. MeterWorkCarActualService actualService = new MeterWorkCarActualService();
  391. RESTfulResult<string> rmI = actualService.doAddNetNewHZHX(actualFirst2, actualFirst, netDb, monitorNote, "0");
  392. if (rmI.Succeed)
  393. {
  394. rt.result = true;
  395. rt.resultInfo = "计量完成";
  396. PbCache.actualFirstNo = rmI.Data;
  397. PbCache.strQRCode = rmI.Message;
  398. if (actualFirst2.meterWeight.Value > actualFirst.meterWeight.Value)
  399. {
  400. PbCache.isTareWeight = false;//毛重
  401. }
  402. else
  403. {
  404. PbCache.isTareWeight = true;//皮重
  405. }
  406. }
  407. else
  408. {
  409. rt.result = false;
  410. rt.isError = true;
  411. rt.resultInfo = "称重数据保存失败";
  412. }
  413. return rt;
  414. }
  415. /// <summary>
  416. /// 产生一次计量数据,同时结净并匹配委托
  417. /// </summary>
  418. /// <param name="scale"></param>
  419. /// <param name="actualFirst"></param>
  420. public rtInfo doNetAndScale(PreTrackScale scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst2)
  421. {
  422. // 构造结净数据
  423. MeterWorkCarActual netDb = new MeterWorkCarActual();
  424. // 复制对象
  425. if (scale != null)
  426. {
  427. EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
  428. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  429. }
  430. netDb.tareTime = DateTime.Now;
  431. netDb.tareWeight = actualFirst.meterWeight.Value < PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁小谁是皮 BourneCao
  432. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  433. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  434. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  435. /* netDb.tare_man_no = "";
  436. netDb.tare_man_name = "";
  437. netDb.tare_class = "";
  438. netDb.tare_group = "";*/
  439. netDb.actualFirst1No = actualFirst.actualFirstNo;
  440. netDb.actualFirst2No = actualFirst.actualFirstNo;
  441. netDb.grossTime = actualFirst.createTime;
  442. netDb.grossWeight = actualFirst.meterWeight.Value > PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁大谁是毛 BourneCao
  443. netDb.baseSpot1No = actualFirst.baseSpotNo;
  444. netDb.baseSpot1Name = actualFirst.baseSpotName;
  445. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  446. netDb.grossManNo = actualFirst.createManNo;
  447. netDb.grossManName = actualFirst.createManName;
  448. netDb.grossClass = actualFirst.meterClass;
  449. netDb.grossGroup = actualFirst.meterGroup;
  450. netDb.valueFlag = "1";
  451. netDb.netTime = DateTime.Now;
  452. //netDb.netManNo = appUser.userid; //净重计量员编码
  453. //netDb.netManName = appUser.username; //净重计量员名称
  454. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  455. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  456. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  457. //净重=毛-皮-附加重量
  458. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  459. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  460. netDb.valueFlag = "0"; //0=有效,1=作废
  461. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  462. //要判断下当前是否勾选了不验证皮重
  463. // 保存结净记录,后续改成统一提交模式 BourneCao
  464. return rt;
  465. }
  466. /// <summary>
  467. /// 产生一次计量数据,同时结净并匹配委托(多委托)
  468. /// </summary>
  469. /// <param name="scale"></param>
  470. /// <param name="actualFirst"></param>
  471. /// <param name="actualFirst1"></param>
  472. public rtInfo doNetAddTwo(List<PreTrackScale> scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst1)
  473. {
  474. // 构造结净数据
  475. MeterWorkCarActual netDb = new MeterWorkCarActual();
  476. netDb.actualFirst1No = actualFirst1.meterWeight.Value > actualFirst.meterWeight.Value ? "" : actualFirst.actualFirstNo;
  477. netDb.actualFirst2No = actualFirst1.meterWeight.Value > actualFirst.meterWeight.Value ? actualFirst.actualFirstNo : "";
  478. if (actualFirst1.meterWeight.Value > actualFirst.meterWeight.Value)
  479. {
  480. actualFirst1.weightType = "0";
  481. }
  482. else
  483. {
  484. actualFirst1.weightType = "1";
  485. }
  486. netDb.tareTime = DateTime.Now;
  487. netDb.tareWeight = actualFirst.meterWeight.Value < actualFirst1.meterWeight.Value ? actualFirst.meterWeight.Value : actualFirst1.meterWeight.Value; // 谁小谁是皮 BourneCao
  488. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  489. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  490. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  491. netDb.tareClass = actualFirst1.meterClass;
  492. netDb.tareGroup = actualFirst1.meterGroup;
  493. netDb.grossTime = actualFirst.createTime;
  494. netDb.grossWeight = actualFirst.meterWeight.Value > PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁大谁是毛 BourneCao
  495. netDb.baseSpot1No = actualFirst.baseSpotNo;
  496. netDb.baseSpot1Name = actualFirst.baseSpotName;
  497. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  498. netDb.grossClass = actualFirst.meterClass;
  499. netDb.grossGroup = actualFirst.meterGroup;
  500. netDb.netTime = DateTime.Now;
  501. //netDb.netManNo = appUser.userid; //净重计量员编码
  502. //netDb.netManName = appUser.username; //净重计量员名称
  503. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  504. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  505. netDb.netManName = "admin";
  506. netDb.netManNo = "admin";
  507. netDb.netTime = DateTime.Now;
  508. netDb.grossManNo = "admin";
  509. netDb.grossManName = "admin";
  510. netDb.grossTime = DateTime.Now;
  511. netDb.tareManName = "admin";
  512. netDb.tareManNo = "admin";
  513. netDb.tareTime = DateTime.Now;
  514. netDb.createManName = "admin";
  515. netDb.createTime = DateTime.Now;
  516. netDb.updateManName = "admin";
  517. netDb.updateManNo = "admin";
  518. netDb.updateTime = DateTime.Now;
  519. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  520. //净重=毛-皮-附加重量
  521. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  522. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  523. netDb.valueFlag = "0"; //0=有效,1=作废
  524. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  525. netDb.dataSource = "1"; //1 = 智能终端,2 = 本地计量,3 = 应急计量,4 = 手动录入(计量票据录入)
  526. //要判断下当前是否勾选了不验证皮重
  527. // 保存结净记录,后续改成统一提交模式 BourneCao
  528. MeterWorkCarActualService actualService = new MeterWorkCarActualService();
  529. RESTfulResult<string> rmI = actualService.doNetAddTwo(scale, actualFirst1, netDb);
  530. if (rmI.Succeed)
  531. {
  532. rt.result = true;
  533. rt.resultInfo = "计量完成,双委托洁净";
  534. PbCache.actualFirstNo = rmI.Data;
  535. PbCache.strQRCode = rmI.Message;
  536. if (actualFirst1.meterWeight.Value > actualFirst.meterWeight.Value)
  537. {
  538. PbCache.isTareWeight = false;//毛重
  539. }
  540. else
  541. {
  542. PbCache.isTareWeight = true;//皮重
  543. }
  544. }
  545. else
  546. {
  547. rt.result = false;
  548. rt.isError = true;
  549. rt.resultInfo = "称重数据保存失败";
  550. }
  551. return rt;
  552. }
  553. /// <summary>
  554. /// 期限皮重保存洁净
  555. /// </summary>
  556. /// <param name="scale"></param>
  557. /// <param name="actualFirst"></param>
  558. public rtInfo doNetTermTare(PreTrackScale scale, MeterWorkCarActualFirst actualFirst)
  559. {
  560. // 构造结净数据
  561. MeterWorkCarActual netDb = new MeterWorkCarActual();
  562. if (scale != null)
  563. {
  564. EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
  565. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  566. netDb.isPreScale = "1";//是否匹配委托,0未匹配,1已匹配
  567. }
  568. netDb.actualFirst1No = actualFirst.actualFirstNo;
  569. netDb.tareTime = DateTime.Now;
  570. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  571. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  572. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  573. netDb.grossTime = actualFirst.createTime;
  574. netDb.grossWeight = actualFirst.meterWeight.Value; // 谁大谁是毛 BourneCao
  575. netDb.baseSpot1No = actualFirst.baseSpotNo;
  576. netDb.baseSpot1Name = actualFirst.baseSpotName;
  577. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  578. netDb.grossClass = actualFirst.meterClass;
  579. netDb.grossGroup = actualFirst.meterGroup;
  580. netDb.netTime = DateTime.Now;
  581. //netDb.netManNo = appUser.userid; //净重计量员编码
  582. //netDb.netManName = appUser.username; //净重计量员名称
  583. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  584. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  585. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  586. //净重=毛-皮-附加重量
  587. netDb.netMode = "2"; //1:正常结净;2:匹配结净
  588. netDb.valueFlag = "1"; //0=有效,1=作废
  589. netDb.uploadFlag = "1"; //0=待审核;1:待上传;2=已上传
  590. netDb.dataSource = "1"; //1 = 智能终端,2 = 本地计量,3 = 应急计量,4 = 手动录入(计量票据录入)
  591. //要判断下当前是否勾选了不验证皮重
  592. netDb.netManName = "admin";
  593. netDb.netManNo = "admin";
  594. netDb.netTime = DateTime.Now;
  595. netDb.grossManNo = "admin";
  596. netDb.grossManName = "admin";
  597. netDb.grossTime = DateTime.Now;
  598. netDb.tareManName = "admin";
  599. netDb.tareManNo = "admin";
  600. netDb.tareTime = DateTime.Now;
  601. netDb.createManName = "admin";
  602. netDb.createTime = DateTime.Now;
  603. netDb.updateManName = "admin";
  604. netDb.updateManNo = "admin";
  605. netDb.updateTime = DateTime.Now;
  606. // 保存结净记录,后续改成统一提交模式 BourneCao
  607. MeterWorkCarActualService actualService = new MeterWorkCarActualService();
  608. RESTfulResult<string> rmI = actualService.doNetTermTare(actualFirst, netDb,"1");
  609. if (rmI.Succeed)
  610. {
  611. rt.result = true;
  612. rt.resultInfo = "计量完成";
  613. PbCache.actualFirstNo = rmI.Data;
  614. PbCache.strQRCode = rmI.Message;
  615. PbCache.isTareWeight = false;//皮重
  616. }
  617. else
  618. {
  619. rt.result = false;
  620. rt.isError = true;
  621. rt.resultInfo = "称重数据保存失败";
  622. }
  623. return rt;
  624. }
  625. /// <summary>
  626. /// 一车多卸
  627. /// a. 取第一条委托正常洁净产生一条净重记录
  628. /// b.并自动生成一条一次毛重计量数据并和第二条委托匹配,重量值为当次计量数据中的毛重
  629. /// </summary>
  630. /// <param name="scale"></param>
  631. /// <param name="actualFirst"></param>
  632. public rtInfo doNetMass(List<PreTrackScale> scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst1)
  633. {
  634. // 构造结净数据
  635. MeterWorkCarActual netDb = new MeterWorkCarActual();
  636. // 复制对象
  637. if (scale != null)
  638. {
  639. EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
  640. netDb = entityBase.format<MeterWorkCarActual>(scale[0], netDb);
  641. }
  642. netDb.tareTime = DateTime.Now;
  643. netDb.tareWeight = actualFirst.meterWeight.Value < PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁小谁是皮 BourneCao
  644. netDb.baseSpot2No = PbCache.sportInfo.baseSpotNo;
  645. netDb.baseSpot2Name = PbCache.sportInfo.baseSpotName;
  646. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  647. /* netDb.tare_man_no = "";
  648. netDb.tare_man_name = "";
  649. netDb.tare_class = "";
  650. netDb.tare_group = "";*/
  651. netDb.actualFirst1No = actualFirst.actualFirstNo;
  652. netDb.grossTime = actualFirst.createTime;
  653. netDb.grossWeight = actualFirst.meterWeight.Value > PbCache.lockWgt ? actualFirst.meterWeight.Value : PbCache.lockWgt; // 谁大谁是毛 BourneCao
  654. netDb.baseSpot1No = actualFirst.baseSpotNo;
  655. netDb.baseSpot1Name = actualFirst.baseSpotName;
  656. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  657. netDb.grossManNo = actualFirst.createManNo;
  658. netDb.grossManName = actualFirst.createManName;
  659. netDb.grossClass = actualFirst.meterClass;
  660. netDb.grossGroup = actualFirst.meterGroup;
  661. netDb.netTime = DateTime.Now;
  662. //netDb.netManNo = appUser.userid; //净重计量员编码
  663. //netDb.netManName = appUser.username; //净重计量员名称
  664. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  665. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  666. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  667. //净重=毛-皮-附加重量
  668. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  669. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  670. netDb.valueFlag = "0"; //0=有效,1=作废
  671. netDb.uploadFlag = "0"; //0=待审核;1:待上传;2=已上传
  672. //要判断下当前是否勾选了不验证皮重
  673. // 保存结净记录,后续改成统一提交模式 BourneCao
  674. return rt;
  675. }
  676. public rtInfo validHisTare(string WeightType = "001033001")
  677. {
  678. // 查询当前秤点是否启用历史皮重判断(暂时不考虑此限制)By BourneCao
  679. //String spotNo = PbCache.sportInfo.baseSpotNo;
  680. /* 判断当前重量是否满足历史皮重相应限制 */
  681. // 读取车辆历史皮重信息
  682. List<MeterBaseHisTareData> validHis = getHisTare(PbCache.lockCarNo);
  683. // 读取历史皮重计算配置
  684. MeterBaseHisTareCount hisTareCount = PbCache.tareCount;
  685. // 没有历史皮重记录,相关操作都可跳过
  686. if (validHis.Count >= 1)
  687. {
  688. double maxWgt = 0, minWgt = 0, wgt = PbCache.lockWgt;
  689. if (hisTareCount.countTypeNo == "001011001") //固重 当前重量>=历史皮重-固重 当前重量<=历史皮重+固重
  690. {
  691. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? validHis[0].upWeight.Value : validHis[0].meterWeight.Value);
  692. maxWgt = meterWeight + hisTareCount.fixedWeightValue.Value;
  693. minWgt = meterWeight - hisTareCount.fixedWeightValue.Value;
  694. if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt)
  695. {
  696. PbCache.monitorResult.valid_wgt = true;
  697. }
  698. else
  699. {
  700. PbCache.monitorResult.valid_wgt = false;
  701. PbCache.ResultMessage = "当前皮重【" + PbCache.lockWgt / 1000 + "T 】在皮重配置范围,历史皮重为【" + Convert.ToDouble(meterWeight) / 1000 + "T】,偏差最大允许重量为【" + hisTareCount.fixedWeightValue.Value + "kg】";
  702. }
  703. }
  704. else if (hisTareCount.countTypeNo == "001011002") //比例 当前重量>=历史皮重-历史皮重*比例 当前重量<=历史皮重+历史皮重*比例
  705. {
  706. long meterWeight = (PbCache.tareCount.contrastTypeNo == "001012001" ? validHis[0].upWeight.Value : validHis[0].meterWeight.Value);
  707. maxWgt = meterWeight + meterWeight * (hisTareCount.rateValue.Value / 100); //历史皮重+历史皮重*比例
  708. minWgt = meterWeight - meterWeight * (hisTareCount.rateValue.Value / 100); //历史皮重-历史皮重*比例
  709. if (PbCache.lockWgt >= minWgt && PbCache.lockWgt <= maxWgt)
  710. {
  711. PbCache.monitorResult.valid_wgt = true;
  712. }
  713. else
  714. {
  715. PbCache.monitorResult.valid_wgt = false;
  716. PbCache.ResultMessage = "当前皮重【" + PbCache.lockWgt / 1000 + "T 】不在皮重配置范围,历史皮重为【" + (double)Convert.ToDouble(meterWeight) / 1000 + "T】,偏差最大允许比例值为【" + hisTareCount.fixedWeightValue.Value + "%】";
  717. }
  718. }
  719. else
  720. {
  721. PbCache.monitorResult.valid_wgt = false;
  722. PbCache.ResultMessage = string.Format("未找到历史皮重计算类型{0}配置数据", hisTareCount.countTypeNo);
  723. }
  724. }
  725. else
  726. {
  727. if (WeightType == "001033002")
  728. {
  729. PbCache.monitorResult.valid_wgt = true;
  730. }
  731. //PbCache.monitorResult.valid_wgt = true;
  732. //PbCache.ResultMessage = "0";
  733. }
  734. return rt;
  735. }
  736. public List<MeterBaseHisTareData> getHisTare(string carNo)
  737. {
  738. List<MeterBaseHisTareData> lmhtd = new List<MeterBaseHisTareData>();
  739. PbCache.monitorResult.haveHisTare = false;//不存在历史皮
  740. MeterBaseHisTareDataService mbtds = new MeterBaseHisTareDataService();
  741. RESTfulResult<List<MeterBaseHisTareData>> rm = mbtds.doQueryWf(new MeterBaseHisTareData { valueFlag = "0", carNo = carNo });
  742. if (rm.Succeed)
  743. {
  744. if (rm.Data != null && rm.Data.Count > 0)
  745. {
  746. PbCache.monitorResult.haveHisTare = true;//存在历史皮
  747. lmhtd = rm.Data;
  748. }
  749. }
  750. else
  751. {
  752. lmhtd = null;
  753. }
  754. PbCache.monitorResult.hisTareData = lmhtd;
  755. return lmhtd;
  756. }
  757. public rtInfo doTermTareData()
  758. {
  759. MeterBaseTermTareData mbttd = new MeterBaseTermTareData();
  760. mbttd.baseSpotNo = PbCache.sportInfo.baseSpotNo;
  761. mbttd.baseSpotName = PbCache.sportInfo.baseSpotName;
  762. mbttd.carNo = PbCache.collect.carno;
  763. mbttd.meterWeight = PbCache.lockWgt;
  764. mbttd.valueFlag = "0";
  765. mbttd.createTime = DateTime.Now;
  766. mbttd.createManNo = PbCache.sportInfo.baseSpotNo;
  767. mbttd.createManName = PbCache.sportInfo.baseSpotName;
  768. mbttd.meterTime = mbttd.createTime.Value;
  769. mbttd.startTime = mbttd.createTime.Value;
  770. //操作日志
  771. MeterMonitorNote monitorNote = new MeterMonitorNote();
  772. monitorNote.baseSpotNo = mbttd.baseSpotNo;
  773. monitorNote.baseSpotName = mbttd.baseSpotName;
  774. monitorNote.operationContent = string.Format("保存期限皮重");
  775. monitorNote.operationTime = mbttd.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  776. monitorNote.carNo = mbttd.carNo;
  777. monitorNote.meterNoteSource = "0";
  778. //期限皮重数据保存
  779. RESTfulResult<string> RESTfulResult = termTareDate.doSaveWf(mbttd, monitorNote);
  780. rt.result = true;
  781. rt.isError = false;
  782. rt.resultInfo = "期限皮重保存成功";
  783. return rt;
  784. }
  785. public rtInfo doTermTareNet(PreTrackScale scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst1)
  786. {
  787. //期限皮重数据保存
  788. MeterWorkCarActualService actualService = new MeterWorkCarActualService();
  789. RESTfulResult<string> rmI = actualService.doTermTareNet(scale, actualFirst, actualFirst1);
  790. if (rmI.Succeed)
  791. {
  792. rt.result = true;
  793. rt.resultInfo = "计量完成";
  794. PbCache.actualFirstNo = rmI.Data;
  795. PbCache.strQRCode = rmI.Message;
  796. PbCache.isTareWeight = false;//皮重
  797. }
  798. else
  799. {
  800. rt.result = false;
  801. rt.isError = true;
  802. rt.resultInfo = "称重数据保存失败";
  803. }
  804. return rt;
  805. }
  806. /// <summary>
  807. /// 多毛一重
  808. /// </summary>
  809. /// <param name="scale"></param>
  810. /// <param name="actualFirst"></param>
  811. /// <param name="actualFirst1"></param>
  812. public rtInfo doNetAddMuch(MeterWorkCarActualFirst actualFirst)
  813. {
  814. // 保存结净记录,后续改成统一提交模式 BourneCao
  815. MeterWorkCarActualService actualService = new MeterWorkCarActualService();
  816. RESTfulResult<string> rmI = actualService.doNetAddMuch(actualFirst);
  817. if (rmI.Succeed)
  818. {
  819. rt.result = true;
  820. rt.resultInfo = "计量完成";
  821. PbCache.actualFirstNo = rmI.Data;
  822. PbCache.strQRCode = rmI.Message;
  823. PbCache.isTareWeight = true;//皮重
  824. }
  825. else
  826. {
  827. rt.result = false;
  828. rt.isError = true;
  829. rt.resultInfo = "称重数据保存失败";
  830. }
  831. return rt;
  832. }
  833. /// <summary>
  834. /// 产生一次计量数据和没有委托的洁净数据
  835. /// </summary>
  836. /// <param name="scale"></param>
  837. /// <param name="actualFirst"></param>
  838. public rtInfo doNetError(PreTrackScale scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst1, MeterWorkCarActualFirst mwaf)
  839. {
  840. // 构造结净数据
  841. MeterWorkCarActual netDb = new MeterWorkCarActual();
  842. // 将第一个一次数据状态改为 已结净
  843. //actualFirst.valueFlag = "2";
  844. netDb.isPreScale = "0";
  845. // 复制对象
  846. if (scale != null)
  847. {
  848. EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
  849. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  850. netDb.isPreScale = "1";
  851. }
  852. netDb.carNo = actualFirst.carNo;
  853. netDb.tareTime = actualFirst.createTime;
  854. netDb.tareWeight = actualFirst.meterWeight.Value;
  855. netDb.baseSpot2No = actualFirst.baseSpotNo;
  856. netDb.baseSpot2Name = actualFirst.baseSpotName;
  857. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  858. netDb.actualFirst1No = actualFirst.actualFirstNo;
  859. netDb.actualFirst2No = actualFirst1.actualFirstNo;
  860. netDb.grossTime = actualFirst1.createTime;
  861. netDb.grossWeight = actualFirst1.meterWeight.Value;
  862. netDb.baseSpot1No = actualFirst1.baseSpotNo;
  863. netDb.baseSpot1Name = actualFirst1.baseSpotName;
  864. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  865. netDb.grossClass = actualFirst1.meterClass;
  866. netDb.grossGroup = actualFirst1.meterGroup;
  867. netDb.valueFlag = "1";
  868. netDb.netTime = DateTime.Now;
  869. //netDb.netManNo = appUser.userid; //净重计量员编码
  870. //netDb.netManName = appUser.username; //净重计量员名称
  871. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  872. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  873. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  874. //净重=毛-皮-附加重量
  875. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  876. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  877. netDb.uploadFlag = "1"; //0=待审核;1:待上传;2=已上传
  878. netDb.dataSource = "1";//1 = 智能终端,2 = 本地计量,3 = 应急计量,4 = 手动录入(计量票据录入)
  879. //要判断下当前是否勾选了不验证皮重
  880. netDb.grossManNo = actualFirst1.createManNo;
  881. netDb.grossManName = actualFirst1.createManName;
  882. netDb.grossTime = actualFirst1.createTime;
  883. netDb.tareManName = actualFirst.createManNo;
  884. netDb.tareManNo = actualFirst.createManName;
  885. netDb.tareTime = actualFirst.createTime;
  886. netDb.netManName = "admin";
  887. netDb.netManNo = "admin";
  888. netDb.netTime = DateTime.Now;
  889. netDb.createManName = "admin";
  890. netDb.createTime = DateTime.Now;
  891. netDb.updateManName = "admin";
  892. netDb.updateManNo = "admin";
  893. netDb.updateTime = DateTime.Now;
  894. //操作日志
  895. MeterMonitorNote monitorNote = new MeterMonitorNote();
  896. monitorNote.baseSpotNo = actualFirst1.baseSpotNo;
  897. monitorNote.baseSpotName = actualFirst1.baseSpotName;
  898. monitorNote.operationContent = string.Format("产生一次计量数据和洁净数据");
  899. monitorNote.operationTime = actualFirst1.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  900. monitorNote.carNo = actualFirst1.carNo;
  901. monitorNote.meterNoteSource = "0";
  902. // 保存结净记录,后续改成统一提交模式 BourneCao
  903. MeterWorkCarActualService actualService = new MeterWorkCarActualService();
  904. RESTfulResult<string> rmI = actualService.doAddNetError(actualFirst, mwaf, netDb, monitorNote, "1");
  905. if (rmI.Succeed)
  906. {
  907. rt.result = true;
  908. rt.resultInfo = "计量完成";
  909. PbCache.actualFirstNo = rmI.Data;
  910. PbCache.strQRCode = rmI.Message;
  911. if (mwaf.weightType == "0")
  912. {
  913. PbCache.isTareWeight = false;//毛重
  914. }
  915. else
  916. {
  917. PbCache.isTareWeight = true;//皮重
  918. }
  919. }
  920. else
  921. {
  922. rt.result = false;
  923. rt.isError = true;
  924. rt.resultInfo = "称重数据保存失败";
  925. }
  926. return rt;
  927. }
  928. /// <summary>
  929. /// 失败执行逻辑
  930. /// </summary>
  931. public rtInfo doError(string msg)
  932. {
  933. rt.result = false;
  934. rt.isError = true;
  935. rt.resultInfo = "计量失败:" + msg;
  936. return rt;
  937. }
  938. #endregion
  939. }
  940. }