using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using ICSSoft.Base.Config.AppConfig; using DevExpress.XtraEditors; using ICSSoft.Frame.Data.BLL; using System.Data.SqlClient; using ICSSoft.Base.Config.DBHelper; using System.IO; namespace ICSSoft.Frame.APP { public partial class UserControlDrawShow : UserControl { public string EQPType; string itemCode = ""; string routeCode = ""; string itemname = ""; string itemstd = ""; String guid = AppConfig.GetGuid(); //WorkPointBLL workBll = new WorkPointBLL(); public UserControlDrawShow() { InitializeComponent(); rdoLOTNO.Checked = true; //rdoFileID.Checked = true; txtLOTNO.Focus(); txtType.Items.Clear(); txtType.Items.Add(FileDrawing.TuZhi); //txtType.Items.Add(FileDrawing.WuLiao); txtType.Items.Add(FileDrawing.CuJiaGong); txtType.Items.Add(FileDrawing.ZuoYeZhiDao); //txtType.Items.Add(FileDrawing.YaoSu); //txtType.Items.Add(FileDrawing.GuanCha); //txtType.Items.Add(FileDrawing.ZuHe); txtType.Items.Add(FileDrawing.SZuoYeZhiDao); txtType.Items.Add(FileDrawing.SheBei); txtType.Items.Add(FileDrawing.WPS); txtType.Items.Add(FileDrawing.ChengXu); //txtType.Items.Add(FileDrawing.ShiPin); txtType.Items.Add(FileDrawing.ZhuYi); txtType.Items.Add(FileDrawing.GuiFan); txtType.Items.Add(FileDrawing.WenTi); txtType.Items.Add(FileDrawing.PeiXun); } #region 移动窗体 private const int WM_NCHITTEST = 0x84; private const int HTCLIENT = 0x1; private const int HTCAPTION = 0x2; //首先必须了解Windows的消息传递机制,当有鼠标活动消息时, //系统发送WM_NCHITTEST 消息给窗体作为判断消息发生地的根据。 nchittest //假如你点击的是标题栏,窗体收到的消息值就是 HTCAPTION , //同样地,若接受到的消息是 HTCLIENT,说明用户点击的是客户区,也就是鼠标消息发生在客户区。 //重写窗体,使窗体可以不通过自带标题栏实现移动 protected override void WndProc(ref Message m) { //当重载窗体的 WndProc 方法时,可以截获 WM_NCHITTEST 消息并改些该消息, //当判断鼠标事件发生在客户区时,改写改消息,发送 HTCAPTION 给窗体, //这样,窗体收到的消息就时 HTCAPTION ,在客户区通过鼠标来拖动窗体就如同通过标题栏来拖动一样。 //注意:当你重载 WndProc 并改写鼠标事件后,整个窗体的鼠标事件也就随之改变了。 switch (m.Msg) { case WM_NCHITTEST: base.WndProc(ref m); if ((int)m.Result == HTCLIENT) m.Result = (IntPtr)HTCAPTION; return; } //拦截双击标题栏、移动窗体的系统消息 if (m.Msg != 0xA3) { base.WndProc(ref m); } } #endregion private void btnDownload_Click(object sender, EventArgs e) { SimpleButton btntemp = (SimpleButton)sender; //if (AppConfig.GetUserExcuteRight(this.Tag.ToString(), btntemp.Name) == false) //{ // ICSBaseSimpleCode.AppshowMessageBox("对不起您没有:" + btntemp.Text + "权限,请联系系统管理员!"); // return; //} if (string.IsNullOrEmpty(this.txtLOTNO.Text.Trim()) && string.IsNullOrEmpty(this.txtFileID.Text.Trim())) { ICSBaseSimpleCode.AppshowMessageBox("请输入条件!"); return; } if (!string.IsNullOrEmpty(this.txtLOTNO.Text.Trim())) { MOByMoCode(this.txtLOTNO.Text.Trim()); } else { SearchItem(this.txtFileID.Text.Trim()); } } #region 根据存货编码产品信息 private void SearchItem(string itemcode) { try { string sql = @"SELECT ItemName, ItemStd,ROUTECODE FROM Base_Inventory a LEFT JOIN (SELECT h.ItemCode, CASE WHEN i.ROUTECODE IS NULL THEN j.ROUTECODE ELSE i.ROUTECODE END AS ROUTECODE FROM Base_Inventory h LEFT JOIN (SELECT * FROM ICSITEM2ROUTE WHERE ISREF = '是') i ON h.ItemCode = i.ITEMCODE LEFT JOIN (SELECT * FROM ICSMODEL2ROUTE WHERE ISREF = '是') j ON h.ItemMainCategoryCode=j.MODELCODE) d ON a.ItemCode=d.ItemCode WHERE a.ItemCode='{0}' "; sql = string.Format(sql, itemcode); SqlDataReader rd = DBHelper.ExecuteReader(AppConfig.AppConnectString, CommandType.Text, sql); while (rd.Read()) { itemCode = itemcode; itemname = rd["ItemName"].ToString(); itemstd = rd["ItemStd"].ToString(); routeCode = rd["ROUTECODE"].ToString(); } if (string.IsNullOrEmpty(itemCode)) { ICSBaseSimpleCode.AppshowMessageBox("未查到对应的产品!"); return; } else { BandData(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } #endregion #region 根据存货编码查询列表信息 private void BandData() { try { #region 查询数据 //图纸 string sqlTUZHI = @"SELECT DISTINCT A.CDOCUMENTNAME AS [FileName], A.CDOCUMENTID AS FileID, A.CDOCUMENTVER AS FileVer, A.CDFORMAT AS FileFormat, A.CDOCUMENTID, '' as ItemCode, '' as ItemName, '' as ItemStd FROM DOC_008 A LEFT JOIN BOM_026 B ON A.CDOCUMENTID = B.CDOCUMENTID And A.CDOCUMENTVER = B.CDOCUMENTVER LEFT JOIN DOC_017 C ON A.CMKINDID=C.CMKINDID WHERE B.PARTID like '%{1}%' AND A.CDFORMAT in ({0})"; //工艺、视频、--规范 string sqlGONGYI = @"SELECT DISTINCT CDOCUMENTNAME as [FileName], CDOCUMENTID as FileID, CDOCUMENTVER as FileVer, CDFORMAT as FileFormat, CDOCUMENTID, '' as ItemCode, '' as ItemName, '' as ItemStd from DOC_008 where CDOCUMENTID like '%{1}%' AND CDFORMAT in ({0})"; //作业指导书 string sqlZuoYeZhiDao = @"SELECT DISTINCT CDOCUMENTNAME as [FileName], CDOCUMENTID as FileID, CDOCUMENTVER as FileVer, CDFORMAT as FileFormat, CDOCUMENTID, '' as ItemCode, '' as ItemName, '' as ItemStd from DOC_008 where CDOCUMENTNAME like '%{1}%' AND CDFORMAT in ({0})"; #endregion string suffix = ""; string sql = ""; if (chkType.Checked) { string type = txtType.Text.Trim(); if (string.IsNullOrWhiteSpace(type)) { suffix = "'pdf','mp4','dwg','CNC'"; sql = string.Format(sqlTUZHI, suffix, itemCode); sql += " UNION " + string.Format(sqlGONGYI, suffix, "%" + routeCode + "%' OR CDOCUMENTID like '" + itemCode); sql += " UNION " + string.Format(sqlZuoYeZhiDao, suffix, "%" + routeCode); } else if (type.Equals(FileDrawing.ZuoYeZhiDao)) { suffix = "'pdf'"; sql = string.Format(sqlZuoYeZhiDao, suffix, routeCode); } else if (type.Equals(FileDrawing.ZuHe) || type.Equals(FileDrawing.YaoSu) || type.Equals(FileDrawing.GuanCha) || type.Equals(FileDrawing.WPS)) { string newRouteCode=""; if (type.Equals(FileDrawing.YaoSu)) newRouteCode = "YS-" + routeCode; else if (type.Equals(FileDrawing.GuanCha)) newRouteCode = "GC-" + routeCode; else if (type.Equals(FileDrawing.ZuHe)) newRouteCode = "ZH-" + routeCode; else if (type.Equals(FileDrawing.WPS)) newRouteCode = "WPS-" + itemCode; suffix = "'pdf'"; sql = string.Format(sqlGONGYI, suffix, newRouteCode); } else if (type.Equals(FileDrawing.ChengXu)) { suffix = "'CNC'"; sql = string.Format(sqlGONGYI, suffix, itemCode); } else if (type.Equals(FileDrawing.ShiPin)) { suffix = "'mp4'"; sql = string.Format(sqlGONGYI,suffix,routeCode); } else if (type.Equals(FileDrawing.TuZhi) || type.Equals(FileDrawing.CuJiaGong)) { suffix = "'pdf','dwg'"; sql = string.Format(sqlTUZHI, suffix, itemCode); if (type.Equals(FileDrawing.CuJiaGong)) sql += " AND C.CMKINDNAME = 'CJ-粗加工'"; } else { if (string.IsNullOrWhiteSpace(EQPType)) { ICSBaseSimpleCode.AppshowMessageBox("请先扫描设备条码!"); return; } else { if (type.Equals(FileDrawing.SZuoYeZhiDao)) { string newEQPType = "5S-" + EQPType; suffix = "'pdf'"; sql = string.Format(sqlGONGYI, suffix, newEQPType); } else if (type.Equals(FileDrawing.SheBei)) { string newEQPType = "SG-" + EQPType; suffix = "'pdf'"; sql = string.Format(sqlGONGYI, suffix, newEQPType); } } } } else { suffix = "'pdf','mp4','dwg','CNC'"; sql = string.Format(sqlTUZHI, suffix, itemCode); sql += " UNION " + string.Format(sqlGONGYI, suffix, "%" + routeCode + "%' OR CDOCUMENTID like '" + itemCode); sql += " UNION " + string.Format(sqlZuoYeZhiDao, suffix, "%" + routeCode); } #region new // string sql = @"SELECT DISTINCT // T.CDOCUMENTNAME as [FileName], // T.CDOCUMENTID as FileID, // T.CDOCUMENTVER as FileVer, // T.CDFORMAT as FileFormat, // '' as ItemCode, // '' as ItemName, // '' as ItemStd // // FROM // DOC_008 T // LEFT OUTER JOIN DOC_030 S ON (T.SECRECYGRADEID = S.SECRECYGRADEID) // LEFT OUTER JOIN SYS_057 SORT ON (T.SORTID = SORT.SORTID) // LEFT OUTER JOIN SYS_019 Q ON (T.CMODIFIER = Q.CPERSONID), // DOC_026 T_ADD, // SYS_019 P, // DOC_017 K, // BOM_026 M // WHERE // T.CDOCUMENTID = M.CDOCUMENTID // AND T.CDOCUMENTVER = M.CDOCUMENTVER // AND T.CDOCUMENTID = T_ADD.CDOCUMENTID // AND T.CDOCUMENTVER = T_ADD.CDOCUMENTVER // AND T.CCREATORID = P.CPERSONID // AND T.CMKINDID = K.CMKINDID // AND M.PARTVAR = 'A1' "; // if (!string.IsNullOrEmpty(itemCode)) // { // sql += "and M.PARTID like '%" + itemCode + "%' "; // } #endregion #region old // string sql = @"SELECT A.CDOCUMENTID as FileID, // A.CDOCUMENTVER as FileVer, // A.CDOCUMENTNAME as [FileName], // A.CDFORMAT as FileFormat // FROM DOC_008 A // LEFT OUTER JOIN DOC_030 D ON(A.SECRECYGRADEID=D.SECRECYGRADEID) // LEFT OUTER JOIN SYS_057 E ON (A.SORTID = E.SORTID) // LEFT OUTER JOIN SYS_019 Q ON (A.CMODIFIER = Q.CPERSONID) // LEFT OUTER JOIN DOC_026 B ON(A.CDOCUMENTID=B.CDOCUMENTID AND A.CDOCUMENTVER=B.CDOCUMENTVER) // LEFT OUTER JOIN (SELECT A.CDOCUMENTID, A.CDOCUMENTVER, C.CANAME, D.CPERSONNAME,E.CSTATENAME FROM DOC_011 A, PRJ_001 C, DOC_025 B LEFT JOIN SYS_019 D ON (B.CPERSONID = D.CPERSONID), DOC_013 E // WHERE E.INTERNATIONKEY = 'zh_CN' AND A.CTASKID = B.CTASKID AND B.CACTIVEID = C.CACTIVEID AND E.CSTATEID = B.CSTATEID AND ISNULL(A.CDOCUMENTID,'') <> '' AND ISNULL(A.CDOCUMENTVER,'') <> '' AND (B.CSTATEID = '2' OR B.CSTATEID = '3') AND A.CSTATEID <> '4' AND A.CSTATEID <> '5' AND E.INTERNATIONKEY = 'zh_CN') AS CHK // ON (A.CDOCUMENTID = CHK.CDOCUMENTID AND A.CDOCUMENTVER = CHK.CDOCUMENTVER), SYS_019 C ,DOC_017 F // WHERE A.CCREATORID=C.CPERSONID and A.CMKINDID=F.CMKINDID "; // if (!string.IsNullOrEmpty(itemCode)) // { // sql += "and a.CDOCUMENTID like '%" + itemCode + "%' "; // } #endregion // string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["PLM"].ConnectionString.ToString(); // string connectionString = "Data Source=ICSSERVER01\\MSSQLSERVER2012;Database=yonyou20160331153618;Uid=sa;Pwd=aA123456;"; string connectionString = AppConfig.GetDataBaseConnectStringByKey("[DB.PLM]"); DataTable dt = DBHelper.ExecuteDataset(connectionString, CommandType.Text, sql).Tables[0]; if (dt != null && dt.Rows.Count <= 0) { ICSBaseSimpleCode.AppshowMessageBox("未查到该产品对应的文件信息!"); } else { foreach (DataRow dr in dt.Rows) { dr["ItemCode"] = itemCode; dr["ItemName"] = itemname; dr["ItemStd"] = itemstd; } } this.grdDetail.DataSource = dt; this.grvDetail.BestFitColumns(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } #endregion #region 根据批次号查询工单产品信息 private void MOByMoCode(string MOCode) { try { string sql = @"SELECT a.MOCODE, a.ITEMCODE, c.ItemName, c.ItemStd,ROUTECODE FROM ICSMO a INNER JOIN ICSMO2Lot b ON a.MOCODE = b.MOCODE LEFT JOIN Base_Inventory c on a.ITEMCODE=c.ItemCode LEFT JOIN (SELECT h.ItemCode, CASE WHEN i.ROUTECODE IS NULL THEN j.ROUTECODE ELSE i.ROUTECODE END AS ROUTECODE FROM Base_Inventory h LEFT JOIN (SELECT * FROM ICSITEM2ROUTE WHERE ISREF = '是') i ON h.ItemCode = i.ITEMCODE LEFT JOIN (SELECT * FROM ICSMODEL2ROUTE WHERE ISREF = '是') j ON h.ItemMainCategoryCode=j.MODELCODE) d ON c.ItemCode=d.ItemCode WHERE LOTNO='{0}' "; sql = string.Format(sql, MOCode); SqlDataReader rd = DBHelper.ExecuteReader(AppConfig.AppConnectString, CommandType.Text, sql); while (rd.Read()) { itemCode = rd["ITEMCODE"].ToString(); itemname = rd["ItemName"].ToString(); itemstd = rd["ItemStd"].ToString(); routeCode = rd["ROUTECODE"].ToString(); } //DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0]; //foreach (DataRow dr in dt.Rows) //{ // itemCode = dr["ITEMCODE"].ToString(); //} if (string.IsNullOrEmpty(itemCode)) { ICSBaseSimpleCode.AppshowMessageBox("未查到对应的产品!"); return; } else { BandData(); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } #endregion private void UserControlDrawShow_Load(object sender, EventArgs e) { //DeleteFile(); } public void DeleteFile() { try { //获取文件夹 //string path = Server.MapPath("Image"); string filePath = System.IO.Path.GetTempPath() + "\\tempfiles"; //获取文件夹中所有图片 if (Directory.GetFileSystemEntries(filePath).Length > 0) { //遍历文件夹中所有文件 foreach (string file in Directory.GetFiles(filePath)) { try { //文件己存在 if (File.Exists(file)) { FileInfo fi = new FileInfo(file); //判断当前文件属性是否是只读 if (fi.Attributes.ToString().IndexOf("ReadyOnly") >= 0) { fi.Attributes = FileAttributes.Normal; } //删除文件 File.Delete(file); } } catch (Exception ex) { } } //删除文件夹 //Directory.Delete(path); } } catch (Exception ex) { } } private void txtFileID_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) { if (e.KeyChar == 13) { if (string.IsNullOrEmpty(this.txtLOTNO.Text.Trim()) && string.IsNullOrEmpty(this.txtFileID.Text.Trim())) { ICSBaseSimpleCode.AppshowMessageBox("请输入条件!"); return; } if (!string.IsNullOrEmpty(this.txtLOTNO.Text.Trim())) { MOByMoCode(this.txtLOTNO.Text.Trim()); } else { SearchItem(this.txtFileID.Text.Trim()); } } } private void fileRead_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { try { DevExpress.XtraGrid.Views.Grid.GridView view = ((DevExpress.XtraGrid.Views.Grid.GridView)(grdDetail.MainView)); int rowhandle = view.FocusedRowHandle; DataRow dr = view.GetDataRow(rowhandle); string connectionString = AppConfig.GetDataBaseConnectStringByKey("[DB.FTP]"); string[] ftps = connectionString.Split(';'); string ftpServerIP = ftps[0].Split('=')[1]; string ftpRemotePath = ftps[1].Split('=')[1]; string ftpUserID = ftps[2].Split('=')[1]; string ftpPassword = ftps[3].Split('=')[1]; string viewerApp = "C:\\Program Files (x86)\\CADSeePlus\\CADSee.exe"; //string ftpServerIP = System.Configuration.ConfigurationManager.AppSettings["FtpServerIP"]; //string ftpRemotePath = System.Configuration.ConfigurationManager.AppSettings["FtpRemotePath"]; //string ftpUserID = System.Configuration.ConfigurationManager.AppSettings["FtpUserID"]; //string ftpPassword = System.Configuration.ConfigurationManager.AppSettings["FtpPassword"]; //string viewerApp = System.Configuration.ConfigurationManager.AppSettings["ViewerApp"]; FtpWeb ftpWeb = new FtpWeb(ftpServerIP, ftpRemotePath, ftpUserID, ftpPassword); string filePath = System.IO.Path.GetTempPath() + "\\tempfiles"; if (!Directory.Exists(filePath)) { Directory.CreateDirectory(filePath); } //文件名称有 ID + “$” + 版本 + 文件格式组成 string fileName = dr["FileID"].ToString() + "$" + dr["FileVer"].ToString() + "." + dr["FileFormat"].ToString(); fileName = fileName.Replace("/", ""); ftpWeb.Download(filePath + "\\", fileName); string filePathName = filePath + "\\" + fileName; if (dr["FileFormat"].ToString().Equals("pdf")) { FileDrawing.LoadPDF(filePathName); } else if(dr["FileFormat"].ToString().Equals("dwg")) { //MyProcess myPro = new MyProcess(); //myPro.OpenWithStartInfo(filePathName, viewerApp); } else if (dr["FileFormat"].ToString().Equals("mp4")) { FormICSMedia draw = new FormICSMedia(filePathName); draw.ShowDialog(); } //else if (dr["FileFormat"].ToString().Equals("CNC")) //{ // string downPath = "C:\\mesjk"; // string downName = downPath + "\\NC.txt"; // if (!Directory.Exists(downPath)) // { // Directory.CreateDirectory(downPath); // } // if (!File.Exists(downName)) // { // File.Create(downName); // } // //StreamReader reader = new StreamReader(filePathName, Encoding.Default); // //string text = reader.ReadToEnd(); // //reader.Close(); // StreamWriter writer = new StreamWriter(downName); // string text = LotNo + "_" + OPCode + "_" + EQPCode; // writer.Write(text); // writer.Close(); //} } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void rdoLOTNO_CheckedChanged(object sender, EventArgs e) { if (rdoLOTNO.Checked) { txtFileID.Text = ""; txtFileID.Enabled = false; txtLOTNO.Enabled = true; txtLOTNO.Focus(); } } private void rdoFileID_CheckedChanged(object sender, EventArgs e) { if (rdoFileID.Checked) { txtLOTNO.Text = ""; txtLOTNO.Enabled = false; txtFileID.Enabled = true; txtFileID.Focus(); } } } }