import { default as BaseController } from "../baseController";
|
import { Post } from "egg-shell-decorators";
|
import * as XLSX from "xlsx";
|
import * as path from "path";
|
import { TMSWayBill } from '../../entity/express/tms/tmsWayBill';
|
import { SaleOrder } from '../../entity/outbound/sale/saleOrder';
|
|
/**
|
* 出库 - 扫描操作
|
*/
|
export default class OutScanController extends BaseController {
|
//#region 重量导入
|
/**
|
* 重量导入
|
*/
|
@Post()
|
public async importExel() {
|
let { ctx } = this;
|
let body = ctx.request.body;
|
let redis = ctx.app.redis.clients.get("common"); // 将消息放入redis缓存
|
let fileUrl = body.url;
|
redis.expire(body.key, 5 * 60);
|
let msg = "";
|
if (!fileUrl) {
|
redis.rpush(body.key, "上传文件不存在");
|
return;
|
};
|
try {
|
let rootPath = path.resolve(); // 获得根目录
|
let filePath = rootPath + path.sep + fileUrl.replace(/\//gi, path.sep); // 上传文件路径
|
var workbook = XLSX.readFile(filePath); //整个 excel 文档
|
var sheetNames = workbook.SheetNames; //获取所有工作薄名
|
var sheet1 = workbook.Sheets[sheetNames[0]]; //根据工作薄名获取工作薄
|
let dataList = XLSX.utils.sheet_to_json(sheet1); // 获得当前sheet表单数据转为json格式
|
this.info.result = true;
|
if (!dataList.length) {
|
redis.rpush(body.key, "没有可导入的数据");
|
return;
|
}
|
let i = 0;
|
for (let item of dataList) {
|
i += 1;
|
if (!item["出库单号"]) {
|
msg += "出库单不能为空"
|
}
|
if (!item["发货件重量"]) {
|
msg += "发货件重量不能为空"
|
}
|
if (msg) {
|
msg = "第" + i + "行导入失败,失败原因" + msg + "</br>";
|
}
|
else {
|
let wayBillinfo = await this.dbRead.findOne(TMSWayBill, {
|
wayBillCode: item["出库单号"]
|
});
|
if (wayBillinfo) {
|
await this.dbWrite.update(TMSWayBill, wayBillinfo.wayBill_Id, {
|
grossWeight: item["发货件重量"]
|
})
|
}
|
else {
|
msg += item["出库单号"] + "该单号,运单管理不存在?</br>"
|
}
|
let orderinfo = await this.dbRead.findOne(SaleOrder, {
|
orderCode: item["出库单号"]
|
});
|
if (orderinfo) {
|
await this.dbWrite.update(SaleOrder, orderinfo.order_Id, {
|
weight: item["发货件重量"]
|
})
|
}
|
else {
|
msg += item["出库单号"] + "该单号,无出库订单;</br>"
|
}
|
}
|
}
|
this.info.result = true;
|
this.info.msg = msg;
|
}
|
catch (ex) {
|
let msg = "出现异常:" + ex.message;
|
this.info.result = false;
|
this.info.msg = msg;
|
}
|
|
ctx.body = this.info;
|
}
|
//#endregion 重量导入
|
}
|