using log4net; using Newtonsoft.Json; using Quartz; using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using YDN; namespace JobYunDang { public class JobBooking : IJob { private ILog log = LogManager.GetLogger(typeof(JobBooking)); public void Execute(IJobExecutionContext context) { string connStr = context.JobDetail.JobDataMap.GetString("ConnectString"); string reqUrl = context.JobDetail.JobDataMap.GetString("ReqUrl"); string companyCode = context.JobDetail.JobDataMap.GetString("CompanyCode"); string companySecret = context.JobDetail.JobDataMap.GetString("CompanySecret"); string querySql = context.JobDetail.JobDataMap.GetString("QuerySql"); using (SqlConnection dbcon = new SqlConnection(connStr)) { SqlDataAdapter adapter = new SqlDataAdapter(querySql, dbcon); DataTable table = new DataTable(); adapter.Fill(table); if (table.Columns.Contains("mblno") && table.Columns.Contains("carrierid") && table.Columns.Contains("portloadid")) { if (table.Rows.Count > 0) { List listOjb = new List(); foreach (DataRow row in table.Rows) { if (row["mblno"].ToString() != "" && row["carrierid"].ToString() != "" && row["portloadid"].ToString() != "") { var obj = new { referenceno = row["mblno"].ToString(), carriercd = row["carrierid"].ToString(), pol = row["portloadid"].ToString() }; listOjb.Add(obj); } } var map = new Dictionary(); map.Add("data", JsonConvert.SerializeObject(listOjb)); log.Debug($"订阅数据上传数据:{JsonConvert.SerializeObject(listOjb)}"); var urlMap = new Dictionary(); urlMap.Add("companyid", companyCode); var html = RequestApi.HttpPost(reqUrl, companySecret, urlMap, map); var rtn = JsonConvert.DeserializeAnonymousType(html, new { success = false, result = new dynamic[] { new { referenceno="", success=true, message="" } } }); if (rtn.success) { foreach (dynamic res in rtn.result) { if ((bool)res.success) { try { dbcon.Open(); using (var trans = dbcon.BeginTransaction()) { SqlCommand cmd = new SqlCommand($"update op_seae set IsBookingYDW=1,YDWUpdate=GETDATE() where mblno='{res.referenceno}'", dbcon, trans); cmd.ExecuteNonQuery(); trans.Commit(); } dbcon.Close(); } catch { log.Error($"更新op_seae状态出错:{res.referenceno}"); dbcon.Close(); } log.Debug($"成功订阅数据,主提单号:{res.referenceno}"); } else { log.Debug($"订阅数据失败,主提单号:{res.referenceno} {res.message}"); } } } else { log.Debug($"订阅数据失败"); log.Debug(html); } } else { log.Debug($"未查询到数据,SQL语句:{querySql}"); } } else { log.Error($"未包含所需的列(mblno,carrierid,portloadid),SQL语句:{querySql}"); } } } } }