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.
229 lines
8.3 KiB
229 lines
8.3 KiB
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|