You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
DS7/JobAutoCreateFee/JobHaireBooking.cs

317 lines
17 KiB
C#

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<string, string> dic = new Dictionary<string, string>();
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<JsonHBData>(rtn);
if (parseJsonObj.flag&& parseJsonObj.data!= null)
{
//var returnlist = JsonConvert.DeserializeObject<List<JsonBook>>(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 = "";
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 valuectnstr = $" values ('{Guid.NewGuid().ToString().Replace("'", "''")}'," +//
$"'{BSNO.Replace("'", "''")}'," + //ORDNO
$"'{ctn.boxType.Replace("'", "''")}'," + //CTNALL
$"'{ctn.boxQuantity.Replace("'", "''")}'," + //CTNNUM
$"''," + //REMARK
$"''," + //KINDPKGS
$"0," + //PKGS
$"'{ctn.grossWeight.Replace("'", "''")}'," + //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.loadingPortCode}'," + //PORTLOADID
$"'{returndata.loadingPort}'," + //PORTLOAD
$"'{returndata.dischargePortCode}'," + //PORTDISCHARGEID
$"'{returndata.dischargePort}'," + //PORTDISCHARGE
$"''," + //PLACEDELIVERYID
$"'{returndata.deliveryPlace.Replace("'", "''")}'," + //PLACEDELIVERY
$"'{returndata.dischargePortCode.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 dischargePortCode { get; set; }
public string dischargePort { get; set; }
public string transPortCode { get; set; }
public string transPort { 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<JsonCtn> contains { get; set; }
public List<JsonCtn> 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<JsonBook> data { get; set; }
public string msg { get; set; }
public string code { get; set; }
}
}