SaveMethod.cs 54 KB

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