华恒Mes鼎捷代码
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.

408 lines
15 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using DevExpress.XtraEditors;
  9. using ICSSoft.Frame.User.BLL;
  10. using ICSSoft.Base.Language.Tool;
  11. using ICSSoft.Base.UserControl.MessageControl;
  12. using ICSSoft.Frame.Data.BLL;
  13. using System.Data.SqlClient;
  14. using ICSSoft.Base.Config.AppConfig;
  15. using ICSSoft.Frame.Data.Entity;
  16. using ICSSoft.Base.Report.Filter;
  17. using ICSSoft.Base.Config.DBHelper;
  18. using ICSSoft.Base.UserControl.FormControl;
  19. using ICSSoft.Base.ReferForm.AppReferForm;
  20. namespace ICSSoft.Frame.APP
  21. {
  22. public partial class FormICSOPBOMDETAIL : DevExpress.XtraEditors.XtraForm
  23. {
  24. private string sqltxt = "";
  25. private string sqlconn = "";
  26. String guid = AppConfig.GetGuid();
  27. private DataTable dataSource = null;
  28. string itemid = null;
  29. string routeid = null;
  30. string opid = null;
  31. string opbomver = null;
  32. string workpoint = null;
  33. #region 构造函数
  34. public FormICSOPBOMDETAIL()
  35. {
  36. InitializeComponent();
  37. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  38. this.WindowState = FormWindowState.Maximized;
  39. }
  40. #endregion
  41. public FormICSOPBOMDETAIL(string INVCODE)
  42. {
  43. InitializeComponent();
  44. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  45. this.WindowState = FormWindowState.Maximized;
  46. }
  47. public FormICSOPBOMDETAIL(string ITEMID,string ROUTEID,string OPID ,string WORKPOINT)
  48. {
  49. itemid = ITEMID;
  50. routeid = ROUTEID;
  51. opid = OPID;
  52. workpoint = WORKPOINT;
  53. InitializeComponent();
  54. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  55. this.WindowState = FormWindowState.Maximized;
  56. }
  57. #region 移动窗体
  58. private const int WM_NCHITTEST = 0x84;
  59. private const int HTCLIENT = 0x1;
  60. private const int HTCAPTION = 0x2;
  61. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  62. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  63. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  64. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  65. //重写窗体,使窗体可以不通过自带标题栏实现移动
  66. protected override void WndProc(ref Message m)
  67. {
  68. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  69. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  70. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  71. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  72. switch (m.Msg)
  73. {
  74. case WM_NCHITTEST:
  75. base.WndProc(ref m);
  76. if ((int)m.Result == HTCLIENT)
  77. m.Result = (IntPtr)HTCAPTION;
  78. return;
  79. }
  80. //拦截双击标题栏、移动窗体的系统消息
  81. if (m.Msg != 0xA3)
  82. {
  83. base.WndProc(ref m);
  84. }
  85. }
  86. #endregion
  87. #region SystemOptition
  88. /// <summary>
  89. /// 操作权限
  90. /// </summary>
  91. /// <returns></returns>
  92. public DataTable RightOfExute()
  93. {
  94. DataTable rData = new DataTable();
  95. rData.Columns.Add("BtnName");
  96. rData.Columns.Add("ActionName");
  97. //查看权限(必须有)
  98. DataRow seeRow = rData.NewRow();
  99. seeRow["BtnName"] = "see";
  100. seeRow["ActionName"] = "查看";
  101. rData.Rows.Add(seeRow);
  102. List<Control> ControlList = new List<Control>();
  103. ControlList.Add(btnSelect);
  104. ControlList.Add(btnCanSelect);
  105. ControlList.Add(btnAdd);
  106. ControlList.Add(btnEdit);
  107. ControlList.Add(btnDel);
  108. ControlList.Add(btnExit);
  109. foreach (Control ctr in ControlList)
  110. {
  111. if (ctr.GetType() == typeof(SimpleButton))
  112. {
  113. DataRow dr = rData.NewRow();
  114. dr["BtnName"] = ctr.Name;
  115. dr["ActionName"] = ctr.Text;
  116. rData.Rows.Add(dr);
  117. }
  118. }
  119. rData.AcceptChanges();
  120. return rData;
  121. }
  122. /// <summary>
  123. /// 数据权限
  124. /// </summary>
  125. /// <returns></returns>
  126. public DataTable RightOfData()
  127. {
  128. DataTable rData = new DataTable();
  129. rData.Columns.Add("BodyName");
  130. rData.Columns.Add("ControlName");
  131. rData.Columns.Add("ControlCaption");
  132. rData.AcceptChanges();
  133. return rData;
  134. }
  135. #endregion
  136. #region 退出
  137. private void btnClose_Click(object sender, EventArgs e)
  138. {
  139. AppConfig.CloseFormShow(this.Text);
  140. this.Close();
  141. }
  142. private void btnExit_Click(object sender, EventArgs e)
  143. {
  144. AppConfig.CloseFormShow(this.Text);
  145. this.Close();
  146. }
  147. #endregion
  148. #region 全选
  149. private void btnSelect_Click(object sender, EventArgs e)
  150. {
  151. for (int i = 0; i < grvDetail.RowCount; i++)
  152. {
  153. grvDetail.SetRowCellValue(i, colisSelect, "Y");
  154. }
  155. btnEdit.Visible = false;
  156. btnDel.Visible = false;
  157. }
  158. #endregion
  159. #region 全消
  160. private void btnCanSelect_Click(object sender, EventArgs e)
  161. {
  162. for (int i = 0; i < grvDetail.RowCount; i++)
  163. {
  164. grvDetail.SetRowCellValue(i, colisSelect, "");
  165. }
  166. btnEdit.Visible = true;
  167. btnDel.Visible = true;
  168. }
  169. #endregion
  170. #region 列表
  171. private void grvDetail_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  172. {
  173. if (e.Info.IsRowIndicator && e.RowHandle >= 0)
  174. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  175. }
  176. #endregion
  177. #region 新增
  178. //private void btnAdd_Click(object sender, EventArgs e)
  179. //{
  180. // SimpleButton btntemp = (SimpleButton)sender;
  181. // if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  182. // {
  183. // ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  184. // return;
  185. // }
  186. // FormICSStackAddEdit add = new FormICSStackAddEdit();
  187. // add.ShowDialog();
  188. // btnFalsh_Click(null, null);
  189. //}
  190. #endregion
  191. #region 编辑
  192. private void btnEdit_Click(object sender, EventArgs e)
  193. {
  194. int count = 0;
  195. for (int i = 0; i < grvDetail.RowCount; i++)
  196. {
  197. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  198. {
  199. count++;
  200. }
  201. }
  202. if (count != 1)
  203. {
  204. ICSBaseSimpleCode.AppshowMessageBox("请选择数据,且只能选择一条进行编辑!!!");
  205. btnCanSelect_Click(sender, e);
  206. return;
  207. }
  208. try
  209. {
  210. for (int i = 0; i < grvDetail.RowCount; i++)
  211. {
  212. string opbomver;
  213. string obitemseq;
  214. string obitemcode;
  215. string obsitemcode;
  216. string obitemuom;
  217. string obitemqty;
  218. string obitemcontype;
  219. string obvalid;
  220. string snlength;
  221. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  222. {
  223. obitemseq = grvDetail.GetRowCellValue(i, colOBITEMSEQ).ToString();
  224. obitemcode = grvDetail.GetRowCellValue(i, colOBITEMCODE).ToString();
  225. obsitemcode = grvDetail.GetRowCellValue(i, colOBSITEMCODE).ToString();
  226. obitemuom = grvDetail.GetRowCellValue(i, colOBITEMUOM).ToString();
  227. obitemqty = grvDetail.GetRowCellValue(i, colOBITEMQTY).ToString();
  228. obitemcontype = grvDetail.GetRowCellValue(i, OBITEMCONTYPE).ToString();
  229. obvalid = grvDetail.GetRowCellValue(i, colOBVALID).ToString();
  230. snlength = grvDetail.GetRowCellValue(i, colSNLENGTH).ToString();
  231. opbomver = grvDetail.GetRowCellValue(i, colOPBOMVER).ToString();
  232. FormICSOPBOMDETAILAdd add = new FormICSOPBOMDETAILAdd(itemid, routeid, opid, opbomver, workpoint , obitemseq, obitemcode, obsitemcode, obitemuom, obitemqty, obitemcontype, obvalid, snlength);
  233. add.ShowDialog();
  234. grdDetail_Load(null,null);
  235. }
  236. }
  237. btnFalsh_Click(null, null);
  238. }
  239. catch (Exception ex)
  240. {
  241. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  242. }
  243. }
  244. #endregion
  245. private void grdDetail_Click(object sender, EventArgs e)
  246. {
  247. DataTable dt = new DataTable();
  248. dt.Columns.Add();
  249. }
  250. private void btnAdd_Click(object sender, EventArgs e)
  251. {
  252. if (ICSBaseSimpleCode.AppshowMessageBoxRepose("是否从[标准BOM]表里读取数据码?[否]将自定义添加!") == DialogResult.OK)
  253. {
  254. btnCanSelect_Click(sender, e);
  255. FormICSOPSBOMAdd add = new FormICSOPSBOMAdd(itemid,routeid,opid,opbomver,workpoint);
  256. add.ShowDialog();
  257. grdDetail_Load(null,null);
  258. return;
  259. }
  260. if (ICSBaseSimpleCode.AppshowMessageBoxRepose("是否从[标准BOM]里读取数据,[否]将自定义添加!") == DialogResult.Cancel)
  261. {
  262. btnCanSelect_Click(sender, e);
  263. FormICSOPBOMDETAILAdd add = new FormICSOPBOMDETAILAdd(itemid, routeid, opid, opbomver, workpoint);
  264. add.ShowDialog();
  265. grdDetail_Load(null, null);
  266. return;
  267. }
  268. btnFalsh_Click(null, null);
  269. }
  270. #region 删除
  271. private void btnDel_Click(object sender, EventArgs e)
  272. {
  273. List<string> codeList = new List<string>();
  274. for (int i = 0; i < grvDetail.RowCount; i++)
  275. {
  276. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  277. {
  278. codeList.Add(grvDetail.GetRowCellValue(i, colITEMCODE).ToString());
  279. codeList.Add(grvDetail.GetRowCellValue(i, colOBCODE).ToString());
  280. codeList.Add(grvDetail.GetRowCellValue(i, colOPBOMVER).ToString());
  281. codeList.Add(grvDetail.GetRowCellValue(i, colOBITEMCODE).ToString());
  282. codeList.Add(grvDetail.GetRowCellValue(i, colWORKPOINT).ToString());
  283. codeList.Add(grvDetail.GetRowCellValue(i, colACTIONTYPE).ToString());
  284. }
  285. }
  286. if (codeList.Count == 0 || codeList == null)
  287. {
  288. ICSBaseSimpleCode.AppshowMessageBox("请选择数据");
  289. return;
  290. }
  291. if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定删除该条[工序BOM信息]吗?信息删除后无法恢复,确定吗?") != DialogResult.OK)
  292. {
  293. btnCanSelect_Click(sender, e);
  294. return;
  295. }
  296. try
  297. {
  298. ICSOPBOMDETAILBLL.deleteInfo(AppConfig.AppConnectString, codeList);
  299. }
  300. catch (Exception ex)
  301. {
  302. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  303. }
  304. grdDetail_Load(null, null);
  305. }
  306. #endregion
  307. #region 双击选择
  308. private void grdDetail_DoubleClick(object sender, EventArgs e)
  309. {
  310. if (grvDetail.FocusedRowHandle < 0)
  311. {
  312. return;
  313. }
  314. if (grvDetail.FocusedColumn == colisSelect)
  315. {
  316. string a = grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colisSelect).ToString();
  317. if (grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colisSelect).ToString() == "")
  318. {
  319. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "Y");
  320. }
  321. else
  322. {
  323. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "");
  324. }
  325. }
  326. for (int i = 0; i < grvDetail.RowCount; i++)
  327. {
  328. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  329. {
  330. string itemcode=grvDetail.GetRowCellValue(i, colITEMCODE).ToString();
  331. string opbomver=grvDetail.GetRowCellValue(i, colOPBOMVER).ToString();
  332. string obitemcode=grvDetail.GetRowCellValue(i, colOBITEMCODE).ToString();
  333. string sbitemseq=grvDetail.GetRowCellValue(i, colOBITEMSEQ).ToString();
  334. string str = "Select * from [ICSSBOM] as a where a.ITEMCODE='" + itemcode + "' and a.SBITEMCODE='" + obitemcode + "' and a.SBOMVER='" + opbomver + "' and a.SBITEMSEQ='" + sbitemseq + "' and a.WorkPoint='" + AppConfig.WorkPointCode + "'";
  335. DataTable dd = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, str).Tables[0];
  336. if (dd.Rows.Count != 0)
  337. {
  338. btnEdit.Visible = false;
  339. btnDel.Visible = false;
  340. }
  341. else
  342. {
  343. btnEdit.Visible = true;
  344. btnDel.Visible = true;
  345. }
  346. }
  347. }
  348. }
  349. #endregion
  350. private void grdDetail_Load(object sender, EventArgs e)
  351. {
  352. string sql = "Select '' as isSelect,a.*,c.INVDESC as 规格型号 from ICSOPBOMDETAIL as a,ICSROUTE as b,ICSINVENTORY as c,ICSOP as e where a.OPID=b.ROUTECODE+e.OPCODE+INVCODE and a.OBCODE=b.ROUTECODE and a.OPCODE=e.OPCODE and c.INVCLASS='产品' " +
  353. " and c.ID='" + itemid + "' and b.ID='" + routeid + "' and e.ID='"+opid+"' and a.WorkPoint='" + AppConfig.WorkPointCode + "' and b.WorkPoint='" + AppConfig.WorkPointCode + "' and c.WorkPoint='" + AppConfig.WorkPointCode + "' and e.WorkPoint='" + AppConfig.WorkPointCode + "'";
  354. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  355. grdDetail.DataSource = dt;
  356. }
  357. private void btnFalsh_Click(object sender, EventArgs e)
  358. {
  359. grdDetail_Load(null,null);
  360. }
  361. }
  362. }