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; namespace JobCreateFee { public class JobHaireBooking : IJob { private ILog log = LogManager.GetLogger(typeof(JobHaireBooking)); private const string CfgFileName = "hairebookingstarttime.cfg"; private static string CfgFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, CfgFileName); public void Execute(IJobExecutionContext context) { log.Debug($"Execute开始"); try { string connStr = context.JobDetail.JobDataMap.GetString("ConnectString"); string reqUrl = context.JobDetail.JobDataMap.GetString("ReqUrl"); string CustomerName = context.JobDetail.JobDataMap.GetString("CustomerName"); string TaskEmployee = context.JobDetail.JobDataMap.GetString("TaskEmployee"); int reqTimeout = Convert.ToInt32(context.JobDetail.JobDataMap.GetString("RequestTimeout")); if (reqTimeout == 0) reqTimeout = 3; long ts = DataTableToJsonHelper.ConvertDateTimeToInt(DateTime.Now); JObject reqObj = new JObject(); var starttimestr = File.ReadAllText(CfgFilePath); long startts = 0; if (!string.IsNullOrEmpty(starttimestr)) { startts = DataTableToJsonHelper.ConvertDateTimeToInt(Convert.ToDateTime(starttimestr)); reqObj.Add("assignBeginTime", new JValue(startts*1000)); } var endtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); long endts = DataTableToJsonHelper.ConvertDateTimeToInt(Convert.ToDateTime(endtime)); reqObj.Add("assignEndTime", new JValue(endts*1000)); Dictionary dic = new Dictionary(); dic.Add("notifyid", endts.ToString()); dic.Add("notifytime", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); dic.Add("butype","Json"); dic.Add("source", "JF"); dic.Add("content", reqObj.ToString().Replace("\r\n","")); log.Debug($"数据上传:{dic.ToList()}"); //发送请求数据 string rtn = WebRequestHelper.DoPost(reqUrl, dic, reqTimeout * 1000); //var objRtn = JsonConvert.DeserializeAnonymousType(rtn, new { status = "", message = "" }); log.Debug($"数据返回:{rtn}"); var parseJsonObj = JsonConvert.DeserializeObject(rtn); if (parseJsonObj.flag&& parseJsonObj.data!= null) { //var returnlist = JsonConvert.DeserializeObject>(parseJsonObj.data); try { using (SqlConnection dbcon = new SqlConnection(connStr)) { dbcon.Open(); foreach (var returndata in parseJsonObj.data) { var BSNO = Guid.NewGuid().ToString(); var ctnlist = returndata.contains; if (ctnlist == null) ctnlist = returndata.containerDTOS; var REEFERF = ""; var temperature = ""; var temperatureUnit = ""; var humidity = ""; if (string.IsNullOrEmpty(returndata.senderName)) returndata.senderName = ""; if (string.IsNullOrEmpty(returndata.scope)) returndata.scope = ""; if (string.IsNullOrEmpty(returndata.orderNo)) returndata.orderNo = ""; if (string.IsNullOrEmpty(returndata.trustDate)) returndata.trustDate = ""; if (string.IsNullOrEmpty(returndata.@operator)) returndata.@operator = ""; if (string.IsNullOrEmpty(returndata.operatorPhone)) returndata.operatorPhone = ""; if (string.IsNullOrEmpty(returndata.saleMan)) returndata.saleMan = ""; if (string.IsNullOrEmpty(returndata.businessType)) returndata.businessType = ""; if (string.IsNullOrEmpty(returndata.trustType)) returndata.trustType = ""; if (string.IsNullOrEmpty(returndata.reqShipmentDate)) returndata.reqShipmentDate = ""; if (string.IsNullOrEmpty(returndata.reqArrivalDate)) returndata.reqArrivalDate = ""; if (string.IsNullOrEmpty(returndata.goodDeliveryDate)) returndata.goodDeliveryDate = ""; if (string.IsNullOrEmpty(returndata.protocol)) returndata.protocol = ""; if (string.IsNullOrEmpty(returndata.senderCode)) returndata.senderCode = ""; if (string.IsNullOrEmpty(returndata.senderDesc)) returndata.senderDesc = ""; if (string.IsNullOrEmpty(returndata.receiverCode)) returndata.receiverCode = ""; if (string.IsNullOrEmpty(returndata.receiverName)) returndata.receiverName = ""; if (string.IsNullOrEmpty(returndata.receiverDesc)) returndata.receiverDesc = ""; if (string.IsNullOrEmpty(returndata.notifierCode)) returndata.notifierCode = ""; if (string.IsNullOrEmpty(returndata.notifierName)) returndata.notifierName = ""; if (string.IsNullOrEmpty(returndata.notifierDesc)) returndata.notifierDesc = ""; if (string.IsNullOrEmpty(returndata.secondnotifierCode)) returndata.secondnotifierCode = ""; if (string.IsNullOrEmpty(returndata.secondnotifierName)) returndata.secondnotifierName = ""; if (string.IsNullOrEmpty(returndata.secondnotifierDesc)) returndata.secondnotifierDesc = ""; if (string.IsNullOrEmpty(returndata.secondNotifierCode)) returndata.secondNotifierCode = ""; if (string.IsNullOrEmpty(returndata.secondNotifierName)) returndata.secondNotifierName = ""; if (string.IsNullOrEmpty(returndata.secondNotifierDesc)) returndata.secondNotifierDesc = ""; if (string.IsNullOrEmpty(returndata.loadingPortCode)) returndata.loadingPortCode = ""; if (string.IsNullOrEmpty(returndata.loadingPort)) returndata.loadingPort = ""; if (string.IsNullOrEmpty(returndata.loadingPortWcode)) returndata.loadingPortWcode = ""; if (string.IsNullOrEmpty(returndata.dischargePortCode)) returndata.dischargePortCode = ""; if (string.IsNullOrEmpty(returndata.dischargePort)) returndata.dischargePort = ""; if (string.IsNullOrEmpty(returndata.dischargePortWcode)) returndata.dischargePortWcode = ""; if (string.IsNullOrEmpty(returndata.transPortCode)) returndata.transPortCode = ""; if (string.IsNullOrEmpty(returndata.transPort)) returndata.transPort = ""; if (string.IsNullOrEmpty(returndata.transPortWcode)) returndata.transPortWcode = ""; if (string.IsNullOrEmpty(returndata.loadPlace)) returndata.loadPlace = ""; if (string.IsNullOrEmpty(returndata.deliveryPlace)) returndata.deliveryPlace = ""; if (string.IsNullOrEmpty(returndata.shipCompanyCode)) returndata.shipCompanyCode = ""; if (string.IsNullOrEmpty(returndata.shipCompany)) returndata.shipCompany = ""; if (string.IsNullOrEmpty(returndata.shipName)) returndata.shipName = ""; if (string.IsNullOrEmpty(returndata.voyageNum)) returndata.voyageNum = ""; if (string.IsNullOrEmpty(returndata.transClause)) returndata.transClause = ""; if (string.IsNullOrEmpty(returndata.freightClause)) returndata.freightClause = ""; if (string.IsNullOrEmpty(returndata.priceClause)) returndata.priceClause = ""; if (string.IsNullOrEmpty(returndata.signType)) returndata.signType = ""; if (string.IsNullOrEmpty(returndata.goodsNum)) returndata.goodsNum = ""; if (string.IsNullOrEmpty(returndata.goodUnit)) returndata.goodUnit = ""; if (string.IsNullOrEmpty(returndata.grossWeight)) returndata.grossWeight = "0"; if (string.IsNullOrEmpty(returndata.volume)) returndata.volume = "0"; if (string.IsNullOrEmpty(returndata.productName)) returndata.productName = ""; if (string.IsNullOrEmpty(returndata.goodsType)) returndata.goodsType = ""; if (string.IsNullOrEmpty(returndata.shipMarks)) returndata.shipMarks = ""; if (string.IsNullOrEmpty(returndata.goodsDesc)) returndata.goodsDesc = ""; if (string.IsNullOrEmpty(returndata.bookingComment)) returndata.bookingComment = ""; if (string.IsNullOrEmpty(returndata.airLine)) returndata.airLine = ""; foreach (var ctn in ctnlist) { var insertctnstr = "insert into op_seaeorderctn (CTN_ID,ORDNO,CTNALL,CTNNUM,REMARK,KINDPKGS,PKGS,KGS,CBM,GOODSNAME,HSCODE,CNTRNO,SEALNO)"; var kgs = "0"; if (ctn.grossWeight!= null) kgs = ctn.grossWeight; var valuectnstr = $" values ('{Guid.NewGuid().ToString().Replace("'", "''")}'," +// $"'{BSNO.Replace("'", "''")}'," + //ORDNO $"'{ctn.boxType.Replace("'", "''")}'," + //CTNALL $"'{ctn.boxQuantity.Replace("'", "''")}'," + //CTNNUM $"''," + //REMARK $"''," + //KINDPKGS $"0," + //PKGS $"'{kgs}'," + //KGS $"0," + //CBM $"''," + //GOODSNAME $"''," + //HSCODE $"''," + //CNTRNO $"''" + //SEALNO $")"; var headctnStr = insertctnstr + valuectnstr; SqlCommand cmdctn = new SqlCommand(headctnStr, dbcon); cmdctn.ExecuteNonQuery(); REEFERF = ctn.ventilate; if (string.IsNullOrEmpty(REEFERF)) REEFERF = ""; temperature = ctn.temperature; if (string.IsNullOrEmpty(temperature)) temperature = ""; if (ctn.temperatureUnit== "CEL") temperatureUnit ="C"; if (ctn.temperatureUnit == "FAH") temperatureUnit = "F"; } var insertstr = "insert into op_seaeorder (BSNO,ORSTATUS,BSDATE,MBLNO,CUSTOMERNAME,SHIPPER,CONSIGNEE,NOTIFYPARTY,CARRIER,VESSEL,VOYNO,ETD,PlACERECEIPT,PORTLOADID,PORTLOAD,PORTDISCHARGEID,PORTDISCHARGE,PLACEDELIVERYID,PLACEDELIVERY,DESTINATIONID,DESTINATION,NOBILL,ISSUETYPE,ISSUEDATE,ISSUEPLACE,BLFRT,PREPARDAT,PAYABLEAT,SERVICE,MARKS,NOPKGS,DESCRIPTION,GOODSNAME,GROSSWEIGHT,MEASUREMENT,PKGS,KINDPKGS,KGS,CBM,TOTALNO,CNTRTOTAL,INPUTBY,INVNO,CARGOID,DCLASS,DUNNO,REEFERF,TEMPID,TEMPSET,TEMPMAX,TEMPMIN,CUSTOMSNUM,REMARK,DPAGE,DLABEL,LANE,SERVICECONTRACTNO,CUSTNO,CUSTATTN,CUSTTEL,BLTYPE)"; var CARGOID = "S"; if (returndata.goodsType == "01") CARGOID = "R"; if (returndata.goodsType == "02") CARGOID = "D"; var ETD = ""; if (!string.IsNullOrEmpty(returndata.reqShipmentDate)) { ETD = DataTableToJsonHelper.GetDateTime(long.Parse(returndata.reqShipmentDate)).ToString("yyyy-MM-dd"); } var BSDATE = ""; if (!string.IsNullOrEmpty(returndata.trustDate)) { BSDATE = DataTableToJsonHelper.GetDateTime(long.Parse(returndata.trustDate)).ToString("yyyy-MM-dd"); } var valuestr = $" values ('{BSNO.Replace("'", "''")}'," +//BSNO $"'{returndata.scope.Replace("'", "''")}'," + //ORSTATUS $"'{BSDATE.Replace("'", "''")}'," + //BSDATE $"''," + //MBLNO $"'{CustomerName.Replace("'", "''")}'," + //CUSTOMERNAME $"'{returndata.senderName + Environment.NewLine + returndata.senderDesc}'," + //SHIPPER $"'{returndata.receiverName + Environment.NewLine + returndata.receiverDesc}'," + //CONSIGNEE $"'{returndata.notifierName + Environment.NewLine + returndata.notifierDesc}'," + //NOTIFYPARTY //$"'{returndata.secondnotifierName.Replace("'", "''") + Environment.NewLine + returndata.secondnotifierDesc.Replace("'", "''")}'," + //NOTIFYPARTY $"'{returndata.shipCompany}'," + //CARRIER $"'{returndata.shipName}'," + //VESSEL $"'{returndata.voyageNum}'," + //VOYNO $"'{ETD.Replace("'", "''")}'," + //ETD $"'{returndata.loadPlace}'," + //PlACERECEIPT $"'{returndata.loadingPortWcode}'," + //PORTLOADID $"'{returndata.loadingPort}'," + //PORTLOAD $"'{returndata.dischargePortWcode}'," + //PORTDISCHARGEID $"'{returndata.dischargePort}'," + //PORTDISCHARGE $"''," + //PLACEDELIVERYID $"'{returndata.deliveryPlace.Replace("'", "''")}'," + //PLACEDELIVERY $"'{returndata.dischargePortWcode.Replace("'", "''")}'," + //DESTINATIONID $"'{returndata.dischargePort.Replace("'", "''")}'," + //DESTINATION $"''," + //NOBILL $"''," + //ISSUETYPE $"''," + //ISSUEDATE $"''," + //ISSUEPLACE $"'{returndata.freightClause.Replace("'", "''")}'," + //BLFRT $"''," + //PREPARDAT $"''," + //PAYABLEAT $"'{returndata.transClause}'," + //SERVICE $"'{returndata.shipMarks.Replace("'", "''")}'," + //MARKS $"'{returndata.goodsNum+ returndata.goodUnit}'," + //NOPKGS $"'{returndata.goodsDesc}'," + //DESCRIPTION $"'{returndata.productName}'," + //GOODSNAME $"'{returndata.grossWeight}KGS'," + //GROSSWEIGHT $"'{returndata.volume.Replace("'", "''")}CBM'," + //MEASUREMENT $"'{returndata.goodsNum.Replace("'", "''")}'," + //PKGS $"'{returndata.goodUnit.Replace("'", "''")}'," + //KINDPKGS $"'{returndata.grossWeight.Replace("'", "''")}'," + //KGS $"'{returndata.volume.Replace("'", "''")}'," + //CBM $"''," + //TOTALNO $"''," + //CNTRTOTAL $"''," + //INPUTBY $"''," + //INVNO $"'{CARGOID}'," + //CARGOID $"''," + //DCLASS $"''," + //DUNNO $"'{REEFERF.Replace("'", "''")}'," + //REEFERF $"'{temperatureUnit.Replace("'", "''")}'," + //TEMPID $"'{temperature.Replace("'", "''")}'," + //TEMPSET $"''," + //TEMPMAX $"''," + //TEMPMIN $"0," + //CUSTOMSNUM $"'{returndata.bookingComment.Replace("'", "''")}'," + //REMARK $"''," + //DPAGE $"''," + //DLABEL $"'{returndata.airLine}'," + //LANE $"'{returndata.protocol}'," + //SERVICECONTRACTNO $"'{returndata.orderNo}'," + //CUSTNO $"'{returndata.@operator}'," + //CUSTATTN $"'{returndata.operatorPhone}'," + //CUSTTEL $"''" + //CUSTTEL $")"; var headStr = insertstr + valuestr; SqlCommand cmd = new SqlCommand(headStr, dbcon); cmd.ExecuteNonQuery(); var tastStr = $" INSERT INTO [t_op_task] ([任务编号],[上级任务号],[任务类型],[任务来源],[任务状态],[任务说明],[发起人],[录入日期],[任务开始时间],[完成方式],[完成时间],[KPI值],[提单号],[文件编号],[邮件编号],[电子档案路径],[是否公共],[任务相关人员],[SEA编号]) select newid(),null,'EDI订舱','FTP','未开始','海尔订舱:{returndata.dischargePort}','DEMO-SA',GETDATE(),GETDATE(),'手动',NULL,0,'',null,null,null,0,'{TaskEmployee}','{BSNO}' "; SqlCommand cmdtast = new SqlCommand(tastStr, dbcon); cmdtast.ExecuteNonQuery(); } dbcon.Close(); } } catch (Exception e) { log.Debug($"记录插入错误:{e.Message}"); } } else { log.Debug($"数据返回信息:{parseJsonObj.msg}"); } File.WriteAllText(CfgFilePath, endtime); } catch (Exception ex) { log.Error(ex.Message); log.Error(ex.StackTrace); } } } public class JsonBook { public string scope { get; set; } public string orderNo { get; set; } public string trustDate { get; set; } public string @operator { get; set; } public string operatorPhone { get; set; } public string saleMan { get; set; } public string businessType { get; set; } public string trustType { get; set; } public string reqShipmentDate { get; set; } public string reqArrivalDate { get; set; } public string goodDeliveryDate { get; set; } public string protocol { get; set; } public string senderCode { get; set; } public string senderName { get; set; } public string senderDesc { get; set; } public string receiverCode { get; set; } public string receiverName { get; set; } public string receiverDesc { get; set; } public string notifierCode { get; set; } public string notifierName { get; set; } public string notifierDesc { get; set; } public string secondnotifierCode { get; set; } public string secondnotifierName { get; set; } public string secondnotifierDesc { get; set; } public string secondNotifierCode { get; set; } public string secondNotifierName { get; set; } public string secondNotifierDesc { get; set; } public string loadingPortCode { get; set; } public string loadingPort { get; set; } public string loadingPortWcode { get; set; } public string dischargePortCode { get; set; } public string dischargePort { get; set; } public string dischargePortWcode { get; set; } public string transPortCode { get; set; } public string transPort { get; set; } public string transPortWcode { get; set; } public string loadPlace { get; set; } public string deliveryPlace { get; set; } public string country { get; set; } public string airLine { get; set; } public string shipCompanyCode { get; set; } public string shipCompany { get; set; } public string shipName { get; set; } public string voyageNum { get; set; } public string transClause { get; set; } public string freightClause { get; set; } public string priceClause { get; set; } public string signType { get; set; } public string goodsNum { get; set; } public string goodUnit { get; set; } public string grossWeight { get; set; } public string volume { get; set; } public string productName { get; set; } public string goodsType { get; set; } public string shipMarks { get; set; } public string goodsDesc { get; set; } public string bookingComment { get; set; } public List contains { get; set; } public List containerDTOS { get; set; } } public class JsonCtn { public string itemNo { get; set; } public string boxType { get; set; } public string boxQuantity { get; set; } public string grossWeight { get; set; } public string grossWeightUnit { get; set; } public string temperature { get; set; } public string temperatureUnit { get; set; } public string ventilate { get; set; } public string ventilateUnit { get; set; } public string humidity { get; set; } public string humidityUnit { get; set; } } public class JsonHBData { public bool flag { get; set; } public List data { get; set; } public string msg { get; set; } public string code { get; set; } } }