import BaseService from "../baseService";
|
import { Post } from "egg-shell-decorators";
|
import { TMSWayBill } from "../../entity/express/tms/tmsWayBill";
|
import { BaseExpressSpareCode } from "../../entity/express/spare/baseExpressSpareCode";
|
import { ResultInfo } from "../../public/commonInterface";
|
import { ExpressSFOrder } from "../../entity/express/sf/expressSFOrder";
|
import { ExpressEMSOrder } from "../../entity/express/ems/expressEMSOrder";
|
import { ExpressYTOrder } from "../../entity/express/yuantong/expressYTOrder";
|
import { TMSWayBillTracking } from "../../entity/express/tms/tmsWayBillTracking";
|
import * as sql from "mssql";
|
|
export default class WayBillService extends BaseService {
|
//#region 清空快递单号
|
/// <summary>
|
/// 清空快递单号
|
/// </summary>
|
/// <returns></returns>
|
/**
|
* 操作新增运单追踪记录
|
* @param wayInfo 运单信息
|
*/
|
@Post()
|
public async clearExpressCode(wayInfo: TMSWayBill): Promise<ResultInfo> {
|
// let { ctx } = this;
|
// let body = ctx.request.body;
|
try {
|
let item = await this.dbRead.findOne(TMSWayBill, wayInfo.wayBill_Id);
|
let expressCode = item.expressCode;
|
let waybillCode = item.wayBillCode;
|
let expressCorpType = item.expressCorpType;
|
// item.expressCode = null;
|
await this.dbWrite.update(
|
TMSWayBill,
|
{
|
wayBill_Id: item.wayBill_Id
|
},
|
{
|
expressCode: null
|
}
|
);
|
|
if (expressCorpType) {
|
let tableName: any;
|
let whereStr = "";
|
let where = {};
|
let flag = true;
|
//删除对应快递接口单的对应快递单号数据
|
switch (parseFloat(expressCorpType)) {
|
// 北京顺丰
|
case 2:
|
tableName = ExpressSFOrder;
|
whereStr = `(mailno=:expressCode or orderCode=:waybillCode) AND expressCorpName='顺丰快递'`;
|
where = {
|
expressCode: expressCode,
|
waybillCode: waybillCode
|
};
|
break;
|
case 3:
|
tableName = ExpressEMSOrder;
|
whereStr = `(mailno =:expressCode or orderCode =:waybillCode)`;
|
where = {
|
expressCode: expressCode,
|
waybillCode: waybillCode
|
};
|
break;
|
// 圆通
|
case 5:
|
tableName = ExpressYTOrder;
|
whereStr = `(TrackingNumber = :expressCode or OrderCode = :waybillCode)`;
|
where = {
|
expressCode: expressCode,
|
waybillCode: waybillCode
|
};
|
break;
|
// 邮政小包 福州EMS
|
case 11:
|
flag = false;
|
await this.clearOrderNum(item.wayBill_Id, parseFloat(item.expressCorpType));
|
break;
|
case 18:
|
flag = false;
|
await this.clearOrderNum(item.wayBill_Id, parseFloat(item.expressCorpType));
|
break;
|
// 广州EMS
|
case 20:
|
flag = false;
|
await this.clearOrderNum(item.wayBill_Id, parseFloat(item.expressCorpType));
|
break;
|
}
|
if (flag) {
|
if (whereStr) {
|
await this.dbWrite
|
.createQueryBuilder(tableName, "t")
|
.delete()
|
.where(whereStr, where);
|
}
|
}
|
}
|
this.info.result = true;
|
} catch (ex) {
|
this.info.result = false;
|
this.info.msg = "错误信息:" + ex.message;
|
}
|
|
return this.info;
|
}
|
//#endregion
|
|
//#region 还原备用单号
|
/// <summary>
|
/// 还原备用单号
|
/// </summary>
|
/// <returns></returns>
|
public async clearOrderNum(wayBill_Id: number, expressCorpType: number) {
|
// let { ctx } = this;
|
// let body = ctx.request.body;
|
try {
|
let tMSWayBillInfo = await this.dbRead.findOne(TMSWayBill, wayBill_Id);
|
let baseExpressSpareCodeInfo = await this.dbRead.findOne(BaseExpressSpareCode, {
|
expressCorpType: expressCorpType,
|
orderCode: tMSWayBillInfo.wayBillCode
|
});
|
if (baseExpressSpareCodeInfo) {
|
let orderCode = baseExpressSpareCodeInfo.orderCode + "-" + baseExpressSpareCodeInfo.expressSpareCode_Id;
|
await this.dbWrite.update(
|
BaseExpressSpareCode,
|
{
|
spareCode: baseExpressSpareCodeInfo.spareCode
|
},
|
{
|
orderCode: orderCode
|
}
|
);
|
await this.dbWrite.update(
|
TMSWayBill,
|
{
|
wayBill_Id: tMSWayBillInfo.wayBill_Id
|
},
|
{
|
expressCode: null
|
}
|
);
|
}
|
this.info.result = true;
|
} catch (ex) {
|
this.info.result = false;
|
this.info.msg = "错误信息:" + ex.message;
|
}
|
return this.info;
|
}
|
//#endregion
|
|
//#region 泉州顺丰推送陆地港修改地址信息 SynchroSfAddress
|
public async synchroSfAddress(wayBillInfo: TMSWayBill) {
|
let userInfo = await this.userInfo;
|
try {
|
let url = "http://175.43.43.170:5805/cbpltest/land_port/updateWaybill?";
|
url +=
|
"expressNo=" +
|
wayBillInfo.expressCode +
|
"&cosignee=" +
|
wayBillInfo.consigneeName +
|
"&consigneeAddress=" +
|
wayBillInfo.consigneeAddress +
|
"&consigneeTelephone=" +
|
wayBillInfo.consigneeMobile +
|
"&consigneeCity=" +
|
wayBillInfo.cityName +
|
"&consigneeProvice=" +
|
wayBillInfo.provinceName;
|
let result: any = await this.ctx.curl(url);
|
let dynData = JSON.parse(result);
|
if (dynData.status == "fail") {
|
//Info.Data = dynData;
|
this.info.result = false;
|
this.info.msg = wayBillInfo.wayBillCode + "同步失败。";
|
} else {
|
let wayBillTracking = new TMSWayBillTracking();
|
wayBillTracking.wayBill_Id = wayBillInfo.wayBill_Id;
|
wayBillTracking.wayBillCode = wayBillInfo.wayBillCode;
|
wayBillTracking.fromStatus = wayBillInfo.orderStatus;
|
wayBillTracking.toStatus = "同步泉州陆地港客户收货信息";
|
wayBillTracking.remark = "推送陆地港";
|
wayBillTracking.userTrueName = userInfo.userTrueName;
|
wayBillTracking.user_Id = userInfo.user_Id;
|
wayBillTracking.createDate = new Date();
|
wayBillTracking.creator = userInfo.userTrueName;
|
await this.dbWrite.save(wayBillTracking);
|
|
//Info.Data = dynData;
|
this.info.result = true;
|
this.info.msg = wayBillInfo.wayBillCode + "同步成功。";
|
}
|
|
return this.info;
|
} catch (ex) {
|
this.info.result = false;
|
this.info.msg = ex.message;
|
return this.info;
|
}
|
}
|
//#endregion
|
|
//#region 推送指定快递单到接口表
|
@Post()
|
public async pushWayBillToInterface(wayBill_Id: number) {
|
try {
|
const connection: any = await this.dbWrite.connection;
|
let request = new sql.Request(connection.driver.master);
|
request.input("wayBill_Id", wayBill_Id);
|
request.output("outMsg", sql.NVarChar(2000));
|
let result = await request.execute("sp_Interface_ExpressOrder_TMS_WayBillByCode");
|
let outMsg = result.output.outMsg;
|
this.info.result = true;
|
this.info.msg = outMsg;
|
} catch (ex) {
|
this.info.result = false;
|
this.info.msg = "错误信息:" + ex.message;
|
}
|
return this.info;
|
}
|
//#endregion
|
}
|