锐腾搅拌上料功能
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.

545 lines
22 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Data.Linq;
  6. using System.Linq;
  7. using System.Drawing;
  8. using System.Text;
  9. using System.Windows.Forms;
  10. using DevExpress.XtraEditors;
  11. using DevExpress.XtraGrid.Views.BandedGrid;
  12. using DevExpress.XtraGrid.Columns;
  13. using DevExpress.XtraGrid;
  14. using System.IO;
  15. using System.Threading;
  16. using ICSSoft.Base.Language.Tool;
  17. using ICSSoft.Base.Config.AppConfig;
  18. using ICSSoft.Base.UserControl.MessageControl;
  19. using ICSSoft.Base.Config.DBHelper;
  20. using ICSSoft.Base.Report.Filter;
  21. using ICSSoft.Base.UserControl.FormControl;
  22. using ICSSoft.Base.Report.GridReport;
  23. using ICSSoft.Base.ReferForm.AppReferForm;
  24. using ICSSoft.Frame.Data.BLL;
  25. namespace ICSSoft.Frame.APP
  26. {
  27. public partial class FormICSINVENTORY : DevExpress.XtraEditors.XtraForm
  28. {
  29. private string sqltxt = "";
  30. private string sqlconn = "";
  31. String guid = AppConfig.GetGuid();
  32. private DataTable dataSource = null;
  33. #region 构造函数
  34. public FormICSINVENTORY()
  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. #region 操作权限
  42. public DataTable RightOfExute()
  43. {
  44. DataTable rData = new DataTable();
  45. rData.Columns.Add("BtnName");
  46. rData.Columns.Add("ActionName");
  47. //查看权限(必须有)
  48. DataRow seeRow = rData.NewRow();
  49. seeRow["BtnName"] = "see";
  50. seeRow["ActionName"] = "查看";
  51. rData.Rows.Add(seeRow);
  52. List<Control> ControlList = new List<Control>();
  53. //ControlList.Add(btnSelectAll);
  54. //ControlList.Add(btnCancelAll);
  55. ControlList.Add(btnGetInfo);
  56. //ControlList.Add(btnCreate);
  57. ControlList.Add(btnModify);
  58. //ControlList.Add(btnDel);
  59. ControlList.Add(btnOutPut);
  60. foreach (Control ctr in ControlList)
  61. {
  62. if (ctr.GetType() == typeof(SimpleButton))
  63. {
  64. DataRow dr = rData.NewRow();
  65. dr["BtnName"] = ctr.Name;
  66. dr["ActionName"] = ctr.Text;
  67. rData.Rows.Add(dr);
  68. }
  69. }
  70. rData.AcceptChanges();
  71. return rData;
  72. }
  73. public DataTable RightOfData()// 数据权限
  74. {
  75. DataTable rData = new DataTable();
  76. rData.Columns.Add("BodyName");
  77. rData.Columns.Add("ControlName");
  78. rData.Columns.Add("ControlCaption");
  79. rData.AcceptChanges();
  80. return rData;
  81. }
  82. #endregion
  83. #region 退出
  84. private void btnClose_Click(object sender, EventArgs e)
  85. {
  86. AppConfig.CloseFormShow(this.Text);
  87. this.Close();
  88. }
  89. private void btnExit_Click(object sender, EventArgs e)
  90. {
  91. AppConfig.CloseFormShow(this.Text);
  92. this.Close();
  93. }
  94. #endregion
  95. #region 移动窗体
  96. private const int WM_NCHITTEST = 0x84;
  97. private const int HTCLIENT = 0x1;
  98. private const int HTCAPTION = 0x2;
  99. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  100. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  101. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  102. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  103. //重写窗体,使窗体可以不通过自带标题栏实现移动
  104. protected override void WndProc(ref Message m)
  105. {
  106. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  107. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  108. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  109. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  110. switch (m.Msg)
  111. {
  112. case WM_NCHITTEST:
  113. base.WndProc(ref m);
  114. if ((int)m.Result == HTCLIENT)
  115. m.Result = (IntPtr)HTCAPTION;
  116. return;
  117. }
  118. //拦截双击标题栏、移动窗体的系统消息
  119. if (m.Msg != 0xA3)
  120. {
  121. base.WndProc(ref m);
  122. }
  123. }
  124. #endregion
  125. #region 列表
  126. private void grvDetail_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  127. {
  128. if (e.Info.IsRowIndicator && e.RowHandle >= 0)
  129. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  130. }
  131. #endregion
  132. #region 过滤
  133. private string tempTableName = "";
  134. private void btnFilter_Click(object sender, EventArgs e)
  135. {
  136. FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name));
  137. filter.OldTempTableName = tempTableName;
  138. if (filter.ShowDialog() == DialogResult.OK)
  139. {
  140. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  141. try
  142. {
  143. _wait.Show();
  144. tempTableName = filter.NewTempTableName;
  145. sqltxt = filter.SqlText;
  146. sqlconn = filter.FilterConnectString;
  147. dataSource = filter.FilterData.Tables[0];
  148. grdDetail.DataSource = dataSource;
  149. grvDetail.BestFitColumns();
  150. rptPage.RecordNum = dataSource.Rows.Count;
  151. rptPage.PageSize = 499;
  152. rptPage.PageIndex = 1;
  153. rptPage.ReLoad();
  154. rptPage.PageSize = 500;
  155. rptPage.PageIndex = 1;
  156. rptPage.ReLoad();
  157. _wait.Close();
  158. }
  159. catch (Exception ex)
  160. {
  161. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  162. _wait.Close();
  163. }
  164. }
  165. }
  166. #endregion
  167. #region 绑定数据源
  168. private void btnConfig_Click(object sender, EventArgs e)
  169. {
  170. if (AppConfig.UserCode.ToLower() != "demo")
  171. {
  172. ICSBaseSimpleCode.AppshowMessageBox("您没有权限设置数据源,请联系软件提供商!");
  173. return;
  174. }
  175. FormDataSource fdata = new FormDataSource(AppConfig.GetMenuId(this.Tag.ToString()), btnConfig.Name);
  176. fdata.ShowDialog();
  177. }
  178. #endregion
  179. #region 分页
  180. private void rptPage_PageIndexChanged(object Sender, EventArgs e)
  181. {
  182. DataTable data = AppConfig.GetPageData(dataSource, rptPage.PageIndex, rptPage.PageSize).Copy();
  183. //DataTable data = AppConfig.GetPageDataByDb(tempTableName, "pagerowindex", rptPage.PageSize, rptPage.PageIndex, dataSource.Rows.Count);
  184. grdDetail.DataSource = data;
  185. }
  186. #endregion
  187. #region 过滤方法
  188. private void FormContainerManager_FormClosing(object sender, FormClosingEventArgs e)
  189. {
  190. AppConfig.DropTemTable(tempTableName);
  191. }
  192. #endregion
  193. #region 全选
  194. private void btnSelectAll_Click(object sender, EventArgs e)
  195. {
  196. grvDetail.PostEditor();
  197. this.Validate();
  198. for (int i = 0; i < grvDetail.RowCount; i++)
  199. {
  200. grvDetail.SetRowCellValue(i, colisSelect, "Y");
  201. }
  202. }
  203. #endregion
  204. #region 全消
  205. private void btnCancelAll_Click(object sender, EventArgs e)
  206. {
  207. grvDetail.PostEditor();
  208. this.Validate();
  209. for (int i = 0; i < grvDetail.RowCount; i++)
  210. {
  211. grvDetail.SetRowCellValue(i, colisSelect, "");
  212. }
  213. }
  214. #endregion
  215. #region 双击
  216. private void grvDetail_DoubleClick(object sender, EventArgs e)
  217. {
  218. if (grvDetail.FocusedRowHandle < 0)
  219. {
  220. return;
  221. }
  222. if (grvDetail.FocusedColumn == colisSelect)
  223. {
  224. if (grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colisSelect).ToString() == "")
  225. {
  226. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "Y");
  227. }
  228. else
  229. {
  230. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "");
  231. }
  232. }
  233. }
  234. #endregion
  235. #region 删除
  236. private void btnDel_Click(object sender, EventArgs e)
  237. {
  238. grvDetail.PostEditor();
  239. this.Validate();
  240. if (grvDetail.RowCount == 0)
  241. return;
  242. SimpleButton btntemp = (SimpleButton)sender;
  243. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  244. {
  245. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  246. return;
  247. }
  248. List<string> guidList = new List<string>();
  249. List<string> codeList = new List<string>();
  250. for (int i = 0; i < grvDetail.RowCount; i++)
  251. {
  252. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  253. {
  254. guidList.Add(grvDetail.GetRowCellValue(i, colID).ToString());
  255. codeList.Add(grvDetail.GetRowCellValue(i, colINVCODE).ToString());
  256. }
  257. }
  258. if (guidList.Count == 0)
  259. {
  260. ICSBaseSimpleCode.AppshowMessageBox("请选择数据!");
  261. return;
  262. }
  263. if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定删除该存货吗?存货删除后无法恢复,确定吗?") != DialogResult.OK)
  264. return;
  265. try
  266. {
  267. ICSINVENTORYBLL.delete(guidList,codeList);
  268. ICSBaseSimpleCode.AppshowMessageBox(0, "删除成功");
  269. btnRefresh_Click(null, null);
  270. }
  271. catch (Exception ex)
  272. {
  273. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  274. }
  275. }
  276. #endregion
  277. #region 导出
  278. private void btnOutPut_Click(object sender, EventArgs e)
  279. {
  280. FormOutExcel foe = new FormOutExcel(this.Tag.ToString(), grdDetail);
  281. foe.ShowDialog();
  282. }
  283. #endregion
  284. #region 刷新
  285. private void btnRefresh_Click(object sender, EventArgs e)
  286. {
  287. if (sqlconn == null || sqlconn == "")
  288. {
  289. return;
  290. }
  291. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  292. try
  293. {
  294. _wait.Show();
  295. FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name), false);
  296. filter.OldTempTableName = tempTableName;
  297. //tempTableName = filter.NewTempTableName;
  298. //DataTable data = DBHelper.ExecuteDataset(AppConfig.FrameConnectString, CommandType.Text, "select * from " + tempTableName).Tables[0];
  299. dataSource = DBHelper.ExecuteDataset(sqlconn, CommandType.Text, sqltxt).Tables[0];
  300. grdDetail.DataSource = dataSource;
  301. grvDetail.BestFitColumns();
  302. rptPage.RecordNum = dataSource.Rows.Count;
  303. rptPage.PageIndex = 1;
  304. rptPage.ReLoad();
  305. _wait.Close();
  306. }
  307. catch (Exception ex)
  308. {
  309. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  310. _wait.Close();
  311. }
  312. }
  313. #endregion
  314. #region 新增
  315. private void btnCreate_Click(object sender, EventArgs e)
  316. {
  317. SimpleButton btntemp = (SimpleButton)sender;
  318. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  319. {
  320. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  321. return;
  322. }
  323. FormICSINVENTORYAdd add = new FormICSINVENTORYAdd();
  324. add.ShowDialog();
  325. btnRefresh_Click(null, null);
  326. }
  327. #endregion
  328. #region 修改
  329. private void btnModify_Click(object sender, EventArgs e)
  330. {
  331. String id = "";
  332. SimpleButton btntemp = (SimpleButton)sender;
  333. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  334. {
  335. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  336. return;
  337. }
  338. List<string> editList = new List<string>();
  339. List<string> guidList1 = new List<string>();
  340. for (int i = 0; i < grvDetail.RowCount; i++)
  341. {
  342. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  343. {
  344. id = grvDetail.GetRowCellValue(i, colID).ToString();
  345. editList.Add(id);
  346. }
  347. }
  348. if (editList.Count != 1 || id =="")
  349. {
  350. ICSBaseSimpleCode.AppshowMessageBox("请选择数据,且只能选择一条进行编辑!!!");
  351. return;
  352. }
  353. try
  354. {
  355. ICSINVENTORYBLL.select(id, AppConfig.AppConnectString);
  356. //FormICSINVENTORYAdd add = new FormICSINVENTORYAdd(id);
  357. FormICSINVENTORYEditAdd add = new FormICSINVENTORYEditAdd(id);
  358. add.ShowDialog();
  359. btnRefresh_Click(null, null);
  360. }
  361. catch (Exception ex)
  362. {
  363. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  364. }
  365. }
  366. #endregion
  367. private void ICSItemLot_FormClosing(object sender, FormClosingEventArgs e)
  368. {
  369. AppConfig.DropTemTable(tempTableName);
  370. }
  371. private void FormDCT_Load(object sender, EventArgs e)
  372. {
  373. btnFilter_Click(sender, e);
  374. }
  375. private void grvDetail_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
  376. {
  377. if (e.RowHandle >= 0 && e.Column.FieldName == "DCTCODE")
  378. {
  379. //e.DisplayText = FormatHelper.
  380. e.CellValue = "cccc";
  381. }
  382. }
  383. #region 同步U8 注释
  384. // private void btnGetInfo_Click(object sender, EventArgs e)
  385. // {
  386. // SimpleButton btntemp = (SimpleButton)sender;
  387. // if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  388. // {
  389. // ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  390. // return;
  391. // }
  392. // DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在同步请稍等...");
  393. // try
  394. // {
  395. // string sql = @"UPDATE [ICSINVENTORY] SET INVNAME = a.cInvName,INVSTD = a.cInvStd,
  396. // INVUOM = a.cComUnitName,INVTYPE = a.cInvCName,INVCLASS = a.cInvCCode,
  397. // EATTRIBUTE1 = a.dDate,INVCARTONQTY = ISNULL(a.fSupplyMulti,0)
  398. // FROM (SELECT cInvCode,cInvName,cInvStd,c.cComUnitName,b.cInvCName,a.cInvCCode,
  399. // CONVERT(NVARCHAR(50),a.dModifyDate,21) AS dDate,fSupplyMulti
  400. // FROM {1}dbo.Inventory a
  401. // LEFT JOIN {1}dbo.InventoryClass b ON a.cInvCCode = b.cInvCCode
  402. // LEFT JOIN {1}dbo.ComputationUnit c ON a.cComUnitCode = c.cComunitCode
  403. // LEFT JOIN [ICSINVENTORY] d ON a.cInvCode = d.INVCODE
  404. // AND ISNULL(d.EATTRIBUTE1,'') = ISNULL(a.dModifyDate,'')
  405. // WHERE a.dEDate IS NULL AND d.INVCODE IS NULL
  406. // and a.dModifyDate >= DATEADD(MINUTE,-25,GETDATE())) a
  407. // INNER JOIN [ICSINVENTORY] b ON a.cInvCode = b.INVCODE
  408. //
  409. // INSERT INTO [ICSINVENTORY] (ID,INVCODE,INVNAME,INVSTD,INVUOM,INVTYPE,INVCLASS,
  410. // MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,INVEXPORTIMPORT,INVCONTROLTYPE,PCBACOUNT,INVMACHINETYPE,INVCARTONQTY)
  411. // SELECT NEWID(),cInvCode,cInvName,cInvStd,c.cComUnitName,b.cInvCName,a.cInvCCode,
  412. // '','',GETDATE(),'{0}',
  413. // ISNULL(CONVERT(NVARCHAR(50),a.dModifyDate,21),''),'','','',a.cDefWareHouse,fSupplyMulti
  414. // FROM {1}dbo.Inventory a
  415. // LEFT JOIN {1}dbo.InventoryClass b ON a.cInvCCode = b.cInvCCode
  416. // LEFT JOIN {1}dbo.ComputationUnit c ON a.cComUnitCode = c.cComunitCode
  417. // LEFT JOIN [ICSINVENTORY] d ON a.cInvCode = d.INVCODE
  418. // AND ISNULL(d.EATTRIBUTE1,'') = ISNULL(a.dModifyDate,'')
  419. // WHERE a.dEDate IS NULL AND d.INVCODE IS NULL
  420. // and a.dModifyDate >= DATEADD(MINUTE,-25,GETDATE())";
  421. // sql = string.Format(sql, AppConfig.WorkPointCode, ICSBaseSimpleCode.GetWorkPointErpData());
  422. // DBHelper.ExecuteNonQuery(AppConfig.AppConnectString, CommandType.Text, sql);
  423. // _wait.Close();
  424. // ICSBaseSimpleCode.AppshowMessageBox("同步成功");
  425. // }
  426. // catch (Exception ex)
  427. // {
  428. // _wait.Close();
  429. // ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  430. // }
  431. // }
  432. #endregion
  433. #region 同步SAP
  434. private void btnGetInfo_Click(object sender, EventArgs e)
  435. {
  436. SimpleButton btntemp = (SimpleButton)sender;
  437. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  438. {
  439. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  440. return;
  441. }
  442. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在同步请稍等...");
  443. try
  444. {
  445. // string sql = @"UPDATE [ICSINVENTORY] SET INVNAME = a.cInvName,INVSTD = a.cInvStd,
  446. // INVUOM = a.cComUnitName,INVTYPE = a.cInvCName,INVCLASS = a.cInvCCode,
  447. // EATTRIBUTE1 = a.dDate,INVCARTONQTY = ISNULL(a.fSupplyMulti,0)
  448. // FROM (SELECT cInvCode,cInvName,cInvStd,c.cComUnitName,b.cInvCName,a.cInvCCode,
  449. // CONVERT(NVARCHAR(50),a.dModifyDate,21) AS dDate,fSupplyMulti
  450. // FROM {1}dbo.Inventory a
  451. // LEFT JOIN {1}dbo.InventoryClass b ON a.cInvCCode = b.cInvCCode
  452. // LEFT JOIN {1}dbo.ComputationUnit c ON a.cComUnitCode = c.cComunitCode
  453. // LEFT JOIN [ICSINVENTORY] d ON a.cInvCode = d.INVCODE
  454. // AND ISNULL(d.EATTRIBUTE1,'') = ISNULL(a.dModifyDate,'')
  455. // WHERE a.dEDate IS NULL AND d.INVCODE IS NULL
  456. // and a.dModifyDate >= DATEADD(MINUTE,-25,GETDATE())) a
  457. // INNER JOIN [ICSINVENTORY] b ON a.cInvCode = b.INVCODE
  458. //
  459. // INSERT INTO [ICSINVENTORY] (ID,INVCODE,INVNAME,INVSTD,INVUOM,INVTYPE,INVCLASS,
  460. // MUSER,MUSERName,MTIME,WorkPoint,EATTRIBUTE1,INVEXPORTIMPORT,INVCONTROLTYPE,PCBACOUNT,INVMACHINETYPE,INVCARTONQTY)
  461. // SELECT NEWID(),cInvCode,cInvName,cInvStd,c.cComUnitName,b.cInvCName,a.cInvCCode,
  462. // '','',GETDATE(),'{0}',
  463. // ISNULL(CONVERT(NVARCHAR(50),a.dModifyDate,21),''),'','','',a.cDefWareHouse,fSupplyMulti
  464. // FROM {1}dbo.Inventory a
  465. // LEFT JOIN {1}dbo.InventoryClass b ON a.cInvCCode = b.cInvCCode
  466. // LEFT JOIN {1}dbo.ComputationUnit c ON a.cComUnitCode = c.cComunitCode
  467. // LEFT JOIN [ICSINVENTORY] d ON a.cInvCode = d.INVCODE
  468. // AND ISNULL(d.EATTRIBUTE1,'') = ISNULL(a.dModifyDate,'')
  469. // WHERE a.dEDate IS NULL AND d.INVCODE IS NULL
  470. // and a.dModifyDate >= DATEADD(MINUTE,-25,GETDATE())";
  471. // sql = string.Format(sql, AppConfig.WorkPointCode, ICSBaseSimpleCode.GetWorkPointErpData());
  472. // DBHelper.ExecuteNonQuery(AppConfig.AppConnectString, CommandType.Text, sql);
  473. // _wait.Close();
  474. // ICSBaseSimpleCode.AppshowMessageBox("同步成功");
  475. ICSBaseSimpleCode.AppshowMessageBox("XXX");
  476. }
  477. catch (Exception ex)
  478. {
  479. _wait.Close();
  480. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  481. }
  482. }
  483. #endregion
  484. }
  485. }