锐腾搅拌上料功能
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

418 lines
20 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Windows.Forms;
  5. using DevExpress.XtraEditors;
  6. using ICSSoft.Base.Config.AppConfig;
  7. using ICSSoft.Base.Config.DBHelper;
  8. using ICSSoft.Base.ReferForm.AppReferForm;
  9. using ICSSoft.Frame.Data.Entity;
  10. using ICSSoft.Frame.Data.BLL;
  11. namespace ICSSoft.Frame.APP
  12. {
  13. public partial class FormICSHeatTreatmentAdd : DevExpress.XtraEditors.XtraForm
  14. {
  15. int flag;
  16. string ID;
  17. string Transno;
  18. string EQPCode;
  19. private DataTable data =new DataTable();
  20. ICSOpFile entity = new ICSOpFile();
  21. #region 构造函数
  22. public FormICSHeatTreatmentAdd()
  23. {
  24. InitializeComponent();
  25. flag = 0;
  26. }
  27. public FormICSHeatTreatmentAdd(string id, string transno,string eqpcode)
  28. {
  29. InitializeComponent();
  30. flag = 1;
  31. ID = id;
  32. EQPCode = eqpcode;
  33. Transno = transno;
  34. }
  35. #endregion
  36. #region 关闭 退出
  37. private void btnClose_Click(object sender, EventArgs e)
  38. {
  39. this.Close();
  40. }
  41. #endregion
  42. #region 移动窗体
  43. private const int WM_NCHITTEST = 0x84;
  44. private const int HTCLIENT = 0x1;
  45. private const int HTCAPTION = 0x2;
  46. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  47. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  48. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  49. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  50. //重写窗体,使窗体可以不通过自带标题栏实现移动
  51. protected override void WndProc(ref Message m)
  52. {
  53. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  54. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  55. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  56. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  57. switch (m.Msg)
  58. {
  59. case WM_NCHITTEST:
  60. base.WndProc(ref m);
  61. if ((int)m.Result == HTCLIENT)
  62. m.Result = (IntPtr)HTCAPTION;
  63. return;
  64. }
  65. //拦截双击标题栏、移动窗体的系统消息
  66. if (m.Msg != 0xA3)
  67. {
  68. base.WndProc(ref m);
  69. }
  70. }
  71. #endregion
  72. #region 保存
  73. private void save_Click(object sender, EventArgs e)
  74. {
  75. entity.MUSER = AppConfig.UserId;
  76. entity.MUSERName = AppConfig.UserName;
  77. entity.MTIME = Convert.ToDateTime(AppConfig.GetSeverDateTime("yyyy-MM-dd hh:mm:ss").ToString());
  78. string mocode = "";
  79. string moseq = "";
  80. string eqpcode = "";
  81. string mover = "";
  82. string eqpname = "";
  83. try
  84. {
  85. List<ICSOpFile> modelList = new List<ICSOpFile>();
  86. ICSOpFile model = new ICSOpFile();
  87. if (txtEQPCode.Text.Trim() == "")
  88. {
  89. ICSBaseSimpleCode.AppshowMessageBox("设备号不能为空!!!");
  90. return;
  91. }
  92. if (!string.IsNullOrEmpty(ID) && gridView4.RowCount <= 0)
  93. {
  94. ICSBaseSimpleCode.AppshowMessageBox("产品跟踪单信息不能为空!!!");
  95. return;
  96. }
  97. if (data.Rows.Count>0)
  98. {
  99. #region 表中有值
  100. for (int i = 0; i < data.Rows.Count; i++)
  101. {
  102. //if (mocode != gridView4.GetRowCellValue(i, colMOCODE).ToString() || moseq != gridView4.GetRowCellValue(i, colMOSEQ).ToString() ||
  103. // eqpcode != gridView4.GetRowCellValue(i, colEQPCode).ToString() || mover != gridView4.GetRowCellValue(i, colMOVER).ToString() ||
  104. // eqpname != gridView4.GetRowCellValue(i, colEQPName).ToString()
  105. // )
  106. //{
  107. // if (i > 0)
  108. // {
  109. // modelList.Add(model);
  110. // model = new ICSOpFile();
  111. // }
  112. // mocode = gridView4.GetRowCellValue(i, colMOCODE).ToString();
  113. // moseq = gridView4.GetRowCellValue(i, colMOSEQ).ToString();
  114. // eqpcode = gridView4.GetRowCellValue(i, colEQPCode).ToString();
  115. // mover = gridView4.GetRowCellValue(i, colMOVER).ToString();
  116. // eqpname = gridView4.GetRowCellValue(i, colEQPName).ToString();
  117. // model.MOCODE = mocode;
  118. // model.MOSEQ = moseq;
  119. // model.EQPCode = eqpcode;
  120. // model.EATTRIBUTE2 =mover; //零件号
  121. // model.EATTRIBUTE3 = eqpname;//设备名称
  122. //}
  123. //else
  124. //{
  125. if (model.LOTNOs != null)
  126. {
  127. model.LOTNOs += gridView4.GetRowCellValue(i, colLotNO).ToString() + ";";
  128. if (!model.MOCODE.Contains(data.Rows[i]["MOCODE"].ToString()))
  129. {
  130. model.MOCODE += gridView4.GetRowCellValue(i, colMOCODE).ToString() + ";";
  131. }
  132. if (!model.MOSEQ.Contains(data.Rows[i]["MOSEQ"].ToString()))
  133. {
  134. model.MOSEQ += gridView4.GetRowCellValue(i, colMOSEQ).ToString() + ";";
  135. }
  136. if (!model.EQPCode.Contains(data.Rows[i]["EQPCode"].ToString()))
  137. {
  138. model.EQPCode += gridView4.GetRowCellValue(i, colEQPCode).ToString() + ";";
  139. }
  140. if (!model.EATTRIBUTE2.Contains(data.Rows[i]["VenderLotNo"].ToString()))
  141. {
  142. model.EATTRIBUTE2 += gridView4.GetRowCellValue(i, gridColumn11).ToString() + ";";
  143. }
  144. if (!model.EATTRIBUTE3.Contains(data.Rows[i]["EQPName"].ToString()))
  145. {
  146. model.EATTRIBUTE3 += gridView4.GetRowCellValue(i, colEQPName).ToString() + ";";
  147. }
  148. }
  149. else
  150. {
  151. model.MOCODE += gridView4.GetRowCellValue(i, colMOCODE).ToString() + ";";
  152. model.MOSEQ += gridView4.GetRowCellValue(i, colMOSEQ).ToString() + ";";
  153. model.EQPCode += gridView4.GetRowCellValue(i, colEQPCode).ToString() + ";";
  154. model.EATTRIBUTE2 += gridView4.GetRowCellValue(i, gridColumn11).ToString() + ";";
  155. model.EATTRIBUTE3 += gridView4.GetRowCellValue(i, colEQPName).ToString() + ";";
  156. model.LOTNOs += gridView4.GetRowCellValue(i, colLotNO).ToString() + ";";
  157. }
  158. //}
  159. }
  160. #endregion
  161. }
  162. else
  163. {
  164. model.EQPCode = txtEQPCode.Text.Trim();
  165. model.EATTRIBUTE3= txtEQPName.Text.Trim();
  166. }
  167. model.ID = AppConfig.GetGuid();
  168. //model.MOCODE = txtMOCode.Text.Trim();
  169. //model.MOSEQ = Convert.ToInt16(txtMORow.Text.Trim());
  170. //model.EQPCode = txtEQPCode.Text.Trim();
  171. model.MUSER = AppConfig.UserId;
  172. model.MUSERName = AppConfig.UserName;
  173. model.MTIME = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  174. model.WorkPoint = AppConfig.WorkPointCode;
  175. modelList.Add(model);
  176. if (modelList.Count <= 0)
  177. {
  178. ICSBaseSimpleCode.AppshowMessageBox("请选择数据!!!");
  179. return;
  180. }
  181. if (flag == 0)
  182. {
  183. //ICSHeatTreatmentBLL.AddList(modelList, AppConfig.AppConnectString);
  184. ICSBaseSimpleCode.AppshowMessageBox("炉号新增成功!!!");
  185. this.Close();
  186. this.DialogResult = DialogResult.Yes;
  187. }
  188. else if (flag == 1)
  189. {
  190. //ICSHeatTreatmentBLL.AddSample(modelList, ID, Transno, AppConfig.AppConnectString);
  191. ICSBaseSimpleCode.AppshowMessageBox("试样号新增成功!!!");
  192. this.Close();
  193. this.DialogResult = DialogResult.Yes;
  194. }
  195. }
  196. catch (Exception ex)
  197. {
  198. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  199. }
  200. }
  201. #endregion
  202. #region 取消
  203. private void can_Click(object sender, EventArgs e)
  204. {
  205. this.Close();
  206. }
  207. #endregion
  208. #region 双击
  209. private void grdDetail_DoubleClick(object sender, EventArgs e)
  210. {
  211. try
  212. {
  213. if (grdDetail.FocusedRowHandle < 0)
  214. {
  215. return;
  216. }
  217. if (txtMOCode.Text == "")
  218. {
  219. ICSBaseSimpleCode.AppshowMessageBox("工单号不能为空!");
  220. return;
  221. }
  222. if (txtEQPCode.Text == "")
  223. {
  224. ICSBaseSimpleCode.AppshowMessageBox("设备号不能为空!");
  225. return;
  226. }
  227. if (grdDetail.FocusedColumn == colisSelect)
  228. {
  229. if (grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colisSelect).ToString() == "")
  230. {
  231. grdDetail.SetRowCellValue(grdDetail.FocusedRowHandle, colisSelect, "Y");
  232. DataRow[] drs = data.Select("LotNO='" + grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colLotNO).ToString() + "'");
  233. if (drs.Length<=0)
  234. {
  235. DataRow dr = data.NewRow();
  236. dr["LotNO"] = grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colLotNO).ToString();
  237. dr["ItemCode"] = grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colMCODE).ToString();
  238. dr["INVNAME"] = grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colINVNAME).ToString();
  239. dr["INVSTD"] = grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colINVSTD).ToString();
  240. dr["INVUOM"] = grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colINVUOM).ToString();
  241. dr["num"] = grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colnum).ToString();
  242. dr["VenderLotNo"] = grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colVenderLotNo).ToString();
  243. dr["INVEXPORTIMPORT"] = grdDetail.GetRowCellValue(grdDetail.FocusedRowHandle, colINVEXPORTIMPORT).ToString();
  244. dr["MOCODE"] = txtMOCode.Text.Trim();
  245. dr["MOVER"] = txtMoverCode.Text.Trim();
  246. dr["EQPCODE"] = txtEQPCode.Text.Trim();
  247. dr["EQPName"] = txtEQPName.Text.Trim();
  248. dr["MOSEQ"] = txtMORow.Text.Trim();
  249. data.Rows.Add(dr);
  250. gridControl1.DataSource = data;
  251. }
  252. }
  253. else
  254. {
  255. grdDetail.SetRowCellValue(grdDetail.FocusedRowHandle, colisSelect, "");
  256. }
  257. }
  258. }
  259. catch (Exception ex)
  260. {
  261. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  262. }
  263. }
  264. #endregion
  265. #region 页面加载
  266. private void FormICSItenLotAdd_Load(object sender, EventArgs e)
  267. {
  268. init();
  269. load();
  270. //新增试样号,设备号不可选
  271. if (!string.IsNullOrEmpty(EQPCode))
  272. {
  273. txtEQPCode.Text = EQPCode;
  274. txtEQPCode.Enabled = false;
  275. }
  276. }
  277. #endregion
  278. #region 初始化查询条件
  279. private void init()
  280. {
  281. string sql = @" SELECT MOCODE+'-'+MOSEQ AS 工单,MOCODE AS 工单号,MOSEQ AS 生产订单行号,ITEMCODE AS 存货编码,b.INVNAME AS 存货名称,MOPLANQTY AS 工单数量,b.INVSTD AS 规格型号,
  282. MOVER AS ,MOTYPE AS
  283. FROM ICSMO a
  284. INNER JOIN ICSINVENTORY b ON a.ITEMCODE=b.INVCODE ORDER BY MOCODE,MOSEQ";
  285. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  286. txtMOCode.Properties.ValueMember = "工单";
  287. txtMOCode.Properties.DisplayMember = "工单号";
  288. txtMOCode.Properties.DataSource = dt;
  289. txtMOCode.Properties.NullText = "";//空时的值
  290. txtMOCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  291. txtMOCode.Properties.ValidateOnEnterKey = true;//回车确认
  292. txtMOCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  293. txtMOCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  294. //自适应宽度
  295. txtMOCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  296. #region 设备
  297. sql = @"select EQPCode as 设备号,EQPName as 设备名称
  298. from ICSEquipment";
  299. dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  300. txtEQPCode.Properties.ValueMember = "设备号";
  301. txtEQPCode.Properties.DisplayMember = "设备号";
  302. txtEQPCode.Properties.DataSource = dt;
  303. txtEQPCode.Properties.NullText = "";//空时的值
  304. txtEQPCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  305. txtEQPCode.Properties.ValidateOnEnterKey = true;//回车确认
  306. txtEQPCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  307. txtEQPCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  308. //自适应宽度
  309. txtEQPCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  310. #endregion
  311. }
  312. #endregion
  313. #region 工单号改变
  314. private void txtMOCode_EditValueChanged(object sender, EventArgs e)
  315. {
  316. try
  317. {
  318. GridLookUpEdit edit = sender as GridLookUpEdit;
  319. if (edit.EditValue != null && edit.EditValue.ToString() != "" && edit.EditValue.ToString() != "nulltext")
  320. {
  321. var o = edit.Properties.GetRowByKeyValue(edit.EditValue);
  322. if (o is DataRowView)
  323. {
  324. DataRowView RowView = o as DataRowView;
  325. txtMORow.Text = RowView.Row["生产订单行号"].ToString();
  326. txtCode.Text = RowView.Row["存货编码"].ToString();
  327. txtcInvName.Text = RowView.Row["存货名称"].ToString();
  328. txtMoverCode.Text = RowView.Row["零件号"].ToString();
  329. txtcInvStd.Text = RowView.Row["规格型号"].ToString();
  330. txtMOType.Text = RowView.Row["工单类型"].ToString();
  331. txtiQuantity.Text = RowView.Row["工单数量"].ToString();
  332. string sql = @"SELECT '' as isSelect,a.LotNO,a.ItemCode,b.INVNAME,b.INVSTD,a.LOTQTY,b.INVUOM,
  333. CONVERT(NUMERIC(10,3),(a.LOTQTY*a.EATTRIBUTE3)) AS num,b.INVEXPORTIMPORT,
  334. a.VenderLotNO as VenderLotNo
  335. FROM ICSITEMLot a
  336. INNER JOIN ICSINVENTORY b ON a.ItemCode=b.INVCODE
  337. WHERE a.TransNO='{0}' AND a.TransLine='{1}' AND ISNULL(a.EATTRIBUTE6, '')<>''
  338. ORDER BY a.LotNO";
  339. sql = string.Format(sql, txtMOCode.Text.Trim(), txtMORow.Text.Trim());
  340. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  341. grvDetail.DataSource = dt;
  342. grdDetail.BestFitColumns();
  343. }
  344. }
  345. }
  346. catch (Exception ex)
  347. {
  348. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  349. }
  350. }
  351. #endregion
  352. #region 设备号改变
  353. private void txtEQPCode_EditValueChanged(object sender, EventArgs e)
  354. {
  355. try
  356. {
  357. string Code = txtEQPCode.Text.ToString();
  358. string sql = @"select EQPCode as 设备号,EQPName as 设备名称
  359. from ICSEquipment
  360. WHERE EQPCode='{0}'";
  361. sql = string.Format(sql, Code);
  362. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  363. if (dt != null && dt.Rows.Count > 0)
  364. {
  365. txtEQPName.Text = dt.Rows[0]["设备名称"].ToString();
  366. }
  367. }
  368. catch (Exception ex)
  369. {
  370. ICSBaseSimpleCode.AppshowMessageBox(ex.ToString());
  371. }
  372. }
  373. #endregion
  374. private void load()
  375. {
  376. string sql = @"SELECT '' as isSelect,a.LotNO,a.ItemCode,b.INVNAME,b.INVSTD,a.LOTQTY,b.INVUOM,CONVERT(NUMERIC(10,3),(a.LOTQTY*a.EATTRIBUTE3)) AS num,b.INVEXPORTIMPORT
  377. ,c.MOCODE,a.VenderLotNO as VenderLotNo,c.MOVER,a.EATTRIBUTE1 as EQPCODE,a.EATTRIBUTE2 as EQPName,c.MOSEQ
  378. FROM ICSITEMLot a
  379. INNER JOIN ICSINVENTORY b ON a.ItemCode=b.INVCODE
  380. LEFT JOIN ICSMO c ON a.TransNO=c.MOCODE AND a.TransLine=c.MOSEQ
  381. WHERE 1!=1
  382. ORDER BY a.LotNO";
  383. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  384. data = dt;
  385. }
  386. #region 删除
  387. private void repositoryItemButtonEdit1_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
  388. {
  389. gridView4.DeleteRow(gridView4.FocusedRowHandle);
  390. }
  391. #endregion
  392. }
  393. }