//#region import
|
import BaseApiService from "../baseApiService";
|
import { ResultInfo } from "../../public/commonInterface";
|
import moment = require("moment");
|
// import { In } from "typeorm";
|
import { TMSWayBill } from "../../entity/express/tms/tmsWayBill";
|
import { ExpressEMSOrderList } from "../../entity/express/ems/expressEMSOrderList";
|
import { ExpressEMSOrder } from "../../entity/express/ems/expressEMSOrder";
|
// import moment = require("moment");
|
|
//#endregion
|
|
/**
|
* 北京EMS接口帮助类
|
*/
|
export default class emsHelper extends BaseApiService {
|
//#region 北京EMS通过宏远获取快递单号
|
public async pushOrderByHY(orderId, typeID): Promise<ResultInfo> {
|
let { ctx } = this;
|
let info: ResultInfo = {
|
result: false,
|
msg: undefined
|
};
|
try {
|
let expressList = await this.dbRead
|
.createQueryBuilder(ExpressEMSOrderList, "t")
|
.where(`eMSOrder_Id=:eMSOrder_Id`, {
|
eMSOrder_Id: orderId
|
})
|
.getMany();
|
var hYOrderList = [];
|
for (let item of expressList) {
|
if (item.name && item.name.length > 20) {
|
item.name = item.name.substring(0, 20);
|
}
|
var hYOrderListInfo = {
|
name: item.name,
|
amount: item.amount,
|
count: item.count,
|
weight: item.weight
|
};
|
hYOrderList.push(hYOrderListInfo);
|
}
|
let orderInfo = await this.dbRead.findOne(ExpressEMSOrder, {
|
eMSOrder_Id: orderId
|
});
|
if (!orderInfo.pushNum) {
|
orderInfo.pushNum = 1;
|
} else {
|
orderInfo.pushNum = orderInfo.pushNum + 1;
|
}
|
await this.dbWrite.update(ExpressEMSOrder, orderInfo.eMSOrder_Id, {
|
pushNum: orderInfo.pushNum
|
});
|
|
if (orderInfo.pushNum <= 5 || typeID == 1) {
|
var hYOrderInfo = {
|
logisticProviderID: "EMS",
|
ordernoOid: orderInfo.orderCode,
|
shipper: orderInfo.j_contact,
|
shippercity: orderInfo.j_city,
|
shippercountry: "142",
|
shipperaddress: orderInfo.j_address,
|
shippertelephone: orderInfo.j_mobile,
|
consignee: orderInfo.d_contact,
|
consigneeprovince: orderInfo.d_province,
|
consigneecity: orderInfo.d_city,
|
consigneedistrict: orderInfo.d_county,
|
consigneedeliver: orderInfo.d_address,
|
consigneecountry: "142",
|
consigneestreet: orderInfo.d_address,
|
consigneetelephone: orderInfo.d_mobile,
|
paymethod: "1",
|
cargototalweight: orderInfo.cargo_total_weight,
|
cargo: hYOrderList
|
};
|
var hyInfo = null;
|
hyInfo = await ctx.service.express.hongyuanHelper.pushOrder(hYOrderInfo);
|
ctx.logger.info(
|
"北京EMS推送:单号" +
|
orderInfo.orderCode +
|
"/结果:" +
|
hyInfo.msg +
|
"/时间:" +
|
moment(new Date()).format("YYYY-MM-DD HH:mm:ss")
|
);
|
if (hyInfo.result) {
|
await this.dbWrite
|
.createQueryBuilder(ExpressEMSOrder, "t")
|
.update()
|
.set({
|
mailno: hyInfo.data.logisticsno,
|
interfaceStatusID: 3,
|
interfaceStatusText: "宏远推送成功",
|
destcode: hyInfo.data.shortaddress
|
// ,bigPen: hyInfo.data.shortaddress
|
})
|
.where(`eMSOrder_Id=:eMSOrder_Id`, {
|
eMSOrder_Id: orderInfo.eMSOrder_Id
|
})
|
.execute();
|
await this.dbWrite
|
.createQueryBuilder(TMSWayBill, "t")
|
.update()
|
.set({
|
expressCode: hyInfo.data.logisticsno,
|
bigPen: hyInfo.data.shortaddress
|
})
|
.where(`wayBill_Id=:wayBill_Id and expressCode is null and expressCorpType='3'`, {
|
wayBill_Id: orderInfo.order_Id
|
})
|
.execute();
|
let where = "wayBill_Id=:wayBill_Id";
|
var tmsWayBillInfo = await this.dbRead
|
.createQueryBuilder(TMSWayBill, "t")
|
.where(where, {
|
wayBill_Id: orderInfo.order_Id
|
})
|
.getOne();
|
if (tmsWayBillInfo) {
|
await ctx.service.tms.wayBillHelper.setStatusHistory(
|
tmsWayBillInfo,
|
"获取快递号",
|
"北京EMS单号" + hyInfo.data.logisticsno
|
);
|
}
|
} else {
|
await this.dbWrite
|
.createQueryBuilder(ExpressEMSOrder, "t")
|
.update()
|
.set({
|
remark: hyInfo.msg
|
})
|
.where(`eMSOrder_Id=:eMSOrder_Id`, {
|
eMSOrder_Id: orderInfo.eMSOrder_Id
|
})
|
.execute();
|
}
|
info.msg = hyInfo.msg;
|
info.result = hyInfo.result;
|
} else {
|
info.result = false;
|
info.msg = "推送失败次数超过5次,单据已失效请重新生成。";
|
}
|
} catch (error) {
|
info.msg = error.message;
|
info.result = false;
|
}
|
return info;
|
}
|
|
//#endregion
|
}
|