333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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 重量导入
}