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

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