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

1559 lines
75 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 System.Data.SqlClient;
  13. using ICSSoft.Base.Config.AppConfig;
  14. using ICSSoft.Base.Report.Filter;
  15. using ICSSoft.Base.Config.DBHelper;
  16. using ICSSoft.Base.UserControl.FormControl;
  17. using ICSSoft.Base.ReferForm.AppReferForm;
  18. using ICSSoft.Base.Lable.PrintTool;
  19. using ICSSoft.Frame.Data.DAL;
  20. using ICSSoft.Frame.Data.BLL;
  21. using ICSSoft.Frame.Data.Entity;
  22. using System.Text.RegularExpressions;
  23. namespace ICSSoft.Frame.APP
  24. {
  25. public partial class FormICSProjectReports : DevExpress.XtraEditors.XtraForm
  26. {
  27. private string sqltxt = "";
  28. private string sqlconn = "";
  29. DataTable dt;
  30. string opcodes = "";
  31. string vencode = "";
  32. string pocode = "";
  33. Color color ;
  34. private DataTable dataSource = null;
  35. #region 构造函数
  36. public FormICSProjectReports()
  37. {
  38. InitializeComponent();
  39. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  40. this.WindowState = FormWindowState.Maximized;
  41. Search();
  42. }
  43. #endregion
  44. private void Search()
  45. {
  46. string sql = @"select * from dbo.ICSLOTONWIP order by MTIME desc";
  47. sql = string.Format(sql);
  48. dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  49. }
  50. #region 移动窗体
  51. private const int WM_NCHITTEST = 0x84;
  52. private const int HTCLIENT = 0x1;
  53. private const int HTCAPTION = 0x2;
  54. //首先必须了解Windows的消息传递机制,当有鼠标活动消息时,
  55. //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest
  56. //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION ,
  57. //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。
  58. //重写窗体,使窗体可以不通过自带标题栏实现移动
  59. protected override void WndProc(ref Message m)
  60. {
  61. //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息,
  62. //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体,
  63. //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。
  64. //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。
  65. switch (m.Msg)
  66. {
  67. case WM_NCHITTEST:
  68. base.WndProc(ref m);
  69. if ((int)m.Result == HTCLIENT)
  70. m.Result = (IntPtr)HTCAPTION;
  71. return;
  72. }
  73. //拦截双击标题栏、移动窗体的系统消息
  74. if (m.Msg != 0xA3)
  75. {
  76. base.WndProc(ref m);
  77. }
  78. }
  79. #endregion
  80. #region 权限
  81. /// <summary>
  82. /// 操作权限
  83. /// </summary>
  84. /// <returns></returns>
  85. public DataTable RightOfExute()
  86. {
  87. DataTable rData = new DataTable();
  88. rData.Columns.Add("BtnName");
  89. rData.Columns.Add("ActionName");
  90. //查看权限(必须有)
  91. DataRow seeRow = rData.NewRow();
  92. seeRow["BtnName"] = "see";
  93. seeRow["ActionName"] = "查看";
  94. rData.Rows.Add(seeRow);
  95. //List<Control> ControlList = new List<Control>();
  96. //foreach (Control ctr in ControlList)
  97. //{
  98. // if (ctr.GetType() == typeof(SimpleButton))
  99. // {
  100. // DataRow dr = rData.NewRow();
  101. // dr["BtnName"] = ctr.Name;
  102. // dr["ActionName"] = ctr.Text;
  103. // rData.Rows.Add(dr);
  104. // }
  105. //}
  106. rData.AcceptChanges();
  107. return rData;
  108. }
  109. /// <summary>
  110. /// 数据权限
  111. /// </summary>
  112. /// <returns></returns>
  113. public DataTable RightOfData()
  114. {
  115. DataTable rData = new DataTable();
  116. rData.Columns.Add("BodyName");
  117. rData.Columns.Add("ControlName");
  118. rData.Columns.Add("ControlCaption");
  119. rData.AcceptChanges();
  120. return rData;
  121. }
  122. #endregion
  123. #region 退出
  124. private void btnClose_Click(object sender, EventArgs e)
  125. {
  126. AppConfig.CloseFormShow(this.Text);
  127. this.Close();
  128. }
  129. private void btnExit_Click(object sender, EventArgs e)
  130. {
  131. AppConfig.CloseFormShow(this.Text);
  132. this.Close();
  133. }
  134. #endregion
  135. #region 初始化查询条件
  136. private void init()
  137. {
  138. txtMOVER.Text = "";
  139. txtStartDate.Enabled = false;
  140. txtEndDate.Enabled = false;
  141. #region 零件号
  142. List<string> MoverCode = new List<string>();
  143. MoverCode.Add("");
  144. MoverCode.Add("等于");
  145. MoverCode.Add("范围内");
  146. cboMOVER.DataSource = MoverCode;
  147. cboMOVER.SelectedIndex = 0;
  148. txtMOVERS.Text = "";
  149. txtMOVERE.Text = "";
  150. #endregion
  151. #region 存货编码
  152. #region
  153. // string sql = @"SELECT '' AS [存货编码],'' AS [存货名称]
  154. // UNION
  155. // SELECT DISTINCT INVCODE AS [存货编码],INVNAME AS [存货名称] FROM ICSINVENTORY ORDER BY [存货编码]";
  156. // DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  157. // gluItemCode.Properties.ValueMember = "存货编码";
  158. // gluItemCode.Properties.DisplayMember = "存货编码";
  159. // gluItemCode.Properties.DataSource = dt;
  160. // gluItemCode.Properties.NullText = "";//空时的值
  161. // gluItemCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  162. // gluItemCode.Properties.ValidateOnEnterKey = true;//回车确认
  163. // gluItemCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  164. // gluItemCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  165. // //自适应宽度
  166. // gluItemCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  167. #endregion
  168. List<string> ItemCode = new List<string>();
  169. ItemCode.Add("");
  170. ItemCode.Add("等于");
  171. ItemCode.Add("范围内");
  172. cboItemCode.DataSource = ItemCode;
  173. cboItemCode.SelectedIndex = 0;
  174. txtItemCodeS.Text = "";
  175. txtItemCodeE.Text = "";
  176. #endregion
  177. #region 途程代码
  178. string sqlRoute = @"SELECT '' AS [途程代码],'' AS [途程描述]
  179. UNION
  180. SELECT DISTINCT ROUTECODE AS [],ROUTEDESC AS [] FROM ICSROUTE ORDER BY []";
  181. DataTable dtRoute = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sqlRoute).Tables[0];
  182. gluRouteCode.Properties.ValueMember = "途程代码";
  183. gluRouteCode.Properties.DisplayMember = "途程代码";
  184. gluRouteCode.Properties.DataSource = dtRoute;
  185. gluRouteCode.Properties.NullText = "";//空时的值
  186. gluRouteCode.Properties.ImmediatePopup = true;//输入值是否马上弹出窗体
  187. gluRouteCode.Properties.ValidateOnEnterKey = true;//回车确认
  188. gluRouteCode.Properties.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.Standard;//要使用户可以输入,这里须设为Standard
  189. gluRouteCode.Properties.AllowNullInput = DevExpress.Utils.DefaultBoolean.True; //可用Ctrl + Delete清空选择內容
  190. //自适应宽度
  191. gluRouteCode.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFitResizePopup;
  192. #endregion
  193. #region 状态
  194. List<string> status = new List<string>();
  195. status.Add("全部");
  196. status.Add("良品");
  197. status.Add("不良品");
  198. //cboStatus.DataSource = status;
  199. //cboStatus.SelectedIndex = 0;
  200. #endregion
  201. #region 工单号
  202. List<string> MoCodes = new List<string>();
  203. MoCodes.Add("");
  204. MoCodes.Add("等于");
  205. MoCodes.Add("范围内");
  206. cboMoCode.DataSource = MoCodes;
  207. cboMoCode.SelectedIndex = 0;
  208. txtMoCodeS.Text = "";
  209. txtMoCodeE.Text = "";
  210. #endregion
  211. #region 产品跟踪单号
  212. List<string> LotNOs = new List<string>();
  213. LotNOs.Add("");
  214. LotNOs.Add("等于");
  215. LotNOs.Add("范围内");
  216. cboLotNO.DataSource = LotNOs;
  217. cboLotNO.SelectedIndex = 0;
  218. txtLotNOS.Text = "";
  219. txtLotNOE.Text = "";
  220. #endregion
  221. #region 派工生产日期
  222. //chkMO2UserDate.Checked = false;
  223. //dtpMO2UserDateS.Value = DateTime.Now.AddDays(-1);
  224. //dtpMO2UserDateE.Value = DateTime.Now;
  225. //dtpMO2UserDateS.Enabled = false;
  226. //dtpMO2UserDateE.Enabled = false;
  227. #endregion
  228. #region 接收任务日期
  229. //chkLotBeginDate.Checked = false;
  230. //dtpLotBeginDateS.Value = DateTime.Now.AddDays(-1);
  231. //dtpLotBeginDateE.Value = DateTime.Now;
  232. //dtpLotBeginDateS.Enabled = false;
  233. //dtpLotBeginDateE.Enabled = false;
  234. #endregion
  235. }
  236. #endregion
  237. #region 清空查询条件
  238. private void clear()
  239. {
  240. //txtMOVER.Text = "";
  241. //gluItemCode.EditValue = "";
  242. //gluItemCode.Text = "";
  243. //cboStatus.SelectedIndex = 0;
  244. cboMOVER.SelectedIndex = 0;
  245. txtMOVERS.Text = "";
  246. txtMOVERE.Text = "";
  247. cboItemCode.Text = "";
  248. txtItemCodeS.Text = "";
  249. txtItemCodeE.Text = "";
  250. cboMoCode.SelectedIndex = 0;
  251. txtMoCodeS.Text = "";
  252. txtMoCodeE.Text = "";
  253. cboLotNO.SelectedIndex = 0;
  254. txtLotNOS.Text = "";
  255. txtLotNOE.Text = "";
  256. gluRouteCode.Text = "";
  257. //chkMO2UserDate.Checked = false;
  258. //chkLotBeginDate.Checked = false;
  259. }
  260. #endregion
  261. #region 校验查询条件
  262. private string check()
  263. {
  264. string msg = "";
  265. #region 派工生产日期
  266. //bool CompareMO2UserDate = (DateTime.Compare(Convert.ToDateTime(dtpMO2UserDateS.Text.Trim()), Convert.ToDateTime(dtpMO2UserDateE.Text.Trim())) <= 0) ? true : false;
  267. //if (!CompareMO2UserDate && chkMO2UserDate.Checked)
  268. //{
  269. // msg += "派工生产开始日期应该小于结束日期";
  270. //}
  271. #endregion
  272. #region 接收任务日期
  273. //bool CompareLotBeginDate = (DateTime.Compare(Convert.ToDateTime(dtpLotBeginDateS.Text.Trim()), Convert.ToDateTime(dtpLotBeginDateE.Text.Trim())) <= 0) ? true : false;
  274. //if (!CompareLotBeginDate && chkLotBeginDate.Checked)
  275. //{
  276. // msg += "接收任务开始日期应该小于结束日期";
  277. //}
  278. #endregion
  279. return msg;
  280. }
  281. #endregion
  282. #region 拼接查询条件
  283. private string getWhere()
  284. {
  285. string where = "1=1";
  286. #region 零件号
  287. #region
  288. //if (!string.IsNullOrWhiteSpace(txtMOVER.Text.Trim()))
  289. //{
  290. // where += "AND a.VenderLotNO like'%" + txtMOVER.Text.Trim() + "%'";
  291. //}
  292. #endregion
  293. if (cboMOVER.Text.Trim() == "等于")
  294. {
  295. if (!string.IsNullOrWhiteSpace(txtMOVERS.Text.Trim()))
  296. {
  297. where += " AND a.VenderLotNO='" + txtMOVERS.Text.Trim() + "'";
  298. }
  299. }
  300. else if (cboMOVER.Text.Trim() == "范围内")
  301. {
  302. if (!string.IsNullOrWhiteSpace(txtMOVERS.Text.Trim()))
  303. {
  304. where += " AND a.VenderLotNO>='" + txtMOVERS.Text.Trim() + "'";
  305. }
  306. if (!string.IsNullOrWhiteSpace(txtMOVERE.Text.Trim()))
  307. {
  308. where += " AND a.VenderLotNO<='" + txtMOVERE.Text.Trim() + "'";
  309. }
  310. }
  311. #endregion
  312. #region 存货编码
  313. //if (!string.IsNullOrWhiteSpace(gluItemCode.Text.Trim()))
  314. //{
  315. // where += " AND mo.ITEMCODE='" + gluItemCode.Text.Trim() + "'";
  316. //}
  317. if (cboItemCode.Text.Trim() == "等于")
  318. {
  319. if (!string.IsNullOrWhiteSpace(txtItemCodeS.Text.Trim()))
  320. {
  321. where += " AND mo.ITEMCODE='" + txtItemCodeS.Text.Trim() + "'";
  322. }
  323. }
  324. else if (cboItemCode.Text.Trim() == "范围内")
  325. {
  326. if (!string.IsNullOrWhiteSpace(txtItemCodeS.Text.Trim()))
  327. {
  328. where += " AND mo.ITEMCODE>='" + txtItemCodeS.Text.Trim() + "'";
  329. }
  330. if (!string.IsNullOrWhiteSpace(txtItemCodeE.Text.Trim()))
  331. {
  332. where += " AND mo.ITEMCODE<='" + txtItemCodeE.Text.Trim() + "'";
  333. }
  334. }
  335. #endregion
  336. #region 途程代码
  337. if (!string.IsNullOrWhiteSpace(gluRouteCode.Text.Trim()))
  338. {
  339. where += " AND h.RouteCode='" + gluRouteCode.Text.Trim() + "'";
  340. }
  341. #endregion
  342. #region 状态
  343. //if (cboStatus.Text.Trim() == "良品")
  344. //{
  345. // where += " AND c.ACTIONRESULT='GOOD'";
  346. //}
  347. //else if (cboStatus.Text.Trim() == "不良品")
  348. //{
  349. // where += " AND c.ACTIONRESULT='NG'";
  350. //}
  351. #endregion
  352. #region 工单号
  353. if (cboMoCode.Text.Trim() == "等于")
  354. {
  355. if (!string.IsNullOrWhiteSpace(txtMoCodeS.Text.Trim()))
  356. {
  357. where += " AND mo.MOCODE='" + txtMoCodeS.Text.Trim() + "'";
  358. }
  359. }
  360. else if (cboMoCode.Text.Trim() == "范围内")
  361. {
  362. if (!string.IsNullOrWhiteSpace(txtMoCodeS.Text.Trim()))
  363. {
  364. where += " AND mo.MOCODE>='" + txtMoCodeS.Text.Trim() + "'";
  365. }
  366. if (!string.IsNullOrWhiteSpace(txtMoCodeE.Text.Trim()))
  367. {
  368. where += " AND mo.MOCODE<='" + txtMoCodeE.Text.Trim() + "'";
  369. }
  370. }
  371. #endregion
  372. #region 产品跟踪单号
  373. if (cboLotNO.Text.Trim() == "等于")
  374. {
  375. if (!string.IsNullOrWhiteSpace(txtLotNOS.Text.Trim()))
  376. {
  377. where += " AND a.LOTNO='" + txtLotNOS.Text.Trim() + "'";
  378. }
  379. }
  380. else if (cboLotNO.Text.Trim() == "范围内")
  381. {
  382. if (!string.IsNullOrWhiteSpace(txtLotNOS.Text.Trim()))
  383. {
  384. where += " AND a.LOTNO>='" + txtLotNOS.Text.Trim() + "'";
  385. }
  386. if (!string.IsNullOrWhiteSpace(txtLotNOE.Text.Trim()))
  387. {
  388. where += " AND a.LOTNO<='" + txtLotNOE.Text.Trim() + "'";
  389. }
  390. }
  391. #endregion
  392. #region 派工生产日期
  393. //if (chkMO2UserDate.Checked)
  394. //{
  395. // where += " AND b.PlanDate>='" + int.Parse(Convert.ToDateTime(dtpMO2UserDateS.Text.Trim()).ToString("yyyyMMdd")) +
  396. // "' AND b.PlanDate<='" + int.Parse(Convert.ToDateTime(dtpMO2UserDateE.Text.Trim()).ToString("yyyyMMdd")) + "'";
  397. //}
  398. #endregion
  399. #region 接收任务日期
  400. //if (chkLotBeginDate.Checked)
  401. //{
  402. // where += " AND c.BeginDate>='" + int.Parse(Convert.ToDateTime(dtpLotBeginDateS.Text.Trim()).ToString("yyyyMMdd")) +
  403. // "' AND c.BeginDate<='" + int.Parse(Convert.ToDateTime(dtpLotBeginDateE.Text.Trim()).ToString("yyyyMMdd")) + "'";
  404. //}
  405. #endregion
  406. #region 未完工
  407. if (this.cbxISCOM.Checked)
  408. {
  409. where += " AND isnull(dbo.GetMOCOMQTY(a.MOCODE),0) != a.MOPlanQty ";
  410. }
  411. #endregion
  412. #region 预计完工时间
  413. if(checkDate.Checked)
  414. {
  415. where += " and mo.MOPLANENDDATE BETWEEN " + "'" + Convert.ToDateTime(txtStartDate.Text).ToString("yyyy-MM-dd") + "'" + " AND " + "'" + Convert.ToDateTime(txtEndDate.Text).ToString("yyyy-MM-dd") + "'";
  416. }
  417. #endregion
  418. #region 未入库
  419. if (checkAll.Checked)//全部
  420. {
  421. where += " AND 1=1 ";
  422. }
  423. else if(checkProcessing.Checked)//在制
  424. {
  425. where += " AND i.LotNo is null ";
  426. }
  427. else if (checkStockIn.Checked)//已入库
  428. {
  429. where += " AND i.LotNo is not null ";
  430. }
  431. #endregion
  432. return where;
  433. }
  434. #endregion
  435. #region 拼接查询条件
  436. private string getWhere2()
  437. {
  438. #region 亚太零件工号
  439. string where = " 1 = 1 ";
  440. //if (!string.IsNullOrWhiteSpace(txtMOVER.Text.Trim()))
  441. //{
  442. // where += "AND g.VenderLotNO like'%" + txtMOVER.Text.Trim() + "%'";
  443. //}
  444. if (cboMOVER.Text.Trim() == "等于")
  445. {
  446. if (!string.IsNullOrWhiteSpace(txtMOVERS.Text.Trim()))
  447. {
  448. where += " AND g.VenderLotNO='" + txtMOVERS.Text.Trim() + "'";
  449. }
  450. }
  451. else if (cboMOVER.Text.Trim() == "范围内")
  452. {
  453. if (!string.IsNullOrWhiteSpace(txtMOVERS.Text.Trim()))
  454. {
  455. where += " AND g.VenderLotNO>='" + txtMOVERS.Text.Trim() + "'";
  456. }
  457. if (!string.IsNullOrWhiteSpace(txtMOVERE.Text.Trim()))
  458. {
  459. where += " AND g.VenderLotNO<='" + txtMOVERE.Text.Trim() + "'";
  460. }
  461. }
  462. #endregion
  463. #region 存货编码
  464. //if (!string.IsNullOrWhiteSpace(gluItemCode.Text.Trim()))
  465. //{
  466. // where += " AND a.ITEMCODE='" + gluItemCode.Text.Trim() + "'";
  467. //}
  468. if (cboItemCode.Text.Trim() == "等于")
  469. {
  470. if (!string.IsNullOrWhiteSpace(txtItemCodeS.Text.Trim()))
  471. {
  472. where += " AND a.ITEMCODE='" + txtItemCodeS.Text.Trim() + "'";
  473. }
  474. }
  475. else if (cboItemCode.Text.Trim() == "范围内")
  476. {
  477. if (!string.IsNullOrWhiteSpace(txtItemCodeS.Text.Trim()))
  478. {
  479. where += " AND a.ITEMCODE>='" + txtItemCodeS.Text.Trim() + "'";
  480. }
  481. if (!string.IsNullOrWhiteSpace(txtItemCodeE.Text.Trim()))
  482. {
  483. where += " AND a.ITEMCODE<='" + txtItemCodeE.Text.Trim() + "'";
  484. }
  485. }
  486. #endregion
  487. #region 途程代码
  488. if (!string.IsNullOrWhiteSpace(gluRouteCode.Text.Trim()))
  489. {
  490. where += " AND h.RouteCode='" + gluRouteCode.Text.Trim() + "'";
  491. }
  492. #endregion
  493. #region 工单号
  494. if (cboMoCode.Text.Trim() == "等于")
  495. {
  496. if (!string.IsNullOrWhiteSpace(txtMoCodeS.Text.Trim()))
  497. {
  498. where += " AND a.MOCODE='" + txtMoCodeS.Text.Trim() + "'";
  499. }
  500. }
  501. else if (cboMoCode.Text.Trim() == "范围内")
  502. {
  503. if (!string.IsNullOrWhiteSpace(txtMoCodeS.Text.Trim()))
  504. {
  505. where += " AND a.MOCODE>='" + txtMoCodeS.Text.Trim() + "'";
  506. }
  507. if (!string.IsNullOrWhiteSpace(txtMoCodeE.Text.Trim()))
  508. {
  509. where += " AND a.MOCODE<='" + txtMoCodeE.Text.Trim() + "'";
  510. }
  511. }
  512. #endregion
  513. #region 产品跟踪单号
  514. if (cboLotNO.Text.Trim() == "等于")
  515. {
  516. if (!string.IsNullOrWhiteSpace(txtLotNOS.Text.Trim()))
  517. {
  518. where += " AND g.LOTNO='" + txtLotNOS.Text.Trim() + "'";
  519. }
  520. }
  521. else if (cboLotNO.Text.Trim() == "范围内")
  522. {
  523. if (!string.IsNullOrWhiteSpace(txtLotNOS.Text.Trim()))
  524. {
  525. where += " AND g.LOTNO>='" + txtLotNOS.Text.Trim() + "'";
  526. }
  527. if (!string.IsNullOrWhiteSpace(txtLotNOE.Text.Trim()))
  528. {
  529. where += " AND g.LOTNO<='" + txtLotNOE.Text.Trim() + "'";
  530. }
  531. }
  532. #endregion
  533. #region 派工生产日期
  534. //if (chkMO2UserDate.Checked)
  535. //{
  536. // where += " AND b.PlanDate>='" + int.Parse(Convert.ToDateTime(dtpMO2UserDateS.Text.Trim()).ToString("yyyyMMdd")) +
  537. // "' AND b.PlanDate<='" + int.Parse(Convert.ToDateTime(dtpMO2UserDateE.Text.Trim()).ToString("yyyyMMdd")) + "'";
  538. //}
  539. #endregion
  540. #region 接收任务日期
  541. //if (chkLotBeginDate.Checked)
  542. //{
  543. // where += " AND c.BeginDate>='" + int.Parse(Convert.ToDateTime(dtpLotBeginDateS.Text.Trim()).ToString("yyyyMMdd")) +
  544. // "' AND c.BeginDate<='" + int.Parse(Convert.ToDateTime(dtpLotBeginDateE.Text.Trim()).ToString("yyyyMMdd")) + "'";
  545. //}
  546. #endregion
  547. #region 未完工
  548. if (this.cbxISCOM.Checked)
  549. {
  550. where += " AND isnull(dbo.GetMOCOMQTY(a.MOCODE),0) != mo.MOPlanQty ";
  551. }
  552. #endregion
  553. #region 预计完工时间
  554. if (checkDate.Checked)
  555. {
  556. where += " and a.MOPLANENDDATE BETWEEN " + "'" + Convert.ToDateTime(txtStartDate.Text).ToString("yyyy-MM-dd") + "'" + " AND " + "'" + Convert.ToDateTime(txtEndDate.Text).ToString("yyyy-MM-dd") + "'";
  557. }
  558. #endregion
  559. #region 未入库
  560. if (checkAll.Checked)//全部
  561. {
  562. where += " AND 1=1 ";
  563. }
  564. else if (checkProcessing.Checked)//在制
  565. {
  566. where += " AND i.LotNo is null ";
  567. }
  568. else if (checkStockIn.Checked)//已入库
  569. {
  570. where += " AND i.LotNo is not null ";
  571. }
  572. #endregion
  573. return where;
  574. }
  575. #endregion
  576. #region 查询
  577. private void btnFilter_Click(object sender, EventArgs e)
  578. {
  579. grvDetail.Columns.Clear();
  580. grdDetail.DataSource = null;
  581. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  582. try
  583. {
  584. _wait.Show();
  585. string msg = check();
  586. if (!string.IsNullOrWhiteSpace(msg))
  587. {
  588. _wait.Close();
  589. ICSBaseSimpleCode.AppshowMessageBox(msg);
  590. return;
  591. }
  592. dataSource = null;
  593. DateTime time1 = Convert.ToDateTime(txtStartDate.Text);
  594. DateTime time2 = Convert.ToDateTime(txtEndDate.Text);
  595. int compNum = DateTime.Compare(time1, time2);
  596. if (compNum>0)
  597. {
  598. ICSBaseSimpleCode.AppshowMessageBox("开始时间不能大于结束时间!");
  599. return;
  600. }
  601. #region 查询sql
  602. sqltxt = @"SELECT DISTINCT g.VenderLotNO,
  603. a.MOCODE,
  604. a.MOSEQ,
  605. a.ITEMCODE,
  606. d.INVNAME,
  607. d.INVSTD,
  608. b.RouteCode,
  609. e.ROUTEDESC,
  610. g.LOTNO
  611. ,g.EATTRIBUTE5 as QCCheck
  612. ,a.MOPLANENDDATE
  613. --,CASE WHEN g.EATTRIBUTE2= '1' THEN '' WHEN g.EATTRIBUTE2='0' THEN '' WHEN g.EATTRIBUTE2 is null THEN '' END AS QCCheckResult
  614. ,CASE WHEN h.ISCOM=1 THEN h.MTIME WHEN h.ISCOM=0 THEN null END AS MTIME
  615. INTO #tmfp
  616. FROM ICSMO a with(nolock)
  617. LEFT JOIN ICSMO2Route b with(nolock) ON a.ID = b.MOID
  618. LEFT JOIN ICSINVENTORY d with(nolock) ON a.ITEMCODE = d.INVCODE
  619. LEFT JOIN ICSROUTE e with(nolock) ON b.RouteCode = e.ROUTECODE
  620. LEFT JOIN ICSITEMLot g with(nolock) ON g.TransNO=a.MOCODE and g.TransLine=a.MOSEQ
  621. LEFT JOIN ICSLOTSIMULATION h with(nolock) ON h.LOTNO=g.LOTNO
  622. LEFT JOIN ICSWareHouseLotInfo i with(nolock) ON g.LotNo=i.LotNo
  623. WHERE {1}
  624. IF NOT EXISTS(SELECT MOCODE FROM #tmfp)
  625. BEGIN
  626. RAISERROR('!',16,0)
  627. END
  628. SELECT distinct a.LOTNO,
  629. SUM(CAST(DATEDIFF(HOUR,a.BeginTime,a.EndTime)-ISNULL(f.ff, 0) as NUMERIC(10,1))) as realtime,
  630. SUM(c.STIME*a.LOTQTY) as sumtime
  631. --SUM(CASE WHEN g.IDMERGETYPE='' THEN 0 ELSE CAST(g.IDMERGETYPE AS DECIMAL(18,5)) END) as realtime
  632. INTO #tmgp
  633. FROM ICSLOTONWIP a with(nolock)
  634. LEFT JOIN ICSEquipment b with(nolock) ON a.EQPCODE=b.EQPCode
  635. LEFT JOIN ICSEQPSTP c with(nolock) on b.EType=c.EQPTypeCode AND a.ITEMCODE=c.ITEMCODE AND a.OPCODE=c.OPCODE
  636. LEFT JOIN (SELECT LOTNO,SEQ,SUM(DATEDIFF(HOUR,BeginTime,EndTime)) as ff
  637. FROM ICSLOTPAUSE with(nolock)
  638. GROUP BY LOTNO,SEQ)f ON a.LOTNO=f.LOTNO AND a.SEQ=f.SEQ
  639. where 1=1
  640. group by a.LOTNO
  641. IF NOT EXISTS(SELECT LotNO FROM #tmgp)
  642. BEGIN
  643. RAISERROR('!',16,0)
  644. END
  645. SELECT
  646. a.LOTNO as LOTNO,
  647. ''+RIGHT('0'+CAST(row_number() over (partition by a.LotNo ORDER BY r.opseq) AS VARCHAR(100)), 2) AS Ind,
  648. (CASE WHEN us.EATTRIBUTE1='1' THEN ':'+r.OPCODE +':'+ s.opdesc
  649. ELSE r.OPCODE +':'+ s.opdesc
  650. END )as OPCODE
  651. --r.OPCODE as OPCODE
  652. INTO #tmep
  653. FROM
  654. ICSITEMLot a with(nolock)
  655. LEFT JOIN ICSMO mo with(nolock) ON a.TransNO = mo.MOCODE AND a.TransLine = mo.MOSEQ
  656. LEFT JOIN ICSMO2ROUTE h with(nolock) ON mo.ID = h.MOID
  657. LEFT JOIN ICSITEMROUTE2OPLot r with(nolock) ON MO.ITEMCODE = r.ITEMCODE AND h.ROUTECODE = r.ROUTECODE AND a.LotNO = r.LotNo
  658. INNER JOIN ICSMO2User us with(nolock) ON mo.MOCODE=us.MOCODE and a.LOTNO=us.LOTNO and us.opcode=r.opcode
  659. LEFT JOIN ICSOP s with(nolock) ON r.opcode=s.opcode
  660. LEFT JOIN ICSWareHouseLotInfo i with(nolock) ON a.LotNo=i.LotNo
  661. WHERE {0}--a.LotNO LIKE 'SCDD190800031%'
  662. ORDER BY a.LOTNO,r.OPSEQ
  663. IF NOT EXISTS(SELECT LotNO FROM #tmep)
  664. BEGIN
  665. RAISERROR('!',16,0)
  666. END
  667. SELECT DISTINCT Ind INTO #tmip FROM #tmep ORDER BY Ind
  668. DECLARE @SQL VARCHAR (8000)
  669. SELECT @SQL = isnull(@SQL + ',', '') + ' MAX(CASE Ind WHEN ''' + Ind + ''' THEN OPCODE ELSE '''' END) [' + Ind + ']'
  670. FROM(SELECT Ind FROM #tmip) AS a
  671. SET @SQL = 'SELECT ROW_NUMBER() over(order by tmhp. ASC) as ,#tmfp.VenderLotNO as ,#tmfp.MOCODE as ,#tmfp.MOSEQ as ,
  672. #tmfp.MOPLANENDDATE as , #tmfp.ITEMCODE as ,#tmfp.INVSTD as ,#tmfp.INVNAME as ,
  673. #tmfp.RouteCode as 线,#tmfp.ROUTEDESC as 线,tmhp.*,#tmfp.MTIME as ,#tmgp.realtime as ,#tmgp.sumtime as ,
  674. Cast(CAST((#tmgp.realtime/#tmgp.sumtime*100) AS NUMERIC(10,1)) as nvarchar(10)) +''%'' as
  675. FROM (SELECT LOTNO AS ,' +@SQL + ' FROM #tmep GROUP BY LOTNO) tmhp
  676. inner JOIN #tmfp ON tmhp.=#tmfp.LOTNO
  677. LEFT JOIN #tmgp ON tmhp.=#tmgp.LOTNO
  678. ORDER BY tmhp.,#tmfp.MOCODE,#tmfp.ITEMCODE,#tmfp.RouteCode,#tmfp.MTIME ASC'
  679. PRINT(@sql)
  680. EXEC (@SQL)
  681. DROP TABLE #tmep
  682. drop table #tmgp
  683. drop table #tmfp
  684. drop table #tmip";
  685. string where = getWhere();
  686. string where1 = getWhere2();
  687. //if (!string.IsNullOrWhiteSpace(where))
  688. //{
  689. // sqltxt += where;
  690. //}
  691. //sqltxt += " ORDER BY a.MOVER,a.MOCODE,g.LOTNO";
  692. #endregion
  693. sqltxt = string.Format(sqltxt, where, where1);
  694. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sqltxt).Tables[0];
  695. grdDetail.DataSource = dt;
  696. grvDetail.BestFitColumns();
  697. rptPage.PageSize = 100;
  698. rptPage.PageIndex = 1;
  699. rptPage.ReLoad();
  700. _wait.Close();
  701. }
  702. catch (Exception ex)
  703. {
  704. //MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  705. ICSBaseSimpleCode.AppshowMessageBox("异常:" + ex.Message);
  706. grdDetail.DataSource = null;
  707. _wait.Close();
  708. }
  709. }
  710. #endregion
  711. #region gridControl绑定数据源
  712. // private void CreatDataSource(DataTable dt)
  713. // {
  714. // try
  715. // {
  716. // List<string> lotlist = new List<string>();
  717. // foreach (DataRow dr in dt.Rows)
  718. // {
  719. // if ((dr["LOTNO"].ToString() != "") && (!lotlist.Contains(dr["LOTNO"].ToString())))
  720. // {
  721. // lotlist.Add(dr["LOTNO"].ToString());
  722. // }
  723. // }
  724. // DataTable dtone = new DataTable();
  725. // dtone.Columns.Add("MOVER", typeof(string));
  726. // dtone.Columns.Add("MOCODE", typeof(string));
  727. // dtone.Columns.Add("LOTNO", typeof(string));
  728. // dtone.Columns.Add("ITEMCODE", typeof(string));
  729. // dtone.Columns.Add("INVNAME", typeof(string));
  730. // dtone.Columns.Add("RouteCode", typeof(string));
  731. // dtone.Columns.Add("ROUTEDESC", typeof(string));
  732. // dtone.Columns.Add("OP1", typeof(string));
  733. // dtone.Columns.Add("OP2", typeof(string));
  734. // dtone.Columns.Add("OP3", typeof(string));
  735. // dtone.Columns.Add("OP4", typeof(string));
  736. // dtone.Columns.Add("OP5", typeof(string));
  737. // dtone.Columns.Add("OP6", typeof(string));
  738. // dtone.Columns.Add("OP7", typeof(string));
  739. // dtone.Columns.Add("OP8", typeof(string));
  740. // dtone.Columns.Add("OP9", typeof(string));
  741. // dtone.Columns.Add("OP10", typeof(string));
  742. // dtone.Columns.Add("MTIME",typeof(string));
  743. // dtone.Columns.Add("SumTime", typeof(decimal));
  744. // dtone.Columns.Add("SumRealtime", typeof(decimal));
  745. // dtone.Columns.Add("Rate", typeof(string));
  746. // //dtone.Columns.Add("SSCODE", typeof(string));
  747. // //dtone.Columns.Add("SSNAME", typeof(string));
  748. // dtone.Columns.Add("QCCheck", typeof(string));
  749. // dtone.Columns["MOVER"].Caption = "零件号";
  750. // dtone.Columns["MOCODE"].Caption = "生产订单号";
  751. // dtone.Columns["LOTNO"].Caption = "产品跟踪单号";
  752. // dtone.Columns["ITEMCODE"].Caption = "存货编码";
  753. // dtone.Columns["INVNAME"].Caption = "存货名称";
  754. // dtone.Columns["RouteCode"].Caption = "途程代码";
  755. // dtone.Columns["ROUTEDESC"].Caption = "途程名称";
  756. // dtone.Columns["OP1"].Caption = "工序1";
  757. // dtone.Columns["OP2"].Caption = "工序2";
  758. // dtone.Columns["OP3"].Caption = "工序3";
  759. // dtone.Columns["OP4"].Caption = "工序4";
  760. // dtone.Columns["OP5"].Caption = "工序5";
  761. // dtone.Columns["OP6"].Caption = "工序6";
  762. // dtone.Columns["OP7"].Caption = "工序7";
  763. // dtone.Columns["OP8"].Caption = "工序8";
  764. // dtone.Columns["OP9"].Caption = "工序9";
  765. // dtone.Columns["OP10"].Caption = "工序10";
  766. // dtone.Columns["MTIME"].Caption = "完工时间";
  767. // dtone.Columns["QCCheck"].Caption = "质量检验";
  768. // string sql = @"select
  769. // a.LOTNO,
  770. //
  771. // r.OPCODE,
  772. // c.OPDESC,
  773. // NULL as STIME,
  774. // b.MTIME,
  775. // r.OPSEQ AS OPSEQ
  776. // from ICSITEMLot a
  777. // left join ICSMO mo on a.TransNO=mo.MOCODE and a.TransLine=mo.MOSEQ
  778. // LEFT JOIN ICSINVENTORY INV ON MO.ITEMCODE=INV.INVCODE
  779. // left join ICSMO2ROUTE h on mo.ID=h.MOID
  780. // left join ICSITEMROUTE2OPLot r on MO.ITEMCODE=r.ITEMCODE AND h.ROUTECODE=r.ROUTECODE AND a.LotNO=r.LotNo
  781. // left join ICSLOTONWIP b on a.LOTNO=b.LOTNO And r.OPCODE = b.OpCode
  782. // left join ICSOP c on r.OPCODE=c.OPCODE
  783. //where {0}
  784. //order by a.LOTNO,r.OPSEQ";
  785. // sql = string.Format(sql,getWhere2());
  786. // DataTable dt2 = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  787. // //查询批次工序完成状况
  788. // string sql3 = @"SELECT distinct a.LOTNO,
  789. // SUM(CAST(DATEDIFF(HOUR,a.BeginTime,a.EndTime)-ISNULL(f.ff, 0) as NUMERIC(10,1))) as realtime
  790. // --SUM(CASE WHEN g.IDMERGETYPE='' THEN 0 ELSE CAST(g.IDMERGETYPE AS DECIMAL(18,5)) END) as realtime
  791. // FROM ICSLOTONWIP a
  792. // LEFT JOIN (SELECT LOTNO,SEQ,SUM(DATEDIFF(HOUR,BeginTime,EndTime)) as ff
  793. // FROM ICSLOTPAUSE
  794. // GROUP BY LOTNO,SEQ)f ON a.LOTNO=f.LOTNO AND a.SEQ=f.SEQ
  795. // where 1=1
  796. // group by a.LOTNO";
  797. // sql3 = string.Format(sql3);
  798. // DataTable dt3 = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql3).Tables[0];
  799. // for (int i = 0; i < lotlist.Count; i++)
  800. // {
  801. // DataRow[] dr1 = dt.Select("LOTNO ='" + lotlist[i] + "'");
  802. // DataRow drone = dtone.NewRow();
  803. // drone["MOVER"] = dr1[0]["MOVER"].ToString();
  804. // drone["MOCODE"] = dr1[0]["MOCODE"].ToString();
  805. // drone["LOTNO"] = dr1[0]["LOTNO"].ToString();
  806. // drone["ITEMCODE"] = dr1[0]["ITEMCODE"].ToString();
  807. // drone["INVNAME"] = dr1[0]["INVNAME"].ToString();
  808. // drone["RouteCode"] = dr1[0]["RouteCode"].ToString();
  809. // drone["ROUTEDESC"] = dr1[0]["ROUTEDESC"].ToString();
  810. // drone["MTIME"] = dr1[0]["MTIME"].ToString();
  811. // drone["QCCheck"] = dr1[0]["QCCheck"].ToString();
  812. // decimal stime = 0M;
  813. // decimal realtime = 0M;
  814. // DataRow[] drs = dt2.Select("LOTNO ='" + lotlist[i] + "'");
  815. // DataRow[] drs1 = dt3.Select("LOTNO ='" + lotlist[i] + "'");
  816. // for (int n = 0; n < drs.Length; n++)
  817. // {
  818. // //drone["SSCODE"] = drs[0]["SSCODE"].ToString();
  819. // //drone["SSNAME"] = drs[0]["SSNAME"].ToString();
  820. // stime += decimal.Parse(drs[n]["STIME"].ToString().Equals("") ? "0" : drs[n]["STIME"].ToString());
  821. // switch (n)
  822. // {
  823. // case 0:
  824. // drone["OP1"] = drs[0]["OPCODE"].ToString() + " " + drs[0]["OPDESC"].ToString() + " " + drs[0]["STIME"].ToString() ;
  825. // break;
  826. // case 1:
  827. // drone["OP2"] = drs[1]["OPCODE"].ToString() + " " + drs[1]["OPDESC"].ToString() + " " + drs[1]["STIME"].ToString();
  828. // break;
  829. // case 2:
  830. // drone["OP3"] = drs[2]["OPCODE"].ToString() + " " + drs[2]["OPDESC"].ToString() + " " + drs[2]["STIME"].ToString();
  831. // break;
  832. // case 3:
  833. // drone["OP4"] = drs[3]["OPCODE"].ToString() + " " + drs[3]["OPDESC"].ToString() + " " + drs[3]["STIME"].ToString() ;
  834. // break;
  835. // case 4:
  836. // drone["OP5"] = drs[4]["OPCODE"].ToString() + " " + drs[4]["OPDESC"].ToString() + " " + drs[4]["STIME"].ToString();
  837. // break;
  838. // case 5:
  839. // drone["OP6"] = drs[5]["OPCODE"].ToString() + " " + drs[5]["OPDESC"].ToString() + " " + drs[5]["STIME"].ToString();
  840. // break;
  841. // case 6:
  842. // drone["OP7"] = drs[6]["OPCODE"].ToString() + " " + drs[6]["OPDESC"].ToString() + " " + drs[6]["STIME"].ToString() ;
  843. // break;
  844. // case 7:
  845. // drone["OP8"] = drs[7]["OPCODE"].ToString() + " " + drs[7]["OPDESC"].ToString() + " " + drs[7]["STIME"].ToString();
  846. // break;
  847. // case 8:
  848. // drone["OP9"] = drs[8]["OPCODE"].ToString() + " " + drs[8]["OPDESC"].ToString() + " " + drs[8]["STIME"].ToString();
  849. // break;
  850. // case 9:
  851. // drone["OP10"] = drs[9]["OPCODE"].ToString() + " " + drs[9]["OPDESC"].ToString() + " " + drs[9]["STIME"].ToString();
  852. // break;
  853. // }
  854. // }
  855. // drone["SumTime"] = stime;
  856. // if (drs1.Length == 0)
  857. // {
  858. // realtime = 0;
  859. // }
  860. // else
  861. // {
  862. // realtime = decimal.Parse(drs1[0]["realtime"].ToString().Equals("") ? "0" : drs1[0]["realtime"].ToString());
  863. // }
  864. // drone["SumRealtime"] = realtime;
  865. // if (stime == 0)
  866. // {
  867. // drone["Rate"] = 0;
  868. // }
  869. // else
  870. // {
  871. // drone["Rate"] = (Math.Round(realtime / stime, 2))*100+"%";
  872. // }
  873. // dtone.Rows.Add(drone);
  874. // }
  875. // grdDetail.DataSource = dtone;
  876. // grvDetail.BestFitColumns();
  877. // }
  878. // catch (Exception ex)
  879. // {
  880. // throw ex;
  881. // }
  882. // }
  883. #endregion
  884. #region 分页
  885. private void rptPage_PageIndexChanged(object Sender, EventArgs e)
  886. {
  887. DataTable data = AppConfig.GetPageData(dataSource, rptPage.PageIndex, rptPage.PageSize).Copy();
  888. //DataTable data = AppConfig.GetPageDataByDb(tempTableName, "pagerowindex", rptPage.PageSize, rptPage.PageIndex, dataSource.Rows.Count);
  889. grdDetail.DataSource = data;
  890. }
  891. #endregion
  892. #region 列表
  893. private void grvDetail_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  894. {
  895. }
  896. #endregion
  897. #region 加载
  898. private void FormICSFACTORY_Load(object sender, EventArgs e)
  899. {
  900. //btnFilter_Click(sender, e);
  901. init();
  902. }
  903. #endregion
  904. #region 清除
  905. private void btnClear_Click(object sender, EventArgs e)
  906. {
  907. clear();
  908. }
  909. #endregion
  910. #region 导出
  911. private void btnOutPut_Click(object sender, EventArgs e)
  912. {
  913. FormOutExcel foe = new FormOutExcel(this.Tag.ToString(), grdDetail);
  914. foe.ShowDialog();
  915. }
  916. #endregion
  917. private void cboMoCode_SelectedIndexChanged(object sender, EventArgs e)
  918. {
  919. if (cboMoCode.Text.Trim() == "等于")
  920. {
  921. txtMoCodeS.Enabled = true;
  922. txtMoCodeE.Enabled = false;
  923. txtMoCodeE.Text = "";
  924. }
  925. else if (cboMoCode.Text.Trim() == "范围内")
  926. {
  927. txtMoCodeS.Enabled = true;
  928. txtMoCodeE.Enabled = true;
  929. }
  930. else
  931. {
  932. txtMoCodeS.Enabled = false;
  933. txtMoCodeE.Enabled = false;
  934. txtMoCodeS.Text = "";
  935. txtMoCodeE.Text = "";
  936. }
  937. }
  938. private void cboLotNO_SelectedIndexChanged(object sender, EventArgs e)
  939. {
  940. if (cboLotNO.Text.Trim() == "等于")
  941. {
  942. txtLotNOS.Enabled = true;
  943. txtLotNOE.Enabled = false;
  944. txtLotNOE.Text = "";
  945. }
  946. else if (cboLotNO.Text.Trim() == "范围内")
  947. {
  948. txtLotNOS.Enabled = true;
  949. txtLotNOE.Enabled = true;
  950. }
  951. else
  952. {
  953. txtLotNOS.Enabled = false;
  954. txtLotNOE.Enabled = false;
  955. txtLotNOS.Text = "";
  956. txtLotNOE.Text = "";
  957. }
  958. }
  959. private void chkMO2UserDate_CheckedChanged(object sender, EventArgs e)
  960. {
  961. //if (chkMO2UserDate.Checked)
  962. //{
  963. // dtpMO2UserDateS.Enabled = true;
  964. // dtpMO2UserDateE.Enabled = true;
  965. //}
  966. //else
  967. //{
  968. // dtpMO2UserDateS.Enabled = false;
  969. // dtpMO2UserDateE.Enabled = false;
  970. //}
  971. }
  972. private void chkLotBeginDate_CheckedChanged(object sender, EventArgs e)
  973. {
  974. //if (chkLotBeginDate.Checked)
  975. //{
  976. // dtpLotBeginDateS.Enabled = true;
  977. // dtpLotBeginDateE.Enabled = true;
  978. //}
  979. //else
  980. //{
  981. // dtpLotBeginDateS.Enabled = false;
  982. // dtpLotBeginDateE.Enabled = false;
  983. //}
  984. }
  985. #region 单元格单击事件
  986. private void grvDetail_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
  987. {
  988. // int hand = e.RowHandle;
  989. // if (hand < 0)
  990. // return;
  991. // DataRow dr = this.grvDetail.GetDataRow(hand);
  992. // if (dr == null)
  993. // return;
  994. // if (grvDetail.FocusedColumn.FieldName == "OP1" || grvDetail.FocusedColumn.FieldName == "OP2" || grvDetail.FocusedColumn.FieldName == "OP3" ||
  995. // grvDetail.FocusedColumn.FieldName == "OP4" || grvDetail.FocusedColumn.FieldName == "OP5" || grvDetail.FocusedColumn.FieldName == "OP6" ||
  996. // grvDetail.FocusedColumn.FieldName == "OP7" || grvDetail.FocusedColumn.FieldName == "OP8" || grvDetail.FocusedColumn.FieldName == "OP9" ||
  997. // grvDetail.FocusedColumn.FieldName == "OP10")
  998. // {
  999. // string opcode = "";
  1000. // string lotno = "";
  1001. // lotno = grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colLOTNO).ToString();
  1002. // string s = grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, grvDetail.FocusedColumn).ToString();
  1003. // string[] sArray = s.Split(' ');
  1004. // if (sArray.Length > 0)
  1005. // {
  1006. // opcode = sArray[0];
  1007. // }
  1008. // string sql = @"select distinct
  1009. // '' as [产品跟踪单号],
  1010. // '' as [工序],
  1011. // CONVERT (
  1012. // datetime,
  1013. // CASE LEN(a.BeginTime)
  1014. // WHEN '5' THEN
  1015. // SUBSTRING (CAST(a.BeginDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.BeginTime AS CHAR), 1, 1) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 2, 2) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 4, 2)
  1016. // WHEN '6' THEN
  1017. // SUBSTRING (CAST(a.BeginDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.BeginTime AS CHAR), 1, 2) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 3, 2) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 5, 2)
  1018. // END
  1019. // ) AS [开始时间],
  1020. // CONVERT (
  1021. // datetime,
  1022. // CASE LEN(a.EndTime)
  1023. // WHEN '5' THEN
  1024. // SUBSTRING (CAST(a.EndDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.EndTime AS CHAR), 1, 1) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 2, 2) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 4, 2)
  1025. // WHEN '6' THEN
  1026. // SUBSTRING (CAST(a.EndDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.EndTime AS CHAR), 1, 2) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 3, 2) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 5, 2)
  1027. // END
  1028. // ) AS [完成时间],
  1029. // a.EQPCode as [设备],
  1030. // DATEDIFF(
  1031. // s,
  1032. // CONVERT (
  1033. // datetime,
  1034. // CASE LEN(a.BeginTime)
  1035. // WHEN '5' THEN
  1036. // SUBSTRING (CAST(a.BeginDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.BeginTime AS CHAR), 1, 1) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 2, 2) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 4, 2)
  1037. // WHEN '6' THEN
  1038. // SUBSTRING (CAST(a.BeginDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.BeginTime AS CHAR), 1, 2) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 3, 2) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 5, 2)
  1039. // END
  1040. // ),
  1041. // CONVERT (
  1042. // datetime,
  1043. // CASE LEN(EndTime)
  1044. // WHEN '5' THEN
  1045. // SUBSTRING (CAST(a.EndDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.EndTime AS CHAR), 1, 1) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 2, 2) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 4, 2)
  1046. // WHEN '6' THEN
  1047. // SUBSTRING (CAST(a.EndDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.EndTime AS CHAR), 1, 2) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 3, 2) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 5, 2)
  1048. // END
  1049. // )
  1050. // ) * 1.0 / 3600 AS [实际工时],
  1051. // a.UserCodeBegin as [任务人员代码],
  1052. // b.UserName as [接收人员名称],
  1053. //
  1054. // a.UserCodeEnd as [完工人员代码],
  1055. // c.UserName as [完工人员名称],
  1056. //
  1057. //
  1058. // a.NGQTY as[不良次数]
  1059. //
  1060. //
  1061. //
  1062. // from ICSLOTONWIP a
  1063. // left join Sys_User b on a.UserCodeBegin=b.UserCode
  1064. // left join Sys_User c on a.UserCodeEnd=c.UserCode
  1065. //
  1066. // where a.LOTNO='" + lotno + "' and a.OPCODE='" + opcode + "' AND a.ACTION != 'GOMO'";
  1067. // DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  1068. // foreach (DataRow drr in data.Rows)
  1069. // {
  1070. // drr["产品跟踪单号"] = lotno;
  1071. // drr["工序"] = opcode;
  1072. // }
  1073. // FormProjectReportRefer reForm = new FormProjectReportRefer(data);
  1074. // reForm.ShowDialog();
  1075. // //reForm.FilterKey = btn.Text;
  1076. // //grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, grvDetail.FocusedColumn).ToString().Trim();
  1077. // //if (reForm.ShowDialog() == DialogResult.OK)
  1078. // //{
  1079. // // DataTable retData = reForm.ReturnData;
  1080. // // foreach (DataRow drr in retData.Rows)
  1081. // // {
  1082. // // txtEQPCODE.Text = dr["设备编号"].ToString();
  1083. // // //opid = dr["设备ID"].ToString();
  1084. // // txtEQPDESC.Text = dr["设备名称"].ToString();
  1085. // // }
  1086. // //}
  1087. // }
  1088. #endregion
  1089. }
  1090. #region 单元格背景色设置
  1091. private void grvDetail_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
  1092. {
  1093. #region 原逻辑
  1094. //int hand = e.RowHandle;
  1095. //if (hand < 0)
  1096. // return;
  1097. //DataRow dr = this.grvDetail.GetDataRow(hand);
  1098. //if (dr == null)
  1099. // return;
  1100. ////string sql = @"select * from dbo.ICSLOTONWIP order by MTIME desc";
  1101. ////sql = string.Format(sql);
  1102. ////DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  1103. ////for (int i = 0; i < grvDetail.RowCount; i++)
  1104. ////{
  1105. //// string lotno = grvDetail.GetRowCellValue(i, colLOTNO).ToString();
  1106. //// for (int j = 7; j <= 12; j++)
  1107. //// {
  1108. //// if (grvDetail.GetRowCellValue(e.RowHandle, grvDetail.Columns[j]).ToString() != "")
  1109. //// {
  1110. //// string opcode = "";
  1111. //// //string cName = "colOP" + "j";
  1112. //// string set = grvDetail.GetRowCellValue(e.RowHandle, grvDetail.Columns[j]).ToString();
  1113. //// string[] sArray = set.Split(' ');
  1114. //// if (sArray.Length > 0)
  1115. //// {
  1116. //// opcode = sArray[0];
  1117. //// }
  1118. //// int bd = int.Parse(AppConfig.GetSeverDateTime("yyyy-MM-dd").ToString("yyyyMMdd"));
  1119. //// DataRow[] drs = dt.Select("LOTNO='" + lotno + "' and OPCODE='" + opcode + "'");
  1120. //// if (drs != null && drs.Length > 0)
  1121. //if (e.RowHandle >= 0 && (e.Column.FieldName == "OP1" || e.Column.FieldName == "OP2" || e.Column.FieldName == "OP3" || e.Column.FieldName == "OP4" || e.Column.FieldName == "OP5" || e.Column.FieldName == "OP6"))
  1122. //{
  1123. // // {
  1124. // if (e.Column.Tag.ToString() == "生产中")//设背景
  1125. // {
  1126. // e.Appearance.BackColor = Color.Blue;
  1127. // }
  1128. // else
  1129. // {
  1130. // e.Appearance.BackColor = Color.LimeGreen;
  1131. // }
  1132. //}
  1133. #endregion
  1134. #region 现逻辑
  1135. //单元格
  1136. if (e != null && e.RowHandle >= 0 && e.Column.FieldName.Contains("工序") && grvDetail.GetRowCellValue(e.RowHandle, e.Column.FieldName) != null)
  1137. {
  1138. string oppcode = "";
  1139. string oppcodes = "";
  1140. string opcode = grvDetail.GetRowCellValue(e.RowHandle, e.Column.FieldName).ToString();
  1141. string lotno = grvDetail.GetRowCellValue(e.RowHandle, "产品跟踪码").ToString();
  1142. string[] opArray = opcode.Split(':');
  1143. if (opArray.Length == 3)
  1144. {
  1145. oppcode = opArray[1];
  1146. }
  1147. else
  1148. {
  1149. oppcode = opArray[0];
  1150. }
  1151. //判断当前工序供应商与上道工序供应商是否一致
  1152. string sqls = @"SELECT e.VenCode ,f.TransNO
  1153. FROM ICSITEMROUTE2OPLot a WITH(nolock)
  1154. LEFT JOIN ICSMO2User c WITH(nolock) ON a.LotNo=c.LOTNO AND a.OPCODE=c.OPCODE
  1155. LEFT JOIN ICSPO_PoMain e WITH(nolock) ON e.InvCode=a.ITEMCODE+'_'+a.OPCODE AND e.Free1=c.PRLineID
  1156. LEFT JOIN ICSWareHouseLotInfoLog f WITH(nolock) ON a.LotNo=f.LotNO AND f.TransType='收' AND a.OPCODE=f.Memo
  1157. WHERE c.LotNo = '{0}' AND a.OPCODE='{1}'
  1158. ORDER BY a.LotNo,a.OPSEQ ";
  1159. sqls = string.Format(sqls, lotno, oppcode);
  1160. DataSet dts = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sqls);
  1161. if (opcodes.Contains("委外") && opcode.Contains("委外") && dts.Tables[0].Rows.Count > 0 && dts.Tables[0].Rows[0]["VenCode"].ToString() == vencode && dts.Tables[0].Rows[0]["TransNO"].ToString() == pocode)
  1162. {
  1163. //if (opcode != dt.Rows[0]["OPCODE"].ToString())
  1164. //{
  1165. e.Appearance.BackColor = color;
  1166. //}
  1167. }
  1168. else
  1169. {
  1170. string sql = @"SELECT DISTINCT
  1171. a.LOTNO,
  1172. a.OPCODE,
  1173. b.Result,
  1174. a.ACTIONRESULT
  1175. FROM ICSLOTONWIP a WITH(nolock)
  1176. LEFT JOIN ICSLOTONWIPCheck b WITH(nolock) ON a.ID=b.ONWIPID
  1177. LEFT JOIN ICSLOTSIMULATION c WITH(nolock) ON a.MOCODE=c.MOCODE AND a.MOSEQ=c.MOSEQ AND a.LOTNO=c.LOTNO
  1178. WHERE a.LOTNO='{0}' AND a.OPCODE='{1}' AND (a.EATTRIBUTE1 is null OR a.EATTRIBUTE1 <>'') ";
  1179. sql = string.Format(sql, lotno, oppcode);
  1180. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  1181. //完工、检验合格
  1182. if (dt != null && dt.Rows.Count > 0 && dt.Rows[0]["Result"].ToString() == "合格" && dt.Rows[0]["ACTIONRESULT"].ToString() == "COLLECT_END")
  1183. {
  1184. e.Appearance.BackColor = Color.Green;
  1185. color = Color.Green;
  1186. }
  1187. //完工、未检验
  1188. else if (dt != null && dt.Rows.Count > 0 && (dt.Rows[0]["Result"].ToString() == "" || dt.Rows[0]["Result"].ToString() == "待检") && dt.Rows[0]["ACTIONRESULT"].ToString() == "COLLECT_END")
  1189. {
  1190. e.Appearance.BackColor = Color.GreenYellow;
  1191. color = Color.GreenYellow;
  1192. }
  1193. //开工、未完工
  1194. else if (dt != null && dt.Rows.Count > 0 && dt.Rows[0]["ACTIONRESULT"].ToString() == "COLLECT_BEGIN" && dt.Rows[0]["ACTIONRESULT"].ToString() != "COLLECT_END")
  1195. {
  1196. e.Appearance.BackColor = Color.Yellow;
  1197. color = Color.Yellow;
  1198. }
  1199. //完工、检验不合格
  1200. else if (dt != null && dt.Rows.Count > 0 && dt.Rows[0]["Result"].ToString() == "不合格" && dt.Rows[0]["ACTIONRESULT"].ToString() == "COLLECT_END")
  1201. {
  1202. e.Appearance.BackColor = Color.Red;
  1203. color = Color.Red;
  1204. }
  1205. else
  1206. {
  1207. color = Color.White;
  1208. }
  1209. }
  1210. opcodes = grvDetail.GetRowCellValue(e.RowHandle, e.Column.FieldName).ToString();
  1211. if (dts.Tables[0].Rows.Count > 0)
  1212. {
  1213. vencode = dts.Tables[0].Rows[0]["VenCode"].ToString();
  1214. pocode = dts.Tables[0].Rows[0]["TransNO"].ToString();
  1215. }
  1216. else
  1217. {
  1218. vencode = "";
  1219. pocode = "";
  1220. }
  1221. }
  1222. #endregion
  1223. }
  1224. #endregion
  1225. #region 单元格背景色设置
  1226. private void grdView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
  1227. {
  1228. //if (e.Column.FieldName == "OP1" || e.Column.FieldName == "OP2" || e.Column.FieldName == "OP3" ||
  1229. // e.Column.FieldName == "OP4" || e.Column.FieldName == "OP5" || e.Column.FieldName == "OP6" ||
  1230. // e.Column.FieldName == "OP7" || e.Column.FieldName == "OP8" || e.Column.FieldName == "OP9" ||
  1231. // e.Column.FieldName == "OP10")
  1232. //{
  1233. // //string lotno = grvDetail.GetRowCellValue(e.RowHandle, colLOTNO).ToString();
  1234. // string opcode = "";
  1235. // string set = grvDetail.GetRowCellValue(e.RowHandle, e.Column).ToString();
  1236. // string[] sArray = set.Split(' ');
  1237. // if (sArray.Length > 0)
  1238. // {
  1239. // opcode = sArray[0];
  1240. // }
  1241. // //DataRow[] drs = dt.Select("LOTNO='" + lotno + "' and OPCODE='" + opcode + "'");
  1242. // //if (drs != null && drs.Length > 0)
  1243. // //{
  1244. // // if (opcode == "外协")
  1245. // // {
  1246. // // e.Appearance.BackColor = Color.Blue;
  1247. // // }
  1248. // // if (drs[0]["EndDate"].ToString() == "" && drs[0]["EndTime"].ToString() == "")
  1249. // // {
  1250. // // e.Appearance.BackColor = Color.Yellow;
  1251. // // }
  1252. // // else
  1253. // // {
  1254. // // e.Appearance.BackColor = Color.LimeGreen;
  1255. // // }
  1256. // //}
  1257. //}
  1258. }
  1259. #endregion
  1260. private void grvDetail_MouseMove(object sender, MouseEventArgs e)
  1261. {
  1262. //int hand = e.RowHandle;
  1263. //if (hand < 0)
  1264. // return;
  1265. //DataRow dr = this.grvDetail.GetDataRow(hand);
  1266. //if (dr == null)
  1267. // return;
  1268. // if (grvDetail.FocusedColumn.FieldName == "OP1" || grvDetail.FocusedColumn.FieldName == "OP2" || grvDetail.FocusedColumn.FieldName == "OP3" ||
  1269. // grvDetail.FocusedColumn.FieldName == "OP4" || grvDetail.FocusedColumn.FieldName == "OP5" || grvDetail.FocusedColumn.FieldName == "OP6")
  1270. // {
  1271. // string opcode = "";
  1272. // string lotno = "";
  1273. // lotno = grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, colLOTNO).ToString();
  1274. // string s = grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, grvDetail.FocusedColumn).ToString();
  1275. // string[] sArray = s.Split(' ');
  1276. // if (sArray.Length > 0)
  1277. // {
  1278. // opcode = sArray[0];
  1279. // }
  1280. // string sql = @"select distinct
  1281. // '' as [产品跟踪单号],
  1282. // '' as [工序],
  1283. // a.UserCodeBegin as [接收任务人员代码],
  1284. // b.UserName as [任务接收人员名称],
  1285. //
  1286. // CONVERT (
  1287. // datetime,
  1288. // CASE LEN(a.BeginTime)
  1289. // WHEN '5' THEN
  1290. // SUBSTRING (CAST(a.BeginDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.BeginTime AS CHAR), 1, 1) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 2, 2) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 4, 2)
  1291. // WHEN '6' THEN
  1292. // SUBSTRING (CAST(a.BeginDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.BeginTime AS CHAR), 1, 2) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 3, 2) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 5, 2)
  1293. // END
  1294. // ) AS [接收任务时间],
  1295. //
  1296. //
  1297. //
  1298. // a.UserCodeEnd as [工序完工人员代码],
  1299. // c.UserName as [工序完工人员名称],
  1300. // CONVERT (
  1301. // datetime,
  1302. // CASE LEN(a.EndTime)
  1303. // WHEN '5' THEN
  1304. // SUBSTRING (CAST(a.EndDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.EndTime AS CHAR), 1, 1) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 2, 2) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 4, 2)
  1305. // WHEN '6' THEN
  1306. // SUBSTRING (CAST(a.EndDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.EndTime AS CHAR), 1, 2) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 3, 2) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 5, 2)
  1307. // END
  1308. // ) AS [工序完工时间],
  1309. // DATEDIFF(
  1310. // s,
  1311. // CONVERT (
  1312. // datetime,
  1313. // CASE LEN(a.BeginTime)
  1314. // WHEN '5' THEN
  1315. // SUBSTRING (CAST(a.BeginDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.BeginTime AS CHAR), 1, 1) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 2, 2) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 4, 2)
  1316. // WHEN '6' THEN
  1317. // SUBSTRING (CAST(a.BeginDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.BeginDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.BeginTime AS CHAR), 1, 2) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 3, 2) + ':' + SUBSTRING (CAST(a.BeginTime AS CHAR), 5, 2)
  1318. // END
  1319. // ),
  1320. // CONVERT (
  1321. // datetime,
  1322. // CASE LEN(EndTime)
  1323. // WHEN '5' THEN
  1324. // SUBSTRING (CAST(a.EndDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.EndTime AS CHAR), 1, 1) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 2, 2) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 4, 2)
  1325. // WHEN '6' THEN
  1326. // SUBSTRING (CAST(a.EndDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(a.EndDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(a.EndTime AS CHAR), 1, 2) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 3, 2) + ':' + SUBSTRING (CAST(a.EndTime AS CHAR), 5, 2)
  1327. // END
  1328. // )
  1329. // ) * 1.0 / 3600 AS [实际工时],
  1330. // a.NGQTY as[不良次数],
  1331. // d.STIME as [标准工时]
  1332. //
  1333. //
  1334. // from ICSLOTONWIP a
  1335. // left join Sys_User b on a.UserCodeBegin=b.UserCode
  1336. // left join Sys_User c on a.UserCodeEnd=c.UserCode
  1337. // left join dbo.ICSEquipment eqp on a.EQPCode=eqp.EQPCode
  1338. // left join dbo.Sys_EnumValues enum on eqp.EType=enum.EnumText
  1339. // left join ICSEQPSTP d on a.ITEMCODE=d.ITEMCODE and a.OPCODE=d.OPCODE AND enum.EnumValue=d.EQPTypeCode
  1340. // where a.LOTNO='" + lotno + "' and a.OPCODE='" + opcode + "' AND a.ACTION != 'GOMO'";
  1341. // DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sql).Tables[0];
  1342. // foreach (DataRow drr in data.Rows)
  1343. // {
  1344. // drr["产品跟踪单号"] = lotno;
  1345. // drr["工序"] = opcode;
  1346. // }
  1347. // FormDataRefer reForm = new FormDataRefer();
  1348. // reForm.FormTitle = "批次工序信息";
  1349. // DataTable menuData = data;
  1350. // reForm.DataSource = menuData;
  1351. // reForm.MSelectFlag = false;
  1352. // reForm.RowIndexWidth = 35;
  1353. // reForm.HideCols.Add("设备ID");
  1354. // reForm.FormWidth = 800;
  1355. // reForm.FormHeight = 400;
  1356. // reForm.ShowDialog();
  1357. // //reForm.FilterKey = btn.Text;
  1358. // //grvDetail.GetRowCellValue(grvDetail.FocusedRowHandle, grvDetail.FocusedColumn).ToString().Trim();
  1359. // //if (reForm.ShowDialog() == DialogResult.OK)
  1360. // //{
  1361. // // DataTable retData = reForm.ReturnData;
  1362. // // foreach (DataRow drr in retData.Rows)
  1363. // // {
  1364. // // txtEQPCODE.Text = dr["设备编号"].ToString();
  1365. // // //opid = dr["设备ID"].ToString();
  1366. // // txtEQPDESC.Text = dr["设备名称"].ToString();
  1367. // // }
  1368. // //}
  1369. //}
  1370. }
  1371. private void checkDate_CheckedChanged(object sender, EventArgs e)
  1372. {
  1373. if (checkDate.Checked)
  1374. {
  1375. txtStartDate.Enabled = true;
  1376. txtEndDate.Enabled = true;
  1377. }
  1378. else
  1379. {
  1380. txtStartDate.Enabled = false;
  1381. txtEndDate.Enabled = false;
  1382. }
  1383. }
  1384. private void cboMOVER_SelectedIndexChanged(object sender, EventArgs e)
  1385. {
  1386. if (cboMOVER.Text.Trim() == "等于")
  1387. {
  1388. txtMOVERS.Enabled = true;
  1389. txtMOVERE.Enabled = false;
  1390. txtMOVERE.Text = "";
  1391. }
  1392. else if (cboMOVER.Text.Trim() == "范围内")
  1393. {
  1394. txtMOVERS.Enabled = true;
  1395. txtMOVERE.Enabled = true;
  1396. }
  1397. else
  1398. {
  1399. txtMOVERS.Enabled = false;
  1400. txtMOVERE.Enabled = false;
  1401. txtMOVERS.Text = "";
  1402. txtMOVERE.Text = "";
  1403. }
  1404. }
  1405. private void cboItemCode_SelectedIndexChanged(object sender, EventArgs e)
  1406. {
  1407. if (cboItemCode.Text.Trim() == "等于")
  1408. {
  1409. txtItemCodeS.Enabled = true;
  1410. txtItemCodeE.Enabled = false;
  1411. txtItemCodeE.Text = "";
  1412. }
  1413. else if (cboItemCode.Text.Trim() == "范围内")
  1414. {
  1415. txtItemCodeS.Enabled = true;
  1416. txtItemCodeE.Enabled = true;
  1417. }
  1418. else
  1419. {
  1420. txtItemCodeS.Enabled = false;
  1421. txtItemCodeE.Enabled = false;
  1422. txtItemCodeS.Text = "";
  1423. txtItemCodeE.Text = "";
  1424. }
  1425. }
  1426. }
  1427. }