diff --git a/Job_DSWMS_REPORT/Job_DSWMS_REPORT.csproj b/Job_DSWMS_REPORT/Job_DSWMS_REPORT.csproj index 1c7e28d7..d839fd6d 100644 --- a/Job_DSWMS_REPORT/Job_DSWMS_REPORT.csproj +++ b/Job_DSWMS_REPORT/Job_DSWMS_REPORT.csproj @@ -73,8 +73,8 @@ ..\packages\MimeKit.2.9.2\lib\net45\MimeKit.dll - - ..\packages\Newtonsoft.Json.12.0.2\lib\net40\Newtonsoft.Json.dll + + ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll ..\packages\Quartz.2.6.2\lib\net40\Quartz.dll diff --git a/Job_DSWMS_REPORT/Job_DSWMS_REPORT_1.cs b/Job_DSWMS_REPORT/Job_DSWMS_REPORT_1.cs index 92c54ebd..2559dbd3 100644 --- a/Job_DSWMS_REPORT/Job_DSWMS_REPORT_1.cs +++ b/Job_DSWMS_REPORT/Job_DSWMS_REPORT_1.cs @@ -208,4 +208,214 @@ namespace Job_DSWMS_REPORT } + /// + /// 新仓储系统 分类监管 报文上传 + /// + public class Job_DSWMS_SaveDailyAmount : IJob + { + private ILog log = LogManager.GetLogger(typeof(Job_DSWMS_SaveDailyAmount)); + + private string USERCODE = ""; + private string PWD = ""; + private string SERVERUrl = ""; + private string SERVERPORTUrl = ""; + private string SERVERPORTUrl2 = ""; + private string FilePath = ""; + + public void Execute(IJobExecutionContext context) + { + log.Debug($"Execute开始"); + + USERCODE = context.JobDetail.JobDataMap.GetString("USERCODE"); + + PWD = context.JobDetail.JobDataMap.GetString("PWD"); + + SERVERUrl = context.JobDetail.JobDataMap.GetString("SERVERUrl"); + + //SERVERPORTUrl = context.JobDetail.JobDataMap.GetString("SERVERPORTUrl"); + + SERVERPORTUrl2 = context.JobDetail.JobDataMap.GetString("SERVERPORTUrl2"); + + //1:调用URL指定的接口 得到返回数据 取得其中的文件名 + + //2:从URL+文件名中取得文件,保存至指定文件夹 + + try + { + var _data = SetDo(); + + //DownLoad(filename); + } + catch (Exception ex) + { + log.Error("错误中断0:" + ex.Message); + } + + } + + public class WMSXMLResult + { + bool status { get; set; } + string code { get; set; } + public string data { get; set; } + + } + + private string getFileName() + { + string strBuff = ""; + + var url = SERVERPORTUrl + "?USERCODE=" + USERCODE + "&PWD=" + PWD; + + var rtn = DoGet(url); + + //"{\"status\":true,\"code\":null,\"message\":\"\",\"data\":\"Upload/FLJG/2021_07_06_YLDY_StockApply.FLJGRX\"}" + + var jsonObj = JsonConvert.DeserializeObject(rtn); + + return jsonObj.data; + } + + public static string DoPost(string url, string json, int timeout = 10000) + { + try + { + string responseString = "";//post返回的结果 + ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, err) => { return true; }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; + HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); + req.Method = "POST"; + req.Timeout = timeout; + req.Headers.Add("Accept-Encoding", "gzip, deflate"); + + if (!string.IsNullOrWhiteSpace(json)) + { + byte[] postBytes = Encoding.UTF8.GetBytes(json); + req.ContentType = "application/json; charset=utf-8"; + req.ContentLength = Encoding.UTF8.GetByteCount(json); + Stream stream = req.GetRequestStream(); + stream.Write(postBytes, 0, postBytes.Length); + stream.Close(); + } + else + { + req.ContentLength = 0; + } + var response = req.GetResponse(); + responseString = GetResponseBody((HttpWebResponse)response); + return responseString; + } + catch (Exception e) + { + return e.Message; + } + } + public static string DoGet(string url) + { + string responseString = "";//post返回的结果 + ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, err) => { return true; }; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; + HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); + req.Method = "GET"; + req.ContentLength = 0; + + var response = req.GetResponse(); + Stream streamResponse = response.GetResponseStream(); + StreamReader streamRead = new StreamReader(streamResponse); + responseString = streamRead.ReadToEnd(); + response.Close(); + streamRead.Close(); + + return responseString; + } + public string DownLoad(string FileName) + { + var url = SERVERUrl + FileName; + + var fr = FileName.Split('/').ToList(); + + var fileSaveName = fr[fr.Count - 1]; + + HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); + request.Method = "GET"; + byte[] fileBytes; + using (WebResponse webRes = request.GetResponse()) + { + int length = (int)webRes.ContentLength; + HttpWebResponse response = webRes as HttpWebResponse; + Stream stream = response.GetResponseStream(); + var contentdisposition = response.Headers["Content-Disposition"]; + var filename = fileSaveName; + //读取到内存 + MemoryStream stmMemory = new MemoryStream(); + byte[] buffer = new byte[length]; + int i; + //将字节逐个放入到Byte中 + while ((i = stream.Read(buffer, 0, buffer.Length)) > 0) + { + stmMemory.Write(buffer, 0, i); + } + fileBytes = stmMemory.ToArray();//文件流Byte + FileStream fs = new FileStream(FilePath + "\\" + filename, FileMode.OpenOrCreate); + stmMemory.WriteTo(fs); + stmMemory.Close(); + fs.Close(); + return FilePath + filename; + } + } + + private string SetDo() + { + string strBuff = ""; + + var url = SERVERPORTUrl2 + "?USERCODE=" + USERCODE + "&PWD=" + PWD; + + var rtn = DoGet(url); + + //"{\"status\":true,\"code\":null,\"message\":\"\",\"data\":\"Upload/FLJG/2021_07_06_YLDY_StockApply.FLJGRX\"}" + + var jsonObj = JsonConvert.DeserializeObject(rtn); + + return jsonObj.data; + } + + private static string GetResponseBody(HttpWebResponse response) + { + string responseBody = string.Empty; + if (response.ContentEncoding != null && response.ContentEncoding.ToLower().Contains("gzip")) + { + using (GZipStream stream = new GZipStream(response.GetResponseStream(), CompressionMode.Decompress)) + { + using (StreamReader reader = new StreamReader(stream)) + { + responseBody = reader.ReadToEnd(); + } + } + } + else if (response.ContentEncoding != null && response.ContentEncoding.ToLower().Contains("deflate")) + { + using (DeflateStream stream = new DeflateStream( + response.GetResponseStream(), CompressionMode.Decompress)) + { + using (StreamReader reader = + new StreamReader(stream, Encoding.UTF8)) + { + responseBody = reader.ReadToEnd(); + } + } + } + else + { + using (Stream stream = response.GetResponseStream()) + { + using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) + { + responseBody = reader.ReadToEnd(); + } + } + } + return responseBody; + } + + } }