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

344 lines
12 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 System.IO;
  10. using ICSSoft.Base.Config.AppConfig;
  11. using ICSSoft.Base.Config.DBHelper;
  12. namespace ICSSoft.Frame.APP
  13. {
  14. public partial class FormICSOrderBoard : DevExpress.XtraEditors.XtraForm
  15. {
  16. private string LineCode = "";
  17. private float RefreshTime = 1;
  18. public FormICSOrderBoard()
  19. {
  20. InitializeComponent();
  21. this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  22. this.WindowState = FormWindowState.Maximized;
  23. labTime.Text = DateTime.Now.ToString();
  24. //searchAndView();
  25. timer.Enabled = true;
  26. timer.Start();
  27. //grvDetail.Columns["Mo"].Width = 120;
  28. //grvDetail.Columns["ITEM"].Width = 165;
  29. //grvDetail.Columns["TBFlag"].Width = 50;
  30. //grvDetail.Columns["Status"].Width = 95;
  31. grvDetail.RowHeight = 59;
  32. splitContainerControl1.SplitterPosition = 50;
  33. InitAppconfig();
  34. }
  35. private void InitAppconfig()
  36. {
  37. try
  38. {
  39. using (StreamReader fReader = new StreamReader(AppConfig.BaseServiceFile))
  40. {
  41. while (fReader.Peek() > -1)
  42. {
  43. string value = fReader.ReadLine();
  44. if (!string.IsNullOrEmpty(value))
  45. {
  46. AppConfig.BaseServiceUri = value;
  47. }
  48. }
  49. }
  50. object obj = AppConfig.InvokeWebservice(AppConfig.BaseServiceUri, "WebBaseService", "BaseService", "GetMainConnectString", new object[] { });
  51. if (obj != null)
  52. {
  53. bool flag = AppConfig.CheckDbConnectionState(obj.ToString());
  54. if (flag == true)
  55. {
  56. AppConfig.FrameConnectString = obj.ToString();
  57. }
  58. else
  59. {
  60. AppConfig.FrameConnectString = "";
  61. }
  62. }
  63. else
  64. {
  65. AppConfig.FrameConnectString = "";
  66. }
  67. }
  68. catch
  69. {
  70. AppConfig.FrameConnectString = "";
  71. }
  72. }
  73. //public FormICSOrderBoard(string lineCode, string lineName, float refreshTime)
  74. //{
  75. // InitializeComponent();
  76. // this.MaximumSize = new Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height);
  77. // this.WindowState = FormWindowState.Maximized;
  78. // LineCode = lineCode;
  79. // RefreshTime = refreshTime;
  80. // lblTitle.Text = "线体-" + lineName;
  81. // labTime.Text = DateTime.Now.ToString();
  82. // searchAndView();
  83. // RefreshTimer.Interval = Convert.ToInt32(RefreshTime * 60 * 1000);
  84. // RefreshTimer.Enabled = true;
  85. // RefreshTimer.Start();
  86. // timer.Enabled = true;
  87. // timer.Start();
  88. // grvDetail.Columns["Mo"].Width = 120;
  89. // grvDetail.Columns["ITEM"].Width = 165;
  90. // grvDetail.Columns["TBFlag"].Width = 50;
  91. // grvDetail.Columns["Status"].Width = 95;
  92. // grvDetail.RowHeight = 59;
  93. // splitContainerControl1.SplitterPosition = 50;
  94. //}
  95. /// <summary>
  96. /// 操作权限
  97. /// </summary>
  98. /// <returns></returns>
  99. public DataTable RightOfExute()
  100. {
  101. DataTable rData = new DataTable();
  102. rData.Columns.Add("BtnName");
  103. rData.Columns.Add("ActionName");
  104. //查看权限(必须有)
  105. DataRow seeRow = rData.NewRow();
  106. seeRow["BtnName"] = "see";
  107. seeRow["ActionName"] = "查看";
  108. rData.Rows.Add(seeRow);
  109. DataRow upinvRow = rData.NewRow();
  110. //upinvRow["BtnName"] = btnSelect.Name;
  111. //upinvRow["ActionName"] = btnSelect.Text;
  112. rData.Rows.Add(upinvRow);
  113. rData.AcceptChanges();
  114. return rData;
  115. }
  116. /// <summary>
  117. /// 数据权限
  118. /// </summary>
  119. /// <returns></returns>
  120. public DataTable RightOfData()
  121. {
  122. DataTable rData = new DataTable();
  123. rData.Columns.Add("BodyName");
  124. rData.Columns.Add("ControlName");
  125. rData.Columns.Add("ControlCaption");
  126. rData.AcceptChanges();
  127. return rData;
  128. }
  129. /// <summary>
  130. /// 加载数据
  131. /// </summary>
  132. private void searchAndView()
  133. {
  134. try
  135. {
  136. string sqlwhere = "";
  137. if (!string.IsNullOrEmpty(mocode.Text)) {
  138. sqlwhere += " and B.MOCODE like '%"+mocode.Text.Trim()+"%'";
  139. }
  140. if (!string.IsNullOrEmpty(invcode.Text))
  141. {
  142. sqlwhere += " and B.ITEMCODE like '%"+invcode.Text.Trim()+"%'";
  143. }
  144. string sql = @"select distinct motype as 订单状态,a.lotno as 产品跟踪单号,B.MOCODE AS 生产工单号,B.MOSEQ AS 工单行号,B.ITEMCODE AS 产品编码,F.INVNAME AS 产品名称,
  145. D.StartPlanDate AS ,D.EndPlanDate AS ,
  146. J.OPNAME AS ,
  147. CASE
  148. WHEN C.OPCODE IS NULL THEN H.OPNAME
  149. ELSE I.OPNAME
  150. END AS ,
  151. a.LOTQTY as ,
  152. B.MOPLANQTY AS ,
  153. case
  154. when c.CollectStatus='COLLECT_BEGINN'
  155. then
  156. CONVERT(NVARCHAR(20),CONVERT(DECIMAL(18,2),CONVERT(DECIMAL,isnull(l.seq-1,0))/CONVERT(DECIMAL,k.count))*100)+'%'
  157. else
  158. CONVERT(NVARCHAR(20),CONVERT(DECIMAL(18,2),CONVERT(DECIMAL,isnull(l.seq,0))/CONVERT(DECIMAL,k.count))*100)+'%'
  159. end as ,
  160. B.MDeptCode AS ,
  161. case
  162. when c.CollectStatus='COLLECT_BEGINN'
  163. then n.UserName
  164. when c.CollectStatus='COLLECT_END'
  165. then o.UserName
  166. else ''
  167. end as ,
  168. CASE
  169. when d.EndPlanDate>=c.EndTime
  170. then '是'
  171. when d.EndPlanDate>c.EndTime
  172. then '否'
  173. end as
  174. from ICSITEMLot a
  175. inner join ICSMO b on a.TransNO=b.MOCODE and a.TransLine=b.MOSEQ
  176. left join ICSLOTSIMULATION c on c.lotno=a.LotNO
  177. left join ICSMO2User d on d.LOTNO=c.LOTNO and d.OPCODE=c.OPCODE
  178. LEFT JOIN ICSINVENTORY F ON F.INVCODE=B.ITEMCODE
  179. left join ICSITEMROUTE2OPLot e on e.LotNo=a.LotNO and e.OPSEQ=(select min(opseq) as OPSEQ from ICSITEMROUTE2OPLot where lotno=e.LotNo and OPSEQ>(select opseq from ICSITEMROUTE2OPLot where opcode=c.OPCODE and lotno=e.LotNo))
  180. LEFT JOIN ICSITEMROUTE2OPLot G ON G.LotNo=A.LotNO AND E.OPSEQ=(SELECT MIN(OPSEQ) AS OPSEQ FROM ICSITEMROUTE2OPLot where lotno=e.LotNo)
  181. LEFT JOIN ICSOP H ON H.OPCODE=G.OPCODE
  182. LEFT JOIN ICSOP I ON I.OPCODE=E.OPCODE
  183. LEFT JOIN ICSOP J ON J.OPCODE=C.OPCODE
  184. left join ICSLOTONWIP m on m.LOTNO=c.LOTNO and m.OPCODE=c.OPCODE
  185. left join Sys_User n on n.UserCode=m.UserCodeBegin
  186. left join Sys_User o on o.UserCode=m.UserCodeEnd
  187. left join (select lotno, count(*) as count from ICSITEMROUTE2OPLot group by LotNo)k on k.lotno=a.LotNO
  188. left join (select lotno,OPCODE,ROW_NUMBER() over(partition by lotno order by opseq) as seq from ICSITEMROUTE2OPLot) l on l.LotNo=a.LotNO and l.OPCODE=c.OPCODE
  189. where d.EndPlanDate is not null and 1=1";
  190. sql += sqlwhere;
  191. DataTable table = DBHelper.ExecuteDataset(AppConfig.AppConnectString,CommandType.Text,sql).Tables[0];
  192. grdAll.DataSource = table;
  193. grvDetail.BestFitColumns();
  194. }
  195. catch (Exception ex)
  196. {
  197. MessageBox.Show("异常:" + ex.Message, "异常", MessageBoxButtons.OK, MessageBoxIcon.Error);
  198. }
  199. }
  200. private void grvDetail_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e)
  201. {
  202. if (e.RowHandle < 0)
  203. return;
  204. e.Info.DisplayText = (e.RowHandle + 1).ToString();
  205. }
  206. private void btnClose_Click(object sender, EventArgs e)
  207. {
  208. RefreshTimer.Enabled = false;
  209. RefreshTimer.Stop();
  210. timer.Enabled = false;
  211. timer.Stop();
  212. //this.DialogResult = DialogResult.Cancel;
  213. AppConfig.CloseFormShow(this.Text);
  214. this.Close();
  215. }
  216. private void RefreshTimer_Tick(object sender, EventArgs e)
  217. {
  218. searchAndView();
  219. }
  220. private void timer_Tick(object sender, EventArgs e)
  221. {
  222. labTime.Text = DateTime.Now.ToString();
  223. }
  224. private void grvDetail_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
  225. {
  226. //if (e.RowHandle < 0)
  227. // return;
  228. //if (e.Column == colStatus)
  229. //{
  230. // string state = grvDetail.GetRowCellValue(e.RowHandle, colStatus).ToString();
  231. // if (state == "运行")
  232. // {
  233. // e.Appearance.BackColor = Color.Green;
  234. // }
  235. //}
  236. }
  237. #region 查询
  238. private void btnSearch_Click(object sender, EventArgs e)
  239. {
  240. searchAndView();
  241. }
  242. #endregion
  243. private void FormICSOrderBoard_Load(object sender, EventArgs e)
  244. {
  245. try
  246. {
  247. string sql = @"select distinct motype as 订单状态,a.lotno as 产品跟踪单号,B.MOCODE AS 生产工单号,B.MOSEQ AS 工单行号,B.ITEMCODE AS 产品编码,F.INVNAME AS 产品名称,
  248. D.StartPlanDate AS ,D.EndPlanDate AS ,
  249. J.OPNAME AS ,
  250. CASE
  251. WHEN C.OPCODE IS NULL THEN H.OPNAME
  252. ELSE I.OPNAME
  253. END AS ,
  254. a.LOTQTY as ,
  255. B.MOPLANQTY AS ,
  256. case
  257. when c.CollectStatus = 'COLLECT_BEGINN'
  258. then
  259. CONVERT(NVARCHAR(20), CONVERT(DECIMAL(18, 2), CONVERT(DECIMAL, isnull(l.seq - 1, 0)) / CONVERT(DECIMAL, k.count)) * 100) + '%'
  260. else
  261. CONVERT(NVARCHAR(20), CONVERT(DECIMAL(18, 2), CONVERT(DECIMAL, isnull(l.seq, 0)) / CONVERT(DECIMAL, k.count)) * 100) + '%'
  262. end as ,
  263. B.MDeptCode AS ,
  264. case
  265. when c.CollectStatus = 'COLLECT_BEGINN'
  266. then n.UserName
  267. when c.CollectStatus = 'COLLECT_END'
  268. then o.UserName
  269. else ''
  270. end as ,
  271. CASE
  272. when d.EndPlanDate >= c.EndTime
  273. then '是'
  274. when d.EndPlanDate > c.EndTime
  275. then '否'
  276. end as ,
  277. CASE C.collectstatus
  278. when 'COLLECT_END' then convert(nvarchar(20),c.endtime,120)
  279. else ''
  280. end as
  281. from ICSITEMLot a
  282. inner
  283. join ICSMO b on a.TransNO = b.MOCODE and a.TransLine = b.MOSEQ
  284. left join ICSLOTSIMULATION c on c.lotno = a.LotNO
  285. left join ICSMO2User d on d.LOTNO = c.LOTNO and d.OPCODE = c.OPCODE
  286. LEFT JOIN ICSINVENTORY F ON F.INVCODE = B.ITEMCODE
  287. left join ICSITEMROUTE2OPLot e on e.LotNo = a.LotNO and e.OPSEQ = (select min(opseq) as OPSEQ from ICSITEMROUTE2OPLot where lotno = e.LotNo and OPSEQ> (select opseq from ICSITEMROUTE2OPLot where opcode = c.OPCODE and lotno = e.LotNo))
  288. LEFT JOIN ICSITEMROUTE2OPLot G ON G.LotNo = A.LotNO AND E.OPSEQ = (SELECT MIN(OPSEQ) AS OPSEQ FROM ICSITEMROUTE2OPLot where lotno = e.LotNo)
  289. LEFT JOIN ICSOP H ON H.OPCODE = G.OPCODE
  290. LEFT JOIN ICSOP I ON I.OPCODE = E.OPCODE
  291. LEFT JOIN ICSOP J ON J.OPCODE = C.OPCODE
  292. left join ICSLOTONWIP m on m.LOTNO = c.LOTNO and m.OPCODE = c.OPCODE
  293. left join Sys_User n on n.UserCode = m.UserCodeBegin
  294. left join Sys_User o on o.UserCode = m.UserCodeEnd
  295. left join (select lotno, count(*) as count from ICSITEMROUTE2OPLot group by LotNo)k on k.lotno = a.LotNO
  296. left join (select lotno, OPCODE, ROW_NUMBER() over(partition by lotno order by opseq) as seq from ICSITEMROUTE2OPLot) l on l.LotNo = a.LotNO and l.OPCODE = c.OPCODE
  297. where d.EndPlanDate is not null";
  298. DataTable table = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  299. grdAll.DataSource = table;
  300. grvDetail.BestFitColumns();
  301. }
  302. catch (Exception ex)
  303. {
  304. MessageBox.Show(ex.ToString());
  305. }
  306. }
  307. private void lblTitle_Click(object sender, EventArgs e)
  308. {
  309. if (this.FormBorderStyle == FormBorderStyle.None)
  310. this.FormBorderStyle = FormBorderStyle.FixedSingle;
  311. else
  312. this.FormBorderStyle = FormBorderStyle.None;
  313. }
  314. }
  315. }