import * as path from "path";
|
import BaseController from "../baseController";
|
import { Post } from "egg-shell-decorators";
|
import { BaseConsignor } from "../../entity/basicInfo/consignor/baseConsignor";
|
import { TMSWayBillReceive } from "../../entity/express/tms/tmsWayBillReceive";
|
import { TMSWayBillUpload } from "../../entity/express/tms/tmsWayBillUpload";
|
import { TMSWayBillTracking } from "../../entity/express/tms/tmsWayBillTracking";
|
import { TMSWayBill } from "../../entity/express/tms/tmsWayBill";
|
import { TMSWayBillList } from "../../entity/express/tms/tmsWayBillList";
|
import { BaseCity } from "../../entity/basicInfo/base/baseCity";
|
import { TmsGoodsRegion } from "../../entity/express/panel/tmsGoodsRegion";
|
import { BaseStorage } from "../../entity/basicInfo/base/baseStorage";
|
import { TMSWayBillAbnormal } from "../../entity/express/tms/tmsWayBillAbnormal";
|
import { BasePostCode } from "../../entity/basicInfo/base/basePostCode";
|
import moment = require("moment");
|
|
/**
|
* 菜单管理
|
*/
|
export default class WaybillUploadController extends BaseController {
|
//#region 运单根据口岸获取关联下拉框类别
|
|
//#region 导入面单图片数据
|
/**
|
* 导入面单图片数据
|
*/
|
@Post()
|
public async importWayBillUpload() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let userInfo = await ctx.helper.userInfo();
|
let storage_Id = 0;
|
let storageName = "";
|
try {
|
let errorMsg = "";
|
let uploadCount = 0;
|
for (let imageInfo of body.imageList) {
|
//#region 校验数据
|
let ext = path.extname(imageInfo.imageName);
|
let wayBillCode = path.basename(imageInfo.imageName, ext).toUpperCase();
|
|
//效验揽件是否存在该运单号
|
let receiveInfo = await this.dbRead.findOne(TMSWayBillReceive, {
|
wayBillCode: wayBillCode,
|
userProduct_Id: userInfo.userProduct_Id
|
});
|
if (!receiveInfo) {
|
errorMsg += "<font color='red'>运单号" + wayBillCode + "未在揽件记录中查询到数据;</font><br/>";
|
} else if (receiveInfo.collectStatus == "已揽收") {
|
let conInfo = await this.dbRead.findOne(BaseConsignor, receiveInfo.consignor_Id);
|
if (!conInfo) {
|
errorMsg += "<font color='red'>运单号" + wayBillCode + "未设置门店;</font><br/>";
|
} else {
|
let uploadInfo = await this.dbRead.findOne(TMSWayBillUpload, {
|
wayBillCode: wayBillCode,
|
userProduct_Id: userInfo.userProduct_Id
|
});
|
let imageUrl = imageInfo.imageUrl;
|
if (imageUrl.indexOf("/") !== 0) {
|
imageUrl = "/" + imageUrl;
|
}
|
if (uploadInfo) {
|
errorMsg += "<font color='blue'>运单号" + wayBillCode + "在面单上传记录中已经存在了,图片已更新;</font><br/>";
|
uploadInfo.filePath = imageUrl;
|
await this.dbWrite.update(TMSWayBillUpload, uploadInfo.wayBillUpload_Id, {
|
filePath: imageUrl
|
});
|
} else {
|
uploadCount += 1;
|
storage_Id = receiveInfo.storage_Id;
|
storageName = receiveInfo.storageName;
|
let uploadInfo = new TMSWayBillUpload();
|
uploadInfo.filePath = imageUrl;
|
uploadInfo.wayBillCode = wayBillCode;
|
uploadInfo.port_Id = body.port_Id;
|
uploadInfo.portName = body.portName;
|
uploadInfo.expressCorp_Id = body.expressCorp_Id;
|
uploadInfo.expressCorpType = body.expressCorpType;
|
uploadInfo.storage_Id = storage_Id;
|
uploadInfo.storageName = storageName;
|
uploadInfo.expressCorpName = body.expressCorpName;
|
uploadInfo.userProduct_Id = userInfo.userProduct_Id;
|
uploadInfo.userProductCode = userInfo.userProductCode;
|
uploadInfo.userProductAlias = userInfo.userProductAlias;
|
uploadInfo.orderStatus = "待录入";
|
|
uploadInfo.consignorName = conInfo.consignorName;
|
uploadInfo.consignor_Id = conInfo.consignor_Id;
|
uploadInfo.consignorCode = conInfo.consignorCode;
|
|
uploadInfo.createDate = new Date();
|
uploadInfo.creator = userInfo.userTrueName;
|
|
await this.dbWrite.insert(TMSWayBillUpload, uploadInfo);
|
errorMsg += "<font color='blue'>运单号" + wayBillCode + "在面单上传成功;</font><br/>";
|
}
|
}
|
} else {
|
errorMsg += "<font color='red'>运单号" + wayBillCode + receiveInfo.collectStatus + "不允许上传面单;</font><br/>";
|
}
|
//#endregion
|
}
|
errorMsg += "<font color='blue'>上传成功面单合计" + uploadCount + "单;</font><br/>";
|
|
this.info.result = true;
|
this.info.msg = errorMsg;
|
ctx.body = this.info;
|
return;
|
} catch (ex) {
|
let msg = "<font color='red'>出现异常:" + ex.message + "</font><br/>";
|
this.info.result = false;
|
this.info.msg = msg;
|
ctx.body = this.info;
|
return;
|
}
|
}
|
//#endregion
|
|
//#region 面单上传统计
|
/**
|
* 面单上传统计
|
*/
|
@Post()
|
public async getSumCount() {
|
let { ctx } = this;
|
try {
|
let beingSql = "SELECT COUNT(1) as cnt FROM dbo.TMS_WayBillUpload WHERE orderStatus='待录入'";
|
let endSql = "SELECT COUNT(1) as cnt FROM dbo.TMS_WayBillUpload WHERE orderStatus='已录入'";
|
let beginNum = (await this.dbRead.query(beingSql))[0].cnt;
|
let endNum = (await this.dbRead.query(endSql))[0].cnt;
|
let dataInfo = {
|
beginNum: beginNum,
|
endNum: endNum
|
};
|
this.info.result = true;
|
this.info.data = dataInfo;
|
ctx.body = this.info;
|
} catch (ex) {
|
let msg = "异常错误信息:" + ex.message;
|
this.info.result = false;
|
this.info.msg = msg;
|
ctx.body = this.info;
|
}
|
}
|
//#endregion
|
|
//#region 根据面单号获取面单信息
|
/**
|
* 根据面单号获取面单信息
|
*/
|
@Post()
|
public async getWayBillUploadInfo() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let userInfo = await ctx.helper.userInfo();
|
try {
|
let wayBilUploadInfo = new TMSWayBillUpload();
|
//如果运单号为空自动寻找最早一天待录入的单子
|
if (!body.wayBillCode) {
|
wayBilUploadInfo = await this.dbRead
|
.createQueryBuilder(TMSWayBillUpload, "t")
|
.where("userProduct_Id=:userProduct_Id and orderStatus='待录入'", {
|
userProduct_Id: userInfo.userProduct_Id
|
})
|
.orderBy("NEWID()")
|
.getOne();
|
if (!wayBilUploadInfo) {
|
this.info.msg = "已经没有待录入的面单上传数据了。";
|
this.info.result = false;
|
ctx.body = this.info;
|
return;
|
}
|
|
//#region 判断是否退货
|
let wayReceiveInfo = await this.dbRead.findOne(TMSWayBillReceive, {
|
wayBillCode: wayBilUploadInfo.wayBillCode
|
});
|
if (wayReceiveInfo != null && wayReceiveInfo.collectStatus == "已退货") {
|
this.info.msg = "当前单子已退货,请重新获取一下";
|
this.info.result = false;
|
await this.dbWrite.update(TMSWayBillUpload, wayBilUploadInfo.wayBillUpload_Id, {
|
receiveDate: new Date(),
|
orderStatus: "已退货"
|
});
|
|
ctx.body = this.info;
|
return;
|
}
|
//#endregion
|
|
await this.dbWrite.update(TMSWayBillUpload, wayBilUploadInfo.wayBillUpload_Id, {
|
receiveDate: new Date(),
|
orderStatus: "正在录入",
|
recoder: userInfo.userTrueName
|
});
|
} else {
|
wayBilUploadInfo = await this.dbRead.findOne(TMSWayBillUpload, {
|
wayBillCode: body.wayBillCode,
|
userProduct_Id: userInfo.userProduct_Id
|
});
|
|
if (!wayBilUploadInfo) {
|
this.info.msg = "未找到该运单号的面单上传数据。";
|
this.info.result = false;
|
ctx.body = this.info;
|
return;
|
} else if (body.type != "edit" && wayBilUploadInfo.orderStatus != "待录入") {
|
this.info.msg = "该运单号不是待录入状态,不能重复录入";
|
this.info.result = false;
|
ctx.body = this.info;
|
return;
|
}
|
|
if (body.type != "edit") {
|
await this.dbWrite.update(TMSWayBillUpload, wayBilUploadInfo.wayBillUpload_Id, {
|
receiveDate: new Date(),
|
orderStatus: "正在录入",
|
recoder: userInfo.userTrueName
|
});
|
}
|
}
|
|
let wayBillTrackingList = await this.dbRead.find(TMSWayBillTracking, {
|
wayBillCode: wayBilUploadInfo.wayBillCode,
|
userProduct_Id: userInfo.userProduct_Id
|
});
|
|
let wayBillUploadData = {
|
wayBilUploadInfo: wayBilUploadInfo,
|
wayBillTrackingList: wayBillTrackingList,
|
wayBillInfo: null
|
};
|
|
// 编辑信息获得运单信息
|
if (body.type == "edit") {
|
let wayBillInfo = await this.dbRead.findOne(TMSWayBill, {
|
wayBillCode: wayBilUploadInfo.wayBillCode
|
});
|
let tmsWayBillList = await this.dbRead.find(TMSWayBillList, {
|
wayBill_Id: wayBillInfo.wayBill_Id
|
});
|
wayBillInfo.tmsWayBillList = tmsWayBillList;
|
wayBillUploadData.wayBillInfo = wayBillInfo;
|
}
|
|
this.info.data = wayBillUploadData;
|
this.info.result = true;
|
ctx.body = this.info;
|
} catch (ex) {
|
let msg = "异常错误信息:" + ex.message;
|
this.info.result = false;
|
this.info.msg = msg;
|
ctx.body = this.info;
|
}
|
}
|
//#endregion
|
|
//#region 面单录入保存
|
/**
|
* 面单录入保存
|
*/
|
@Post()
|
public async submitWayBillInfo() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let userInfo = await ctx.helper.userInfo();
|
ctx.logger.info("TMS运单录入数据:" + JSON.stringify(body));
|
let _wayBillCode = body.wayBillUploadInfo.wayBillCode;
|
// 保存到mongodb
|
try {
|
let db = this.app.mongodb;
|
let collection = db.collection("tmsWayBill");
|
let data = Object.assign({ createDate: moment(new Date()).format("YYYY-MM-DD HH:mm:ss") }, body);
|
await collection.insert(data);
|
} catch (error) {
|
ctx.logger.info("tmsWayBill将数据保存至MongoDB错误:" + error.message);
|
}
|
|
try {
|
//#region 校验
|
let wayBillInfo: TMSWayBill = null;
|
if (body.wayBillInfo.wayBill_Id > 0) {
|
// 编辑数据
|
wayBillInfo = await this.dbRead.findOne(TMSWayBill, body.wayBillInfo.wayBill_Id);
|
} else {
|
wayBillInfo = await this.dbRead.findOne(TMSWayBill, {
|
wayBillCode: body.wayBillUploadInfo.wayBillCode,
|
userProduct_Id: userInfo.userProduct_Id
|
});
|
|
//检验运单号是否重复
|
if (wayBillInfo != null) {
|
this.info.result = false;
|
this.info.msg = "已经存在该运单号。";
|
|
let _wayUploadInfo = await this.dbRead.findOne(TMSWayBillUpload, {
|
wayBillCode: wayBillInfo.wayBillCode
|
});
|
if (_wayUploadInfo != null) {
|
_wayUploadInfo.orderStatus = "已录入";
|
// 领取人为空时,补上当前人员
|
if (!_wayUploadInfo.recoder) {
|
_wayUploadInfo.recoder = userInfo.userTrueName;
|
_wayUploadInfo.receiveDate = new Date();
|
}
|
await this.dbWrite.save(_wayUploadInfo);
|
}
|
|
ctx.body = this.info;
|
return;
|
}
|
wayBillInfo = new TMSWayBill();
|
}
|
if (!body.wayBillInfo.grossWeight || body.wayBillInfo.grossWeight <= 0) {
|
this.info.result = false;
|
this.info.msg = "重量不能为空。";
|
ctx.body = this.info;
|
return;
|
}
|
// 验证明细
|
if (body.state != "录入异常") {
|
let _billInfo = body.wayBillInfo;
|
if (body.wayBillDetails.length <= 0) {
|
this.info.result = false;
|
this.info.msg = "明细不能为空。";
|
ctx.body = this.info;
|
return;
|
}
|
let addr1 = _billInfo.provinceName + _billInfo.cityName + _billInfo.regionName;
|
if (_billInfo.consigneeAddress.indexOf(addr1) != 0) {
|
this.info.result = false;
|
this.info.msg = "详细地址开头省市区不全。";
|
ctx.body = this.info;
|
return;
|
}
|
// 验证省市是否一致
|
let cityCount = await this.dbRead
|
.createQueryBuilder(BaseCity, "C")
|
.select("city_Id")
|
.where(
|
`C.cityName=:cityName
|
AND C.parentId=(SELECT TOP 1 P.city_Id FROM dbo.Base_City P WHERE P.cityName=:provinceName AND P.parentId=0)`,
|
{
|
cityName: _billInfo.cityName,
|
provinceName: _billInfo.provinceName
|
}
|
)
|
.getCount();
|
|
if (!cityCount) {
|
this.info.result = false;
|
this.info.msg = "省市不匹配,无法保存。";
|
ctx.body = this.info;
|
return;
|
}
|
|
if (!_billInfo.consigneeName) {
|
this.info.result = false;
|
this.info.msg = "收货人姓名不能为空";
|
ctx.body = this.info;
|
return;
|
}
|
if (!_billInfo.consigneeMobile) {
|
this.info.result = false;
|
this.info.msg = "收货人手机号不能为空";
|
ctx.body = this.info;
|
return;
|
}
|
if (!_billInfo.provinceName || !_billInfo.cityName || !_billInfo.regionName || !_billInfo.consigneeAddress) {
|
this.info.result = false;
|
this.info.msg = "收货人省市区、详细地址不能为空";
|
ctx.body = this.info;
|
return;
|
}
|
if ((_billInfo.grossWeight || 0) <= 0) {
|
this.info.result = false;
|
this.info.msg = "包裹毛重不能小于等于0";
|
ctx.body = this.info;
|
return;
|
}
|
for (let item of body.wayBillDetails) {
|
if (!item.productCode) {
|
this.info.result = false;
|
this.info.msg = "物料编号不能为空。";
|
ctx.body = this.info;
|
return;
|
}
|
if (!item.productName) {
|
this.info.result = false;
|
this.info.msg = "物料名称不能为空";
|
ctx.body = this.info;
|
return;
|
}
|
if (!item.productModel) {
|
this.info.result = false;
|
this.info.msg = "物料条码不能为空";
|
ctx.body = this.info;
|
return;
|
}
|
if (!item.quantityOrder || item.quantityOrder <= 0) {
|
this.info.result = false;
|
this.info.msg = "物料数量不能小于";
|
ctx.body = this.info;
|
return;
|
}
|
}
|
}
|
//#endregion
|
|
let wayReceiveInfo = await this.dbRead.findOne(TMSWayBillReceive, {
|
wayBillCode: body.wayBillUploadInfo.wayBillCode
|
});
|
|
// 获得计划格口
|
let planDropOffPort = "";
|
let regionInfo = await this.dbRead.findOne(TmsGoodsRegion, {
|
portName: body.wayBillUploadInfo.portName
|
});
|
if (regionInfo && regionInfo.regionName) {
|
planDropOffPort = regionInfo.regionName.replace(/#/gi, "");
|
}
|
//#region 主表添加、更新
|
wayBillInfo = new TMSWayBill();
|
wayBillInfo.consignorName = body.wayBillUploadInfo.consignorName;
|
wayBillInfo.consignorCode = body.wayBillUploadInfo.consignorCode;
|
wayBillInfo.consignor_Id = body.wayBillUploadInfo.consignor_Id;
|
wayBillInfo.wayBillCode = body.wayBillUploadInfo.wayBillCode;
|
wayBillInfo.consigneeName = body.wayBillInfo.consigneeName;
|
wayBillInfo.provinceName = body.wayBillInfo.provinceName;
|
wayBillInfo.province_Id = body.wayBillInfo.province_Id;
|
wayBillInfo.cityName = body.wayBillInfo.cityName;
|
wayBillInfo.city_Id = body.wayBillInfo.city_Id;
|
wayBillInfo.regionName = body.wayBillInfo.regionName;
|
wayBillInfo.region_Id = body.wayBillInfo.region_Id;
|
wayBillInfo.street = body.wayBillInfo.street;
|
wayBillInfo.consigneeAddress = body.wayBillInfo.consigneeAddress;
|
wayBillInfo.consigneePostCode = body.wayBillInfo.consigneePostCode;
|
wayBillInfo.consigneeMobile = body.wayBillInfo.consigneeMobile;
|
wayBillInfo.consigneeIdcard = body.wayBillInfo.consigneeIdcard;
|
wayBillInfo.weight = body.wayBillInfo.weight;
|
wayBillInfo.grossWeight = body.wayBillInfo.grossWeight;
|
wayBillInfo.unit = body.wayBillInfo.unit;
|
wayBillInfo.isStoreMate = 0;
|
wayBillInfo.orderType = "直邮";
|
wayBillInfo.expressCorp_Id = body.wayBillUploadInfo.expressCorp_Id;
|
wayBillInfo.expressCorpName = body.wayBillUploadInfo.expressCorpName;
|
wayBillInfo.port_Id = body.wayBillUploadInfo.port_Id;
|
wayBillInfo.portName = body.wayBillUploadInfo.portName;
|
wayBillInfo.storage_Id = body.wayBillUploadInfo.storage_Id;
|
wayBillInfo.storageName = body.wayBillUploadInfo.storageName;
|
wayBillInfo.userProduct_Id = userInfo.userProduct_Id;
|
wayBillInfo.userProductCode = userInfo.userProductCode;
|
wayBillInfo.userProductAlias = userInfo.userProductAlias;
|
wayBillInfo.orderStatus = "审核成功";
|
wayBillInfo.collectStatus = wayReceiveInfo.collectStatus;
|
wayBillInfo.makeWay = "TMS录入";
|
wayBillInfo.expressCorpType = body.wayBillUploadInfo.expressCorpType;
|
wayBillInfo.planDropOffPort = planDropOffPort;
|
wayBillInfo.printStatus = "已打印";
|
wayBillInfo.abnormalReason = body.Reason;
|
wayBillInfo.createID = userInfo.user_Id;
|
wayBillInfo.creator = userInfo.userTrueName;
|
|
// 揽收身份证不为空,以揽收为准
|
if (wayReceiveInfo.consigneeIdcard) {
|
wayBillInfo.consigneeIdcard = wayReceiveInfo.consigneeIdcard;
|
wayBillInfo.consigneeName = wayReceiveInfo.consigneeName;
|
}
|
|
//#region 更新仓库信息
|
let storage = await this.dbRead.findOne(BaseStorage, {
|
storage_Id: body.wayBillUploadInfo.storage_Id
|
});
|
if (storage != null) {
|
wayBillInfo.billingName = storage.shipperCompanyName;
|
wayBillInfo.billingMobile = storage.shipperTelephone;
|
wayBillInfo.billingAddress = storage.shipperAddress;
|
}
|
//#endregion
|
|
if (body.wayBillInfo.wayBill_Id > 0) {
|
wayBillInfo.wayBill_Id = body.wayBillInfo.wayBill_Id;
|
}
|
if (body.state == "录入异常") {
|
wayBillInfo.orderStatus = "录入异常";
|
}
|
if (body.wayBillInfo.wayBill_Id > 0) {
|
// 更新
|
await this.dbWrite.save(wayBillInfo);
|
} else {
|
ctx.logger.info(_wayBillCode + " 新增开始");
|
// 新增
|
wayBillInfo.createDate = new Date();
|
await this.dbWrite.save(wayBillInfo);
|
ctx.logger.info(_wayBillCode + " 新增结束");
|
ctx.logger.info(_wayBillCode + " 新增查询开始");
|
let _wayBillInfo = await this.dbWrite.findOne(TMSWayBill, {
|
wayBillCode: wayBillInfo.wayBillCode
|
});
|
let wayBill_Id = _wayBillInfo.wayBill_Id;
|
if (wayBill_Id == null) {
|
ctx.logger.info(_wayBillCode + " 查询结果是空的");
|
} else {
|
if (wayBillInfo.wayBill_Id != wayBill_Id) {
|
ctx.logger.info(wayBillInfo.wayBillCode + " 保存ID错乱" + wayBillInfo.wayBill_Id + ", 实际为:" + wayBill_Id);
|
wayBillInfo.wayBill_Id = wayBill_Id;
|
} else {
|
ctx.logger.info(wayBillInfo.wayBillCode + " 保存ID" + wayBillInfo.wayBill_Id + ", 实际为:" + wayBill_Id);
|
wayBillInfo.wayBill_Id = wayBill_Id;
|
}
|
}
|
ctx.logger.info(_wayBillCode + " 新增查询结束");
|
}
|
ctx.logger.info("TMS运单录入数据-保存后:" + JSON.stringify(wayBillInfo));
|
//#endregion
|
|
//#region 录入异常
|
if (body.state == "录入异常") {
|
ctx.logger.info(_wayBillCode + " 录入异常开始");
|
//添加异常记录
|
let abnormalInfo = {
|
wayBillCode: wayBillInfo.wayBillCode,
|
wayBill_Id: wayBillInfo.wayBill_Id,
|
AbnormalStatus: body.state,
|
Abnormal: body.Reason,
|
AbnormalDate: new Date()
|
};
|
ctx.logger.info(_wayBillCode + " 录入异常日志");
|
await ctx.service.tms.wayBillHelper.setStatusHistory(wayBillInfo, "录入异常", "录入异常");
|
await this.dbWrite.insert(TMSWayBillAbnormal, abnormalInfo);
|
ctx.logger.info(_wayBillCode + " 录入异常结束");
|
}
|
//#endregion
|
|
//#region 明细处理
|
// 清空明细重新添加
|
ctx.logger.info(_wayBillCode + " 明细删除开始");
|
await this.dbWrite.delete(TMSWayBillList, {
|
wayBill_Id: wayBillInfo.wayBill_Id
|
});
|
ctx.logger.info(_wayBillCode + " 明细删除结束");
|
|
let totalQuantityOrder = 0; // 数量
|
let totalMoney = 0; //总金额
|
let totalweight = 0; //包裹净重
|
ctx.logger.info(_wayBillCode + " 明细开始:个数=" + body.wayBillDetails.length);
|
for (let wayBillDetailsInfo of body.wayBillDetails) {
|
ctx.logger.info(_wayBillCode + " 明细开始:" + wayBillDetailsInfo.productName);
|
//添加到TMSWayBillList表
|
let detailInfo = new TMSWayBillList();
|
detailInfo.wayBill_Id = wayBillInfo.wayBill_Id;
|
detailInfo.product_Id = wayBillDetailsInfo.product_Id;
|
detailInfo.productName = wayBillDetailsInfo.productName;
|
detailInfo.productCode = wayBillDetailsInfo.productCode;
|
detailInfo.productModel = wayBillDetailsInfo.productModel;
|
detailInfo.productSpec = wayBillDetailsInfo.productSpec;
|
detailInfo.quantityOrder = wayBillDetailsInfo.quantityOrder;
|
detailInfo.smallUnit = wayBillDetailsInfo.smallUnit;
|
detailInfo.salePrice = wayBillDetailsInfo.salePrice || 0;
|
detailInfo.rowTotal = wayBillDetailsInfo.quantityOrder * (wayBillDetailsInfo.salePrice != null ? wayBillDetailsInfo.salePrice : 0);
|
detailInfo.weight = wayBillDetailsInfo.weight;
|
detailInfo.grossWeight = wayBillDetailsInfo.grossWeight;
|
|
totalMoney += detailInfo.rowTotal;
|
totalQuantityOrder += detailInfo.quantityOrder;
|
totalweight += detailInfo.weight;
|
|
await this.dbWrite.save(detailInfo);
|
ctx.logger.info(_wayBillCode + " 明细开始:结束" + wayBillDetailsInfo.productName);
|
}
|
//#endregion
|
|
//#region 合计处理
|
ctx.logger.info(_wayBillCode + " 合计开始");
|
// 更新合计金额合计数量
|
await this.dbWrite.update(TMSWayBill, wayBillInfo.wayBill_Id, {
|
totalQuantityOrder: totalQuantityOrder,
|
grandTotal: totalMoney,
|
weight: totalweight
|
});
|
//修改面单上传状态为已录入
|
let wayBillUploadInfo = await this.dbRead.findOne(TMSWayBillUpload, {
|
userProduct_Id: userInfo.userProduct_Id,
|
wayBillCode: body.wayBillUploadInfo.wayBillCode
|
});
|
wayBillUploadInfo.orderStatus = "已录入";
|
await this.dbWrite.update(TMSWayBillUpload, wayBillUploadInfo.wayBillUpload_Id, {
|
orderStatus: "已录入"
|
});
|
ctx.logger.info(_wayBillCode + " 合计结束");
|
//#endregion
|
|
// 验证录入明细是否一致
|
let detailCount = await this.dbRead.createQueryBuilder(TMSWayBillList, "t").whereInIds([wayBillInfo.wayBill_Id]).getCount();
|
if (body.wayBillDetails.length != detailCount) {
|
ctx.logger.info(`${wayBillInfo.wayBillCode} TMS运单录入数据:明细不一致,提交数量${detailCount},明细数量:${body.wayBillDetails.length}`);
|
}
|
|
//添加运单追踪记录
|
if (body.state != "录入异常") {
|
await ctx.service.tms.wayBillHelper.setStatusHistory(wayBillInfo, "运单录入", "审核成功", "订单创建成功");
|
}
|
this.info.msg = wayBillInfo.orderStatus;
|
this.info.result = true;
|
ctx.body = this.info;
|
} catch (ex) {
|
let msg = "异常错误信息:" + ex.message;
|
this.info.result = false;
|
this.info.msg = msg;
|
ctx.logger.info(msg);
|
ctx.body = this.info;
|
}
|
}
|
//#endregion
|
|
//#region 获得物料信息列表 GetProductList
|
/**
|
* 获得物料信息列表
|
*/
|
@Post()
|
public async getProductList() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let redis = ctx.app.redis.clients.get("product");
|
let key: string = body.key;
|
if (!key) {
|
this.info.result = false;
|
this.info.msg = "没有查询的数据!";
|
}
|
key = key.toLowerCase();
|
let keys = await redis.keys(`*${key}*`);
|
let dataList: Array<any> = [];
|
keys = keys.filter((item, index) => item && index < 100);
|
|
for (let key of keys) {
|
let val = await redis.get(key);
|
dataList.push(JSON.parse(val));
|
}
|
dataList = dataList
|
.sort((a, b) => {
|
return a.clickCount < b.clickCount ? 1 : -1;
|
})
|
.filter((item, index) => item && index < 50);
|
|
if (dataList.length > 0) {
|
this.info.result = true;
|
this.info.data = dataList;
|
} else {
|
this.info.result = false;
|
this.info.msg = "没有查询的数据!";
|
}
|
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region GetWayBillInfo 获取运单信息
|
@Post()
|
public async getWayBillInfo() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
this.info.result = true;
|
let wayBillInfo = await this.dbRead.findOne(TMSWayBill, {
|
wayBillCode: body.wayBillCode
|
});
|
if (wayBillInfo) {
|
wayBillInfo.tmsWayBillList = await this.dbRead.find(TMSWayBillList, {
|
wayBill_Id: wayBillInfo.wayBill_Id
|
});
|
this.info.data = wayBillInfo;
|
}
|
|
ctx.body = this.info;
|
}
|
//#endregion
|
|
//#region getPostCode
|
@Post()
|
public async getPostCode() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
try {
|
//根据省市区详细地址获取邮编
|
let consigneePostCode = "100000";
|
let postCodeList = await this.dbRead.find(BasePostCode, {
|
province: body.provinceName,
|
city: body.cityName,
|
district: body.regionName
|
});
|
if (postCodeList.length > 0) {
|
for (let item of postCodeList) {
|
let address = item.address;
|
if (address.indexOf(body.consigneeAddress) >= 0) {
|
consigneePostCode = item.postNumber;
|
}
|
}
|
if (consigneePostCode == "100000") {
|
//根据省市区查询邮政编码
|
let dataInfo = await this.dbRead.findOne(BasePostCode, {
|
province: body.provinceName,
|
city: body.cityName,
|
district: body.regionName
|
});
|
if (dataInfo) {
|
consigneePostCode = dataInfo.postNumber;
|
}
|
}
|
} else {
|
//只根据省市查询邮政编码
|
let dataInfo = await this.dbRead.findOne(BasePostCode, {
|
province: body.provinceName,
|
city: body.cityName
|
});
|
if (dataInfo) {
|
consigneePostCode = dataInfo.postNumber;
|
}
|
}
|
this.info.result = true;
|
this.info.data = {
|
consigneePostCode: consigneePostCode
|
};
|
ctx.body = this.info;
|
} catch (ex) {
|
this.info.result = false;
|
this.info.msg = ex.message;
|
|
ctx.body = this.info;
|
}
|
}
|
//#endregion
|
|
//#region GetWayBillInfo 根据手机号获取最近的收货人信息
|
@Post()
|
public async getConsigneeInfo() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
if (!body.consigneeMobile) {
|
this.info.result = false;
|
this.info.msg = "手机号不能为空!";
|
|
ctx.body = this.info;
|
return;
|
}
|
|
let wayBillInfo = await this.dbRead.findOne(TMSWayBill, {
|
where: {
|
consigneeMobile: body.consigneeMobile
|
},
|
order: { wayBill_Id: "DESC" }
|
});
|
if (wayBillInfo != null) {
|
this.info.result = true;
|
wayBillInfo.consigneeIdcard = null; // 不带出身份证
|
this.info.data = wayBillInfo;
|
} else {
|
this.info.result = false;
|
this.info.msg = null;
|
}
|
|
ctx.body = this.info;
|
}
|
//#endregion
|
}
|