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

605 lines
23 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. using ICSSoft.Frame.Data.Entity;
  26. namespace ICSSoft.Frame.APP
  27. {
  28. public partial class FormICSINVInfo : DevExpress.XtraEditors.XtraForm
  29. {
  30. private string sqltxt = "";
  31. private string sqlconn = "";
  32. String guid = AppConfig.GetGuid();
  33. private DataTable dataSource = null;
  34. #region 构造函数
  35. public FormICSINVInfo()
  36. {
  37. InitializeComponent();
  38. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  39. this.WindowState = FormWindowState.Maximized;
  40. }
  41. #endregion
  42. #region 操作权限
  43. public DataTable RightOfExute()
  44. {
  45. DataTable rData = new DataTable();
  46. rData.Columns.Add("BtnName");
  47. rData.Columns.Add("ActionName");
  48. //查看权限(必须有)
  49. DataRow seeRow = rData.NewRow();
  50. seeRow["BtnName"] = "see";
  51. seeRow["ActionName"] = "查看";
  52. rData.Rows.Add(seeRow);
  53. List<Control> ControlList = new List<Control>();
  54. //ControlList.Add(btnSelectAll);
  55. //ControlList.Add(btnCancelAll);
  56. ControlList.Add(btnCreate);
  57. ControlList.Add(btnModify);
  58. ControlList.Add(btnDel);
  59. ControlList.Add(btnOutPut);
  60. ControlList.Add(btnImportData);
  61. foreach (Control ctr in ControlList)
  62. {
  63. if (ctr.GetType() == typeof(SimpleButton))
  64. {
  65. DataRow dr = rData.NewRow();
  66. dr["BtnName"] = ctr.Name;
  67. dr["ActionName"] = ctr.Text;
  68. rData.Rows.Add(dr);
  69. }
  70. }
  71. rData.AcceptChanges();
  72. return rData;
  73. }
  74. public DataTable RightOfData()// 数据权限
  75. {
  76. DataTable rData = new DataTable();
  77. rData.Columns.Add("BodyName");
  78. rData.Columns.Add("ControlName");
  79. rData.Columns.Add("ControlCaption");
  80. rData.AcceptChanges();
  81. return rData;
  82. }
  83. #endregion
  84. #region 退出
  85. private void btnClose_Click(object sender, EventArgs e)
  86. {
  87. AppConfig.CloseFormShow(this.Text);
  88. this.Close();
  89. }
  90. private void btnExit_Click(object sender, EventArgs e)
  91. {
  92. AppConfig.CloseFormShow(this.Text);
  93. this.Close();
  94. }
  95. #endregion
  96. #region 移动窗体
  97. private const int WM_NCHITTEST = 0x84;
  98. private const int HTCLIENT = 0x1;
  99. private const int HTCAPTION = 0x2;
  100. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  101. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  102. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  103. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  104. //重写窗体,使窗体可以不通过自带标题栏实现移动
  105. protected override void WndProc(ref Message m)
  106. {
  107. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  108. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  109. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  110. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  111. switch (m.Msg)
  112. {
  113. case WM_NCHITTEST:
  114. base.WndProc(ref m);
  115. if ((int)m.Result == HTCLIENT)
  116. m.Result = (IntPtr)HTCAPTION;
  117. return;
  118. }
  119. //拦截双击标题栏、移动窗体的系统消息
  120. if (m.Msg != 0xA3)
  121. {
  122. base.WndProc(ref m);
  123. }
  124. }
  125. #endregion
  126. #region 列表
  127. private void grvDetail_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  128. {
  129. if (e.Info.IsRowIndicator && e.RowHandle >= 0)
  130. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  131. }
  132. #endregion
  133. #region 过滤
  134. private string tempTableName = "";
  135. private void btnFilter_Click(object sender, EventArgs e)
  136. {
  137. FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name));
  138. filter.OldTempTableName = tempTableName;
  139. if (filter.ShowDialog() == DialogResult.OK)
  140. {
  141. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  142. try
  143. {
  144. _wait.Show();
  145. tempTableName = filter.NewTempTableName;
  146. sqltxt = filter.SqlText;
  147. sqlconn = filter.FilterConnectString;
  148. dataSource = filter.FilterData.Tables[0];
  149. grdDetail.DataSource = dataSource;
  150. grvDetail.BestFitColumns();
  151. rptPage.RecordNum = dataSource.Rows.Count;
  152. rptPage.PageSize = 499;
  153. rptPage.PageIndex = 1;
  154. rptPage.ReLoad();
  155. rptPage.PageSize = 500;
  156. rptPage.PageIndex = 1;
  157. rptPage.ReLoad();
  158. _wait.Close();
  159. }
  160. catch (Exception ex)
  161. {
  162. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  163. _wait.Close();
  164. }
  165. }
  166. }
  167. #endregion
  168. #region 绑定数据源
  169. private void btnConfig_Click(object sender, EventArgs e)
  170. {
  171. if (AppConfig.UserCode.ToLower() != "demo")
  172. {
  173. ICSBaseSimpleCode.AppshowMessageBox("您没有权限设置数据源,请联系软件提供商!");
  174. return;
  175. }
  176. FormDataSource fdata = new FormDataSource(AppConfig.GetMenuId(this.Tag.ToString()), btnConfig.Name);
  177. fdata.ShowDialog();
  178. }
  179. #endregion
  180. #region 分页
  181. private void rptPage_PageIndexChanged(object Sender, EventArgs e)
  182. {
  183. DataTable data = AppConfig.GetPageData(dataSource, rptPage.PageIndex, rptPage.PageSize).Copy();
  184. //DataTable data = AppConfig.GetPageDataByDb(tempTableName, "pagerowindex", rptPage.PageSize, rptPage.PageIndex, dataSource.Rows.Count);
  185. grdDetail.DataSource = data;
  186. }
  187. #endregion
  188. #region 过滤方法
  189. private void FormContainerManager_FormClosing(object sender, FormClosingEventArgs e)
  190. {
  191. AppConfig.DropTemTable(tempTableName);
  192. }
  193. #endregion
  194. #region 全选
  195. private void btnSelectAll_Click(object sender, EventArgs e)
  196. {
  197. grvDetail.PostEditor();
  198. this.Validate();
  199. for (int i = 0; i < grvDetail.RowCount; i++)
  200. {
  201. grvDetail.SetRowCellValue(i, colisSelect, "Y");
  202. }
  203. }
  204. #endregion
  205. #region 全消
  206. private void btnCancelAll_Click(object sender, EventArgs e)
  207. {
  208. grvDetail.PostEditor();
  209. this.Validate();
  210. for (int i = 0; i < grvDetail.RowCount; i++)
  211. {
  212. grvDetail.SetRowCellValue(i, colisSelect, "");
  213. }
  214. }
  215. #endregion
  216. #region 双击
  217. private void grvDetail_DoubleClick(object sender, EventArgs e)
  218. {
  219. if (grvDetail.FocusedRowHandle < 0)
  220. {
  221. return;
  222. }
  223. if (grvDetail.FocusedColumn == colisSelect)
  224. {
  225. if (grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colisSelect).ToString() == "")
  226. {
  227. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "Y");
  228. }
  229. else
  230. {
  231. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, colisSelect, "");
  232. }
  233. }
  234. }
  235. #endregion
  236. #region 删除
  237. private void btnDel_Click(object sender, EventArgs e)
  238. {
  239. grvDetail.PostEditor();
  240. this.Validate();
  241. if (grvDetail.RowCount == 0)
  242. return;
  243. SimpleButton btntemp = (SimpleButton)sender;
  244. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  245. {
  246. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  247. return;
  248. }
  249. List<string> guidList = new List<string>();
  250. List<string> codeList = new List<string>();
  251. for (int i = 0; i < grvDetail.RowCount; i++)
  252. {
  253. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  254. {
  255. guidList.Add(grvDetail.GetRowCellValue(i, colID).ToString());
  256. codeList.Add(grvDetail.GetRowCellValue(i, colINVCODE).ToString());
  257. }
  258. }
  259. if (guidList.Count == 0)
  260. {
  261. ICSBaseSimpleCode.AppshowMessageBox("请选择数据!");
  262. return;
  263. }
  264. if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定删除该存货吗?存货删除后无法恢复,确定吗?") != DialogResult.OK)
  265. return;
  266. try
  267. {
  268. ICSINVInfoBLL.delete(guidList, codeList);
  269. ICSBaseSimpleCode.AppshowMessageBox(0, "删除成功");
  270. btnRefresh_Click(null, null);
  271. }
  272. catch (Exception ex)
  273. {
  274. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  275. }
  276. }
  277. #endregion
  278. #region 导出
  279. private void btnOutPut_Click(object sender, EventArgs e)
  280. {
  281. FormOutExcel foe = new FormOutExcel(this.Tag.ToString(), grdDetail);
  282. foe.ShowDialog();
  283. }
  284. #endregion
  285. #region 刷新
  286. private void btnRefresh_Click(object sender, EventArgs e)
  287. {
  288. if (sqlconn == null || sqlconn == "")
  289. {
  290. return;
  291. }
  292. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  293. try
  294. {
  295. _wait.Show();
  296. FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name), false);
  297. filter.OldTempTableName = tempTableName;
  298. //tempTableName = filter.NewTempTableName;
  299. //DataTable data = DBHelper.ExecuteDataset(AppConfig.FrameConnectString, CommandType.Text, "select * from " + tempTableName).Tables[0];
  300. dataSource = DBHelper.ExecuteDataset(sqlconn, CommandType.Text, sqltxt).Tables[0];
  301. grdDetail.DataSource = dataSource;
  302. grvDetail.BestFitColumns();
  303. rptPage.RecordNum = dataSource.Rows.Count;
  304. rptPage.PageIndex = 1;
  305. rptPage.ReLoad();
  306. _wait.Close();
  307. }
  308. catch (Exception ex)
  309. {
  310. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  311. _wait.Close();
  312. }
  313. }
  314. #endregion
  315. #region 新增
  316. private void btnCreate_Click(object sender, EventArgs e)
  317. {
  318. SimpleButton btntemp = (SimpleButton)sender;
  319. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  320. {
  321. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  322. return;
  323. }
  324. FormICSINVInfoAdd add = new FormICSINVInfoAdd();
  325. add.ShowDialog();
  326. btnRefresh_Click(null, null);
  327. }
  328. #endregion
  329. #region 修改
  330. private void btnModify_Click(object sender, EventArgs e)
  331. {
  332. String id = "";
  333. SimpleButton btntemp = (SimpleButton)sender;
  334. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  335. {
  336. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  337. return;
  338. }
  339. List<string> editList = new List<string>();
  340. List<string> guidList1 = new List<string>();
  341. for (int i = 0; i < grvDetail.RowCount; i++)
  342. {
  343. if (grvDetail.GetRowCellValue(i, colisSelect).ToString() == "Y")
  344. {
  345. id = grvDetail.GetRowCellValue(i, colID).ToString();
  346. editList.Add(id);
  347. }
  348. }
  349. if (editList.Count != 1)
  350. {
  351. ICSBaseSimpleCode.AppshowMessageBox("请选择数据,且只能选择一条进行编辑!!!");
  352. return;
  353. }
  354. try
  355. {
  356. FormICSINVInfoAdd add = new FormICSINVInfoAdd(id);
  357. add.ShowDialog();
  358. btnRefresh_Click(null, null);
  359. }
  360. catch (Exception ex)
  361. {
  362. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  363. }
  364. }
  365. #endregion
  366. private void ICSItemLot_FormClosing(object sender, FormClosingEventArgs e)
  367. {
  368. AppConfig.DropTemTable(tempTableName);
  369. }
  370. private void FormDCT_Load(object sender, EventArgs e)
  371. {
  372. btnFilter_Click(sender, e);
  373. }
  374. private void grvDetail_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
  375. {
  376. if (e.RowHandle >= 0 && e.Column.FieldName == "DCTCODE")
  377. {
  378. //e.DisplayText = FormatHelper.
  379. e.CellValue = "cccc";
  380. }
  381. }
  382. #region 导入模板下载
  383. private void btnImportMould_Click(object sender, EventArgs e)
  384. {
  385. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm();
  386. _wait.Hide();
  387. string anjianExcelFileName = Environment.CommandLine.Substring(1, Environment.CommandLine.LastIndexOf("\\")) + "Output\\";
  388. try
  389. {
  390. _wait.Show();
  391. _wait.Caption = "模板下载中......";
  392. SaveFileDialog dlgSaveFileDialog = new SaveFileDialog(); //弹框提示保存
  393. dlgSaveFileDialog.InitialDirectory = anjianExcelFileName; //默认打开目录
  394. dlgSaveFileDialog.FilterIndex = 1;
  395. dlgSaveFileDialog.RestoreDirectory = true;
  396. dlgSaveFileDialog.FileName = "产品资料导入模板.xlsx"; //默认保存名称
  397. dlgSaveFileDialog.Filter = "Excel文件(*.xlsx)|*.xlsx";
  398. if (dlgSaveFileDialog.ShowDialog() == DialogResult.OK)
  399. {
  400. string fileName = dlgSaveFileDialog.FileName; //获取弹出框选择或填写的文件名称
  401. List<FormReadExcelUIModelColumns> colNameList = new List<FormReadExcelUIModelColumns>();
  402. colNameList.Add(new FormReadExcelUIModelColumns("存货编码", true));
  403. colNameList.Add(new FormReadExcelUIModelColumns("存货名称", true));
  404. colNameList.Add(new FormReadExcelUIModelColumns("产品等级", false));
  405. //colNameList.Add(new FormReadExcelUIModelColumns("框架等级", false));
  406. //colNameList.Add(new FormReadExcelUIModelColumns("电压功能", false));
  407. //colNameList.Add(new FormReadExcelUIModelColumns("额定电流", false));
  408. //colNameList.Add(new FormReadExcelUIModelColumns("功率功能", false));
  409. //colNameList.Add(new FormReadExcelUIModelColumns("辅助电源", false));
  410. //colNameList.Add(new FormReadExcelUIModelColumns("需用值功能", false));
  411. //colNameList.Add(new FormReadExcelUIModelColumns("接地类型", false));
  412. //colNameList.Add(new FormReadExcelUIModelColumns("谐波功能", false));
  413. //colNameList.Add(new FormReadExcelUIModelColumns("互感器只读", false));
  414. //colNameList.Add(new FormReadExcelUIModelColumns("通讯功能", false));
  415. //colNameList.Add(new FormReadExcelUIModelColumns("MCR/HSISC", false));
  416. //colNameList.Add(new FormReadExcelUIModelColumns("I/O", false));
  417. //colNameList.Add(new FormReadExcelUIModelColumns("维护人名称", false));
  418. //colNameList.Add(new FormReadExcelUIModelColumns("维护时间", false));
  419. //colNameList.Add(new FormReadExcelUIModelColumns("是否为橡胶件", false));
  420. //colNameList.Add(new FormReadExcelUIModelColumns("保留字段5", false));
  421. //colNameList.Add(new FormReadExcelUIModelColumns("保留字段6", false));
  422. FileUtil.exportToExcelFile(fileName, colNameList);
  423. _wait.Close();
  424. ICSBaseSimpleCode.AppshowMessageBox("模板下载成功!");
  425. }
  426. _wait.Close();
  427. }
  428. catch (Exception ex)
  429. {
  430. _wait.Close();
  431. ICSBaseSimpleCode.AppshowMessageBox("模板下载失败:" + ex.Message);
  432. }
  433. }
  434. #endregion
  435. private void btnImportData_Click(object sender, EventArgs e)
  436. {
  437. SimpleButton btntemp = (SimpleButton)sender;
  438. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  439. {
  440. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  441. return;
  442. }
  443. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm();
  444. _wait.Hide();
  445. try
  446. {
  447. FormReadExcel fre = new FormReadExcel();
  448. if (fre.ShowDialog() != DialogResult.OK)
  449. {
  450. return;
  451. }
  452. DataTable dataSource = fre._excelData;
  453. if (dataSource == null)
  454. {
  455. throw new Exception("excel数据取得失败");
  456. }
  457. _wait.Show();
  458. _wait.Caption = "判断模版是否正确......";
  459. #region 判断模版是否正确
  460. List<FormReadExcelUIModelColumns> colNameList = new List<FormReadExcelUIModelColumns>();
  461. colNameList.Add(new FormReadExcelUIModelColumns("存货编码", true));
  462. colNameList.Add(new FormReadExcelUIModelColumns("存货名称", true));
  463. colNameList.Add(new FormReadExcelUIModelColumns("产品等级", true));
  464. //colNameList.Add(new FormReadExcelUIModelColumns("维护人名称", true));
  465. //colNameList.Add(new FormReadExcelUIModelColumns("维护时间", true));
  466. foreach (FormReadExcelUIModelColumns columnsName in colNameList)
  467. {
  468. if (!dataSource.Columns.Contains(columnsName.columnsName))
  469. {
  470. throw new Exception("模版不正确,缺少列" + columnsName.columnsName);
  471. }
  472. }
  473. #endregion
  474. _wait.Caption = "数据整理中......";
  475. #region 产品等级
  476. string sql2 = @"SELECT EnumKey ,EnumValue AS 等级,EnumText AS 说明 FROM dbo.Sys_EnumValues WHERE EnumKey='00019' AND StartFlag=1 AND WorkPointCode='{0}' ORDER BY EnumKey ";
  477. sql2 = string.Format(sql2, AppConfig.WorkPointCode);
  478. DataTable dtLvL = ICSSoft.Base.Config.DBHelper.DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql2).Tables[0];
  479. if (dtLvL == null || dtLvL.Rows.Count == 0)
  480. {
  481. throw new Exception("产品等级未维护!");
  482. }
  483. List<string> listLvL = new List<string>();
  484. foreach (DataRow dr in dtLvL.Rows)
  485. {
  486. listLvL.Add(dr["等级"].ToString());
  487. }
  488. #endregion
  489. List<ICSINVInfo> InitInvInfoList = new List<ICSINVInfo>();
  490. foreach (DataRow dr in dataSource.Rows)
  491. {
  492. ///判断必输项目是否为空
  493. foreach (FormReadExcelUIModelColumns columnsName in colNameList)
  494. {
  495. if (string.IsNullOrWhiteSpace(dr[columnsName.columnsName].ToString()) == true && columnsName.NotNull == true)
  496. {
  497. throw new Exception("列" + columnsName.columnsName + "没有输入值");
  498. }
  499. }
  500. ICSINVInfo Info = new ICSINVInfo();
  501. Info.ID = AppConfig.GetGuid();
  502. Info.INVCODE = dr["存货编码"].ToString();
  503. Info.INVNAME = dr["存货名称"].ToString();
  504. Info.EATTRIBUTE5 = dr["产品等级"].ToString();
  505. Info.MUSER = AppConfig.UserCode;
  506. Info.MUSERName = AppConfig.UserName;
  507. Info.MTIME = DateTime.Now;
  508. Info.WorkPoint = AppConfig.WorkPointCode;
  509. InitInvInfoList.Add(Info);
  510. }
  511. _wait.Caption = "导入数据......";
  512. string str = ICSINVInfoBLL.AddList(InitInvInfoList,listLvL, AppConfig.AppConnectString);
  513. _wait.Close();
  514. if (str == "")
  515. {
  516. ICSBaseSimpleCode.AppshowMessageBox("数据导入成功!");
  517. }
  518. else
  519. {
  520. ICSBaseSimpleCode.AppshowMessageBox(str);
  521. }
  522. btnRefresh_Click(null, null);
  523. }
  524. catch (Exception ex)
  525. {
  526. _wait.Close();
  527. ICSBaseSimpleCode.AppshowMessageBox("数据导入失败:" + ex.Message);
  528. }
  529. }
  530. private void groupControl1_Paint(object sender, PaintEventArgs e)
  531. {
  532. }
  533. }
  534. }