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

695 lines
33 KiB

5 months ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using System.IO;
  7. using ICSSoft.Base.Config.AppConfig;
  8. using ICSSoft.Base.Config.DBHelper;
  9. using ICSSoft.Frame.Data.BLL;
  10. using System.Configuration;
  11. namespace ICSSoft.Frame.APP
  12. {
  13. public class FileDrawing
  14. {
  15. public static string YanMo = "研磨";
  16. public static string ZhuangPei = "装配";
  17. public static string PengQi = "喷漆";
  18. public static string QiLu = "气路";
  19. public static string ShiYa = "试压";
  20. public static string ZiJian = "自检";
  21. public static string TuZhi = "设计图纸";
  22. public static string WuLiao = "物料清单";
  23. public static string CuJiaGong = "工序图纸";
  24. public static string ZuoYeZhiDao = "工艺卡片";
  25. public static string ZuoYeZhiDaoJY = "检验作业指导书";
  26. public static string YaoSu = "工作要素表";
  27. public static string GuanCha = "工作观察表";
  28. public static string ZuHe = "工作组合表";
  29. public static string SZuoYeZhiDao = "6S作业指导书";
  30. public static string SZuoYeZhiDaoJY = "检验6S作业指导书";
  31. public static string SheBei = "设备操作规程";
  32. public static string WPS = "WPS";
  33. public static string ChengXu = "程序";
  34. public static string ShiPin = "视频";
  35. public static string JianYan = "检验规范";
  36. public static string ZhuYi = "注意事项";
  37. public static string ZhuYiJY = "检验注意事项";
  38. public static string GuiFan = "作业规范";
  39. public static string WenTi = "常见问题处理方案";
  40. public static string PeiXun = "培训文件";
  41. public static string ToolSpec = "刀具规格";
  42. public static string GongZhuang = "工装信息";
  43. //public static SysUserBLL userBll = new SysUserBLL();
  44. private static DataTable dataSource = null;
  45. public static string GetMainTypeCode(string ItemCode)
  46. {
  47. string MainTypeCode = "";
  48. string strsql = @"select ItemMainCategoryCode from Base_Inventory
  49. where ItemCode='{0}'";
  50. strsql = string.Format(strsql, ItemCode);
  51. DataTable dt = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, strsql).Tables[0];
  52. if (dt.Rows.Count != 0)
  53. {
  54. MainTypeCode = dt.Rows[0]["ItemMainCategoryCode"].ToString();
  55. }
  56. return MainTypeCode;
  57. }
  58. public static DataTable GetDrawingDT(string name, string suffix, string type)
  59. {
  60. try
  61. {
  62. #region new
  63. // string sql = @"SELECT DISTINCT
  64. // T.CDOCUMENTNAME as [FileName],
  65. // T.CDOCUMENTID as FileID,
  66. // T.CDOCUMENTVER as FileVer,
  67. // T.CDFORMAT as FileFormat
  68. // FROM
  69. // DOC_008 T
  70. // LEFT OUTER JOIN DOC_030 S ON (T.SECRECYGRADEID = S.SECRECYGRADEID)
  71. // LEFT OUTER JOIN SYS_057 SORT ON (T.SORTID = SORT.SORTID)
  72. // LEFT OUTER JOIN SYS_019 Q ON (T.CMODIFIER = Q.CPERSONID),
  73. // DOC_026 T_ADD,
  74. // SYS_019 P,
  75. // DOC_017 K,
  76. // BOM_026 M
  77. // WHERE
  78. // T.CDOCUMENTID = M.CDOCUMENTID
  79. // AND T.CDOCUMENTVER = M.CDOCUMENTVER
  80. // AND T.CDOCUMENTID = T_ADD.CDOCUMENTID
  81. // AND T.CDOCUMENTVER = T_ADD.CDOCUMENTVER
  82. // AND T.CCREATORID = P.CPERSONID
  83. // AND T.CMKINDID = K.CMKINDID
  84. // AND M.PARTVAR = 'A1'
  85. // AND M.PARTID = '{0}'
  86. // AND T.CDFORMAT = '{1}'";
  87. // sql = string.Format(sql, name, suffix);
  88. #endregion
  89. string sql = "";
  90. if (type.Equals(ShiPin) || type.Equals(SZuoYeZhiDaoJY) || type.Equals(ChengXu) || type.Equals(ZhuYiJY) || type.Equals(ZhuYi) || type.Equals(GuiFan) || type.Equals(WenTi) || type.Equals(WPS) || type.Equals(SZuoYeZhiDao) || type.Equals(SheBei))
  91. {
  92. sql = @"select Top 1
  93. A.CDOCUMENTID + '$' + A.CDOCUMENTVER AS FilePATH ,
  94. -- CDOCUMENTID + '$' + CDOCUMENTVER +'.' +CDFORMAT AS FileName,
  95. CDOCUMENTNAME as [FileName],
  96. CDOCUMENTID as FileID,
  97. CDOCUMENTVER as FileVer,
  98. CDFORMAT as FileFormat,
  99. CDOCUMENTID,
  100. * from DOC_008 A where CDOCUMENTID = '{0}' AND CDFORMAT='{1}'
  101. ";
  102. if (type.Equals(ZhuYi))
  103. name = "ZY-" + name;
  104. else if (type.Equals(GuiFan))
  105. name = "ZG-" + name;
  106. else if (type.Equals(WenTi))
  107. name = "WT-" + name;
  108. else if (type.Equals(WPS))
  109. name = "WPS-" + name;
  110. else if (type.Equals(SZuoYeZhiDao))
  111. name = "5S-" + name;
  112. else if (type.Equals(SheBei))
  113. name = "SG-" + name;
  114. else if (type.Equals(ZhuYiJY))
  115. name = "Q-Attention-" + name;
  116. else if (type.Equals(SZuoYeZhiDaoJY))
  117. name = "Q-5S" + name;
  118. }
  119. else if (type.Equals(ZuoYeZhiDao))
  120. {
  121. sql = @"select Top 1
  122. A.CDOCUMENTID + '$' + A.CDOCUMENTVER AS FilePATH ,
  123. -- CDOCUMENTID + '$' + CDOCUMENTVER +'.' +CDFORMAT AS FileName,
  124. CDOCUMENTNAME as [FileName],
  125. CDOCUMENTID as FileID,
  126. CDOCUMENTVER as FileVer,
  127. CDFORMAT as FileFormat,
  128. CDOCUMENTID,
  129. * from DOC_008 A where CDOCUMENTNAME = '{0}' AND CDFORMAT='{1}'
  130. ";
  131. }
  132. else if (type.Equals(JianYan) || type.Equals(ZuoYeZhiDaoJY))
  133. {
  134. sql = @"select Top 1
  135. A.CDOCUMENTID + '$' + A.CDOCUMENTVER AS FilePATH ,
  136. CDOCUMENTNAME as [FileName],
  137. CDOCUMENTID as FileID,
  138. CDOCUMENTVER as FileVer,
  139. CDFORMAT as FileFormat,
  140. CDOCUMENTID,*
  141. from DOC_008 A
  142. where CDOCUMENTID='{0}' AND CDFORMAT='{1}'
  143. ";
  144. }
  145. else
  146. {
  147. #region 图纸
  148. sql = @"SELECT Top 1
  149. A.CDOCUMENTID + '$' + A.CDOCUMENTVER AS FilePATH ,
  150. -- A.CDOCUMENTID + '$' + A.CDOCUMENTVER + '.' + A.CDFORMAT AS FileName,
  151. A.CDOCUMENTNAME AS [FileName],
  152. A.CDOCUMENTID AS FileID,
  153. A.CDOCUMENTVER AS FileVer,
  154. A.CDFORMAT AS FileFormat,
  155. A.CDOCUMENTID,
  156. *
  157. FROM
  158. DOC_008 A
  159. LEFT JOIN BOM_026 B ON A.CDOCUMENTNAME = B.CDOCUMENTNAME
  160. --AND A.CCREATORID = B.relevancePerson
  161. LEFT JOIN DOC_017 C ON A.CMKINDID=C.CMKINDID
  162. WHERE
  163. 1=1
  164. AND A.CDFORMAT = '{1}'";
  165. #endregion
  166. if (type.Equals(CuJiaGong))
  167. {
  168. sql += " AND B.PARTID = '{0}'";
  169. //sql += " AND A.CDOCUMENTNAME = '{0}'";
  170. // string sqlstd = @"SELECT * from Base_Inventory c WITH (nolock) where c.ItemCode
  171. // = '{0}'";
  172. //sqlstd = string.Format(sqlstd, name);
  173. //DataTable dataStd = DBHelper.ExecuteDataset(AppConfig.AppConnectString.ToString(), CommandType.Text, sqlstd).Tables[0];
  174. //if (dataStd.Rows.Count > 0)
  175. //{
  176. // //name = dataStd.Rows[0]["ItemStd"].ToString();
  177. // //sql += " AND C.CMKINDNAME = 'CJ-粗加工'";
  178. // //sql += " AND A.CDOCUMENTID = '{0}'";
  179. // //name = dataStd.Rows[0]["ItemStd"].ToString();
  180. // //sql += " AND C.CMKINDNAME = 'CJ-粗加工'";
  181. // //sql += " AND A.CDOCUMENTID = '{0}'";
  182. //}
  183. }
  184. else
  185. {
  186. sql += " AND B.PARTID = '{0}'";
  187. }
  188. }
  189. if (string.IsNullOrWhiteSpace(sql))
  190. return null;
  191. sql = string.Format(sql, name, suffix);
  192. sql += " Order by A.CREATETIME desc ";
  193. string connectionStr = AppConfig.GetDataBaseConnectStringByKey("[DB.PLM]");
  194. DataTable dt = DBHelper.ExecuteDataset(connectionStr, CommandType.Text, sql).Tables[0];
  195. return dt;
  196. }
  197. catch (Exception ex)
  198. {
  199. throw ex;
  200. }
  201. }
  202. public static string GetDrawing(string name, string suffix, string type)
  203. {
  204. ////TODO
  205. //if(itemCode =="1")
  206. // return "E:\\1501010061$A1.pdf";
  207. //else
  208. // return "E:\\1303040001$A1.pdf";
  209. try
  210. {
  211. string connectionString = AppConfig.GetDataBaseConnectStringByKey("[DB.FTP]");
  212. string[] ftps = connectionString.Split(';');
  213. string ftpServerIP = ftps[0].Split('=')[1];
  214. string ftpRemotePath = ftps[1].Split('=')[1];
  215. string ftpUserID = ftps[2].Split('=')[1];
  216. string ftpPassword = ftps[3].Split('=')[1];
  217. string filePath = System.IO.Path.GetTempPath() + "Drawing";
  218. if (!Directory.Exists(filePath))
  219. {
  220. Directory.CreateDirectory(filePath);
  221. }
  222. //获取图纸数据
  223. DataTable dt = GetDrawingDT(name, suffix, type);
  224. if (dt.Rows.Count > 0)
  225. {
  226. FtpWeb ftpWeb = new FtpWeb(ftpServerIP, ftpRemotePath, ftpUserID, ftpPassword);
  227. string fileName = "";
  228. for (int i = 0; i < dt.Rows.Count; i++)
  229. {
  230. DataRow dr = dt.Rows[i];
  231. //文件名称有 ID + “$” + 版本 + 文件格式组成
  232. fileName = dr["FileID"].ToString() + "$" + dr["FileVer"].ToString() + "." + dr["FileFormat"].ToString();
  233. }
  234. if (!string.IsNullOrEmpty(fileName))
  235. {
  236. fileName = fileName.Replace("/", "");
  237. if (fileName.Contains(".CNC"))
  238. filePath = "C:\\mesjk";
  239. ftpWeb.Download(filePath + "\\", fileName);
  240. string filePathName = filePath + "\\" + fileName;
  241. return filePathName;
  242. }
  243. }
  244. else
  245. {
  246. if (type.Equals(TuZhi) || type.Equals(CuJiaGong))
  247. {
  248. DataTable dtauto = GetAutoPDF(name);
  249. if (dtauto != null && dtauto.Rows.Count > 0)
  250. {
  251. string fileName = "";
  252. FtpWeb ftpWeb = new FtpWeb(ftpServerIP, ftpRemotePath + "\\pdf", ftpUserID, ftpPassword);
  253. string FilePath = dtauto.Rows[0]["FileID"].ToString() + '$' + dtauto.Rows[0]["FileVer"].ToString();
  254. if (ftpWeb.DirectoryExist(FilePath))
  255. {
  256. string[] downloadFiles = ftpWeb.GetFileList(FilePath);
  257. Array.Sort(downloadFiles);
  258. fileName = downloadFiles[downloadFiles.Length - 1];
  259. ftpWeb = new FtpWeb(ftpServerIP, ftpRemotePath + "\\pdf\\" + FilePath, ftpUserID, ftpPassword);
  260. ftpWeb.Download(filePath + "\\", fileName);
  261. string filePathName = filePath + "\\" + fileName;
  262. return filePathName;
  263. }
  264. }
  265. }
  266. }
  267. return string.Empty;
  268. }
  269. catch (Exception)
  270. {
  271. return string.Empty;
  272. }
  273. }
  274. public static DataTable GetAutoPDF(string itemCode)
  275. {
  276. string sql = @"SELECT DISTINCT
  277. T.CDOCUMENTID + '$' + T.CDOCUMENTVER AS FilePath,
  278. T.CDOCUMENTNAME as [FileName],
  279. T.CDOCUMENTID as FileID,
  280. T.CDOCUMENTVER as FileVer,
  281. T.CDFORMAT as FileFormat,
  282. '' as ItemCode,
  283. '' as ItemName,
  284. '' as ItemStd,
  285. M.PARTID
  286. FROM
  287. DOC_008 T
  288. LEFT OUTER JOIN DOC_030 S ON (T.SECRECYGRADEID = S.SECRECYGRADEID)
  289. LEFT OUTER JOIN SYS_057 SORT ON (T.SORTID = SORT.SORTID)
  290. LEFT OUTER JOIN SYS_019 Q ON (T.CMODIFIER = Q.CPERSONID),
  291. DOC_026 T_ADD,
  292. SYS_019 P,
  293. DOC_017 K,
  294. BOM_026 M
  295. WHERE
  296. T.CDOCUMENTID = M.CDOCUMENTID
  297. AND T.CDOCUMENTVER = M.CDOCUMENTVER
  298. AND T.CDOCUMENTID = T_ADD.CDOCUMENTID
  299. AND T.CDOCUMENTVER = T_ADD.CDOCUMENTVER
  300. AND T.CCREATORID = P.CPERSONID
  301. AND T.CMKINDID = K.CMKINDID
  302. AND M.PARTVAR = 'A1'
  303. AND T.CDFORMAT in ('dwg') ";
  304. string[] itemlist = itemCode.Trim(',').Split(',');
  305. for (int i = 0; i < itemlist.Length; i++)
  306. {
  307. if (!string.IsNullOrEmpty(itemlist[i]))
  308. {
  309. if (i == 0)
  310. {
  311. sql += " And ( M.PARTID like '%" + itemlist[i] + "%' ";
  312. }
  313. else
  314. {
  315. sql += " OR M.PARTID like '%" + itemlist[i] + "%' ";
  316. }
  317. }
  318. }
  319. sql += " ) ";
  320. string connectionString = AppConfig.GetDataBaseConnectStringByKey("[DB.PLM]");
  321. DataTable dt = DBHelper.ExecuteDataset(connectionString, CommandType.Text, sql).Tables[0];
  322. return dt;
  323. }
  324. public static void Enlarge(AxAcroPDFLib.AxAcroPDF axAcroPDF)
  325. {
  326. //string fileName = "E:\\1501010061$A1.pdf";
  327. string fileName = axAcroPDF.src;
  328. if (!string.IsNullOrWhiteSpace(fileName))
  329. {
  330. FormICSDrawingShow draw = new FormICSDrawingShow(fileName, "");
  331. draw.ShowDialog();
  332. }
  333. }
  334. public static void LoadPDF(string fileName)
  335. {
  336. if (!string.IsNullOrWhiteSpace(fileName))
  337. {
  338. FormICSDrawingShow draw = new FormICSDrawingShow(fileName, "");
  339. draw.ShowDialog();
  340. }
  341. }
  342. public static void DeleteFile(List<string> fileNames)
  343. {
  344. //遍历所有文件
  345. //foreach (string fileName in fileNames)
  346. //{
  347. // try
  348. // {
  349. // //文件己存在
  350. // if (File.Exists(fileName))
  351. // {
  352. // FileInfo fi = new FileInfo(fileName);
  353. // //判断当前文件属性是否是只读
  354. // if (fi.Attributes.ToString().IndexOf("ReadyOnly") >= 0)
  355. // {
  356. // fi.Attributes = FileAttributes.Normal;
  357. // }
  358. // //删除文件
  359. // File.Delete(fileName);
  360. // }
  361. // }
  362. // catch (Exception)
  363. // {
  364. // }
  365. //}
  366. }
  367. public void DeleteFile()
  368. {
  369. try
  370. {
  371. //获取文件夹
  372. //string path = Server.MapPath("Image");
  373. string filePath = System.IO.Path.GetTempPath() + "\\Drawing";
  374. //获取文件夹中所有图片
  375. if (Directory.GetFileSystemEntries(filePath).Length > 0)
  376. {
  377. //遍历文件夹中所有文件
  378. foreach (string file in Directory.GetFiles(filePath))
  379. {
  380. try
  381. {
  382. //文件己存在
  383. if (File.Exists(file))
  384. {
  385. FileInfo fi = new FileInfo(file);
  386. //判断当前文件属性是否是只读
  387. if (fi.Attributes.ToString().IndexOf("ReadyOnly") >= 0)
  388. {
  389. fi.Attributes = FileAttributes.Normal;
  390. }
  391. //删除文件
  392. File.Delete(file);
  393. }
  394. }
  395. catch (Exception ex)
  396. {
  397. }
  398. }
  399. //删除文件夹
  400. //Directory.Delete(path);
  401. }
  402. }
  403. catch (Exception ex)
  404. {
  405. }
  406. }
  407. public static bool Login(string userCode, string userPwd)
  408. {
  409. //if (userCode == "")
  410. //{
  411. // ICSBaseSimpleCode.AppshowMessageBox("用户账号不可以为空!");
  412. // return false;
  413. //}
  414. //else if (userPwd == "")
  415. //{
  416. // ICSBaseSimpleCode.AppshowMessageBox("用户口令不可以为空!");
  417. // return false;
  418. //}
  419. //int num = userBll.Login(AppConfig.WorkPointCode, userCode, userPwd);
  420. //if (num == 0)
  421. //{
  422. // return true;
  423. //}
  424. //else
  425. //{
  426. // switch (num)
  427. // {
  428. // case 1:
  429. // ICSBaseSimpleCode.AppshowMessageBox("用户账号不存在");
  430. // return false;
  431. // case 2:
  432. // ICSBaseSimpleCode.AppshowMessageBox("用户口令错误");
  433. // return false;
  434. // case 3:
  435. // ICSBaseSimpleCode.AppshowMessageBox("用户账号被禁用");
  436. // return false;
  437. // case 4:
  438. // ICSBaseSimpleCode.AppshowMessageBox("用户账号已经累计输出口令超过5次被自动锁定");
  439. // return false;
  440. // case 5:
  441. // ICSBaseSimpleCode.AppshowMessageBox("本机IP地址禁止该用户账号登录");
  442. // return false;
  443. // case 6:
  444. // ICSBaseSimpleCode.AppshowMessageBox("该用户账号为单点登录账号,该账号已经在其他地方登录");
  445. // return false;
  446. // }
  447. //}
  448. return false;
  449. }
  450. public static void loadCollect(string userCode, DevExpress.XtraGrid.GridControl gridControl, DevExpress.XtraGrid.Views.Grid.GridView gridView1)
  451. {
  452. if (string.IsNullOrWhiteSpace(userCode))
  453. return;
  454. DevExpress.Utils.WaitDialogForm _wait = new DevExpress.Utils.WaitDialogForm("正在查找...请稍等...");
  455. try
  456. {
  457. _wait.Show();
  458. dataSource = null;
  459. dataSource = FindSIMULATION(userCode).Copy();
  460. gridControl.DataSource = dataSource;
  461. gridView1.BestFitColumns();
  462. _wait.Close();
  463. }
  464. catch (Exception ex)
  465. {
  466. ICSBaseSimpleCode.AppshowMessageBox("异常:" + ex.Message);
  467. _wait.Close();
  468. }
  469. }
  470. #region 主表数据
  471. private static DataTable FindSIMULATION(string userCode)
  472. {
  473. string sql = @"SELECT distinct
  474. a.ProjectCode,
  475. a.mocode,
  476. b.LOTNO ,
  477. A.ITEMCODE ,
  478. c.ROUTECODE ,
  479. e.ROUTEDESC,
  480. c.OPCODE,
  481. f.OPDESC ,
  482. c.EQPCODE ,
  483. c.[ACTION],
  484. c.NGTIMES ,
  485. c.UserCodeBegin,
  486. g.UserName AS UserNameBegin,
  487. c.UserCodeEnd ,
  488. h.UserName AS UserNameEnd ,
  489. CONVERT (
  490. datetime,
  491. CASE LEN(c.BeginTime)
  492. WHEN '5' THEN
  493. SUBSTRING (
  494. CAST (c.BeginDate AS CHAR),
  495. 1,
  496. 4
  497. ) + '-' + SUBSTRING (
  498. CAST (c.BeginDate AS CHAR),
  499. 5,
  500. 2
  501. ) + '-' + SUBSTRING (CAST(BeginDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(BeginTime AS CHAR), 1, 1) + ':' + SUBSTRING (CAST(BeginTime AS CHAR), 2, 2) + ':' + SUBSTRING (CAST(BeginTime AS CHAR), 4, 2)
  502. WHEN '6' THEN
  503. SUBSTRING (
  504. CAST (c.BeginDate AS CHAR),
  505. 1,
  506. 4
  507. ) + '-' + SUBSTRING (
  508. CAST (c.BeginDate AS CHAR),
  509. 5,
  510. 2
  511. ) + '-' + SUBSTRING (CAST(BeginDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(BeginTime AS CHAR), 1, 2) + ':' + SUBSTRING (CAST(BeginTime AS CHAR), 3, 2) + ':' + SUBSTRING (CAST(BeginTime AS CHAR), 5, 2)
  512. END
  513. ) AS BeginTime,
  514. CONVERT (
  515. datetime,
  516. CASE LEN(EndTime)
  517. WHEN '5' THEN
  518. SUBSTRING (CAST(EndDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(EndDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(EndDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(EndTime AS CHAR), 1, 1) + ':' + SUBSTRING (CAST(EndTime AS CHAR), 2, 2) + ':' + SUBSTRING (CAST(EndTime AS CHAR), 4, 2)
  519. WHEN '6' THEN
  520. SUBSTRING (CAST(EndDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(EndDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(EndDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(EndTime AS CHAR), 1, 2) + ':' + SUBSTRING (CAST(EndTime AS CHAR), 3, 2) + ':' + SUBSTRING (CAST(EndTime AS CHAR), 5, 2)
  521. END
  522. ) AS EndTime,
  523. DATEDIFF(
  524. s,
  525. CONVERT (
  526. datetime,
  527. CASE LEN(BeginTime)
  528. WHEN '5' THEN
  529. SUBSTRING (CAST(BeginDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(BeginDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(BeginDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(BeginTime AS CHAR), 1, 1) + ':' + SUBSTRING (CAST(BeginTime AS CHAR), 2, 2) + ':' + SUBSTRING (CAST(BeginTime AS CHAR), 4, 2)
  530. WHEN '6' THEN
  531. SUBSTRING (CAST(BeginDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(BeginDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(BeginDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(BeginTime AS CHAR), 1, 2) + ':' + SUBSTRING (CAST(BeginTime AS CHAR), 3, 2) + ':' + SUBSTRING (CAST(BeginTime AS CHAR), 5, 2)
  532. END
  533. ),
  534. CONVERT (
  535. datetime,
  536. CASE LEN(EndTime)
  537. WHEN '5' THEN
  538. SUBSTRING (CAST(EndDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(EndDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(EndDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(EndTime AS CHAR), 1, 1) + ':' + SUBSTRING (CAST(EndTime AS CHAR), 2, 2) + ':' + SUBSTRING (CAST(EndTime AS CHAR), 4, 2)
  539. WHEN '6' THEN
  540. SUBSTRING (CAST(EndDate AS CHAR), 1, 4) + '-' + SUBSTRING (CAST(EndDate AS CHAR), 5, 2) + '-' + SUBSTRING (CAST(EndDate AS CHAR), 7, 2) + ' ' + SUBSTRING (CAST(EndTime AS CHAR), 1, 2) + ':' + SUBSTRING (CAST(EndTime AS CHAR), 3, 2) + ':' + SUBSTRING (CAST(EndTime AS CHAR), 5, 2)
  541. END
  542. )
  543. ) * 1.0 / 3600 AS Hours,
  544. round(convert(float,i.STIME),2) AS STIME
  545. FROM
  546. ICSMO A
  547. LEFT JOIN ICSMO2Lot B ON A.MOCODE = B.MOCODE
  548. LEFT JOIN ICSLOTONWIP c ON a.MOCODE = c.MOCODE
  549. AND B.LOTNO = C.LOTNO
  550. AND (
  551. c.[ACTION] IN ('GOOD', 'NG')
  552. OR [ACTION] IS NULL
  553. )
  554. LEFT JOIN ICSMO2ROUTE d ON a.MOCODE = d.MOCODE
  555. LEFT JOIN ICSROUTE e ON d.ROUTECODE = e.routecode
  556. LEFT JOIN ICSOP f ON c.opcode = f.opcode
  557. LEFT JOIN Sys_User G ON C.UserCodeBegin = G.Usercode
  558. LEFT JOIN Sys_User h ON c.UserCodeEnd = h.UserCode
  559. LEFT JOIN ICSEQPSTP i ON a.itemcode = i.itemcode
  560. AND c.opcode = i.opcode
  561. WHERE
  562. (
  563. c.[ACTION] IN ('GOOD', 'NG')
  564. OR [ACTION] IS NULL
  565. ) AND year(c.MTIME)+month(c.MTIME) = year(getDate())+month(getDate())
  566. AND c.UserCodeEnd = '" + userCode + "'";
  567. DataTable data = DBHelper.ExecuteDataset(AppConfig.AppConnectString, CommandType.Text, sql).Tables[0];
  568. return data;
  569. }
  570. #endregion
  571. public static string GetFTPToPath(string path)
  572. {
  573. try
  574. {
  575. string returnpath = "";
  576. string connectionString = AppConfig.GetDataBaseConnectStringByKey("[DB.FTP]");
  577. string[] ftps = connectionString.Split(';');
  578. string ftpServerIP = ftps[0].Split('=')[1];
  579. string ftpRemotePath = ftps[1].Split('=')[1];
  580. string ftpUserID = ftps[2].Split('=')[1];
  581. string ftpPassword = ftps[3].Split('=')[1];
  582. string TempFile = ConfigurationManager.AppSettings["MesTempFilePath"].ToString(); ; //MesTempFilePath
  583. if (Directory.Exists(TempFile) == false)//如果不存在就创建file文件夹
  584. {
  585. Directory.CreateDirectory(TempFile);
  586. }
  587. else
  588. {
  589. DeleteFile(TempFile, 3);//删除3天前的临时图纸文件
  590. }
  591. string fileName = "";
  592. //例子:\\192.168.0.40\share\9db49a4d-7b42-41f7-a037-62ef95551276_0100001ZH1410011040.pdf
  593. int index = path.LastIndexOf("\\");
  594. string pathfrom = path.Substring(0, index + 1);//例子:\\192.168.0.40\share\
  595. pathfrom = pathfrom.Replace("\\", "/").TrimStart('/').TrimStart('/'); //例子://192.168.0.40/share/
  596. FtpWeb ftpWeb = new FtpWeb(pathfrom, ftpUserID, ftpPassword);
  597. fileName = path.Substring(index + 1);//例子:9db49a4d-7b42-41f7-a037-62ef95551276_0100001ZH1410011040.pdf
  598. if (ftpWeb.FileExist(fileName))
  599. {
  600. string filePathName = TempFile + "\\" + fileName;
  601. if (File.Exists(filePathName))
  602. {
  603. File.Delete(filePathName);
  604. }
  605. ftpWeb.Download(TempFile + "\\", fileName);
  606. returnpath = filePathName;
  607. }
  608. else
  609. {
  610. returnpath = "";
  611. }
  612. return returnpath;
  613. }
  614. catch (Exception ex)
  615. {
  616. throw ex;
  617. }
  618. }
  619. /// <summary>
  620. /// 删除文件夹
  621. /// </summary>
  622. /// <param name="fileDirect"></param>
  623. /// <param name="saveDay"></param>
  624. private static void DeleteFile(string fileDirect, int saveDay)
  625. {
  626. DateTime nowTime = DateTime.Now;
  627. DirectoryInfo root = new DirectoryInfo(fileDirect);
  628. DirectoryInfo[] dics = root.GetDirectories();//获取文件夹
  629. FileAttributes attr = File.GetAttributes(fileDirect);
  630. if (attr == FileAttributes.Directory)//判断是不是文件夹
  631. {
  632. foreach (DirectoryInfo file in dics)//遍历文件夹
  633. {
  634. TimeSpan t = nowTime - file.CreationTime; //当前时间 减去 文件创建时间
  635. int day = t.Days;
  636. if (day > saveDay) //保存的时间 ; 单位:天
  637. {
  638. Directory.Delete(file.FullName, true); //删除超过时间的文件夹
  639. }
  640. }
  641. }
  642. }
  643. }
  644. }