|
|
|
|
using log4net;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
|
using Quartz;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Data.SqlClient;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using HtmlAgilityPack;
|
|
|
|
|
using HcUtility.Core;
|
|
|
|
|
using HcUtility.Comm;
|
|
|
|
|
using System.Data.Entity;
|
|
|
|
|
using System.Text.RegularExpressions;
|
|
|
|
|
|
|
|
|
|
using DSWeb.Common.DB;
|
|
|
|
|
using Terminal_CDMA;
|
|
|
|
|
using DSWeb.MvcShipping.Models.MsOpApply;
|
|
|
|
|
using DSWeb.SoftMng.Controllers;
|
|
|
|
|
using DSWeb.SoftMng.DAL;
|
|
|
|
|
using DSWeb.Areas.Mobile.DAL;
|
|
|
|
|
|
|
|
|
|
namespace Job_BoschEdi_FTP
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
public class Job_Bosch_FTP : IJob
|
|
|
|
|
{
|
|
|
|
|
private ILog log = LogManager.GetLogger(typeof(Job_Bosch_FTP));
|
|
|
|
|
|
|
|
|
|
//private string connStr { get; set; }
|
|
|
|
|
private const string admin_userid = "1BEC90E1-9780-472F-90C2-0C6390C044A4";
|
|
|
|
|
private const string admin_username = "系统管理员";
|
|
|
|
|
|
|
|
|
|
private string connStr = "";
|
|
|
|
|
private string EDINAME = "";
|
|
|
|
|
private string LocalDS7 = "";
|
|
|
|
|
|
|
|
|
|
public void Execute(IJobExecutionContext context)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"Execute开始");
|
|
|
|
|
|
|
|
|
|
connStr = context.JobDetail.JobDataMap.GetString("ConnectString");
|
|
|
|
|
|
|
|
|
|
EDINAME = context.JobDetail.JobDataMap.GetString("EDINAME");
|
|
|
|
|
|
|
|
|
|
//1:连接到数据库 查找code_ftpset 当中 ediname包含 BOSCH 的
|
|
|
|
|
//使用其中的 serverip sftpport username password tmpfoldername(要列表的文件夹)
|
|
|
|
|
|
|
|
|
|
//2:打开sftp连接 列表文件
|
|
|
|
|
|
|
|
|
|
//3:遍历列表
|
|
|
|
|
//3.1 下载文件 如果下载成功则
|
|
|
|
|
//
|
|
|
|
|
//3.1.1用ds7主项目的文件解析服务导入文件
|
|
|
|
|
//3.1.1.1如果成功则删除文件
|
|
|
|
|
|
|
|
|
|
//4:遍历完成 关闭连接
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
CommonDataContext cdc = new CommonDataContext(connStr);
|
|
|
|
|
|
|
|
|
|
var ftpinfo = new code_FtpSet_md();
|
|
|
|
|
|
|
|
|
|
var ftpinfoList = cdc.code_FtpSet.Where(x => x.EDINAME == EDINAME).ToList();
|
|
|
|
|
|
|
|
|
|
if (ftpinfoList == null || ftpinfoList.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
log.Error("没有找到BOSCH的FTP信息");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
ftpinfo = ftpinfoList[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var localpath = AppDomain.CurrentDomain.BaseDirectory + @"\XMLFILE\" + DateTime.Now.ToString("yyyy-MM-dd") + @"\";
|
|
|
|
|
if (Directory.Exists(localpath) == false)
|
|
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(localpath);
|
|
|
|
|
log.Debug($"服务器本地建立文件夹:{localpath}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var remoatPath = ftpinfo.TMPFOLDERNAME.Replace(@"\", "/").EndsWith("/") ? ftpinfo.TMPFOLDERNAME : ftpinfo.TMPFOLDERNAME + "/";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//2:打开sftp连接 列表文件
|
|
|
|
|
SFTPHelper FTPDA = new SFTPHelper(ftpinfo);
|
|
|
|
|
|
|
|
|
|
FTPDA.Connect();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var filenameList = FTPDA.sftp.ListDirectory(remoatPath);
|
|
|
|
|
|
|
|
|
|
if (filenameList != null && filenameList.Count() > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var filename in filenameList)
|
|
|
|
|
{
|
|
|
|
|
if (filename.Length == 0) continue;
|
|
|
|
|
|
|
|
|
|
var byt = FTPDA.sftp.ReadAllBytes(filename.FullName);
|
|
|
|
|
|
|
|
|
|
var saveFileName = filename.Name;
|
|
|
|
|
|
|
|
|
|
if (Directory.Exists(localpath + saveFileName) == false)
|
|
|
|
|
{
|
|
|
|
|
File.WriteAllBytes(localpath + saveFileName, byt);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DBResult _r = DecHeadDAL.Deal381XML(localpath + saveFileName, admin_userid, admin_username, ftpinfo.CORPID, "DongShengDB");
|
|
|
|
|
|
|
|
|
|
if (_r.Success)
|
|
|
|
|
{
|
|
|
|
|
FTPDA.sftp.DeleteFile(filename.FullName);
|
|
|
|
|
log.Debug($"{filename}解析完成 删除文件");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
log.Error($"{filename}解析失败:" + _r.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error("错误中断:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
FTPDA.Disconnect();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex) {
|
|
|
|
|
log.Error("错误中断0:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void DoSendMessage(string mblno) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class Job_SFTP_Upload : IJob
|
|
|
|
|
{
|
|
|
|
|
private ILog log = LogManager.GetLogger(typeof(Job_SFTP_Upload));
|
|
|
|
|
|
|
|
|
|
private string LocalPath = "";
|
|
|
|
|
private string RemotePath = "";
|
|
|
|
|
|
|
|
|
|
private string FTPADDRESS = "";
|
|
|
|
|
private string FTPPORT = "";
|
|
|
|
|
private string FTPUSERNAME = "";
|
|
|
|
|
private string FTPPASSWORD = "";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void Execute(IJobExecutionContext context)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"Execute开始");
|
|
|
|
|
|
|
|
|
|
LocalPath = context.JobDetail.JobDataMap.GetString("LocalPath");
|
|
|
|
|
|
|
|
|
|
RemotePath = context.JobDetail.JobDataMap.GetString("RemotePath").Replace(@"\", "/");
|
|
|
|
|
FTPADDRESS = context.JobDetail.JobDataMap.GetString("FTPADDRESS");
|
|
|
|
|
FTPPORT = context.JobDetail.JobDataMap.GetString("FTPPORT");
|
|
|
|
|
FTPUSERNAME = context.JobDetail.JobDataMap.GetString("FTPUSERNAME");
|
|
|
|
|
FTPPASSWORD = context.JobDetail.JobDataMap.GetString("FTPPASSWORD");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
//列表本地文件夹内的文件
|
|
|
|
|
string[] files = Directory.GetFiles(LocalPath, "*.*");
|
|
|
|
|
|
|
|
|
|
SFTPHelper FTPDA = new SFTPHelper(FTPADDRESS, FTPPORT, FTPUSERNAME, FTPPASSWORD);
|
|
|
|
|
|
|
|
|
|
FTPDA.Connect();
|
|
|
|
|
foreach (var item in files)
|
|
|
|
|
{
|
|
|
|
|
using (var file = System.IO.File.OpenRead(item))
|
|
|
|
|
{
|
|
|
|
|
var Filename = Path.GetFileName(item);
|
|
|
|
|
var remotefullpath = (RemotePath.EndsWith("/") ? RemotePath : RemotePath + "/") + Filename;
|
|
|
|
|
FTPDA.sftp.UploadFile(file, remotefullpath);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FTPDA.Disconnect();
|
|
|
|
|
|
|
|
|
|
//删除文件
|
|
|
|
|
foreach (var item in files)
|
|
|
|
|
{
|
|
|
|
|
File.Delete(item);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error("错误中断:" + ex.Message);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void DoSendMessage(string mblno)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|