MeterWorkCarActualFirstService.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. using com.hnshituo.core.webapp.vo;
  2. using CoreFS.CA06;
  3. using iCore.Rtdb;
  4. using System;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. namespace CarLocalMeter
  9. {
  10. public class MeterWorkCarActualFirstService
  11. {
  12. #region JISCO特殊接口 By BourneCao 20220122
  13. /// <summary>
  14. /// 按车号查询状态为未使用或使用中的计量实绩数据
  15. /// </summary>
  16. /// <param name="info"></param>
  17. /// <returns></returns>
  18. public RESTfulResult<List<MeterWorkCarActualFirst>> doQueryByFlag(MeterWorkCarActualFirst info)
  19. {
  20. DbHelper db = new DbHelper();
  21. info.pageNum = 1;
  22. info.pageSize = 3;
  23. RESTfulResult<List<MeterWorkCarActualFirst>> result = db.doOption<List<MeterWorkCarActualFirst>>("meterworkcaractualfirsts", "/queryByFlag", new object[] { info }, 1);
  24. return result;
  25. }
  26. #endregion
  27. internal RESTfulResult<List<MeterWorkCarActualFirst>> doQueryWf(MeterWorkCarActualFirst info)
  28. {
  29. DbHelper db = new DbHelper();
  30. RESTfulResult<PageList<List<MeterWorkCarActualFirst>>> rm = db.doOption<PageList<List<MeterWorkCarActualFirst>>>("meterworkcaractualfirsts", "/", new object[] { info }, 0);
  31. List<MeterWorkCarActualFirst> lt = new List<MeterWorkCarActualFirst>();
  32. //如果一次数据在当前过期时间外,则将数据设置为失效状态
  33. if (rm.Succeed)
  34. {
  35. DateTime dtNow = DateTime.Now;
  36. if (rm.Data.list.Count > 0)
  37. {
  38. foreach (MeterWorkCarActualFirst meter in rm.Data.list)
  39. {
  40. if (meter.createTime.Value.AddHours(AppConfigCache.isEndHour).CompareTo(dtNow) < 0)
  41. {
  42. doUpdateWf(new MeterWorkCarActualFirst { actualFirstNo = meter.actualFirstNo, valueFlag = "0", updateTime = dtNow, updateManName = "超期未使用" });
  43. }
  44. else
  45. {
  46. lt.Add(meter);
  47. }
  48. }
  49. }
  50. }
  51. RESTfulResult<List<MeterWorkCarActualFirst>> result = new RESTfulResult<List<MeterWorkCarActualFirst>>();
  52. result.Succeed = rm.Succeed;
  53. result.Status = rm.Status;
  54. result.Message = rm.Message;
  55. result.ResultMessage = rm.ResultMessage;
  56. result.Code = rm.Code;
  57. if (lt != null && lt.Count > 0)
  58. {
  59. result.Data = rm.Data.list;
  60. }
  61. return result;
  62. }
  63. /// <summary>
  64. /// 修改
  65. /// </summary>
  66. /// <param name="info"></param>
  67. /// <returns></returns>
  68. internal RESTfulResult<string> doUpdateWf(MeterWorkCarActualFirst info)
  69. {
  70. DbHelper db = new DbHelper();
  71. RESTfulResult<string> rm = db.doOption<string>("meterworkcaractualfirsts", "doUpdateWf", new object[] { info }, 1);
  72. return rm;
  73. }
  74. /// <summary>
  75. /// 一次计量数据保存以及结净
  76. /// </summary>
  77. public RESTfulResult<string> doAddFirstDjDb(PreTrackScale scale, MeterWorkCarActualFirst model)
  78. {
  79. DbHelper db = new DbHelper();
  80. if (scale != null)
  81. {
  82. EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
  83. model = entityBase.format<MeterWorkCarActualFirst>(scale, model);
  84. }
  85. //操作日志
  86. MeterMonitorNote monitorNote = new MeterMonitorNote();
  87. monitorNote.baseSpotNo = model.baseSpotNo;
  88. monitorNote.baseSpotName = model.baseSpotName;
  89. monitorNote.operationContent = string.Format("产生一次计量数据");
  90. monitorNote.operationTime = model.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  91. monitorNote.carNo = model.carNo;
  92. monitorNote.meterNoteSource = "0";
  93. PbSomeModel<MeterWorkCarActualFirst, MeterMonitorNote, MeterMonitorNote, MeterMonitorNote> pbSomeModel = new PbSomeModel<MeterWorkCarActualFirst, MeterMonitorNote, MeterMonitorNote, MeterMonitorNote>();
  94. pbSomeModel.one = model;
  95. pbSomeModel.two = monitorNote;
  96. RESTfulResult<string> rmI = db.doOption<string>("meterworkcaractualfirsts", "/addDj", new object[] { pbSomeModel }, 1);
  97. return rmI;
  98. }
  99. /// <summary>
  100. /// 结净操作
  101. /// </summary>
  102. /// <param name="secondDb"></param>
  103. /// <param name="netDb"></param>
  104. /// <param name="monitorNote"></param>
  105. /// <param name="saveTare"></param>
  106. /// <returns></returns>
  107. public RESTfulResult<string> doAddNet(PreTrackScale scale, MeterWorkCarActualFirst actualFirst, MeterWorkCarActualFirst actualFirst2)
  108. {
  109. DbHelper db = new DbHelper();
  110. // 构造结净数据
  111. MeterWorkCarActual netDb = new MeterWorkCarActual();
  112. // 将第一个一次数据状态改为 已结净
  113. //actualFirst.valueFlag = "2";
  114. netDb.isPreScale = "0";
  115. // 复制对象
  116. if (scale != null)
  117. {
  118. EntityBase<PreTrackScale> entityBase = new EntityBase<PreTrackScale>();
  119. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  120. netDb.isPreScale = "1";
  121. //给二次计量数据匹配委托
  122. actualFirst2 = entityBase.format<MeterWorkCarActualFirst>(scale, actualFirst2);
  123. }
  124. netDb.carNo = actualFirst.carNo;
  125. if (actualFirst2.meterWeight.Value > actualFirst.meterWeight.Value)
  126. {
  127. actualFirst2.weightType = "0";//0=毛重;1=常规皮重;2=期限皮重;3=历史皮重;4=标识皮重;5=自重皮重
  128. netDb.actualFirst1No = ""; //毛重编号
  129. netDb.grossTime = actualFirst2.createTime;
  130. netDb.grossWeight = actualFirst2.meterWeight.Value; // 谁大谁是毛 BourneCao
  131. netDb.baseSpot1No = AppConfigCache.pointNo;
  132. netDb.baseSpot1Name = AppConfigCache.pointName;
  133. netDb.grossMode = "2"; // 1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  134. netDb.grossClass = actualFirst2.meterClass;
  135. netDb.grossGroup = actualFirst2.meterGroup;
  136. netDb.grossManNo = "system";
  137. netDb.grossManName = "system";
  138. netDb.grossTime = actualFirst2.createTime;
  139. netDb.actualFirst2No = actualFirst.actualFirstNo; //皮重编号
  140. netDb.tareTime = actualFirst.createTime;
  141. netDb.tareWeight = actualFirst.meterWeight.Value; // 谁小谁是皮 BourneCao
  142. netDb.baseSpot2No = actualFirst.baseSpotNo;
  143. netDb.baseSpot2Name = actualFirst.baseSpotName;
  144. netDb.tareMode = actualFirst.meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  145. netDb.tareManName = actualFirst.createManName;
  146. netDb.tareManNo = actualFirst.createManNo;
  147. netDb.tareTime = actualFirst.createTime;
  148. }
  149. else
  150. {
  151. actualFirst2.weightType = "1";//皮重
  152. netDb.actualFirst2No = ""; //皮重编号
  153. netDb.tareTime = actualFirst2.createTime;
  154. netDb.tareWeight = actualFirst2.meterWeight.Value; // 谁小谁是皮 BourneCao
  155. netDb.baseSpot2No = AppConfigCache.pointNo;
  156. netDb.baseSpot2Name = AppConfigCache.pointName;
  157. netDb.tareMode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  158. netDb.tareClass = actualFirst2.meterClass;
  159. netDb.tareGroup = actualFirst2.meterGroup;
  160. netDb.tareManName = "system";
  161. netDb.tareManNo = "system";
  162. netDb.tareTime = actualFirst2.createTime;
  163. netDb.actualFirst1No = actualFirst.actualFirstNo; //毛重编号
  164. netDb.grossTime = actualFirst.createTime;
  165. netDb.grossWeight = actualFirst.meterWeight.Value; // 谁大谁是毛 BourneCao
  166. netDb.baseSpot1No = actualFirst.baseSpotNo;
  167. netDb.baseSpot1Name = actualFirst.baseSpotName;
  168. netDb.grossMode = actualFirst.meterMode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  169. netDb.grossManNo = actualFirst.createManNo;
  170. netDb.grossManName = actualFirst.createManName;
  171. netDb.grossTime = actualFirst.createTime;
  172. }
  173. netDb.valueFlag = "1";
  174. netDb.netManName = "system";
  175. netDb.netManNo = "system";
  176. netDb.createManName = "system";
  177. netDb.createTime = DateTime.Now;
  178. netDb.netTime = DateTime.Now;
  179. netDb.netSpot3No = AppConfigCache.pointNo; //净重计量点编号
  180. netDb.netSpot3Name = AppConfigCache.pointName; //净重计量点
  181. netDb.addWeight = (actualFirst.addWeight == null ? 0 : actualFirst.addWeight.Value);
  182. //净重=毛-皮-附加重量
  183. netDb.netWeight = netDb.grossWeight - netDb.tareWeight - netDb.addWeight;
  184. netDb.netMode = "1"; //1:正常结净;2:匹配结净
  185. netDb.uploadFlag = "1"; //0=待审核;1:待上传;2=已上传
  186. netDb.dataSource = "1";//1 = 智能终端,2 = 本地计量,3 = 应急计量,4 = 手动录入(计量票据录入)
  187. //netDb.updateManName = "system";
  188. //netDb.updateManNo = "system";
  189. //netDb.updateTime = DateTime.Now;
  190. //操作日志
  191. MeterMonitorNote monitorNote = new MeterMonitorNote();
  192. monitorNote.baseSpotNo = actualFirst2.baseSpotNo;
  193. monitorNote.baseSpotName = actualFirst2.baseSpotName;
  194. monitorNote.operationContent = string.Format("产生一次计量数据和结净数据");
  195. monitorNote.operationTime = actualFirst2.createTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  196. monitorNote.carNo = actualFirst2.carNo;
  197. monitorNote.meterNoteSource = "0";
  198. PbSomeModel<MeterWorkCarActualFirst, MeterWorkCarActual, MeterWorkPreLink, MeterMonitorNote> pbSomeModel = new PbSomeModel<MeterWorkCarActualFirst, MeterWorkCarActual, MeterWorkPreLink, MeterMonitorNote>();
  199. pbSomeModel.one = actualFirst2;
  200. pbSomeModel.two = netDb;
  201. pbSomeModel.sOne = "0"; //1保存历史皮 0不保存
  202. pbSomeModel.four = monitorNote;
  203. if (actualFirst2 != null && string.IsNullOrEmpty(actualFirst2.createManNo))
  204. {
  205. actualFirst2.createManNo = actualFirst2.baseSpotNo;
  206. actualFirst2.createManName = actualFirst2.baseSpotName;
  207. }
  208. RESTfulResult<string> rm = db.doOption<string>("meterworkcaractualfirsts", "doAddNetDj", new object[] { pbSomeModel }, 1);
  209. return rm;
  210. }
  211. /// <summary>
  212. /// 上传本地文件数据
  213. /// </summary>
  214. /// <param name="lm"></param>
  215. /// <returns></returns>
  216. internal RESTfulResult<List<DjPbModel>> doDbUpload(List<MeterWorkCarActualFirst> lm)
  217. {
  218. DbHelper db = new DbHelper();
  219. foreach (MeterWorkCarActualFirst mfirst in lm)
  220. {
  221. mfirst.dataSource = "1"; //智能终端
  222. mfirst.meterMode = "2"; //智能终端
  223. mfirst.valueFlag = "1";
  224. mfirst.isPreScale = "0"; //未匹配委托
  225. mfirst.weightType = "1";//统一给为皮重,让计量员自己去确认是毛还是皮
  226. mfirst.createManNo = "system";
  227. mfirst.createManName = "system";
  228. }
  229. RESTfulResult<List<DjPbModel>> rm = db.doOption<List<DjPbModel>>("meterworkcaractualfirstbaks", "addFirstEmergencyList", new object[] { lm }, 1);
  230. return rm;
  231. }
  232. }
  233. }