|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Web;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using Microsoft.Practices.EnterpriseLibrary.Data;
|
|
|
|
|
using System.Globalization;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using DSWeb.MvcShipping.DAL.MsCodeCtnEdi;
|
|
|
|
|
using DSWeb.MvcShipping.Models.MsOpSeae;
|
|
|
|
|
using DSWeb.MvcShipping.Models.MsChFee;
|
|
|
|
|
using DSWeb.MvcShipping.DAL.MsChFeeDAL;
|
|
|
|
|
using HcUtility.Comm;
|
|
|
|
|
using DSWeb.Areas.MvcShipping.Comm;
|
|
|
|
|
using DSWeb.MvcShipping.Helper;
|
|
|
|
|
using DSWeb.MvcShipping.DAL.MsSysThirdPartyAccount;
|
|
|
|
|
using DSWeb.Common.DB;
|
|
|
|
|
|
|
|
|
|
namespace DSWeb.Areas.CommMng.DAL
|
|
|
|
|
{
|
|
|
|
|
public class PortSendHelper {
|
|
|
|
|
|
|
|
|
|
public string URL { get; set; }
|
|
|
|
|
public string logname { get; set; }
|
|
|
|
|
|
|
|
|
|
public string userid { get; set; }
|
|
|
|
|
public string infoclient_carrier { get; set; }//该业务相关的船公司的info_client.shortname
|
|
|
|
|
|
|
|
|
|
public object sendobj { get; set; }
|
|
|
|
|
|
|
|
|
|
public void MakeMessage()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public DBResult DoSend(int timeout= 5000) {
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var strSendObj = JsonConvert.Serialize(sendobj);
|
|
|
|
|
BasicDataRefDAL.SaveLog(strSendObj, "", logname, "发送");
|
|
|
|
|
var rtn = WebRequestHelper.DoPost(URL, strSendObj, timeout: 50000);
|
|
|
|
|
BasicDataRefDAL.SaveLog(rtn, "", logname, "返回");
|
|
|
|
|
result.OK("", rtn);
|
|
|
|
|
}
|
|
|
|
|
catch(Exception ex)
|
|
|
|
|
{
|
|
|
|
|
result.SetErrorInfo(ex.Message);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
//"{\"status\":1,\"message\":\"ok\",\"data\":{\"message\":\"无效的参考号/没有运动可用:140201003313\",\"infos\":[]}}"
|
|
|
|
|
|
|
|
|
|
/*"infos": [
|
|
|
|
|
{
|
|
|
|
|
"bkgno": "ESLCHNQGA2044855",
|
|
|
|
|
"blno": "EPIRCHNQGA230635",
|
|
|
|
|
"eta": "",
|
|
|
|
|
"origin": "QINGDAO, CHINA",
|
|
|
|
|
"delivery": "PENANG, MALAYSIA",
|
|
|
|
|
"container": [
|
|
|
|
|
{
|
|
|
|
|
"contno": "FCIU3466878",
|
|
|
|
|
"latestact": "EMPTY GATED IN AT DEPOT",
|
|
|
|
|
"actloc": "PENANG, MALAYSIA",
|
|
|
|
|
"conttype": "DV20",
|
|
|
|
|
"actdate": "19-Jan-2023"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"bkgno": "ESLCHNQGA2045659",
|
|
|
|
|
"blno": "EPIRCHNQGA230922",
|
|
|
|
|
"eta": "",
|
|
|
|
|
"origin": "QINGDAO, CHINA",
|
|
|
|
|
"delivery": "SOHAR, OMAN",
|
|
|
|
|
"container": [
|
|
|
|
|
{
|
|
|
|
|
"contno": "CLHU8968063",
|
|
|
|
|
"latestact": "EMPTY GATED IN AT DEPOT",
|
|
|
|
|
"actloc": "SOHAR, OMAN",
|
|
|
|
|
"conttype": "HC40",
|
|
|
|
|
"actdate": "15-Feb-2023"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"contno": "ESDU4074261",
|
|
|
|
|
"latestact": "EMPTY GATED IN AT DEPOT",
|
|
|
|
|
"actloc": "SOHAR, OMAN",
|
|
|
|
|
"conttype": "HC40",
|
|
|
|
|
"actdate": "15-Feb-2023"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
]*/
|
|
|
|
|
|
|
|
|
|
result = DoDeal(result.Data.ToString());
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual DBResult DoDeal(string rtn) {
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 港联顺相关类和方法
|
|
|
|
|
public class GLSFEEHead
|
|
|
|
|
{
|
|
|
|
|
public string key { get; set; }
|
|
|
|
|
public string mbl { get; set; }
|
|
|
|
|
public string vessel { get; set; }
|
|
|
|
|
public string voyage { get; set; }
|
|
|
|
|
public string placeStart { get; set; }
|
|
|
|
|
public string placeEnd { get; set; }
|
|
|
|
|
public string etd { get; set; }
|
|
|
|
|
public string cartonInfo { get; set; }
|
|
|
|
|
public string goodsName { get; set; }
|
|
|
|
|
public string number { get; set; } = "0";
|
|
|
|
|
public string grossWeight { get; set; } = "0";
|
|
|
|
|
public string volume { get; set; } = "0";
|
|
|
|
|
public string remark { get; set; }
|
|
|
|
|
public List<GLSFEE> billInfoList { get; set; } = new List<GLSFEE>();
|
|
|
|
|
|
|
|
|
|
public GLSFEEHead() { }
|
|
|
|
|
public GLSFEEHead(MsOpSeae head, string userid, string username, string companyid)
|
|
|
|
|
{
|
|
|
|
|
var CUSTOMERNAME = "";
|
|
|
|
|
var CUSTOMERNAMEInfo = MsCodeCtnEdiDAL.GetCustList($" EDINAME='GLSFEE'");
|
|
|
|
|
if (CUSTOMERNAMEInfo != null && CUSTOMERNAMEInfo.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
CUSTOMERNAME = CUSTOMERNAMEInfo[0].CTN;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var chfeeCondition = $" CUSTOMERNAME='{CUSTOMERNAME}' and BSNO='{head.BSNO}' and not exists(select 1 from OP_LOGICINFO where BSNO=ch_fee.GID and PROPNAME='港联顺费用推送') ";
|
|
|
|
|
var 应收费用List = MsChFeeDAL.GetDataList(chfeeCondition + " and feetype=1 ", 1, "op_seae", userid, username, companyid);
|
|
|
|
|
var 应付费用List = MsChFeeDAL.GetDataList(chfeeCondition + " and feetype=2 ", 2, "op_seae", userid, username, companyid);
|
|
|
|
|
|
|
|
|
|
var feenamedic = MsCodeCtnEdiDAL.GetFeeNameDicByName("GLSFEE");
|
|
|
|
|
|
|
|
|
|
mbl = head.MBLNO;
|
|
|
|
|
vessel = head.VESSEL;
|
|
|
|
|
voyage = head.VOYNO;
|
|
|
|
|
placeStart = head.PORTLOAD;
|
|
|
|
|
placeEnd = head.DESTINATION;
|
|
|
|
|
etd = head.ETD;
|
|
|
|
|
cartonInfo = head.CNTRTOTAL;
|
|
|
|
|
goodsName = head.GOODSNAME;
|
|
|
|
|
number = head.PKGS;
|
|
|
|
|
grossWeight = head.KGS;
|
|
|
|
|
volume = head.CBM;
|
|
|
|
|
billInfoList = new List<GLSFEE>();
|
|
|
|
|
if (应收费用List != null && 应收费用List.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var item in 应收费用List)
|
|
|
|
|
{
|
|
|
|
|
var newfee = new GLSFEE(item, feenamedic);
|
|
|
|
|
billInfoList.Add(newfee);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (应付费用List != null && 应付费用List.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var item in 应付费用List)
|
|
|
|
|
{
|
|
|
|
|
var newfee = new GLSFEE(item, feenamedic);
|
|
|
|
|
billInfoList.Add(newfee);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public List<GLSFEEINFO> getFeeInfo()
|
|
|
|
|
{
|
|
|
|
|
var result = new List<GLSFEEINFO>();
|
|
|
|
|
if (billInfoList != null && billInfoList.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (var item in billInfoList)
|
|
|
|
|
{
|
|
|
|
|
var newrec = new GLSFEEINFO(this);
|
|
|
|
|
//newrec.CUSTOMERNAME = CUSTOMERNAME;
|
|
|
|
|
newrec.GID = item.GID;
|
|
|
|
|
newrec.FEENAME = item.feeItem;
|
|
|
|
|
newrec.FEETYPEREF = item.feeType;
|
|
|
|
|
newrec.AMOUNT = item.totalPrice;
|
|
|
|
|
newrec.CURRENT = item.currency;
|
|
|
|
|
result.Add(newrec);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class GLSFEE
|
|
|
|
|
{
|
|
|
|
|
public string feeType { get; set; }
|
|
|
|
|
public string feeItem { get; set; }
|
|
|
|
|
public string FEENAME { get; set; }
|
|
|
|
|
public string GID { get; set; }
|
|
|
|
|
public string currency { get; set; }
|
|
|
|
|
public decimal? quantity { get; set; }
|
|
|
|
|
public string unit { get; set; }
|
|
|
|
|
public decimal? unitPrice { get; set; }
|
|
|
|
|
public decimal? totalPrice { get; set; }
|
|
|
|
|
public string remark { get; set; }
|
|
|
|
|
|
|
|
|
|
public GLSFEE() { }
|
|
|
|
|
|
|
|
|
|
public GLSFEE(MsChFee chfee, Dictionary<string, string> feenamedic)
|
|
|
|
|
{
|
|
|
|
|
if (chfee.FeeType == 1) feeType = "R";
|
|
|
|
|
if (chfee.FeeType == 2) feeType = "P";
|
|
|
|
|
FEENAME = chfee.FeeName;
|
|
|
|
|
GID = chfee.GId;
|
|
|
|
|
if (feenamedic.ContainsKey(chfee.FeeName))
|
|
|
|
|
{
|
|
|
|
|
feeItem = feenamedic[chfee.FeeName];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
//feeItem = "";
|
|
|
|
|
//改为不强制要求设置费用名称 未设置的使用原名称
|
|
|
|
|
feeItem = chfee.FeeName;
|
|
|
|
|
}
|
|
|
|
|
currency = chfee.Currency;
|
|
|
|
|
quantity = chfee.Quantity;
|
|
|
|
|
unit = chfee.Unit;
|
|
|
|
|
unitPrice = chfee.TaxUnitPrice;
|
|
|
|
|
totalPrice = chfee.Amount;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class GLSFEEINFO
|
|
|
|
|
{
|
|
|
|
|
public string GID { get; set; }
|
|
|
|
|
public string MBLNO { get; set; }
|
|
|
|
|
public string VESSEL { get; set; }
|
|
|
|
|
public string VOYNO { get; set; }
|
|
|
|
|
public string DESTINATION { get; set; }
|
|
|
|
|
public string ETD { get; set; }
|
|
|
|
|
public string FEENAME { get; set; }
|
|
|
|
|
public string FEETYPEREF { get; set; }
|
|
|
|
|
public decimal? AMOUNT { get; set; }
|
|
|
|
|
public string CURRENT { get; set; }
|
|
|
|
|
|
|
|
|
|
public GLSFEEINFO() { }
|
|
|
|
|
|
|
|
|
|
public GLSFEEINFO(GLSFEEHead feehead)
|
|
|
|
|
{
|
|
|
|
|
MBLNO = feehead.mbl;
|
|
|
|
|
VESSEL = feehead.vessel;
|
|
|
|
|
VOYNO = feehead.voyage;
|
|
|
|
|
ETD = feehead.etd;
|
|
|
|
|
DESTINATION = feehead.placeEnd;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region ESL相关类
|
|
|
|
|
|
|
|
|
|
public class ESLPortParam_Send
|
|
|
|
|
{
|
|
|
|
|
public string u { get; set; }//用户名
|
|
|
|
|
public string p { get; set; }//密码
|
|
|
|
|
|
|
|
|
|
public object data { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public class ESLPortParam
|
|
|
|
|
{
|
|
|
|
|
public string u { get; set; }//用户名
|
|
|
|
|
public string p { get; set; }//密码
|
|
|
|
|
|
|
|
|
|
public string userid { get; set; }
|
|
|
|
|
public string carrier { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public DBResult SetUserPassword(string _userid, string _carrier) {
|
|
|
|
|
userid = _userid;
|
|
|
|
|
carrier = _carrier;
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
var thirdaccount= MsSysThirdPartyAccountDAL.GetDataByCustomername(userid, carrier);
|
|
|
|
|
if (!thirdaccount.HaveAccount())
|
|
|
|
|
{
|
|
|
|
|
result.SetErrorInfo($"您没有在第三方账号密码管理中设置【{carrier}】的账号和密码");
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
u = thirdaccount.ACCOUNT;
|
|
|
|
|
p = thirdaccount.ACCOUNTPSW;
|
|
|
|
|
result.OK();
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual ESLPortParam_Send getSendParam() {
|
|
|
|
|
var result = new ESLPortParam_Send();
|
|
|
|
|
result.u = u;
|
|
|
|
|
result.p = p;
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public class ESLPortResult
|
|
|
|
|
{
|
|
|
|
|
public int? status { get; set; }
|
|
|
|
|
public string message { get; set; }
|
|
|
|
|
virtual public object data { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public class ESLPortParam_ETA : ESLPortParam
|
|
|
|
|
{
|
|
|
|
|
public List<string> data { get; set; }
|
|
|
|
|
|
|
|
|
|
public ESLPortParam_Send getSendParam() {
|
|
|
|
|
var result = new ESLPortParam_Send();
|
|
|
|
|
result.u = u;
|
|
|
|
|
result.p = p;
|
|
|
|
|
result.data = JsonConvert.Serialize(data);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public class ESLPortParam_GetMblnoBySO : ESLPortParam
|
|
|
|
|
{
|
|
|
|
|
public string so_no { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public class ESLPortParam_GetEP : ESLPortParam
|
|
|
|
|
{
|
|
|
|
|
public string esl_code { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public class ESLPortParam_Draft : ESLPortParam
|
|
|
|
|
{
|
|
|
|
|
public string ep_code { get; set; }
|
|
|
|
|
public string op_email { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class ESLPortResult_ETA : ESLPortResult
|
|
|
|
|
{
|
|
|
|
|
public class etainfo
|
|
|
|
|
{
|
|
|
|
|
public string bkgno { get; set; }
|
|
|
|
|
public string blno { get; set; }
|
|
|
|
|
public string eta { get; set; }
|
|
|
|
|
public string origin { get; set; }
|
|
|
|
|
public string delivery { get; set; }
|
|
|
|
|
public List<etacontainer> container { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public class etacontainer
|
|
|
|
|
{
|
|
|
|
|
public string contno { get; set; }
|
|
|
|
|
public string latestact { get; set; }
|
|
|
|
|
public string actloc { get; set; }
|
|
|
|
|
public string conttype { get; set; }
|
|
|
|
|
public string actdate { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public class etadata
|
|
|
|
|
{
|
|
|
|
|
public string message { get; set; }
|
|
|
|
|
public List<etainfo> infos { get; set; }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public etadata data { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public class ESLPortResult_GetMblnoBySO : ESLPortResult
|
|
|
|
|
{
|
|
|
|
|
public class draftdata
|
|
|
|
|
{
|
|
|
|
|
public string esl_no { get; set; }
|
|
|
|
|
public string ref_no { get; set; }
|
|
|
|
|
public string bk_no { get; set; }
|
|
|
|
|
public string pol { get; set; }
|
|
|
|
|
public string pod { get; set; }
|
|
|
|
|
public string pol_etd { get; set; }
|
|
|
|
|
public string bl_status { get; set; }
|
|
|
|
|
public string container_no { get; set; }
|
|
|
|
|
public string new_activity { get; set; }
|
|
|
|
|
public string teus { get; set; }
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
public draftdata data { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public class ESLPortResult_GetEP: ESLPortResult
|
|
|
|
|
{
|
|
|
|
|
public class draftdata
|
|
|
|
|
{
|
|
|
|
|
public string status { get; set; }
|
|
|
|
|
public string bk_no { get; set; }
|
|
|
|
|
public string bk_status { get; set; }
|
|
|
|
|
public string ep_code { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public draftdata data { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public class ESLPortResult_Draft: ESLPortResult
|
|
|
|
|
{
|
|
|
|
|
public class draftdata
|
|
|
|
|
{
|
|
|
|
|
public string abs_path { get; set; }
|
|
|
|
|
public string api_path { get; set; }
|
|
|
|
|
}
|
|
|
|
|
public draftdata data { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class ESLPort_ETA : PortSendHelper {
|
|
|
|
|
private List<MsOpSeae> headList { get; set; }
|
|
|
|
|
public ESLPortParam_ETA sendparam { get; set; }
|
|
|
|
|
public ESLPort_ETA(string userid,string CARRIER) {
|
|
|
|
|
URL = "http://118.190.106.151:10011/bill_track_search/";
|
|
|
|
|
logname = "ESL货运追踪接口";
|
|
|
|
|
infoclient_carrier= CARRIER;
|
|
|
|
|
sendparam = new ESLPortParam_ETA();
|
|
|
|
|
this.userid = userid;
|
|
|
|
|
}
|
|
|
|
|
public DBResult MakeMessage(List<MsOpSeae> _headList) {
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
headList = _headList;
|
|
|
|
|
try {
|
|
|
|
|
result= sendparam.SetUserPassword(userid, infoclient_carrier);
|
|
|
|
|
|
|
|
|
|
if (!result.Success) return result;
|
|
|
|
|
|
|
|
|
|
//向data赋值
|
|
|
|
|
var MBLNOList = headList.Select(s=>s.MBLNO).Distinct().ToList();
|
|
|
|
|
sendparam.data = MBLNOList;
|
|
|
|
|
|
|
|
|
|
sendobj = sendparam;
|
|
|
|
|
result.OK();
|
|
|
|
|
}
|
|
|
|
|
catch(Exception e)
|
|
|
|
|
{
|
|
|
|
|
result.SetErrorInfo(e.Message);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
override public DBResult DoDeal(string rtn)
|
|
|
|
|
{
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
|
|
|
|
|
var _r = JsonConvert.Deserialize<ESLPortResult_ETA>(rtn);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (_r.status == 1 && _r.data.infos.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
//更新这些业务的ETA
|
|
|
|
|
|
|
|
|
|
foreach (var item in _r.data.infos) {
|
|
|
|
|
|
|
|
|
|
var eta = item.eta;
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(eta)) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var bsnos = headList.Where(x => x.MBLNO.ToUpper() == item.bkgno.ToUpper()).Select(s => s.BSNO).ToList();
|
|
|
|
|
|
|
|
|
|
var bsnostr ="'"+ string.Join("','", bsnos)+"'";
|
|
|
|
|
|
|
|
|
|
var sqlstr = $" update op_seae set ETA='{eta}' where bsno in({bsnostr})";
|
|
|
|
|
|
|
|
|
|
BasicDataRefDAL.ExecSql(sqlstr);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
result.OK("获取成功!");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
result.SetErrorInfo(e.Message);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public class ESLPort_GetMblnoBySO : PortSendHelper
|
|
|
|
|
{
|
|
|
|
|
private MsOpSeae head { get; set; }
|
|
|
|
|
public ESLPortParam_GetMblnoBySO sendparam { get; set; }
|
|
|
|
|
public ESLPort_GetMblnoBySO(string userid, string CARRIER)
|
|
|
|
|
{
|
|
|
|
|
URL = "http://118.190.106.151:10011/so_search/";
|
|
|
|
|
logname = "ESL货运追踪接口";
|
|
|
|
|
infoclient_carrier = CARRIER;
|
|
|
|
|
sendparam = new ESLPortParam_GetMblnoBySO();
|
|
|
|
|
this.userid = userid;
|
|
|
|
|
}
|
|
|
|
|
public DBResult MakeMessage(MsOpSeae _head)
|
|
|
|
|
{
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
head = _head;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
result = sendparam.SetUserPassword(userid, infoclient_carrier);
|
|
|
|
|
|
|
|
|
|
if (!result.Success) return result;
|
|
|
|
|
|
|
|
|
|
sendparam.so_no = head.MBLNO;
|
|
|
|
|
|
|
|
|
|
sendobj = sendparam;
|
|
|
|
|
result.OK();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
result.SetErrorInfo(e.Message);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
override public DBResult DoDeal(string rtn)
|
|
|
|
|
{
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
|
|
|
|
|
var _r = JsonConvert.Deserialize<ESLPortResult_GetMblnoBySO>(rtn);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (_r.status == 1 && !string.IsNullOrWhiteSpace( _r.data.esl_no))
|
|
|
|
|
{
|
|
|
|
|
//更新so号
|
|
|
|
|
|
|
|
|
|
//如ref_no=当前mblno, 将当前的mblno移动至申请放箱号APPLYNO,并将esl_no写入mblno;
|
|
|
|
|
|
|
|
|
|
if(head.MBLNO== _r.data.ref_no)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var bsnostr = $"'{head.BSNO}'";
|
|
|
|
|
|
|
|
|
|
var sqlstr = $" update op_seae set MBLNO='{_r.data.esl_no}',APPLYNO='{_r.data.ref_no}' where bsno =({bsnostr})";
|
|
|
|
|
|
|
|
|
|
BasicDataRefDAL.ExecSql(sqlstr);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
result.OK($"舱位号获取成功:[{_r.data.esl_no}]");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
result.SetErrorInfo(e.Message);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public class ESLPort_GetEP : PortSendHelper
|
|
|
|
|
{
|
|
|
|
|
private MsOpSeae head { get; set; }
|
|
|
|
|
public ESLPortParam_GetEP sendparam { get; set; }
|
|
|
|
|
public ESLPort_GetEP(string userid, string CARRIER)
|
|
|
|
|
{
|
|
|
|
|
URL = "http://118.190.106.151:10011/ep_search/";
|
|
|
|
|
logname = "ESL货运追踪接口";
|
|
|
|
|
infoclient_carrier = CARRIER;
|
|
|
|
|
sendparam = new ESLPortParam_GetEP();
|
|
|
|
|
this.userid = userid;
|
|
|
|
|
}
|
|
|
|
|
public DBResult MakeMessage(MsOpSeae _head)
|
|
|
|
|
{
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
head = _head;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
result = sendparam.SetUserPassword(userid, infoclient_carrier);
|
|
|
|
|
|
|
|
|
|
if (!result.Success) return result;
|
|
|
|
|
|
|
|
|
|
sendparam.esl_code = head.MBLNO;
|
|
|
|
|
|
|
|
|
|
sendobj = sendparam;
|
|
|
|
|
result.OK();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
result.SetErrorInfo(e.Message);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
override public DBResult DoDeal(string rtn)
|
|
|
|
|
{
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
|
|
|
|
|
var _r = JsonConvert.Deserialize<ESLPortResult_GetEP>(rtn);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (_r.status == 1 && !string.IsNullOrWhiteSpace(_r.data.ep_code))
|
|
|
|
|
{
|
|
|
|
|
//更新so号
|
|
|
|
|
|
|
|
|
|
//如ref_no=当前mblno, 将当前的mblno移动至申请放箱号APPLYNO,并将esl_no写入mblno;
|
|
|
|
|
|
|
|
|
|
if (head.MBLNO == _r.data.bk_no)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
var dic = new Dictionary<string, string>
|
|
|
|
|
{
|
|
|
|
|
{ "EPCODE", _r.data.ep_code }
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
BasicDataRefDAL.SaveLogicInfo(head.BSNO, "ESL", dic);
|
|
|
|
|
result.OK(_r.data.ep_code, _r.data.ep_code);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
result.SetErrorInfo("还没有产生EP号");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
result.SetErrorInfo(e.Message);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
public class ESLPort_Draft : PortSendHelper
|
|
|
|
|
{
|
|
|
|
|
private MsOpSeae head { get; set; }
|
|
|
|
|
public ESLPortParam_Draft sendparam { get; set; }
|
|
|
|
|
public ESLPort_Draft(string userid, string CARRIER)
|
|
|
|
|
{
|
|
|
|
|
URL = "http://118.190.106.151:10011/draft_download/";
|
|
|
|
|
logname = "ESL货运追踪接口";
|
|
|
|
|
infoclient_carrier = CARRIER;
|
|
|
|
|
sendparam = new ESLPortParam_Draft();
|
|
|
|
|
this.userid = userid;
|
|
|
|
|
}
|
|
|
|
|
public DBResult MakeMessage(MsOpSeae _head)
|
|
|
|
|
{
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
head = _head;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
result = sendparam.SetUserPassword(userid, infoclient_carrier);
|
|
|
|
|
|
|
|
|
|
if (!result.Success) return result;
|
|
|
|
|
|
|
|
|
|
var esllogic = BasicDataRefDAL.GetLogicInfo(head.BSNO, "ESL");
|
|
|
|
|
var epcode = "";
|
|
|
|
|
if (esllogic.ContainsKey("EPCODE")) {
|
|
|
|
|
epcode = esllogic["EPCODE"];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sendparam.ep_code = epcode;
|
|
|
|
|
var cdc = new CommonDataContext();
|
|
|
|
|
var userinfo = cdc.VW_user.First(x => x.USERID == userid);
|
|
|
|
|
sendparam.op_email= userinfo.EMAIL1;
|
|
|
|
|
|
|
|
|
|
if (string.IsNullOrWhiteSpace(userinfo.EMAIL1)) {
|
|
|
|
|
result.SetErrorInfo("必须要设置自己的邮箱地址由于接受");
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sendobj = sendparam;
|
|
|
|
|
result.OK("");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
result.SetErrorInfo(e.Message);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
override public DBResult DoDeal(string rtn)
|
|
|
|
|
{
|
|
|
|
|
var result = new DBResult();
|
|
|
|
|
|
|
|
|
|
var _r = JsonConvert.Deserialize<ESLPortResult_Draft>(rtn);
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (_r.status == 1)
|
|
|
|
|
{
|
|
|
|
|
//更新so号
|
|
|
|
|
|
|
|
|
|
//如ref_no=当前mblno, 将当前的mblno移动至申请放箱号APPLYNO,并将esl_no写入mblno;
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(_r.data.api_path))
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var cdc = new CommonDataContext();
|
|
|
|
|
|
|
|
|
|
var oldrecList = cdc.Receipt_Doc.Where(x => x.BSNO == head.BSNO && x.Driect_URL == _r.data.api_path).ToList();
|
|
|
|
|
|
|
|
|
|
if (oldrecList == null || oldrecList.Count == 0) {
|
|
|
|
|
|
|
|
|
|
var newreceipt = new Receipt_Doc_md(head.BSNO);
|
|
|
|
|
newreceipt.Driect_URL = _r.data.api_path;
|
|
|
|
|
newreceipt.URL = "DRAFT.pdf";
|
|
|
|
|
newreceipt.RECEIPTTYPE = "DRAFT";
|
|
|
|
|
cdc.Receipt_Doc.Add(newreceipt);
|
|
|
|
|
cdc.SaveChanges();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
result.OK("发送成功");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception e)
|
|
|
|
|
{
|
|
|
|
|
result.SetErrorInfo(e.Message);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
}
|