|
|
|
|
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 HcUtility.Core;
|
|
|
|
|
using HcUtility.Comm;
|
|
|
|
|
using System.Data.Entity;
|
|
|
|
|
|
|
|
|
|
namespace JobPingTaiWork
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
public class blnopack {
|
|
|
|
|
//private static MBLNOList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class JobWLXXSave : IJob
|
|
|
|
|
{
|
|
|
|
|
private ILog log = LogManager.GetLogger(typeof(JobWLXXSave));
|
|
|
|
|
|
|
|
|
|
private string connStr { get; set; }
|
|
|
|
|
private string TimeType { get; set; }
|
|
|
|
|
private Int32 StartDays { get; set; }
|
|
|
|
|
private Int32 EndDays { get; set; }
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
private Int32 StartTime_single { get; set; }
|
|
|
|
|
|
|
|
|
|
private Int32 EndTime_single { get; set; }
|
|
|
|
|
|
|
|
|
|
public void Execute(IJobExecutionContext context)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"Execute开始");
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
connStr = context.JobDetail.JobDataMap.GetString("ConnectString");
|
|
|
|
|
StartDays = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("StartDays"));
|
|
|
|
|
EndDays = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("EndDays"));
|
|
|
|
|
TimeType = context.JobDetail.JobDataMap.GetString("TimeType");
|
|
|
|
|
|
|
|
|
|
StartTime_single = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("StartTime_single"));
|
|
|
|
|
EndTime_single = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("EndTime_single"));
|
|
|
|
|
|
|
|
|
|
log.Debug($"连接字符串:{connStr}");
|
|
|
|
|
log.Debug($"起始天数:{StartDays}");
|
|
|
|
|
log.Debug($"终止天数:{EndDays}");
|
|
|
|
|
log.Debug($"时间类型:{TimeType}");
|
|
|
|
|
|
|
|
|
|
var nowhour = DateTime.Now.Hour;
|
|
|
|
|
|
|
|
|
|
var sqlQuery = " Select case when isnull(HBLNO,'')<>'' then HBLNO else MBLNO end MBLNO,MFNO from op_seae_edi ";
|
|
|
|
|
var queryfield = "";
|
|
|
|
|
if (TimeType == "录入日期") {
|
|
|
|
|
queryfield = " INPUTDATE ";
|
|
|
|
|
}
|
|
|
|
|
if (TimeType == "发送日期")
|
|
|
|
|
{
|
|
|
|
|
queryfield = " SENDTIME ";
|
|
|
|
|
}
|
|
|
|
|
if (TimeType == "开船日期")
|
|
|
|
|
{
|
|
|
|
|
queryfield = " ETD ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var startdate = DateTime.Now.AddDays(-StartDays).ToString("yyyy-MM-dd");
|
|
|
|
|
var enddate = DateTime.Now.AddDays(-EndDays+1).ToString("yyyy-MM-dd");
|
|
|
|
|
|
|
|
|
|
if (StartTime_single <= nowhour && nowhour < EndTime_single) {
|
|
|
|
|
startdate = DateTime.Now.AddDays(0).ToString("yyyy-MM-dd" );
|
|
|
|
|
|
|
|
|
|
enddate = DateTime.Now.AddDays(1).ToString("yyyy-MM-dd");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sqlQuery += string.Format(" where {0}>='{1}' and {2}<'{3}' ", queryfield, startdate, queryfield, enddate);
|
|
|
|
|
|
|
|
|
|
sqlQuery += " and not exists (select 1 from op_seae_edi_status where mfno=op_seae_edi.mfno and statustext= '接受申报' ) and dbo.getblno(mfno) not in(select mblno from wlxx_mblno) and isnull(ISdelete,0)=0 order by "+ queryfield;
|
|
|
|
|
|
|
|
|
|
var MBLNOList = DoWork.GetMBLNOList(connStr, sqlQuery);
|
|
|
|
|
|
|
|
|
|
if (MBLNOList.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
log.Debug("没有要发送的数据!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//然后将所有提单号存入数据库
|
|
|
|
|
var SaveSql = Local_Mblnomb.getSaveSql(MBLNOList);
|
|
|
|
|
|
|
|
|
|
using (SqlConnection dbcon = new SqlConnection(connStr))
|
|
|
|
|
{
|
|
|
|
|
dbcon.Open();
|
|
|
|
|
using (SqlTransaction trans = dbcon.BeginTransaction())
|
|
|
|
|
{
|
|
|
|
|
//增加判断 如果
|
|
|
|
|
|
|
|
|
|
foreach (string Sqlitem in SaveSql)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(Sqlitem))
|
|
|
|
|
{
|
|
|
|
|
//log.Debug($"TaskSqlitem:{TaskSqlitem}");
|
|
|
|
|
SqlCommand cmd = new SqlCommand(Sqlitem, dbcon, trans);
|
|
|
|
|
cmd.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
trans.Commit();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
dbcon.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error(ex.Message);
|
|
|
|
|
log.Error(ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void DoSendMessage(string mblno) {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class JobWLXXGet : IJob
|
|
|
|
|
{
|
|
|
|
|
private ILog log = LogManager.GetLogger(typeof(JobWLXXGet));
|
|
|
|
|
|
|
|
|
|
private string connStr { get; set; }
|
|
|
|
|
private string reqUrl { get; set; }
|
|
|
|
|
private Int32 reqTimeout { get; set; }
|
|
|
|
|
|
|
|
|
|
public void Execute(IJobExecutionContext context)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
connStr = context.JobDetail.JobDataMap.GetString("ConnectString");
|
|
|
|
|
reqUrl = context.JobDetail.JobDataMap.GetString("ReqUrl");
|
|
|
|
|
reqTimeout = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("RequestTimeout"));
|
|
|
|
|
|
|
|
|
|
log.Debug($"连接字符串:{connStr}");
|
|
|
|
|
log.Debug($"请求URL:{reqUrl}");
|
|
|
|
|
log.Debug($"请求超时:{reqTimeout}");
|
|
|
|
|
|
|
|
|
|
EdiStatusDAL.connstr = connStr;
|
|
|
|
|
|
|
|
|
|
//查找wlxx_mblno 当中最早的数据
|
|
|
|
|
var getsqlstr = "select * from wlxx_mblno where id = (select min(id) from wlxx_mblno)";
|
|
|
|
|
|
|
|
|
|
var MBLNOList = DoWork.GetMBLNOList(connStr, getsqlstr);
|
|
|
|
|
|
|
|
|
|
if (MBLNOList.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
log.Debug("没有要查询的数据!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var MBLNO = MBLNOList[0].MBLNO;
|
|
|
|
|
var MFNO = MBLNOList[0].MFNO;
|
|
|
|
|
|
|
|
|
|
//访问url获取爬取的数据
|
|
|
|
|
JObject reqObj = new JObject();
|
|
|
|
|
reqObj.Add("yardid", "WLXX");
|
|
|
|
|
reqObj.Add("mblno", new JValue(MBLNO));
|
|
|
|
|
reqObj.Add("isweb", "2");
|
|
|
|
|
reqObj.Add("wltype", "WLXX");
|
|
|
|
|
|
|
|
|
|
string mailAddr = "";
|
|
|
|
|
string rtn = "";
|
|
|
|
|
List<WLXXModel> mList;
|
|
|
|
|
RepWLXXModel mWLXX;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"请求数据:{reqObj}");
|
|
|
|
|
rtn = WebRequestHelper.DoPost(reqUrl, reqObj.ToString(Newtonsoft.Json.Formatting.None), reqTimeout * 1000);
|
|
|
|
|
log.Debug($"返回数据:{rtn}");
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (rtn.Contains("单号信息不存在")) {
|
|
|
|
|
DelMinMblno(connStr);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if ( rtn.Contains("验证码") || rtn.Contains("无可用账号") || rtn.Contains("当前单号无信息"))
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"没有查询到{MBLNO}的信息");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var PortResult = Newtonsoft.Json.JsonConvert.DeserializeObject<RepWLXXModel>(rtn);
|
|
|
|
|
|
|
|
|
|
var portstatus = PortResult.message[0];
|
|
|
|
|
|
|
|
|
|
edistatusMb newStatusRecord = new edistatusMb();
|
|
|
|
|
|
|
|
|
|
//var laststatus = portstatus.getlaststatus();
|
|
|
|
|
|
|
|
|
|
var Localstatuslist = EdiStatusDAL.GetDataList(connStr, " MFNO='"+MFNO+"' ");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var PortStatusList = portstatus.getstatusList();
|
|
|
|
|
|
|
|
|
|
if (PortStatusList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var newstatus in PortStatusList)
|
|
|
|
|
{
|
|
|
|
|
var upd = false;
|
|
|
|
|
if (Localstatuslist.Count > 0)
|
|
|
|
|
foreach (var status in Localstatuslist)
|
|
|
|
|
{
|
|
|
|
|
if (status.GetValue("statustext") == newstatus.status)
|
|
|
|
|
{
|
|
|
|
|
if (newstatus.needinsert())
|
|
|
|
|
{
|
|
|
|
|
newStatusRecord = status;
|
|
|
|
|
|
|
|
|
|
newStatusRecord.SetValue("statustime", newstatus.timestr);
|
|
|
|
|
//newStatusRecord.SetValue("statustime", newstatus.timestr);
|
|
|
|
|
newStatusRecord.SetValue("ShenBaoXiangShu", portstatus.ShenBaoXiangShu);
|
|
|
|
|
newStatusRecord.DbOperationType = DbOperationType.DbotUpd;
|
|
|
|
|
|
|
|
|
|
//result = SaveStatus(newStatusRecord, headdata.MFNO);
|
|
|
|
|
upd = true;
|
|
|
|
|
EdiStatusDAL.Update(newStatusRecord);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
newStatusRecord = status;
|
|
|
|
|
EdiStatusDAL.Delete(newStatusRecord);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!upd && newstatus.needinsert())
|
|
|
|
|
{
|
|
|
|
|
//循环完了没找到同状态 则新增一条
|
|
|
|
|
//newStatusRecord.SetValue("gid", Guid.NewGuid().ToString());
|
|
|
|
|
newStatusRecord.SetValue("mfno",MFNO);
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(newstatus.timestr))
|
|
|
|
|
newStatusRecord.SetValue("statustime", newstatus.timestr);
|
|
|
|
|
newStatusRecord.SetValue("statustext", newstatus.status);
|
|
|
|
|
newStatusRecord.SetValue("ShenBaoXiangShu", portstatus.ShenBaoXiangShu);
|
|
|
|
|
newStatusRecord.DbOperationType= DbOperationType.DbotIns;
|
|
|
|
|
newStatusRecord.SetValue("mblno", MBLNO);
|
|
|
|
|
|
|
|
|
|
EdiStatusDAL.Insert(newStatusRecord);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
DelMinMblno(connStr);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"saveerror1: {e.Message}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"saveerror2: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"catch:{ex.Message}");
|
|
|
|
|
log.Error(ex.Message);
|
|
|
|
|
log.Error(ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void DelMinMblno(string connStr) {
|
|
|
|
|
var _r = DoWork.ExecSql(connStr," delete from wlxx_mblno where id =(select min(id) from wlxx_mblno ) ");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void DelMinMblno_1(string connStr)
|
|
|
|
|
{
|
|
|
|
|
var _r = DoWork.ExecSql(connStr, " delete from wlxx_mblno_1 where id =(select min(id) from wlxx_mblno_1 ) ");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//public class JobWLXX_GetDelay : IJob
|
|
|
|
|
//{
|
|
|
|
|
// //从WLXX_MBLNO_DELAY表中查找时间合适的数据
|
|
|
|
|
// //插入到WLXX_MBLNO表中 并将其ID数字放置在靠前位置
|
|
|
|
|
// private ILog log = LogManager.GetLogger(typeof(JobWLXX_GetDelay));
|
|
|
|
|
|
|
|
|
|
// private string connStr { get; set; }
|
|
|
|
|
// private string reqUrl { get; set; }
|
|
|
|
|
// private Int32 reqTimeout { get; set; }
|
|
|
|
|
// private Int32 ReadDealyMinutes { get; set; }
|
|
|
|
|
// public void Execute(IJobExecutionContext context)
|
|
|
|
|
// {
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// connStr = context.JobDetail.JobDataMap.GetString("ConnectString");
|
|
|
|
|
// reqUrl = context.JobDetail.JobDataMap.GetString("ReqUrl");
|
|
|
|
|
// reqTimeout = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("RequestTimeout"));
|
|
|
|
|
// ReadDealyMinutes = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("ReadDealyMinutes"));
|
|
|
|
|
|
|
|
|
|
// log.Debug($"连接字符串:{connStr}");
|
|
|
|
|
// log.Debug($"请求URL:{reqUrl}");
|
|
|
|
|
// log.Debug($"请求超时:{reqTimeout}");
|
|
|
|
|
// log.Debug($"读取未完成后延迟时间(分钟):{ReadDealyMinutes}");
|
|
|
|
|
|
|
|
|
|
// EdiStatusDAL.connstr = connStr;
|
|
|
|
|
|
|
|
|
|
// //查找 WLXX_MBLNO_DELAY 当中时间早于当前时间的数据
|
|
|
|
|
// var getsqlstr = "select * from WLXX_MBLNO_DELAY where READTIME<=getdate()";
|
|
|
|
|
|
|
|
|
|
// var MBLNOList = DoWork.GetMBLNOList(connStr, getsqlstr);
|
|
|
|
|
|
|
|
|
|
// if (MBLNOList.Count == 0)
|
|
|
|
|
// {
|
|
|
|
|
// log.Debug("没有要查询的数据!");
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
// var id = MBLNOList[0].id;
|
|
|
|
|
// var MBLNO = MBLNOList[0].MBLNO;
|
|
|
|
|
// var MFNO = MBLNOList[0].MFNO;
|
|
|
|
|
|
|
|
|
|
// //访问url获取爬取的数据
|
|
|
|
|
// JObject reqObj = new JObject();
|
|
|
|
|
// reqObj.Add("yardid", "WLXX");
|
|
|
|
|
// reqObj.Add("mblno", new JValue(MBLNO));
|
|
|
|
|
// reqObj.Add("isweb", "2");
|
|
|
|
|
// reqObj.Add("wltype", "WLXX");
|
|
|
|
|
|
|
|
|
|
// string mailAddr = "";
|
|
|
|
|
// string rtn = "";
|
|
|
|
|
// List<WLXXModel> mList;
|
|
|
|
|
// RepWLXXModel mWLXX;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// log.Debug($"请求数据:{reqObj}");
|
|
|
|
|
// rtn = WebRequestHelper.DoPost(reqUrl, reqObj.ToString(Newtonsoft.Json.Formatting.None), reqTimeout * 1000);
|
|
|
|
|
// log.Debug($"返回数据:{rtn}");
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// if (rtn.Contains("单号信息不存在"))
|
|
|
|
|
// {
|
|
|
|
|
// DelMinMblno(connStr);
|
|
|
|
|
// DelayMblno(connStr, id);
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// if (rtn.Contains("验证码") || rtn.Contains("无可用账号") || rtn.Contains("当前单号无信息"))
|
|
|
|
|
// {
|
|
|
|
|
// log.Debug($"没有查询到{MBLNO}的信息");
|
|
|
|
|
// DelayMblno(connStr, id);
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
|
|
// var PortResult = Newtonsoft.Json.JsonConvert.DeserializeObject<RepWLXXModel>(rtn);
|
|
|
|
|
|
|
|
|
|
// var portstatus = PortResult.message[0];
|
|
|
|
|
|
|
|
|
|
// edistatusMb newStatusRecord = new edistatusMb();
|
|
|
|
|
|
|
|
|
|
// //var laststatus = portstatus.getlaststatus();
|
|
|
|
|
|
|
|
|
|
// var Localstatuslist = EdiStatusDAL.GetDataList(connStr, " MFNO='" + MFNO + "' ");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// var PortStatusList = portstatus.getstatusList();
|
|
|
|
|
|
|
|
|
|
// if (PortStatusList.Count > 0)
|
|
|
|
|
// {
|
|
|
|
|
// foreach (var newstatus in PortStatusList)
|
|
|
|
|
// {
|
|
|
|
|
// var upd = false;
|
|
|
|
|
// if (Localstatuslist.Count > 0)
|
|
|
|
|
// foreach (var status in Localstatuslist)
|
|
|
|
|
// {
|
|
|
|
|
// if (status.GetValue("statustext") == newstatus.status)
|
|
|
|
|
// {
|
|
|
|
|
// if (newstatus.needinsert())
|
|
|
|
|
// {
|
|
|
|
|
// newStatusRecord = status;
|
|
|
|
|
|
|
|
|
|
// newStatusRecord.SetValue("statustime", newstatus.timestr);
|
|
|
|
|
// //newStatusRecord.SetValue("statustime", newstatus.timestr);
|
|
|
|
|
// newStatusRecord.SetValue("ShenBaoXiangShu", portstatus.ShenBaoXiangShu);
|
|
|
|
|
// newStatusRecord.DbOperationType = DbOperationType.DbotUpd;
|
|
|
|
|
|
|
|
|
|
// //result = SaveStatus(newStatusRecord, headdata.MFNO);
|
|
|
|
|
// upd = true;
|
|
|
|
|
// EdiStatusDAL.Update(newStatusRecord);
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// newStatusRecord = status;
|
|
|
|
|
// EdiStatusDAL.Delete(newStatusRecord);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// if (!upd && newstatus.needinsert())
|
|
|
|
|
// {
|
|
|
|
|
// //循环完了没找到同状态 则新增一条
|
|
|
|
|
// //newStatusRecord.SetValue("gid", Guid.NewGuid().ToString());
|
|
|
|
|
// newStatusRecord.SetValue("mfno", MFNO);
|
|
|
|
|
// if (!string.IsNullOrWhiteSpace(newstatus.timestr))
|
|
|
|
|
// newStatusRecord.SetValue("statustime", newstatus.timestr);
|
|
|
|
|
// newStatusRecord.SetValue("statustext", newstatus.status);
|
|
|
|
|
// newStatusRecord.SetValue("ShenBaoXiangShu", portstatus.ShenBaoXiangShu);
|
|
|
|
|
// newStatusRecord.DbOperationType = DbOperationType.DbotIns;
|
|
|
|
|
// newStatusRecord.SetValue("mblno", MBLNO);
|
|
|
|
|
|
|
|
|
|
// EdiStatusDAL.Insert(newStatusRecord);
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// //如果有接受申报或装载放行 则删除WLXX_MBLNO_DELAY当中的该提单号数据
|
|
|
|
|
// if (portstatus.临时读取完成())
|
|
|
|
|
// {
|
|
|
|
|
// DelDelayMblno(connStr, id);
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// DelayMblno(connStr, id);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// DelMinMblno(connStr);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception e)
|
|
|
|
|
// {
|
|
|
|
|
// log.Debug($"saveerror1: {e.Message}");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception ex)
|
|
|
|
|
// {
|
|
|
|
|
// log.Debug($"saveerror2: {ex.Message}");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception ex)
|
|
|
|
|
// {
|
|
|
|
|
// log.Debug($"catch:{ex.Message}");
|
|
|
|
|
// log.Error(ex.Message);
|
|
|
|
|
// log.Error(ex.StackTrace);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// public static void DelMinMblno(string connStr)
|
|
|
|
|
// {
|
|
|
|
|
// var _r = DoWork.ExecSql(connStr, " delete from wlxx_mblno where id =(select min(id) from wlxx_mblno ) ");
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// public static void DelayMblno(string connStr,string id)
|
|
|
|
|
// {
|
|
|
|
|
// var _r = DoWork.ExecSql(connStr, " update WLXX_MBLNO_DELAY set READTIME=dateadd(minute,2,getdate()) where id= "+id);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// public static void DelDelayMblno(string connStr, string id)
|
|
|
|
|
// {
|
|
|
|
|
// var _r0 = DoWork.ExecSql(connStr, " update OP_SEAE_EDI_FENDANSEND set CANSEND=1 where mblno=(select mblno from WLXX_MBLNO_DELAY where id= " + id+")");
|
|
|
|
|
|
|
|
|
|
// var _r = DoWork.ExecSql(connStr, " delete from WLXX_MBLNO_DELAY where id= " + id);
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class JobWLXXSave_D6 : IJob
|
|
|
|
|
{
|
|
|
|
|
private ILog log = LogManager.GetLogger(typeof(JobWLXXSave_D6));
|
|
|
|
|
|
|
|
|
|
private string connStr { get; set; }
|
|
|
|
|
private string TimeType { get; set; }
|
|
|
|
|
private Int32 StartDays { get; set; }
|
|
|
|
|
private Int32 EndDays { get; set; }
|
|
|
|
|
//private Int32 ChaXunJianGe { get; set; }
|
|
|
|
|
|
|
|
|
|
public void Execute(IJobExecutionContext context)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"Execute开始");
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
connStr = context.JobDetail.JobDataMap.GetString("ConnectString");
|
|
|
|
|
StartDays = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("StartDays"));
|
|
|
|
|
EndDays = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("EndDays"));
|
|
|
|
|
TimeType = context.JobDetail.JobDataMap.GetString("TimeType");
|
|
|
|
|
|
|
|
|
|
log.Debug($"连接字符串:{connStr}");
|
|
|
|
|
log.Debug($"起始天数:{StartDays}");
|
|
|
|
|
log.Debug($"终止天数:{EndDays}");
|
|
|
|
|
log.Debug($"时间类型:{TimeType}");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var queryfield = "录入日期";
|
|
|
|
|
if (TimeType == "录入日期")
|
|
|
|
|
{
|
|
|
|
|
queryfield = " 录入日期 ";
|
|
|
|
|
}
|
|
|
|
|
//if (TimeType == "发送日期")
|
|
|
|
|
//{
|
|
|
|
|
// queryfield = " SENDTIME ";
|
|
|
|
|
//}
|
|
|
|
|
if (TimeType == "开船日期")
|
|
|
|
|
{
|
|
|
|
|
queryfield = " 开船日期 ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var startdate = DateTime.Now.AddDays(-StartDays).ToString("yyyy-MM-dd");
|
|
|
|
|
var enddate = DateTime.Now.AddDays(-EndDays + 1).ToString("yyyy-MM-dd");
|
|
|
|
|
|
|
|
|
|
/*select s.*
|
|
|
|
|
from (
|
|
|
|
|
select *, row_number() over (partition by [手机号] order by [店铺]) as group_idx
|
|
|
|
|
from table_name
|
|
|
|
|
) s
|
|
|
|
|
where s.group_idx = 1*/
|
|
|
|
|
var sqlQuery = " select 编号 MFNO,case when isnull(分提单号,'')<>'' then 分提单号 else 主提单号 end MBLNO,case when isnull(分提单号,'')<>'' then 0 else 1 end ISMAIN from t_op_seae_edi ";
|
|
|
|
|
|
|
|
|
|
sqlQuery += string.Format(" where EDI类型='CN' and {0}>='{1}' and {2}<'{3}' and isnull(申报状态,'')='' order by 录入日期 desc", queryfield, startdate, queryfield, enddate);
|
|
|
|
|
|
|
|
|
|
//sqlQuery += " and not exists (select 1 from op_seae_edi_status where mfno=op_seae_edi.mfno and statustext= '装载放行' ) and dbo.getblno(mfno) not in(select mblno from wlxx_mblno) order by " + queryfield;
|
|
|
|
|
|
|
|
|
|
var MBLNOList = DoWork.GetMBLNOList_D6(connStr, sqlQuery);
|
|
|
|
|
|
|
|
|
|
if (MBLNOList.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
log.Debug("没有要发送的数据!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//然后将所有提单号存入数据库
|
|
|
|
|
var SaveSql = Local_Mblnomb.getSaveSql_D6(MBLNOList);
|
|
|
|
|
|
|
|
|
|
using (SqlConnection dbcon = new SqlConnection(connStr))
|
|
|
|
|
{
|
|
|
|
|
dbcon.Open();
|
|
|
|
|
using (SqlTransaction trans = dbcon.BeginTransaction())
|
|
|
|
|
{
|
|
|
|
|
//增加判断 如果
|
|
|
|
|
|
|
|
|
|
foreach (string Sqlitem in SaveSql)
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(Sqlitem))
|
|
|
|
|
{
|
|
|
|
|
//log.Debug($"TaskSqlitem:{TaskSqlitem}");
|
|
|
|
|
SqlCommand cmd = new SqlCommand(Sqlitem, dbcon, trans);
|
|
|
|
|
cmd.ExecuteNonQuery();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
trans.Commit();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
dbcon.Close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Error(ex.Message);
|
|
|
|
|
log.Error(ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void DoSendMessage(string mblno)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class JobWLXXGet_D6 : IJob
|
|
|
|
|
{
|
|
|
|
|
private ILog log = LogManager.GetLogger(typeof(JobWLXXGet_D6));
|
|
|
|
|
|
|
|
|
|
private string connStr { get; set; }
|
|
|
|
|
private string reqUrl { get; set; }
|
|
|
|
|
private Int32 reqTimeout { get; set; }
|
|
|
|
|
|
|
|
|
|
public void Execute(IJobExecutionContext context)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
connStr = context.JobDetail.JobDataMap.GetString("ConnectString");
|
|
|
|
|
reqUrl = context.JobDetail.JobDataMap.GetString("ReqUrl");
|
|
|
|
|
reqTimeout = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("RequestTimeout"));
|
|
|
|
|
|
|
|
|
|
log.Debug($"连接字符串:{connStr}");
|
|
|
|
|
log.Debug($"请求URL:{reqUrl}");
|
|
|
|
|
log.Debug($"请求超时:{reqTimeout}");
|
|
|
|
|
|
|
|
|
|
EdiStatusDAL.connstr = connStr;
|
|
|
|
|
|
|
|
|
|
//查找wlxx_mblno 当中最早的数据
|
|
|
|
|
var getsqlstr = "select * from wlxx_mblno where id = (select min(id) from wlxx_mblno)";
|
|
|
|
|
|
|
|
|
|
var MBLNOList = DoWork.GetMBLNOList_D6(connStr, getsqlstr);
|
|
|
|
|
|
|
|
|
|
if (MBLNOList.Count == 0)
|
|
|
|
|
{
|
|
|
|
|
log.Debug("没有要查询的数据!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var MBLNO = MBLNOList[0].MBLNO;
|
|
|
|
|
var MFNO = MBLNOList[0].MFNO;
|
|
|
|
|
var ISMAIN = MBLNOList[0].ISMAIN;
|
|
|
|
|
//访问url获取爬取的数据
|
|
|
|
|
JObject reqObj = new JObject();
|
|
|
|
|
reqObj.Add("yardid", "WLXX");
|
|
|
|
|
reqObj.Add("mblno", new JValue(MBLNO));
|
|
|
|
|
reqObj.Add("isweb", "2");
|
|
|
|
|
reqObj.Add("wltype", "WLXX");
|
|
|
|
|
|
|
|
|
|
string mailAddr = "";
|
|
|
|
|
string rtn = "";
|
|
|
|
|
List<WLXXModel> mList;
|
|
|
|
|
RepWLXXModel mWLXX;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"请求数据:{reqObj}");
|
|
|
|
|
rtn = WebRequestHelper.DoPost(reqUrl, reqObj.ToString(Newtonsoft.Json.Formatting.None), reqTimeout * 1000);
|
|
|
|
|
log.Debug($"返回数据:{rtn}");
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (rtn.Contains("单号信息不存在"))
|
|
|
|
|
{
|
|
|
|
|
DelMinMblno(connStr);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (rtn.Contains("验证码") || rtn.Contains("无可用账号") || rtn.Contains("当前单号无信息"))
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"没有查询到{MBLNO}的信息");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var PortResult = Newtonsoft.Json.JsonConvert.DeserializeObject<RepWLXXModel>(rtn);
|
|
|
|
|
|
|
|
|
|
var portstatus = PortResult.message[0];
|
|
|
|
|
|
|
|
|
|
edistatusMb newStatusRecord = new edistatusMb();
|
|
|
|
|
|
|
|
|
|
//var laststatus = portstatus.getlaststatus();
|
|
|
|
|
|
|
|
|
|
var Localstatuslist = EdiStatusDAL_D6.GetDataList(connStr, " 编号='" + MFNO + "' ");
|
|
|
|
|
if (Localstatuslist.Count > 0) {
|
|
|
|
|
var localrecord = Localstatuslist[0];
|
|
|
|
|
//如果数据里的这条信息状态与返回状态不同
|
|
|
|
|
if (localrecord.GetValue("申报状态") != portstatus.getlaststatus_str_D6(ISMAIN)) {
|
|
|
|
|
EdiStatusDAL_D6.Update(portstatus, localrecord.GetValue("编号"),ISMAIN);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DelMinMblno(connStr);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"saveerror1: {e.Message}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"saveerror2: {ex.Message}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
log.Debug($"catch:{ex.Message}");
|
|
|
|
|
log.Error(ex.Message);
|
|
|
|
|
log.Error(ex.StackTrace);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void DelMinMblno(string connStr)
|
|
|
|
|
{
|
|
|
|
|
var _r = DoWork.ExecSql(connStr, " delete from wlxx_mblno where id =(select min(id) from wlxx_mblno ) ");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|