//#region import
|
import BaseApiService from "../baseApiService";
|
import { ResultInfo } from "../../public/commonInterface";
|
import moment = require("moment");
|
import * as crypto from "crypto";
|
import { ExpressZTOrder } from "../../entity/express/zhongtong/expressZTOrder";
|
import { ExpressZTBaseInfo } from "../../entity/express/zhongtong/expressZTBaseInfo";
|
import { ExpressZTOrderRoute } from "../../entity/express/zhongtong/expressZTOrderRoute";
|
import { ExpressZTOrderList } from "../../entity/express/zhongtong/expressZTOrderList";
|
import { ExpressZTOrderRouteGuoJi } from "../../entity/express/zhongtong/expressZTOrderRouteGuoJi";
|
// import moment = require("moment");
|
|
//#endregion
|
|
/**
|
* 中通接口帮助类
|
*/
|
export default class zhongtongHelperService extends BaseApiService {
|
//#region 获取路由
|
public async getRoute(orderList: Array<any>): Promise<ResultInfo> {
|
let info: ResultInfo = {
|
result: false,
|
msg: undefined
|
};
|
try {
|
for (let orderId of orderList) {
|
let orderInfo = await this.dbRead.findOne(ExpressZTOrder, {
|
zTOrder_Id: orderId
|
});
|
|
let baseInfo = await this.dbRead.findOne(ExpressZTBaseInfo, {
|
baseInfo_Id: orderInfo.interfaceAccount_Id
|
});
|
let zt_WebService = baseInfo.apiUrl;
|
let zt_ClientCode = baseInfo.company_id;
|
let zt_VerifyCode = baseInfo.partnerID;
|
let data = {
|
mailNo: orderInfo.zTOrder_Id,
|
queryType: "0"
|
};
|
let date = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
|
var md5 = crypto.createHash("md5");
|
let verify = md5.update(zt_ClientCode + date + data + zt_VerifyCode).digest("hex");
|
|
info.result = false;
|
|
let json = {
|
func: "mail.status",
|
partner: zt_ClientCode,
|
datetime: date,
|
content: data,
|
verify: verify,
|
timeout: [30000, 30000]
|
};
|
|
const result: any = await this.ctx.curl(zt_WebService, {
|
// 必须指定 method
|
method: "POST",
|
// 通过 contentType 告诉 HttpClient 以 JSON 格式发送
|
contentType: "json",
|
data: json,
|
// 明确告诉 HttpClient 以 JSON 格式处理返回的响应 body
|
dataType: "json"
|
});
|
|
if (result.detail) {
|
let order = result.detail;
|
let routeInfo = await this.dbRead.find(ExpressZTOrderRoute, {
|
billCode: orderInfo.orderCode,
|
scanType: order.scantype
|
});
|
if (!routeInfo) {
|
let newOrderInfo = await this.dbRead.findOne(ExpressZTOrder, {
|
trackingNumber: orderId
|
});
|
let route = new ExpressZTOrderRoute();
|
route.zTOrder_Id = newOrderInfo.zTOrder_Id;
|
route.billCode = ""; //orderInfo.zTOrder_Id;
|
route.routeDesc = order.memo;
|
route.scanDate = order.time;
|
route.scanType = order.scantype;
|
await this.dbWrite.save(ExpressZTOrderRoute, route);
|
await this.dbWrite.update(ExpressZTOrder, orderInfo.zTOrder_Id, {
|
interfaceStatusID: 11,
|
interfaceStatusText: "获得路由成功"
|
});
|
info.result = true;
|
info.msg = "获得路由成功";
|
}
|
} else {
|
info.msg = "订单[" + orderInfo.zTOrder_Id + "]获取路由失败:快件状态还没有更新!";
|
info.result = false;
|
}
|
}
|
} catch (error) {
|
info.msg = error.message;
|
info.result = false;
|
return info;
|
}
|
return info;
|
}
|
//#endregion
|
|
//#region 推送订单 pushOrder
|
public async pushOrder(orderIdList) {
|
let info: ResultInfo = {
|
result: false,
|
msg: undefined
|
};
|
info.result = false;
|
|
try {
|
let msg = "";
|
for (let orderId of orderIdList) {
|
let orderInfo = await this.dbRead.findOne(ExpressZTOrder, {
|
zTOrder_Id: orderId
|
});
|
|
try {
|
//获得账户信息
|
if (!orderInfo.interfaceAccount_Id) {
|
msg += "订单[" + orderInfo.orderCode + "]位置接口账号,无法推送!<br/>";
|
continue;
|
}
|
|
let baseInfo = await this.dbRead.findOne(ExpressZTBaseInfo, {
|
baseInfo_Id: orderInfo.interfaceAccount_Id
|
});
|
let apiUrl = baseInfo.apiUrl;
|
let company_id = baseInfo.company_id;
|
let key = baseInfo.partnerID;
|
|
//#region 发件人信息
|
let sender = {
|
id: orderInfo.senderId,
|
name: orderInfo.sendername,
|
company: orderInfo.sendercompany,
|
mobile: orderInfo.sendermobile,
|
phone: orderInfo.senderphone,
|
city: orderInfo.senderprov + "," + orderInfo.sendercity + "," + orderInfo.sendercounty,
|
address: orderInfo.senderaddress,
|
zipcode: orderInfo.senderzipcode
|
};
|
//#endregion
|
|
//#region 收件人信息
|
let receiver = {
|
id: orderInfo.receiverid,
|
name: orderInfo.receivername,
|
company: orderInfo.receivercompany,
|
mobile: orderInfo.receivermobile,
|
phone: orderInfo.receiverphone,
|
city: orderInfo.receiverprov + "," + orderInfo.receivercity + "," + orderInfo.receivercounty,
|
address: orderInfo.receiveraddress,
|
zipcode: orderInfo.receiverzipcode
|
};
|
//#endregion
|
|
//#region 物料信息
|
// let itemList = [];
|
// let orderList = await this.dbRead.find(ExpressZTOrderList, {
|
// zTOrder_Id: orderId
|
// });
|
// for (let dInfo of orderList) {
|
// let item = {
|
// id: dInfo.id,
|
// name: dInfo.name,
|
// category: dInfo.category,
|
// material: dInfo.material,
|
// size: dInfo.size,
|
// weight: dInfo.weight,
|
// unitprice: dInfo.unitprice,
|
// quantity: dInfo.quantity,
|
// remark: dInfo.remark
|
// };
|
|
// itemList.push(item);
|
// }
|
//#endregion
|
|
//#region 总信息data
|
let content = {
|
id: orderInfo.partnerCode,
|
type: orderInfo.type,
|
tradeId: orderInfo.tradeId,
|
sender: sender,
|
receiver: receiver,
|
weight: orderInfo.weight,
|
size: orderInfo.size,
|
quantity: orderInfo.quantity,
|
price: orderInfo.price,
|
freight: orderInfo.freight,
|
premium: orderInfo.premium,
|
pack_charges: orderInfo.packCharges,
|
other_charges: orderInfo.otherCharges,
|
order_sum: orderInfo.collectSum,
|
collect_moneytype: orderInfo.collectMoneytype,
|
collect_sum: orderInfo.collectSum,
|
remark: orderInfo.remark
|
// items: itemList
|
};
|
//#endregion
|
|
let request = {
|
url: apiUrl + "/submitOrderCode",
|
company_id: company_id,
|
key: key,
|
data: {
|
data: {
|
content: content,
|
datetime: moment(new Date()).format("YYYY-MM-DD HH:mm:ss"),
|
partner: "1f68cbe082844bd7af1efc5f895ac00b",
|
verify: "PD03TNCU"
|
}
|
}
|
};
|
const resultObj = await this.execute(request);
|
|
if (resultObj.result && (resultObj.data.status || resultObj.data.update)) {
|
//todo: 以下需要做更新ERP订单快递单号,和接口表快递单号,及相关业务逻辑
|
let sql = `UPDATE ExpressZT_Order SET TrackingNumber=@0,mailNo=@1, sitename=@2,
|
PushDate=GETDATE(),InterfaceStatusID=3, InterfaceStatusText='推送成功', PushCount = ISNULL(PushCount, 0) + 1
|
WHERE ZTOrder_Id=@3;
|
Update Sale_OuterList Set extendField10=@4 From Sale_Outer INNER JOIN Sale_OuterList ON Sale_Outer.Outer_Id=Sale_OuterList.Outer_Id
|
Where Sale_Outer.Order_Id=@5 And Sale_OuterList.CaseNumber=@6;
|
Update Sale_Order Set ExpressCode=@4 Where Order_Id=@5;
|
Update dbo.Sale_OrderPrintList Set ExpressCode=(SELECT top 1 ExpressCode FROM dbo.Sale_Order WHERE dbo.Sale_Order.Order_Id=dbo.Sale_OrderPrintList.Order_Id)
|
Where Order_Id=@5;`;
|
await this.dbWrite.query(sql, [
|
resultObj.data.billCode, // 0
|
resultObj.data.billCode, // 1
|
resultObj.data.siteName, // 2
|
orderInfo.zTOrder_Id, // 3
|
resultObj.data.billCode, // 4
|
orderInfo.order_Id, // 5
|
orderInfo.partnerCode // 6 箱号(可能)
|
]);
|
info.msg = "推送成功!";
|
info.result = true;
|
} else {
|
info.result = false;
|
info.msg = "错误信息:" + JSON.stringify(resultObj.data);
|
}
|
msg += "订单[" + orderInfo.orderCode + "]推送结果," + info.msg + "<br/>";
|
} catch (error) {
|
msg = error.message;
|
await this.dbWrite.update(
|
ExpressZTOrder,
|
{
|
zTOrder_Id: orderId,
|
userProduct_Id: orderInfo.userProduct_Id
|
},
|
{
|
pushCount: (orderInfo.pushCount || 0) + 1
|
}
|
);
|
}
|
}
|
info.msg = msg;
|
|
return info;
|
} catch (ex) {
|
info.result = false;
|
info.msg = "推送失败," + ex.message;
|
return info;
|
}
|
}
|
|
private async execute(request) {
|
let url = request.url;
|
let company_id = request.company_id;
|
let key = request.key;
|
if (request.data) {
|
if (typeof request.data === "string") {
|
request.params = JSON.parse(request.data);
|
} else {
|
request.params = request.data;
|
}
|
}
|
let params = request.params;
|
let realParams = {};
|
Object.keys(request.params).forEach(function (key) {
|
let v = params[key];
|
if (typeof v !== "string") {
|
v = JSON.stringify(v);
|
}
|
realParams[key] = v;
|
});
|
let requestBody = realParams;
|
let query_string = [];
|
for (let k in requestBody) {
|
query_string.push(k + "=" + requestBody[k]);
|
}
|
let str_to_digest = query_string.join("&") + key;
|
let data_digest = crypto.createHash("md5").update(str_to_digest).digest("base64");
|
|
// let query_string_urlencoded = querystring.stringify(requestBody);
|
// let fetch = this.fetch;
|
|
const resultObj = await this.ctx.curl(url, {
|
// 必须指定 method
|
method: "POST",
|
// 通过 contentType 告诉 HttpClient 以 JSON 格式发送
|
contentType: "application/x-www-form-urlencoded",
|
headers: {
|
"x-companyid": company_id,
|
"x-datadigest": data_digest
|
},
|
data: realParams,
|
// 明确告诉 HttpClient 以 JSON 格式处理返回的响应 body
|
dataType: "json"
|
});
|
return resultObj.data;
|
|
// return fetch(url, {
|
// method: 'POST',
|
// headers: {
|
// "Content-Type": "application/x-www-form-urlencoded",
|
// "x-companyid": company_id,
|
// "x-datadigest": data_digest
|
// },
|
// body: query_string_urlencoded,
|
// });
|
}
|
//#endregion
|
|
//#region 获取大头笔 getMark
|
public async getMark(orderIdList) {
|
let info: ResultInfo = {
|
result: false,
|
msg: undefined
|
};
|
info.result = false;
|
|
try {
|
let msg = "";
|
for (let orderId of orderIdList) {
|
let orderInfo = await this.dbRead.findOne(ExpressZTOrder, {
|
zTOrder_Id: orderId
|
});
|
|
try {
|
//获得账户信息
|
if (!orderInfo.interfaceAccount_Id) {
|
msg += "订单[" + orderInfo.orderCode + "]位置接口账号,无法推送!<br/>";
|
continue;
|
}
|
|
let baseInfo = await this.dbRead.findOne(ExpressZTBaseInfo, {
|
baseInfo_Id: orderInfo.interfaceAccount_Id
|
});
|
let apiUrl = baseInfo.apiUrl;
|
let company_id = baseInfo.company_id;
|
let key = baseInfo.partnerID;
|
|
//#region 总信息data
|
let content = {
|
unionCode: orderInfo.mailNo,
|
send_province: orderInfo.senderprov,
|
send_city: orderInfo.sendercity,
|
send_district: orderInfo.sendercounty,
|
send_address: orderInfo.senderaddress,
|
|
receive_province: orderInfo.receiverprov,
|
receive_city: orderInfo.receivercity,
|
receive_district: orderInfo.receivercounty,
|
receive_address: orderInfo.receiveraddress
|
};
|
//#endregion
|
|
let request = {
|
url: apiUrl + "/bagAddrMarkGetmark",
|
company_id: company_id,
|
key: key,
|
data: {
|
company_id: company_id,
|
msg_type: "GETMARK",
|
data: content
|
}
|
};
|
const resultObj = await this.execute(request);
|
|
if (resultObj.status) {
|
//todo: 以下需要做更新ERP订单快递单号,和接口表快递单号,及相关业务逻辑
|
let sql = `UPDATE ExpressZT_Order SET marke=@0
|
WHERE ZTOrder_Id=@1;
|
Update Sale_Order Set BigPen=@0 Where Order_Id=@2;`;
|
await this.dbWrite.query(sql, [resultObj.result.mark, orderInfo.zTOrder_Id, orderInfo.order_Id]);
|
info.msg = "获取大头笔成功!";
|
info.result = true;
|
} else {
|
let sql = `UPDATE ExpressZT_Order SET remark=@0
|
WHERE ZTOrder_Id=@1;`;
|
await this.dbWrite.query(sql, [resultObj.message, orderInfo.zTOrder_Id, orderInfo.order_Id]);
|
info.result = false;
|
info.msg = "错误信息:" + resultObj.message;
|
}
|
msg += "获取大头笔[" + orderInfo.orderCode + "]推送结果," + info.msg + "<br/>";
|
} catch (error) {
|
msg = error.message;
|
await this.dbWrite.update(
|
ExpressZTOrder,
|
{
|
zTOrder_Id: orderId,
|
userProduct_Id: orderInfo.userProduct_Id
|
},
|
{
|
pushCount: (orderInfo.pushCount || 0) + 1
|
}
|
);
|
}
|
}
|
info.msg = msg;
|
|
return info;
|
} catch (ex) {
|
info.result = false;
|
info.msg = "推送失败," + ex.message;
|
return info;
|
}
|
}
|
//#endregion
|
|
//#region 获取国际路由 getRoute_GuoJi
|
public async getRoute_GuoJi(orderIdList) {
|
let info: ResultInfo = {
|
result: false,
|
msg: undefined
|
};
|
info.result = false;
|
let msg = "";
|
try {
|
for (let orderId of orderIdList) {
|
let orderInfo = await this.dbRead.findOne(ExpressZTOrder, {
|
zTOrder_Id: orderId
|
});
|
|
//获得账户信息
|
if (!orderInfo.interfaceAccount_Id) {
|
msg += "订单[" + orderInfo.orderCode + "]位置接口账号,无法推送!<br/>";
|
continue;
|
}
|
|
// let baseInfo = await this.dbRead.findOne(ExpressZTBaseInfo, {
|
// baseInfo_Id: orderInfo.interfaceAccount_Id
|
// });
|
//let zt_WebService = baseInfo.apiUrl;
|
// let zt_ClientCode = baseInfo.company_id;
|
// let zt_VerifyCode = baseInfo.partnerID;
|
|
//#region oldpost
|
// TraceGet OrderGet = new TraceGet("http://intltest.zto.cn", "CS11607257E11219", "C34EB3E757505996D4");
|
// TraceGetRequest traorder = new TraceGetRequest();
|
// //traorder.logisticsId = orderInfo.mailNo;
|
// traorder.logisticsId = "120002327406";
|
// ZtoIntlResponse<TraceGetResponse> tra = OrderGet.Send(traorder);
|
//#endregion
|
|
let traorder = {
|
logisticsId: "120002327406"
|
};
|
|
const tra: any = await this.ctx.curl("http://intltest.zto.cn", {
|
// 必须指定 method
|
method: "POST",
|
// 通过 contentType 告诉 HttpClient 以 JSON 格式发送
|
contentType: "json",
|
data: traorder,
|
// 明确告诉 HttpClient 以 JSON 格式处理返回的响应 body
|
dataType: "json"
|
});
|
let orderMsg = "";
|
if (tra.status) {
|
//ExpressZT_Order OrderInfo = ExpressZT_OrderRepository.Instance.Get(where);
|
for (let trackInfo of tra.data.traces) {
|
let routeInfo = await this.dbRead.findOne(ExpressZTOrderRouteGuoJi, {
|
optSiteName: trackInfo.optSiteName,
|
status: trackInfo.status
|
});
|
if (!routeInfo) {
|
let route = new ExpressZTOrderRouteGuoJi();
|
route.optDate = trackInfo.OptDate;
|
route.optMan = trackInfo.OptMan;
|
route.optManPhone = trackInfo.OptManPhone;
|
route.optReason = trackInfo.OptReason;
|
route.optSiteName = trackInfo.OptSiteName;
|
route.status = trackInfo.Status;
|
route.optReasonEn = trackInfo.OptReasonEn;
|
route.preOrNextStation = trackInfo.PreOrNextStation;
|
route.siteName = trackInfo.SiteName;
|
route.extend = trackInfo.Extend;
|
route.optCity = trackInfo.OptCity;
|
route.emp_Phone = trackInfo.Emp_Phone;
|
route.country = trackInfo.Country;
|
route.zTOrder_Id = orderInfo.zTOrder_Id;
|
await this.dbWrite.save(ExpressZTOrderRouteGuoJi, route);
|
}
|
}
|
await this.dbRead.update(ExpressZTOrder, orderInfo.zTOrder_Id, {
|
interfaceStatusID: 11,
|
interfaceStatusText: "获得国际路由成功"
|
});
|
orderMsg = orderId + "获得国际路由成功!";
|
} else {
|
orderMsg = orderId + "快件状态还没有更新, 返回状态:" + tra.status + ",返回消息:" + tra.msg;
|
}
|
msg += "订单[" + orderId + "]推送结果," + orderMsg + "<br/>";
|
}
|
|
info.msg = msg;
|
|
return info;
|
} catch (ex) {
|
info.result = false;
|
info.msg = "推送失败," + ex.message;
|
|
return info;
|
}
|
}
|
//#endregion
|
|
//#region 推送国际订单 pushOrder_GuoJi
|
public async pushOrder_GuoJi(orderIdList) {
|
let info: ResultInfo = {
|
result: false,
|
msg: undefined
|
};
|
info.result = false;
|
let sql = "";
|
//string ZT_WebService = BaseDataHelper.GetConfig("ZT_WebService");
|
//string ZT_ClientCode = BaseDataHelper.GetConfig("ZT_ClientCode");
|
//string ZT_VerifyCode = BaseDataHelper.GetConfig("ZT_VerifyCode");
|
try {
|
for (let orderId of orderIdList) {
|
let orderInfo = await this.dbRead.findOne(ExpressZTOrder, {
|
zTOrder_Id: orderId
|
});
|
if (!orderInfo.interfaceAccount_Id) {
|
info.msg += "订单[" + orderInfo.orderCode + "]位置接口账号,无法推送!<br/>";
|
continue;
|
}
|
// let baseInfo = await this.dbRead.findOne(ExpressZTBaseInfo, {
|
// baseInfo_Id: orderInfo.interfaceAccount_Id
|
// });
|
// let zt_WebService = baseInfo.apiUrl;
|
//let zt_ClientCode = baseInfo.company_id;
|
//let zt_VerifyCode = baseInfo.partnerID;
|
//#region 发件人信息
|
// let sender = {
|
// id: orderInfo.senderId,
|
// name: orderInfo.sendername,
|
// company: orderInfo.sendercompany,
|
// mobile: orderInfo.sendermobile,
|
// phone: orderInfo.senderphone,
|
// city: orderInfo.senderprov + "," + orderInfo.sendercity + "," + orderInfo.sendercounty,
|
// address: orderInfo.senderaddress,
|
// zipcode: orderInfo.senderzipcode
|
// };
|
//#endregion
|
//#region 收件人信息
|
// let Receiver = {
|
// id: orderInfo.receiverid,
|
// name: orderInfo.receivername,
|
// company: orderInfo.receivercompany,
|
// mobile: orderInfo.receivermobile,
|
// phone: orderInfo.receiverphone,
|
// city: orderInfo.receiverprov + "," + orderInfo.receivercity + "," + orderInfo.receivercounty,
|
// address: orderInfo.receiveraddress,
|
// zipcode: orderInfo.receiverzipcode
|
// };
|
//#endregion
|
//#region 物料信息
|
//let itemList = [];
|
//let cargoList = "";
|
let orderList = await this.dbRead.find(ExpressZTOrderList, {
|
zTOrder_Id: orderId
|
});
|
//#endregion
|
//let orderBBCAdd = ["http://intltest.zto.cn", "CS11607257E11219", "C34EB3E757505996D4"];
|
let orderbbc = {
|
logisticsno: "",
|
orderno: orderInfo.orderCode,
|
shipper: orderInfo.sendername,
|
shipperprov: orderInfo.senderprov,
|
shippercity: orderInfo.sendercity,
|
shipperdistrict: orderInfo.sendercounty,
|
shipperaddress: orderInfo.senderaddress,
|
shippercountry: "中国", //(发件所在国)
|
shippermobile: orderInfo.sendermobile,
|
shippertelephone: orderInfo.senderphone,
|
shipperzipcode: orderInfo.senderzipcode,
|
consignee: orderInfo.receivername,
|
consigneeprov: orderInfo.receiverprov,
|
consigneecity: orderInfo.receivercity,
|
consigneedistrict: orderInfo.receivercounty,
|
consigneeaddress: orderInfo.receiveraddress,
|
consigneemobile: orderInfo.receivermobile,
|
consigneetelephone: orderInfo.receiverphone,
|
consigneecountry: "中国", //(收件所在国)
|
consigneezipcode: orderInfo.receiverzipcode,
|
idtype: 1, //证件类型(1-身份证 2-军官证 3-护照 4-其它)
|
customerid: "", //证件号码(身份证内容必须与收货人对应)
|
weight: orderInfo.weight,
|
cumstomscode: "HZCUSTOMSNEW", //口岸编号(注:控制物流运单推送海关电子口岸,备货业务必填且正确)
|
platformSource: 1016, //客户ID(由ZTO分配默认内容,接口对接时分配)
|
sortContent: "", //大头笔
|
netweight: 0.21, //净重(kg)(一定小于毛重的内容(WEIGHT))
|
shipType: "5", //运输方式(参考数据字典运输方案,源头是来自海关参数内容)
|
warehouseCode: "LSJ003", //仓库编码
|
billEntity: {},
|
intlOrderItemList: []
|
};
|
//ImportOrderBBCAdd OrderBBCAdd = new ImportOrderBBCAdd("http://intltest.zto.cn", "CS11607257E11219", "C34EB3E757505996D4");
|
let billentity = {
|
ecpcode: "330156K021", //电商平台代码(海关备案编号)
|
ecpname: "杭州正琪物流有限公司", //电商平台名称(海关备案名称)
|
ecpcodeG: "3333617526", //电商平台代码(国检)
|
ecpnameG: "杭州正琪物流有限公司", //电商平台名称(国检)
|
quantity: 1,
|
wraptype: "2",
|
batchnumbers: "L0001",
|
agentCode: "4101983436",
|
agentName: "广州保税报关有限公司",
|
companyCode: "5100",
|
shippercountryC: "142",
|
shippercountryG: "156",
|
consigneecountryC: "142",
|
consigneecountryG: "156"
|
};
|
orderbbc.billEntity = billentity;
|
let list = [];
|
for (let dInfo of orderList) {
|
let item = {
|
itemId: dInfo.id,
|
itemName: dInfo.name,
|
itemUnitPrice: dInfo.unitprice,
|
itemQuantity: dInfo.quantity,
|
itemRemark: dInfo.remark,
|
dutyMoney: 0, //预付税费(如:没有内容,默认填写0)
|
blInsure: 0, //是否保价(0 - 否 1 - 是)(如: 没有内容, 默认填写0)
|
length: 0, //长(cm)(如:没有内容,默认填写0)
|
width: 0, //宽(cm)(如:没有内容,默认填写0)
|
high: 0, //高(cm)(如:没有内容,默认填写0)
|
itemMaterial: dInfo.material,
|
itemWeight: dInfo.weight,
|
currencyType: "CNY", //货币类型(如:CNY)
|
itemRule: "", //物料规格
|
makeCountry: "", //原产国
|
itemUnit: "件" //计量单位(如:个,件,台,双)
|
};
|
list.push(item);
|
}
|
orderbbc.intlOrderItemList = list;
|
const bbc: any = await this.ctx.curl("http://intltest.zto.cn", {
|
// 必须指定 method
|
method: "POST",
|
// 通过 contentType 告诉 HttpClient 以 JSON 格式发送
|
contentType: "json",
|
data: orderbbc,
|
// 明确告诉 HttpClient 以 JSON 格式处理返回的响应 body
|
dataType: "json"
|
});
|
if (bbc.status) {
|
sql = `UPDATE ExpressZT_Order SET OrderCode=@0,mailNo=@1,
|
PushDate=GETDATE(),InterfaceStatusID=3, InterfaceStatusText='国际推送成功'
|
WHERE ZTOrder_Id=@2;`;
|
//sql += "Update Sale_Order Set ExpressCode='" + resultObj.keys.mailno + "' Where Order_Id=" + orderInfo.Order_Id + ";";
|
await this.dbWrite.query(sql, [bbc.data.orderid, bbc.data.logisticsId, orderInfo.zTOrder_Id]);
|
info.msg += "推送成功!," + bbc.msg;
|
} else {
|
info.msg += "错误信息:" + bbc.msg;
|
}
|
info.msg += "订单[" + orderInfo.orderCode + "]推送结果," + info.msg + "<br/>";
|
}
|
return info;
|
} catch (ex) {
|
info.msg += "推送失败," + ex.message;
|
return info;
|
}
|
}
|
//#endregion
|
}
|