InnerFirstTareSecondlyGross.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. using Common;
  2. using MeterConditionLibrary;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace MeterSceneLibrary
  9. {
  10. public class InnerFirstTareSecondlyGross
  11. {
  12. public rtInfo MeterMethod(InnerMeterInfo scale, ResultModel<List<MeterWorkPreLink>> rmDb)
  13. {
  14. DbHelper db = new DbHelper();
  15. rtInfo rt = new rtInfo();
  16. rt.isError = false;
  17. /*
  18. ResultModel<List<MeterWorkPreLink>> rm = rmDb;
  19. //如果配置了则走下面的流程
  20. //如果存在一次计量未洁净数据,则认为是洁净计量,否则认为一次计量
  21. MeterWorkCarActualFirstService mwcfs = new MeterWorkCarActualFirstService();
  22. ResultModel<List<MeterWorkCarActualFirst>> rmX = mwcfs.doQueryWf(new MeterWorkCarActualFirst { value_flag = "0", car_no = scale.carno });
  23. if (rmX.state == "500")
  24. {
  25. rt.result = false;
  26. rt.resultInfo = "获取一次计量数据失败";
  27. rt.isError = true;
  28. }
  29. if (rm.data[0].link_code == "001021003") //计量环节为 一次计量 计量场景为先皮后毛
  30. {
  31. if (rmX.data != null && rmX.data.Count > 0)
  32. {
  33. rt.resultInfo = "已存在一次计量数据!";
  34. rt.result = false;
  35. rt.isError = true;
  36. }
  37. else
  38. {
  39. //验证是否是内倒车辆
  40. string msgInfo = "";
  41. bool isError = false;
  42. validCarCard vcc = new validCarCard();
  43. if (!vcc.ValidMethod(scale, out msgInfo, out isError))
  44. {
  45. rt.result = false;
  46. rt.isError = isError;
  47. rt.resultInfo = PbCache.msgInfo;
  48. return rt;
  49. }
  50. //验证当前皮重是否符合要求
  51. validWgt vw = new validWgt();
  52. vw.ValidMethod(new PreTrackScale { car_no = scale.carno });
  53. if (!PbCache.monitorResult.valid_wgt)
  54. {
  55. rt.result = false;
  56. rt.isError = false;
  57. return rt;
  58. }
  59. //保存皮重信息***********************
  60. MeterWorkCarActualFirst mwaf = new MeterWorkCarActualFirst();
  61. //相同名称的均赋值一次
  62. EntityBase<InnerMeterInfo> entityBase = new EntityBase<InnerMeterInfo>();
  63. mwaf = entityBase.format<MeterWorkCarActualFirst>(scale, mwaf);
  64. mwaf.actual_first_no = DateTime.Now.ToString("yyyyMMdd");//10
  65. mwaf.meter_weight = PbCache.lockWgt;//计量重量
  66. //mwaf.add_weight = 0;//附加重量
  67. mwaf.weight_type = "1"; //0=毛重;1=常规皮重;2=期限皮重;3=历史皮重;4=标识皮重;5=自重皮重
  68. mwaf.create_man_no = "";
  69. mwaf.create_man_name = "";
  70. mwaf.create_time = DateTime.Now;
  71. mwaf.base_spot_no = PbCache.sportInfo.base_spot_no;//计量点编号
  72. mwaf.base_spot_name = PbCache.sportInfo.base_spot_name;
  73. mwaf.memo = "";
  74. mwaf.value_flag = "0"; //0有效
  75. mwaf.update_man_name = "";
  76. mwaf.update_man_no = "";
  77. mwaf.update_time = null;
  78. mwaf.check_flag = "0"; //0未审核
  79. mwaf.meter_mode = "2"; //智能计量
  80. MeterWorkPreLink mwpl = new MeterWorkPreLink();
  81. mwpl.pre_link_no = rm.data[0].pre_link_no;
  82. mwpl.pre_process_no = rm.data[0].pre_process_no;
  83. ResultModel<string> rmI = mwcfs.doAddInnerWf(mwaf, mwpl);
  84. if (rmI.state == "200")
  85. {
  86. rt.result = true;
  87. rt.resultInfo = "计量完成";
  88. PbCache.msgInfo = "计量完成";
  89. PbCache.actualFirstNo = rmI.data;
  90. }
  91. else
  92. {
  93. rt.result = false;
  94. rt.isError = true;
  95. rt.resultInfo = "服务端执行失败,计量失败:" + rmI.msgInfo;
  96. }
  97. }
  98. }
  99. else if (rm.data[0].link_code == "001021005") //计量环节为 洁净 计量场景为先皮后毛
  100. {
  101. if (rmX.data == null || rmX.data.Count == 0)
  102. {
  103. rt.resultInfo = "未找到一次计量数据!";
  104. rt.result = false;
  105. rt.isError = false;
  106. }
  107. else if (rmX.data.Count == 1)
  108. {
  109. //则走其他的验证,比如与历史皮重验证,与其他的信息验证,若验证都通过则保存一次计量信息
  110. MeterWorkCarActualFirst first = rmX.data[0];
  111. if (first.weight_type == "0") //一次为毛重,那么毛毛不能结合
  112. {
  113. rt.result = false;
  114. rt.isError = false;
  115. }
  116. else //一次为皮重,那么当前是毛重 走先皮后毛流程
  117. {
  118. //验证两次计量时间间隔
  119. validTimeInterval vti = new validTimeInterval();
  120. vti.ValidMethod(new PreTrackScale { meter_type_no = scale.meter_type_no }, "3", first);
  121. if (!PbCache.monitorResult.valid_time_interval)
  122. {
  123. rt.result = false;
  124. rt.isError = true;
  125. rt.resultInfo = PbCache.msgInfo;
  126. return rt;
  127. }
  128. //验证物料时间段
  129. validMatTime vmt = new validMatTime();
  130. vmt.ValidMethod(new PreTrackScale { matter_no = scale.matter_no }, "1");
  131. if (!PbCache.monitorResult.valid_mat_time)
  132. {
  133. rt.result = false;
  134. rt.isError = true;
  135. rt.resultInfo = PbCache.msgInfo;
  136. return rt;
  137. }
  138. //====所有验证均通过后,此时进行洁净=====================
  139. //保存皮重信息 即:二次计量信息***********************
  140. MeterWorkCarActualFirst secondDb = new MeterWorkCarActualFirst();
  141. //相同名称的均赋值一次
  142. EntityBase<InnerMeterInfo> entityBase = new EntityBase<InnerMeterInfo>();
  143. secondDb = entityBase.format<MeterWorkCarActualFirst>(scale, secondDb);
  144. secondDb.actual_first_no = DateTime.Now.ToString("yyyyMMdd");//10
  145. secondDb.meter_weight = PbCache.lockWgt;//计量重量
  146. secondDb.add_weight = first.add_weight;//附加重量
  147. secondDb.weight_type = "0"; //0=毛重;1=常规皮重;2=期限皮重;3=历史皮重;4=标识皮重;5=自重皮重
  148. secondDb.create_man_no = "";
  149. secondDb.create_man_name = "";
  150. secondDb.create_time = DateTime.Now;
  151. secondDb.base_spot_no = PbCache.sportInfo.base_spot_no;//计量点编号
  152. secondDb.base_spot_name = PbCache.sportInfo.base_spot_name;
  153. secondDb.memo = "";
  154. secondDb.value_flag = "0"; //0有效
  155. secondDb.update_man_name = "";
  156. secondDb.update_man_no = "";
  157. secondDb.update_time = null;
  158. secondDb.check_flag = "0"; //0未审核
  159. secondDb.meter_mode = "2"; //智能计量
  160. //环节信息
  161. MeterWorkPreLink link = new MeterWorkPreLink();
  162. link.pre_link_no = rm.data[0].pre_link_no;
  163. link.pre_process_no = rm.data[0].pre_process_no;
  164. //洁净数据
  165. MeterWorkCarActual netDb = new MeterWorkCarActual();
  166. EntityBase<InnerMeterInfo> entityActual = new EntityBase<InnerMeterInfo>();
  167. netDb = entityBase.format<MeterWorkCarActual>(scale, netDb);
  168. netDb.actual_first1_no = first.actual_first_no; //皮重计量作业编号
  169. netDb.gross_time = DateTime.Now;
  170. netDb.gross_weight = PbCache.lockWgt;
  171. netDb.base_spot1_no = PbCache.sportInfo.base_spot_no;
  172. netDb.base_spot1_name = PbCache.sportInfo.base_spot_name;
  173. netDb.gross_mode = "2";//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  174. //netDb.actual_first2_no = ""; //皮重计量作业编号
  175. netDb.tare_weight = first.meter_weight; //皮重
  176. netDb.tare_time = first.create_time;
  177. netDb.base_spot2_no = first.base_spot_no; //毛重计量点编号
  178. netDb.base_spot2_name = first.base_spot_name; //毛重计量点
  179. netDb.tare_mode = first.meter_mode;//1:远程计量;2:智能计量;3:手工录入;4:放行智能计量;5:滞后匹配
  180. netDb.tare_man_no = first.create_man_no;
  181. netDb.tare_man_name = first.create_man_name;
  182. netDb.tare_class = first.meter_class;
  183. netDb.tare_group = first.meter_group;
  184. //净重=毛-皮-附加重量
  185. netDb.net_weight = netDb.gross_weight - netDb.tare_weight - (first.add_weight == null ? 0 : first.add_weight.Value);
  186. netDb.net_mode = "1"; //1:正常结净;2:匹配结净
  187. netDb.value_flag = "0"; //0=有效,1=作废
  188. netDb.upload_flag = "0"; //0=待审核;1:待上传;2=已上传
  189. ResultModel<string> rmI = mwcfs.doAddNetInnerWf(secondDb, netDb, link);
  190. if (rmI.state == "200")
  191. {
  192. rt.result = true;
  193. rt.resultInfo = "计量完成";
  194. PbCache.msgInfo = "计量完成";
  195. PbCache.actualFirstNo = rmI.data;
  196. }
  197. else
  198. {
  199. rt.result = false;
  200. rt.isError = true;
  201. rt.resultInfo = "服务端执行失败,计量失败:" + rmI.msgInfo;
  202. }
  203. }
  204. }
  205. else
  206. {
  207. rt.resultInfo = "找到多条一次计量数据!";
  208. rt.result = false;
  209. rt.isError = true;
  210. }
  211. }
  212. //*/
  213. return rt;
  214. }
  215. }
  216. }