frmCraneScaleDb.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. using com.hnshituo.core.webapp.vo;
  2. using Common;
  3. using Infragistics.Win;
  4. using Infragistics.Win.UltraWinGrid;
  5. using JC_MeasuringSystem;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.ComponentModel;
  9. using System.Data;
  10. using System.Drawing;
  11. using System.Linq;
  12. using System.Text;
  13. using System.Threading.Tasks;
  14. using System.Windows.Forms;
  15. namespace CraneScaleSystem
  16. {
  17. public partial class frmCraneScaleDb : Form
  18. {
  19. public frmCraneScaleDb()
  20. {
  21. InitializeComponent();
  22. ClsControlPack.ShowGridCaption<MeterWorkCraneActual>(ultraGridYb.DisplayLayout.Bands[0]);
  23. }
  24. private CoreAppUser userinfo = null;
  25. MeterWorkCarActualFirstService firstService = new MeterWorkCarActualFirstService();
  26. MeterWorkCraneActualService craneActualService = new MeterWorkCraneActualService();
  27. private void frmCraneScaleDb_Load(object sender, EventArgs e)
  28. {
  29. userinfo = ((ST_MainForm)(this.MdiParent)).AppUser;
  30. ClsControlPack.SetUltraGridRowFilter(ref ultraGridYb, true);
  31. ValueList vValid = new ValueList(); //状态(0=作废,1=有效,2=结净)
  32. vValid.ValueListItems.Add("2", "生成");
  33. vValid.ValueListItems.Add("1", "有效");
  34. vValid.ValueListItems.Add("0", "作废");
  35. ultraGridYb.DisplayLayout.Bands[0].Columns["valueFlag"].ValueList = vValid.Clone();
  36. ValueList vValidFst = new ValueList(); //状态(0=作废,1=有效,2=结净)
  37. vValidFst.ValueListItems.Add("2", "校磅");
  38. vValidFst.ValueListItems.Add("1", "皮重");
  39. vValidFst.ValueListItems.Add("0", "毛重");//weightType
  40. ultraGridYb.DisplayLayout.Bands[0].Columns["weightType"].ValueList = vValidFst.Clone();
  41. }
  42. private void btnQuery_Click(object sender, EventArgs e)
  43. {
  44. doQuery();
  45. }
  46. private void doQuery()
  47. {
  48. MeterWorkCraneActual mwca = new MeterWorkCraneActual();
  49. mwca.startTime = Convert.ToDateTime($"{DateTime.Now.ToString("yyyy")}-01-01 00:00:00");
  50. mwca.endTime = DateTime.Now;
  51. mwca.valueFlag = "1";
  52. //mwca.weightType = "0"; //实际上需要生成1次数据的只有毛重数据
  53. RESTfulResult<List<MeterWorkCraneActual>> result = craneActualService.doQueryWf(mwca);
  54. if (result.Succeed)
  55. {
  56. if (result.Data == null || result.Data.Count == 0)
  57. {
  58. meterWorkCraneActualBindingSource.DataSource = new List<MeterWorkCraneActual>();
  59. CleanForm();
  60. }
  61. else
  62. {
  63. meterWorkCraneActualBindingSource.DataSource = result.Data;//.Where(s => s.weightType != "1").ToList();
  64. }
  65. ClsControlPack.RefreshAndAutoSize(ultraGridYb, true);
  66. }
  67. else
  68. {
  69. MessageBox.Show("查询失败:" + result.ResultMessage);
  70. }
  71. }
  72. private void btnCreateFirstDb_Click(object sender, EventArgs e)
  73. {
  74. if (!(meterWorkCraneActualBindingSource.DataSource is List<MeterWorkCraneActual>))
  75. return;
  76. //操作日志
  77. MeterMonitorNote monitorNote = new MeterMonitorNote();
  78. monitorNote.baseSpotNo = "";
  79. monitorNote.baseSpotName = "贵金属吊钩秤";
  80. monitorNote.operationContent = "贵金属数据生成";
  81. monitorNote.operationTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  82. monitorNote.meterManNo = userinfo.userid;
  83. monitorNote.meterManName = userinfo.username;
  84. monitorNote.meterNoteSource = "0";
  85. string msg = "";
  86. string sPreNo = "";
  87. List<MeterWorkCraneActual> lmwca = (List<MeterWorkCraneActual>)meterWorkCraneActualBindingSource.DataSource;
  88. foreach (MeterWorkCraneActual actual in lmwca)
  89. {
  90. if (actual.weightType == "0")
  91. {
  92. if (sPreNo != actual.predictionNo)
  93. {
  94. monitorNote.carNo = actual.carNo;
  95. MeterWorkCarActualFirst first = new MeterWorkCarActualFirst();
  96. //相同名称的均赋值一次
  97. EntityBase<MeterWorkCraneActual> entityBase = new EntityBase<MeterWorkCraneActual>();
  98. first = entityBase.format<MeterWorkCarActualFirst>(actual, first);
  99. first.meterNum = lmwca.Where(s => s.weightType == "0" && s.predictionNo == actual.predictionNo).Count();
  100. first.meterWeight = lmwca.Where(s => s.weightType == "0" && s.predictionNo == actual.predictionNo).Sum(s => s.meterWeight);
  101. //执行一次生成,然后再赋值,继续下一轮
  102. RESTfulResult<string> res = firstService.doCraneDbWf(first, monitorNote);
  103. if (!res.Succeed)
  104. {
  105. msg = "生成异常:"+res.ResultMessage;
  106. break;
  107. }
  108. sPreNo = actual.predictionNo;
  109. }
  110. }
  111. }
  112. if (!string.IsNullOrEmpty(msg))
  113. {
  114. MessageBox.Show(msg);
  115. }
  116. doQuery();
  117. }
  118. private void ultraGridYb_AfterRowActivate(object sender, EventArgs e)
  119. {
  120. UltraGridRow ugr = ultraGridYb.ActiveRow;
  121. if (ugr != null)
  122. {
  123. foreach (UltraGridCell uc in ugr.Cells)
  124. {
  125. foreach (Control cn in gbBottom.Controls)
  126. {
  127. if (cn is TextBox)
  128. {
  129. if (cn.Name.Substring(3).ToLower() == uc.Column.Key.ToLower())
  130. {
  131. cn.Text = uc.Text;
  132. break;
  133. }
  134. }
  135. }
  136. }
  137. }
  138. }
  139. private void CleanForm()
  140. {
  141. foreach (Control cn in gbBottom.Controls)
  142. {
  143. if (cn is TextBox)
  144. {
  145. cn.Text = "";
  146. }
  147. }
  148. }
  149. private void btnCreateNetDB_Click(object sender, EventArgs e)
  150. {
  151. if (!(meterWorkCraneActualBindingSource.DataSource is List<MeterWorkCraneActual>))
  152. return;
  153. //操作日志
  154. MeterMonitorNote monitorNote = new MeterMonitorNote();
  155. monitorNote.baseSpotNo = "";
  156. monitorNote.baseSpotName = "贵金属吊钩秤";
  157. monitorNote.operationContent = "贵金属数据二次生成";
  158. monitorNote.operationTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
  159. monitorNote.meterManNo = userinfo.userid;
  160. monitorNote.meterManName = userinfo.username;
  161. monitorNote.meterNoteSource = "0";
  162. string msg = "";
  163. string sPreNo = "";
  164. List<MeterWorkCraneActual> lmwca = (List<MeterWorkCraneActual>)meterWorkCraneActualBindingSource.DataSource;
  165. foreach (MeterWorkCraneActual actual in lmwca)
  166. {
  167. if (actual.weightType == "1")
  168. {
  169. if (sPreNo != actual.predictionNo)
  170. {
  171. RESTfulResult<List<MeterWorkCarActualFirst>> resx = firstService.doQueryByCarNo(new MeterWorkCarActualFirst { predictionNo = actual.predictionNo, carNo = actual.carNo, baseSpotNo = "00018", valueFlag = "1" });
  172. if (resx.Succeed)
  173. {
  174. if (resx.Data != null && resx.Data.Count > 0)
  175. {
  176. monitorNote.carNo = actual.carNo;
  177. MeterWorkCarActualFirst first = new MeterWorkCarActualFirst();
  178. //相同名称的均赋值一次
  179. EntityBase<MeterWorkCraneActual> entityBase = new EntityBase<MeterWorkCraneActual>();
  180. first = entityBase.format<MeterWorkCarActualFirst>(actual, first);
  181. //这个重量应该是汽车一次表中同预报编号,未结净的车信息的meterNum值*(当前重量/件数),然后取整
  182. first.meterWeight = int.Parse(((actual.meterWeight / actual.meterNum) * first.meterNum) + "");
  183. MeterWorkCarActual netDb = new MeterWorkCarActual();
  184. EntityBase<MeterWorkCraneActual> entityB = new EntityBase<MeterWorkCraneActual>();
  185. netDb = entityBase.format<MeterWorkCarActual>(actual, netDb);
  186. netDb.netTime = DateTime.Now;
  187. netDb.netManNo = userinfo.userid;
  188. netDb.netManName = userinfo.username;
  189. netDb.netWeight = resx.Data[0].meterWeight - first.meterWeight;
  190. netDb.actualFirst1No = resx.Data[0].actualFirstNo;
  191. netDb.netSpot3No = first.baseSpotNo;
  192. netDb.netSpot3Name = first.baseSpotName;
  193. netDb.grossMode = "1";
  194. netDb.tareMode = "1";
  195. netDb.grossManNo = resx.Data[0].createManNo;
  196. netDb.grossManName = resx.Data[0].createManName;
  197. netDb.grossTime = resx.Data[0].createTime;
  198. netDb.grossWeight = resx.Data[0].meterWeight;
  199. netDb.baseSpot1No = resx.Data[0].baseSpotNo;
  200. netDb.baseSpot1Name = resx.Data[0].baseSpotName;
  201. netDb.tareManNo = first.createManNo;
  202. netDb.tareManName = first.createManName;
  203. netDb.tareTime = first.createTime;
  204. netDb.tareWeight = first.meterWeight;
  205. netDb.valueFlag = "0";
  206. netDb.netMode = "1";
  207. netDb.baseSpot2No = first.baseSpotNo;
  208. netDb.baseSpot2Name = first.baseSpotName;
  209. netDb.uploadFlag = "0";
  210. netDb.netManNo = first.createManNo; //净重计量员编码
  211. netDb.netManName = first.createManName; //净重计量员名称
  212. netDb.netSpot3No = PbCache.sportInfo.baseSpotNo; //净重计量点编号
  213. netDb.netSpot3Name = PbCache.sportInfo.baseSpotName; //净重计量点
  214. //执行一次生成,然后再赋值,继续下一轮
  215. RESTfulResult<string> res = firstService.doCraneNetDbWf(first, netDb, monitorNote);
  216. if (!res.Succeed)
  217. {
  218. msg = "生成异常:" + res.ResultMessage;
  219. break;
  220. }
  221. sPreNo = actual.predictionNo;
  222. }
  223. }
  224. }
  225. }
  226. }
  227. if (!string.IsNullOrEmpty(msg))
  228. {
  229. MessageBox.Show(msg);
  230. }
  231. doQuery();
  232. }
  233. }
  234. }