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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
import BaseController from "../baseController";
import { Post } from "egg-shell-decorators";
import moment = require("moment");
import { ExpressSFOrderRoute } from '../../entity/express/sf/expressSFOrderRoute';
import { ExpressEMSOrder } from '../../entity/express/ems/expressEMSOrder';
import { ExpressEMSOrderRoute } from '../../entity/express/ems/expressEMSOrderRoute';
 
export default class expressEMSOrder extends BaseController {
  //#region 北京EMS通过宏远推送运单 pushOrderByHY
  /// <summary>
  ///北京EMS通过宏远推送运单 pushOrderByHY
  /// </summary>
  /// <returns>返回获取快递单号结果</returns>
  ///
  @Post()
  public async pushOrderByHY() {
    let { ctx } = this;
    let body = ctx.request.body;
    try {
      //#region 校验数据
 
      if (!body.orderIdList) {
        this.info.result = false;
        this.info.msg = "至少选择一条记录!";
        ctx.body = this.info;
        return;
      }
      //#endregion
      let orderIdList = body.orderIdList.split(",");
      var aLLSuccess = true;
      var msg = "返回信息:";
      for (let orderId of orderIdList) {
        let info = null;
        info = await ctx.service.express.emsHelper.pushOrderByHY(orderId, 1);
        if (!info.result) {
          aLLSuccess = false;
        }
        msg = msg + info.msg;
      }
      this.info.result = aLLSuccess;
      this.info.msg = msg;
      ctx.body = this.info;
      return;
    } catch (ex) {
      this.info.result = false;
      this.info.msg = ex.message;
      ctx.body = this.info;
      return;
    }
  }
  //    #endregion
 
 
  //#region 北京EMS通过宏远获取路由 getRouteByHY
  /// <summary>
  ///北京EMS通过宏远获取路由 getRouteByHY
  /// </summary>
  /// <returns>返回获取快递路由信息结果</returns>
  ///
  @Post()
  public async getRouteByHY() {
    let { ctx } = this;
    let body = ctx.request.body;
    try {
      //#region 校验数据
 
      if (!body.orderIdList) {
        this.info.result = false;
        this.info.msg = "至少选择一条记录!";
        ctx.body = this.info;
        return;
      }
      //#endregion
      let orderIdList = body.orderIdList.split(",");
      var aLLSuccess = true;
      var msg = "返回信息:";
      for (let orderId of orderIdList) {
        let info = null;
        let where = "eMSOrder_Id=:eMSOrder_Id";
        var orderInfo = await this.dbRead
          .createQueryBuilder(ExpressEMSOrder, "t")
          .where(where, {
            eMSOrder_Id: orderId
          })
          .getOne();
        var hYOrderInfo = { ordernoOid: orderInfo.orderCode };
        info = await ctx.service.express.hongyuanHelper.getRoute(hYOrderInfo);
        if (info.result) {
 
          var emsOrderInfo = await this.dbRead.findOne(ExpressSFOrderRoute, {
            where: { sFOrder_Id: orderInfo.eMSOrder_Id },
            order: { accept_time: "DESC" }
          });
          if (info.data && Array.isArray(info.data)) {
            // 顺序排
            let dataAsc = info.data.sort((a, b) => {
              return a.updateTime > b.updateTime ? 1 : -1;
            });
 
            for (var item of dataAsc) {
              var updateTime = moment(item.updateTime);
 
              // 已经记录的不在记录
              if (emsOrderInfo != null) {
                let accept_time = moment(emsOrderInfo.accept_time);
                if (updateTime <= accept_time) {
                  continue;
                }
              }
              let routeInfo = new ExpressEMSOrderRoute();
              routeInfo.mailno = orderInfo.mailno;
              routeInfo.accept_time = item.updateTime;
              routeInfo.accept_address = item.action;
              routeInfo.eMSOrder_Id = orderInfo.eMSOrder_Id;
              await this.dbWrite.insert(ExpressEMSOrderRoute, routeInfo);
            }
          }
 
        }
        else {
          aLLSuccess = false;
        }
        msg = msg + info.msg;
      }
      this.info.result = aLLSuccess;
      this.info.msg = msg;
      ctx.body = this.info;
      return;
    } catch (ex) {
      this.info.result = false;
      this.info.msg = ex.message;
      ctx.body = this.info;
      return;
    }
  }
  //    #endregion
}