华恒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.

742 lines
30 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 FormICSOQCCKLIST : 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 FormICSOQCCKLIST()
  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(simpleButton2);
  55. ControlList.Add(simpleButton1);
  56. ControlList.Add(simpleButton3);
  57. ControlList.Add(btnOutPut);
  58. ControlList.Add(btnImportData);
  59. ControlList.Add(btnImportMould);
  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, coSelect, "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, coSelect, "");
  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 == coSelect)
  223. {
  224. if (grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, coSelect).ToString() == "")
  225. {
  226. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, coSelect, "Y");
  227. }
  228. else
  229. {
  230. grvDetail.SetRowCellValue(grvDetail.FocusedRowHandle, coSelect, "");
  231. }
  232. }
  233. }
  234. #endregion
  235. #region 删除
  236. private void btnDel_Click(object sender, EventArgs e)
  237. {
  238. List<string> guidList = new List<string>();
  239. for (int i = 0; i < grvDetail.RowCount; i++)
  240. {
  241. if (grvDetail.GetRowCellValue(i, coSelect).ToString() == "Y")
  242. {
  243. guidList.Add(grvDetail.GetRowCellValue(i, ID).ToString());
  244. }
  245. }
  246. if (guidList.Count == 0)
  247. {
  248. ICSBaseSimpleCode.AppshowMessageBox("请选择数据!");
  249. return;
  250. }
  251. if (ICSBaseSimpleCode.AppshowMessageBoxRepose("确定删除该数据吗?数据删除后无法恢复!!") != DialogResult.OK)
  252. return;
  253. try
  254. {
  255. ICSOQCCKLISTBLL.delete(guidList);
  256. ICSBaseSimpleCode.AppshowMessageBox(0, "删除成功");
  257. btnRefresh_Click(null, null);
  258. }
  259. catch (Exception ex)
  260. {
  261. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  262. }
  263. }
  264. #endregion
  265. #region 导出
  266. private void btnOutPut_Click(object sender, EventArgs e)
  267. {
  268. }
  269. #endregion
  270. #region 刷新
  271. private void btnRefresh_Click(object sender, EventArgs e)
  272. {
  273. if (sqlconn == null || sqlconn == "")
  274. {
  275. return;
  276. }
  277. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  278. try
  279. {
  280. _wait.Show();
  281. FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name), false);
  282. filter.OldTempTableName = tempTableName;
  283. //tempTableName = filter.NewTempTableName;
  284. //DataTable data = DBHelper.ExecuteDataset(AppConfig.FrameConnectString, CommandType.Text, "select * from " + tempTableName).Tables[0];
  285. dataSource = DBHelper.ExecuteDataset(sqlconn, CommandType.Text, sqltxt).Tables[0];
  286. grdDetail.DataSource = dataSource;
  287. grvDetail.BestFitColumns();
  288. rptPage.RecordNum = dataSource.Rows.Count;
  289. rptPage.PageIndex = 1;
  290. rptPage.ReLoad();
  291. _wait.Close();
  292. }
  293. catch (Exception ex)
  294. {
  295. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  296. _wait.Close();
  297. }
  298. }
  299. #endregion
  300. #region 新增
  301. private void btnCreate_Click(object sender, EventArgs e)
  302. {
  303. SimpleButton btntemp = (SimpleButton)sender;
  304. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  305. {
  306. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  307. return;
  308. }
  309. FormICSOQCCKLISTAdd add = new FormICSOQCCKLISTAdd();
  310. add.ShowDialog();
  311. btnRefresh_Click(null, null);
  312. }
  313. #endregion
  314. #region 页面加载
  315. private void grdDetail_Load(object sender, EventArgs e)
  316. {
  317. btnFilter_Click(null, null);
  318. }
  319. #endregion
  320. #region 修改
  321. private void btnModify_Click(object sender, EventArgs e)
  322. {
  323. SimpleButton btntemp = (SimpleButton)sender;
  324. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  325. {
  326. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  327. return;
  328. }
  329. int count = 0;
  330. for (int i = 0; i < grvDetail.RowCount; i++)
  331. {
  332. if (grvDetail.GetRowCellValue(i, coSelect).ToString() == "Y")
  333. {
  334. count++;
  335. }
  336. }
  337. if (count != 1)
  338. {
  339. ICSBaseSimpleCode.AppshowMessageBox("请选择数据,且只能选择一条进行编辑!!!");
  340. return;
  341. }
  342. try
  343. {
  344. string id;
  345. for (int i = 0; i < grvDetail.RowCount; i++)
  346. {
  347. if (grvDetail.GetRowCellValue(i, coSelect).ToString() == "Y")
  348. {
  349. id = grvDetail.GetRowCellValue(i, ID).ToString();
  350. FormICSOQCCKLISTAdd add = new FormICSOQCCKLISTAdd(id);
  351. add.ShowDialog();
  352. }
  353. }
  354. btnRefresh_Click(null, null);
  355. }
  356. catch (Exception ex)
  357. {
  358. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  359. }
  360. }
  361. #endregion
  362. private void ICSItemLot_FormClosing(object sender, FormClosingEventArgs e)
  363. {
  364. AppConfig.DropTemTable(tempTableName);
  365. }
  366. private void FormICSCREW_Load(object sender, EventArgs e)
  367. {
  368. FormFilter filter = new FormFilter(AppConfig.GetSourceId(this.Tag.ToString(), btnConfig.Name));
  369. filter.OldTempTableName = tempTableName;
  370. if (filter.ShowDialog() == DialogResult.OK)
  371. {
  372. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  373. try
  374. {
  375. _wait.Show();
  376. tempTableName = filter.NewTempTableName;
  377. sqltxt = filter.SqlText;
  378. sqlconn = filter.FilterConnectString;
  379. dataSource = filter.FilterData.Tables[0];
  380. grdDetail.DataSource = dataSource;
  381. grvDetail.BestFitColumns();
  382. rptPage.RecordNum = dataSource.Rows.Count;
  383. rptPage.PageSize = 499;
  384. rptPage.PageIndex = 1;
  385. rptPage.ReLoad();
  386. rptPage.PageSize = 500;
  387. rptPage.PageIndex = 1;
  388. rptPage.ReLoad();
  389. _wait.Close();
  390. }
  391. catch (Exception ex)
  392. {
  393. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  394. _wait.Close();
  395. }
  396. }
  397. }
  398. private void btnOutPut_Click_1(object sender, EventArgs e)
  399. {
  400. try
  401. {
  402. FormOutExcel foe = new FormOutExcel(this.Tag.ToString(), grdDetail);
  403. foe.ShowDialog();
  404. }
  405. catch (Exception ex)
  406. {
  407. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  408. }
  409. //FormOutExcel foe = new FormOutExcel();
  410. //if (foe.ShowDialog() == DialogResult.OK)
  411. //{
  412. // try
  413. // {
  414. // string outtype = foe._OutType;
  415. // string exceltype = foe._ExcelType;
  416. // string filename = foe._FileName;
  417. // string url = foe._Url;
  418. // string sheetname = foe._SheetName;
  419. // if (outtype.ToLower() == "excel")
  420. // {
  421. // DevExpress.XtraPrinting.XlsExportOptions op = new DevExpress.XtraPrinting.XlsExportOptions();
  422. // op.SheetName = sheetname;
  423. // grdDetail.MainView.ExportToXls((url + "\\" + filename + (exceltype == "2003" ? ".xls" : ".xlsx")), op);
  424. // }
  425. // else
  426. // {
  427. // grdDetail.MainView.ExportToPdf(url + "\\" + filename + ".pdf");
  428. // }
  429. // MessageBox.Show("导出成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
  430. // }
  431. // catch (Exception ex)
  432. // {
  433. // MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  434. // }
  435. //}
  436. }
  437. private void btnTBLOP_Click(object sender, EventArgs e)
  438. {
  439. string id = "";
  440. List<string> editList = new List<string>();
  441. for (int i = 0; i < grvDetail.RowCount; i++)
  442. {
  443. if (grvDetail.GetRowCellValue(i, coSelect).ToString() == "Y")
  444. {
  445. id = grvDetail.GetRowCellValue(i, ID).ToString();
  446. editList.Add(id);
  447. }
  448. }
  449. if (editList.Count != 1)
  450. {
  451. ICSBaseSimpleCode.AppshowMessageBox("请选择数据,且只能选择一条进行编辑!!!");
  452. return;
  453. }
  454. try
  455. {
  456. FormICSOQCCKGROUP2LIST add = new FormICSOQCCKGROUP2LIST(id);
  457. add.ShowDialog();
  458. btnRefresh_Click(null, null);
  459. }
  460. catch (Exception ex)
  461. {
  462. ICSBaseSimpleCode.AppshowMessageBox(ex.Message);
  463. }
  464. }
  465. private void btnImportMould_Click(object sender, EventArgs e)
  466. {
  467. SimpleButton btntemp = (SimpleButton)sender;
  468. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  469. {
  470. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  471. return;
  472. }
  473. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm();
  474. _wait.Hide();
  475. string anjianExcelFileName = Environment.CommandLine.Substring(1, Environment.CommandLine.LastIndexOf("\\")) + "Output\\";
  476. try
  477. {
  478. _wait.Show();
  479. _wait.Caption = "模板下载中......";
  480. SaveFileDialog dlgSaveFileDialog = new SaveFileDialog(); //弹框提示保存
  481. dlgSaveFileDialog.InitialDirectory = anjianExcelFileName; //默认打开目录
  482. dlgSaveFileDialog.FilterIndex = 1;
  483. dlgSaveFileDialog.RestoreDirectory = true;
  484. dlgSaveFileDialog.FileName = "检验项目关联导入模板.xlsx"; //默认保存名称
  485. dlgSaveFileDialog.Filter = "Excel文件(*.xlsx)|*.xlsx";
  486. if (dlgSaveFileDialog.ShowDialog() == DialogResult.OK)
  487. {
  488. string fileName = dlgSaveFileDialog.FileName; //获取弹出框选择或填写的文件名称
  489. List<FormReadExcelUIModelColumns> colNameList = new List<FormReadExcelUIModelColumns>();
  490. colNameList.Add(new FormReadExcelUIModelColumns("物料编码", true));
  491. colNameList.Add(new FormReadExcelUIModelColumns("工序编码", true));
  492. colNameList.Add(new FormReadExcelUIModelColumns("检验项目编码", true));
  493. colNameList.Add(new FormReadExcelUIModelColumns("检验方式", true));
  494. colNameList.Add(new FormReadExcelUIModelColumns("检验属性", true));
  495. colNameList.Add(new FormReadExcelUIModelColumns("标准上限", false));
  496. colNameList.Add(new FormReadExcelUIModelColumns("标准下限", false));
  497. colNameList.Add(new FormReadExcelUIModelColumns("单位", false));
  498. colNameList.Add(new FormReadExcelUIModelColumns("启用", true));
  499. //0906 新增:次序
  500. colNameList.Add(new FormReadExcelUIModelColumns("次序", true));
  501. FileUtil.exportToExcelFile(fileName, colNameList);
  502. _wait.Close();
  503. ICSBaseSimpleCode.AppshowMessageBox("模板下载成功!");
  504. }
  505. _wait.Close();
  506. }
  507. catch (Exception ex)
  508. {
  509. _wait.Close();
  510. ICSBaseSimpleCode.AppshowMessageBox("模板下载失败:" + ex.Message);
  511. }
  512. }
  513. private void btnImportData_Click(object sender, EventArgs e)
  514. {
  515. SimpleButton btntemp = (SimpleButton)sender;
  516. if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false)
  517. {
  518. ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!");
  519. return;
  520. }
  521. string Lot_NO = "", LotNO_X = "";
  522. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm();
  523. _wait.Hide();
  524. try
  525. {
  526. FormReadExcel fre = new FormReadExcel();
  527. if (fre.ShowDialog() != DialogResult.OK)
  528. {
  529. return;
  530. }
  531. DataTable dataSource = fre._excelData;
  532. if (dataSource == null)
  533. {
  534. throw new Exception("excel数据取得失败");
  535. }
  536. DataSet ds = ICSOQCCKLISTBLL.SearchImportData(AppConfig.AppConnectString);
  537. if (ds == null || ds.Tables.Count!=5)
  538. {
  539. throw new Exception("查询出错,请重新操作!");
  540. }
  541. _wait.Show();
  542. _wait.Caption = "判断模版是否正确......";
  543. #region 判断模版是否正确
  544. List<FormReadExcelUIModelColumns> colNameList = new List<FormReadExcelUIModelColumns>();
  545. colNameList.Add(new FormReadExcelUIModelColumns("物料编码", true));
  546. colNameList.Add(new FormReadExcelUIModelColumns("工序编码", true));
  547. colNameList.Add(new FormReadExcelUIModelColumns("检验项目编码", true));
  548. colNameList.Add(new FormReadExcelUIModelColumns("检验方式", true));
  549. colNameList.Add(new FormReadExcelUIModelColumns("检验属性", true));
  550. colNameList.Add(new FormReadExcelUIModelColumns("标准上限", false));
  551. colNameList.Add(new FormReadExcelUIModelColumns("标准下限", false));
  552. colNameList.Add(new FormReadExcelUIModelColumns("单位", false));
  553. colNameList.Add(new FormReadExcelUIModelColumns("启用", true));
  554. colNameList.Add(new FormReadExcelUIModelColumns("次序", true));
  555. foreach (FormReadExcelUIModelColumns columnsName in colNameList)
  556. {
  557. if (!dataSource.Columns.Contains(columnsName.columnsName))
  558. {
  559. throw new Exception("模版不正确,缺少列" + columnsName.columnsName);
  560. }
  561. }
  562. #endregion
  563. _wait.Caption = "数据整理中......";
  564. List<ICSOQCCKLIST> InfoList = new List<ICSOQCCKLIST>();
  565. int index = 1;
  566. foreach (DataRow dr in dataSource.Rows)
  567. {
  568. index++;
  569. ///判断必输项目是否为空
  570. foreach (FormReadExcelUIModelColumns columnsName in colNameList)
  571. {
  572. if (string.IsNullOrWhiteSpace(dr[columnsName.columnsName].ToString()) == true && columnsName.NotNull == true)
  573. {
  574. throw new Exception("第 " + index + " 行,列" + columnsName.columnsName + "没有输入值");
  575. }
  576. }
  577. string ItemCode = dr["物料编码"].ToString();
  578. string OPCode = dr["工序编码"].ToString();
  579. string CKGROUPCode = dr["检验项目编码"].ToString();
  580. string CKGROUPMETH = dr["检验方式"].ToString();
  581. string CKGROUPATTR = dr["检验属性"].ToString();
  582. string SetValueMax = dr["标准上限"].ToString();
  583. string SetValueMin = dr["标准下限"].ToString();
  584. string UNIT = dr["单位"].ToString();
  585. string ISREF = dr["启用"].ToString();
  586. string cixu = dr["次序"].ToString();
  587. DateTime dataTime = AppConfig.GetSeverDateTime("yyyy-MM-dd HH:mm:ss");
  588. DataRow[] drInv = ds.Tables[0].Select("INVCODE='" + ItemCode + "'");
  589. if (drInv == null || drInv.Length <= 0)
  590. {
  591. throw new Exception("第 " + index + " 行,物料编码:" + ItemCode + " 不存在!");
  592. }
  593. DataRow[] drOP = ds.Tables[1].Select("OPCODE='" + OPCode + "'");
  594. if (drOP == null || drOP.Length <= 0)
  595. {
  596. throw new Exception("第 " + index + " 行,工序编码:" + OPCode + " 不存在!");
  597. }
  598. DataRow[] drCKGROUP = ds.Tables[2].Select("CKGROUP='" + CKGROUPCode + "'");
  599. if (drCKGROUP == null || drCKGROUP.Length <= 0)
  600. {
  601. throw new Exception("第 " + index + " 行,检验项目编码:" + CKGROUPCode + " 不存在!");
  602. }
  603. DataRow[] drCKGROUPMETH = ds.Tables[3].Select("EnumText='" + CKGROUPMETH + "'");
  604. if (drCKGROUPMETH == null || drCKGROUPMETH.Length <= 0)
  605. {
  606. throw new Exception("第 " + index + " 行,检验方式:" + CKGROUPMETH + " 不存在!");
  607. }
  608. DataRow[] drCKGROUPATTR = ds.Tables[4].Select("EnumText='" + CKGROUPATTR + "'");
  609. if (drCKGROUPATTR == null || drCKGROUPATTR.Length <= 0)
  610. {
  611. throw new Exception("第 " + index + " 行,检验属性:" + CKGROUPATTR + " 不存在!");
  612. }
  613. if (CKGROUPATTR == "尺寸")
  614. {
  615. if (string.IsNullOrWhiteSpace(SetValueMax))
  616. {
  617. throw new Exception("第 " + index + " 行,标准上限不能为空!");
  618. }
  619. if (string.IsNullOrWhiteSpace(SetValueMin))
  620. {
  621. throw new Exception("第 " + index + " 行,标准下限不能为空!");
  622. }
  623. if (string.IsNullOrWhiteSpace(UNIT))
  624. {
  625. throw new Exception("第 " + index + " 行,单位不能为空!");
  626. }
  627. decimal QTY = 0;
  628. bool result = decimal.TryParse(SetValueMax, out QTY);
  629. if (!result)
  630. {
  631. throw new Exception("第 " + index + " 行,标准上限:" + SetValueMax + " 格式不正确!");
  632. }
  633. result = decimal.TryParse(SetValueMin, out QTY);
  634. if (!result)
  635. {
  636. throw new Exception("第 " + index + " 行,标准下限:" + SetValueMin + " 格式不正确!");
  637. }
  638. if (decimal.Parse(SetValueMax) < decimal.Parse(SetValueMin))
  639. {
  640. throw new Exception("第 " + index + " 行,标准上限不能小于标准下限!");
  641. }
  642. }
  643. #region 信息表
  644. ICSOQCCKLIST Info = new ICSOQCCKLIST();
  645. Info.ID = Guid.NewGuid().ToString();
  646. Info.INVCode = ItemCode;
  647. Info.OPCode = OPCode;
  648. Info.CKGROUPCode = CKGROUPCode;
  649. Info.CKGROUPMETH = CKGROUPMETH;
  650. Info.CKGROUPATTR = CKGROUPATTR;
  651. Info.SetValueMax =string.IsNullOrWhiteSpace(SetValueMax)?0:Convert.ToDecimal(SetValueMax);
  652. Info.SetValueMin = string.IsNullOrWhiteSpace(SetValueMin) ? 0 : Convert.ToDecimal(SetValueMin);
  653. Info.UNIT = UNIT;
  654. Info.ISREF = ISREF;
  655. Info.MUSER = AppConfig.UserName;
  656. Info.MTIME = dataTime;
  657. Info.WorkPoint = AppConfig.WorkPointCode;
  658. //0906
  659. Info.cixu = cixu;
  660. InfoList.Add(Info);
  661. #endregion
  662. }
  663. _wait.Caption = "导入数据......";
  664. ICSOQCCKLISTBLL.AddandEditList(InfoList, AppConfig.AppConnectString);
  665. _wait.Close();
  666. ICSBaseSimpleCode.AppshowMessageBox("数据导入成功!");
  667. btnRefresh_Click(null, null);
  668. }
  669. catch (Exception ex)
  670. {
  671. _wait.Close();
  672. ICSBaseSimpleCode.AppshowMessageBox("数据导入失败:" + ex.Message);
  673. }
  674. }
  675. }
  676. }