|
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using ICSSoft.Frame.Data.Entity; using System.ComponentModel; using System.IO; using Newtonsoft.Json.Linq;
namespace ICSSoft.Frame.Common { public class File4Kod { /// <summary>
/// 下载,保存到项目根目录,路径/文件名与可道云一致,同时将信息保存到按钮tag中.
/// 非长连接,每次都执行:登录-下载-登出.
/// </summary>
/// <param name="ITEMCODE">物料编码,用于文件夹规则匹配</param>
/// <param name="custITEMCODE">客户料号,用于文件夹规则匹配</param>
/// <param name="KodSetting">可道云维护的基本信息</param>
/// <param name="tag">按钮tag,保存图纸类型,本地路径,远端路径</param>
/// <param name="OPSEQ">工序次序,工序图纸和刀具图纸文件名匹配规则时使用</param>
/// <param name="test">是否是测试,测试阶段取固定'客户料号'下的图纸</param>
public static void DownLoad(string ITEMCODE, string custITEMCODE, KODFolder KodSetting, BtnTagPDF tag, int OPSEQ, bool test) { KodboxHelper kodhelper = new KodboxHelper(KodSetting.URL); string filename = ""; string DrawingFolder = ""; string fullFilename = ""; //路径:
//URL/Dispalypath/物料1~3/物料4~6_物料1~3/客户料号/图纸文件夹/图纸.pdf
string SubDic1 = ITEMCODE.Substring(0, 3) + "/" + ITEMCODE.Substring(3, 3) + "_" + ITEMCODE.Substring(0, 3);// +"/" + custITEMCODE;
string SubDic2 = custITEMCODE; string SubDic3 = ""; switch (tag.type) { case DrawingType.General: DrawingFolder = KodSetting.General; break; case DrawingType.OP: DrawingFolder = KodSetting.OP; break; case DrawingType.Cutters: DrawingFolder = KodSetting.Cutters; break; case DrawingType.SOP: DrawingFolder = KodSetting.SOP; break; case DrawingType.SIP: DrawingFolder = KodSetting.SIP; break; default: break; } SubDic2 = Path.Combine(SubDic2, DrawingFolder);
if (test) { KodSetting.PATH = @"{source:91040000922230}/"; SubDic1 = @"B58/407_B58/"; SubDic2 = "3AAM1087001"; SubDic3 = DrawingFolder; } try { //1.登录
string msgKod = kodhelper.Login(KodSetting.USER, KodSetting.PWD); JObject o = (JObject)JToken.Parse(msgKod); msgKod = o["data"].ToString(); if (msgKod != "ok") { throw new Exception(msgKod); } try { string searchResJson = ""; //2.获取路径
string sourse = ""; string dispalypath = ""; string savepath = ""; string filenameMatch = OPSEQ.ToString().PadLeft(3, '0'); List<string> listRes = kodhelper.GetSourcePath(KodSetting.PATH, "pdf,xls,xlsx", SubDic1, SubDic2, SubDic3, out searchResJson); foreach (string res in listRes) { bool m = false; sourse = res.Split('|')[0]; filename = res.Split('|')[1]; dispalypath = res.Split('|')[2]; switch (tag.type) { case DrawingType.OP: if (filename.Substring(0, filename.LastIndexOf('.')).EndsWith(filenameMatch)) { m = true; } break; case DrawingType.Cutters: if (filename.StartsWith(filenameMatch)) { m = true; } break; default: break; } if (m) { break; } } savepath = System.AppDomain.CurrentDomain.BaseDirectory + "\\" + dispalypath; if (!Directory.Exists(savepath)) { Directory.CreateDirectory(savepath); } fullFilename = Path.Combine(savepath, filename); if (string.IsNullOrEmpty(tag.local) || tag.local.ToString() != fullFilename || !File.Exists(fullFilename)) { //3.下载
string downres = kodhelper.DownFile(sourse, savepath, filename); if (downres != "OK") { throw new Exception(downres); } } tag.remote = sourse; tag.local = fullFilename; } finally { //4.登出
msgKod = kodhelper.Logout(false); } } finally { //5.释放
kodhelper.Dispose(); }
}
public static void DownLoad(KODFolder KodSetting, string sourse, string savePath, string saveName) { KodboxHelper kodhelper = new KodboxHelper(KodSetting.URL); try { //登录
string msgKod = kodhelper.Login(KodSetting.USER, KodSetting.PWD); JObject o = (JObject)JToken.Parse(msgKod); msgKod = o["data"].ToString(); if (msgKod != "ok") { throw new Exception(msgKod); } try { string fullfilepath = ""; if (!Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); } fullfilepath = Path.Combine(savePath, saveName);
//下载
string downres = kodhelper.DownFile(sourse, savePath, saveName); if (downres != "OK") { throw new Exception(downres); } } finally { //登出
msgKod = kodhelper.Logout(false); } } finally { //释放
kodhelper.Dispose(); } }
public class BtnTagPDF { public DrawingType type { get; set; } public string remote { get; set; } public string local { get; set; } }
public enum DrawingType { [Description("总图")] [DescriptionEn("General Drawing")] General, [Description("工序图")] [DescriptionEn("Process Diagram")] OP, [Description("刀具单")] [DescriptionEn("Cutters")] Cutters, [Description("作业指导书")] [DescriptionEn("Standard Operation Procedure")] SOP, [Description("检验指导书")] [DescriptionEn("Standard Inspection Procedure")] SIP } private class DescriptionEn : Attribute { private string _showName;
public DescriptionEn(string desc) { _showName = desc; }
public string Description { get { return _showName; } } } } }
|