@things-factory/operato-hub 4.3.400 → 4.3.402
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-server/graphql/resolvers/synchronization/get-lmd-awb.js +17 -42
- package/dist-server/graphql/resolvers/synchronization/get-lmd-awb.js.map +1 -1
- package/dist-server/graphql/resolvers/synchronization/retry-create-lmd-parcels.js +45 -46
- package/dist-server/graphql/resolvers/synchronization/retry-create-lmd-parcels.js.map +1 -1
- package/package.json +2 -2
- package/server/graphql/resolvers/synchronization/get-lmd-awb.ts +20 -50
- package/server/graphql/resolvers/synchronization/retry-create-lmd-parcels.ts +62 -65
|
@@ -2,55 +2,30 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getLmdAwbResolver = void 0;
|
|
4
4
|
const typeorm_1 = require("typeorm");
|
|
5
|
+
const env_1 = require("@things-factory/env");
|
|
5
6
|
const sales_base_1 = require("@things-factory/sales-base");
|
|
6
7
|
const worksheet_base_1 = require("@things-factory/worksheet-base");
|
|
7
|
-
const integration_sellercraft_1 = require("@things-factory/integration-sellercraft");
|
|
8
|
-
const auth_base_1 = require("@things-factory/auth-base");
|
|
9
|
-
const setting_base_1 = require("@things-factory/setting-base");
|
|
10
|
-
const env_1 = require("@things-factory/env");
|
|
11
8
|
exports.getLmdAwbResolver = {
|
|
12
9
|
async getLmdAwb(_, {}, context) {
|
|
13
|
-
const qb = (0, typeorm_1.getRepository)(sales_base_1.OrderPackage)
|
|
14
|
-
.createQueryBuilder('op')
|
|
15
|
-
.innerJoinAndSelect('op.releaseGood', 'rg')
|
|
16
|
-
.innerJoinAndSelect('rg.domain', 'd')
|
|
17
|
-
.innerJoinAndSelect('rg.bizplace', 'b')
|
|
18
|
-
.innerJoinAndSelect('b.domain', 'd2')
|
|
19
|
-
.leftJoinAndSelect('rg.lastMileDelivery', 'lmd')
|
|
20
|
-
.where('rg.lmd_option = true')
|
|
21
|
-
.andWhere('rg.status NOT IN (:...statuses)', {
|
|
22
|
-
statuses: [sales_base_1.ORDER_STATUS.CANCELLED, sales_base_1.ORDER_STATUS.PENDING_CANCEL, sales_base_1.ORDER_STATUS.DONE]
|
|
23
|
-
})
|
|
24
|
-
.andWhere('op.parcel_id IS NOT NULL')
|
|
25
|
-
.andWhere('op.airway_bill IS NULL');
|
|
26
|
-
const orderPackages = await qb.getMany();
|
|
27
|
-
await (0, worksheet_base_1.processAwbAndTrackingNo)(orderPackages);
|
|
28
|
-
const releaseOrders = orderPackages.map(op => { return op.releaseGood; });
|
|
29
10
|
try {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseOrder);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
11
|
+
const qb = (0, typeorm_1.getRepository)(sales_base_1.OrderPackage)
|
|
12
|
+
.createQueryBuilder('op')
|
|
13
|
+
.innerJoinAndSelect('op.releaseGood', 'rg')
|
|
14
|
+
.innerJoinAndSelect('rg.domain', 'd')
|
|
15
|
+
.innerJoinAndSelect('rg.bizplace', 'b')
|
|
16
|
+
.innerJoinAndSelect('b.domain', 'd2')
|
|
17
|
+
.leftJoinAndSelect('rg.lastMileDelivery', 'lmd')
|
|
18
|
+
.where('rg.lmd_option = true')
|
|
19
|
+
.andWhere('rg.status NOT IN (:...statuses)', {
|
|
20
|
+
statuses: [sales_base_1.ORDER_STATUS.CANCELLED, sales_base_1.ORDER_STATUS.PENDING_CANCEL, sales_base_1.ORDER_STATUS.DONE]
|
|
21
|
+
})
|
|
22
|
+
.andWhere('op.parcel_id IS NOT NULL')
|
|
23
|
+
.andWhere('op.airway_bill IS NULL');
|
|
24
|
+
const orderPackages = await qb.getMany();
|
|
25
|
+
(0, worksheet_base_1.processAwbAndTrackingNo)(orderPackages);
|
|
51
26
|
}
|
|
52
27
|
catch (e) {
|
|
53
|
-
env_1.logger.error(`[
|
|
28
|
+
env_1.logger.error(`[getLmdAwb]: ${e}`);
|
|
54
29
|
}
|
|
55
30
|
}
|
|
56
31
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-lmd-awb.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/get-lmd-awb.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"get-lmd-awb.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/get-lmd-awb.ts"],"names":[],"mappings":";;;AAAA,qCAA2D;AAE3D,6CAA4C;AAC5C,2DAAuE;AACvE,mEAAwE;AAE3D,QAAA,iBAAiB,GAAG;IAC/B,KAAK,CAAC,SAAS,CAAC,CAAM,EAAE,EAAE,EAAE,OAAY;QACtC,IAAI;YACF,MAAM,EAAE,GAAqC,IAAA,uBAAa,EAAC,yBAAY,CAAC;iBACrE,kBAAkB,CAAC,IAAI,CAAC;iBACxB,kBAAkB,CAAC,gBAAgB,EAAE,IAAI,CAAC;iBAC1C,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC;iBACpC,kBAAkB,CAAC,aAAa,EAAE,GAAG,CAAC;iBACtC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC;iBACpC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,CAAC;iBAC/C,KAAK,CAAC,sBAAsB,CAAC;iBAC7B,QAAQ,CAAC,iCAAiC,EAAE;gBAC3C,QAAQ,EAAE,CAAC,yBAAY,CAAC,SAAS,EAAE,yBAAY,CAAC,cAAc,EAAE,yBAAY,CAAC,IAAI,CAAC;aACnF,CAAC;iBACD,QAAQ,CAAC,0BAA0B,CAAC;iBACpC,QAAQ,CAAC,wBAAwB,CAAC,CAAA;YAErC,MAAM,aAAa,GAAmB,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;YAExD,IAAA,wCAAuB,EAAC,aAAa,CAAC,CAAA;SACvC;QAAC,OAAO,CAAC,EAAE;YACV,YAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;SAClC;IACH,CAAC;CACF,CAAA"}
|
|
@@ -9,46 +9,45 @@ const worksheet_base_1 = require("@things-factory/worksheet-base");
|
|
|
9
9
|
exports.retryCreateLmdParcelsResolver = {
|
|
10
10
|
async retryCreateLmdParcels(_, {}, context) {
|
|
11
11
|
try {
|
|
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
|
-
await Promise.all(releaseGoods.map(async (releaseGood) => {
|
|
12
|
+
try {
|
|
13
|
+
let releaseGoodQb = (0, typeorm_1.getRepository)(sales_base_1.ReleaseGood)
|
|
14
|
+
.createQueryBuilder('rg')
|
|
15
|
+
.innerJoinAndSelect('rg.lastMileDelivery', 'lmd')
|
|
16
|
+
.innerJoinAndSelect('rg.domain', 'domain')
|
|
17
|
+
.innerJoinAndSelect('rg.bizplace', 'bizplace')
|
|
18
|
+
.innerJoinAndSelect('rg.creator', 'creator')
|
|
19
|
+
.leftJoinAndMapOne('rg.marketplaceOrder', marketplace_base_1.MarketplaceOrder, 'mo', 'mo.order_no = rg.ref_no')
|
|
20
|
+
.where(`rg.lmd_option = true`)
|
|
21
|
+
.andWhere(`rg.status IN (:...status)`, {
|
|
22
|
+
status: [sales_base_1.ORDER_STATUS.PICKING, sales_base_1.ORDER_STATUS.READY_TO_PACK, sales_base_1.ORDER_STATUS.PACKING]
|
|
23
|
+
})
|
|
24
|
+
.andWhere(`COALESCE(rg.count_parcel,0) <= 5`)
|
|
25
|
+
.andWhere(qb => {
|
|
26
|
+
const subQuery = qb
|
|
27
|
+
.subQuery()
|
|
28
|
+
.from(worksheet_base_1.Worksheet, 'ws')
|
|
29
|
+
.innerJoin('ws.worksheetDetails', 'wsd')
|
|
30
|
+
.innerJoin('wsd.targetInventory', 'oi')
|
|
31
|
+
.where('rg.id = oi.release_good_id')
|
|
32
|
+
.andWhere('ws.type IN (:...wsType)', { wsType: ['PICKING', 'BATCH_PICKING'] })
|
|
33
|
+
.andWhere('EXTRACT(EPOCH FROM(CURRENT_TIMESTAMP-ws.started_at)) > 240')
|
|
34
|
+
.getQuery();
|
|
35
|
+
return 'EXISTS ' + subQuery;
|
|
36
|
+
})
|
|
37
|
+
.andWhere(qb => {
|
|
38
|
+
const subQuery = qb
|
|
39
|
+
.subQuery()
|
|
40
|
+
.from(sales_base_1.OrderPackage, 'opk')
|
|
41
|
+
.where('rg.id = opk.release_good_id')
|
|
42
|
+
.andWhere('opk.parcel_id ISNULL')
|
|
43
|
+
.getQuery();
|
|
44
|
+
return 'EXISTS ' + subQuery;
|
|
45
|
+
})
|
|
46
|
+
.limit(500);
|
|
47
|
+
let releaseGoods = await releaseGoodQb.getMany();
|
|
48
|
+
if (releaseGoods === null || releaseGoods === void 0 ? void 0 : releaseGoods.length) {
|
|
49
|
+
for (const releaseGood of releaseGoods) {
|
|
50
|
+
await (0, typeorm_1.getConnection)().transaction(async (tx) => {
|
|
52
51
|
let newReleaseGood = await tx.getRepository(sales_base_1.ReleaseGood).findOne({
|
|
53
52
|
where: { id: releaseGood.id },
|
|
54
53
|
relations: [
|
|
@@ -61,14 +60,14 @@ exports.retryCreateLmdParcelsResolver = {
|
|
|
61
60
|
'orderPackages.orderPackageItems.orderProduct.productDetail'
|
|
62
61
|
]
|
|
63
62
|
});
|
|
64
|
-
|
|
65
|
-
})
|
|
63
|
+
(0, worksheet_base_1.createLmdParcel)([newReleaseGood], tx, newReleaseGood.domain, releaseGood.user, releaseGood === null || releaseGood === void 0 ? void 0 : releaseGood.marketplaceOrder);
|
|
64
|
+
});
|
|
66
65
|
}
|
|
67
66
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
}
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
env_1.logger.error(`retryCreateLmdParcels[GetTrackingNo]: ${e}`);
|
|
70
|
+
}
|
|
72
71
|
}
|
|
73
72
|
catch (e) {
|
|
74
73
|
env_1.logger.error(`retryCreateLmdParcels[MainError]: ${e}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry-create-lmd-parcels.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/retry-create-lmd-parcels.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"retry-create-lmd-parcels.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/synchronization/retry-create-lmd-parcels.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/operato-hub",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.402",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -121,5 +121,5 @@
|
|
|
121
121
|
"resolutions": {
|
|
122
122
|
"core-js": "^3.16.0"
|
|
123
123
|
},
|
|
124
|
-
"gitHead": "
|
|
124
|
+
"gitHead": "9dc6193d01e0b821a44bacdd410a8679ef272a16"
|
|
125
125
|
}
|
|
@@ -1,61 +1,31 @@
|
|
|
1
|
-
import { getRepository,
|
|
1
|
+
import { getRepository, SelectQueryBuilder } from 'typeorm'
|
|
2
2
|
|
|
3
|
-
import { OrderPackage, ORDER_STATUS, ReleaseGood } from '@things-factory/sales-base'
|
|
4
|
-
import { processAwbAndTrackingNo, SellercraftController } from '@things-factory/worksheet-base'
|
|
5
|
-
import { Sellercraft, SellercraftStatus } from '@things-factory/integration-sellercraft'
|
|
6
|
-
import { ApplicationType } from '@things-factory/auth-base'
|
|
7
|
-
import { Setting } from '@things-factory/setting-base'
|
|
8
3
|
import { logger } from '@things-factory/env'
|
|
4
|
+
import { ORDER_STATUS, OrderPackage } from '@things-factory/sales-base'
|
|
5
|
+
import { processAwbAndTrackingNo } from '@things-factory/worksheet-base'
|
|
9
6
|
|
|
10
7
|
export const getLmdAwbResolver = {
|
|
11
8
|
async getLmdAwb(_: any, {}, context: any) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const orderPackages: OrderPackage[] = await qb.getMany()
|
|
27
|
-
|
|
28
|
-
await processAwbAndTrackingNo(orderPackages)
|
|
9
|
+
try {
|
|
10
|
+
const qb: SelectQueryBuilder<OrderPackage> = getRepository(OrderPackage)
|
|
11
|
+
.createQueryBuilder('op')
|
|
12
|
+
.innerJoinAndSelect('op.releaseGood', 'rg')
|
|
13
|
+
.innerJoinAndSelect('rg.domain', 'd')
|
|
14
|
+
.innerJoinAndSelect('rg.bizplace', 'b')
|
|
15
|
+
.innerJoinAndSelect('b.domain', 'd2')
|
|
16
|
+
.leftJoinAndSelect('rg.lastMileDelivery', 'lmd')
|
|
17
|
+
.where('rg.lmd_option = true')
|
|
18
|
+
.andWhere('rg.status NOT IN (:...statuses)', {
|
|
19
|
+
statuses: [ORDER_STATUS.CANCELLED, ORDER_STATUS.PENDING_CANCEL, ORDER_STATUS.DONE]
|
|
20
|
+
})
|
|
21
|
+
.andWhere('op.parcel_id IS NOT NULL')
|
|
22
|
+
.andWhere('op.airway_bill IS NULL')
|
|
29
23
|
|
|
30
|
-
|
|
24
|
+
const orderPackages: OrderPackage[] = await qb.getMany()
|
|
31
25
|
|
|
32
|
-
|
|
33
|
-
let uniqueReleaseOrders: ReleaseGood = [...new Map(releaseOrders.map(item => [item['id'], item])).values()]
|
|
34
|
-
|
|
35
|
-
for (let releaseOrder of uniqueReleaseOrders) {
|
|
36
|
-
const orderSource: string = releaseOrder.source
|
|
37
|
-
|
|
38
|
-
if (orderSource == ApplicationType.SELLERCRAFT) {
|
|
39
|
-
const sellercraft: Sellercraft = await getRepository(Sellercraft).findOne({
|
|
40
|
-
domain: releaseOrder.bizplace.domain,
|
|
41
|
-
status: SellercraftStatus.ACTIVE
|
|
42
|
-
})
|
|
43
|
-
if (sellercraft) {
|
|
44
|
-
await getConnection().transaction(async tx => {
|
|
45
|
-
const sellercraftCtrl: SellercraftController = new SellercraftController(tx, null, null)
|
|
46
|
-
const rtsTriggerLevel: Setting = await tx.getRepository(Setting).findOne({
|
|
47
|
-
where: { domain: releaseOrder.domain, category: 'id-rule', name: 'rts-trigger-level' }
|
|
48
|
-
})
|
|
49
|
-
|
|
50
|
-
if (rtsTriggerLevel && parseInt(rtsTriggerLevel?.value || 0) == 1) {
|
|
51
|
-
await sellercraftCtrl.initiateOrderShipment(sellercraft, releaseOrder)
|
|
52
|
-
}
|
|
53
|
-
})
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
26
|
+
processAwbAndTrackingNo(orderPackages)
|
|
57
27
|
} catch (e) {
|
|
58
|
-
logger.error(`[
|
|
28
|
+
logger.error(`[getLmdAwb]: ${e}`)
|
|
59
29
|
}
|
|
60
30
|
}
|
|
61
31
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getConnection } from 'typeorm'
|
|
1
|
+
import { getConnection, getRepository } from 'typeorm'
|
|
2
2
|
|
|
3
3
|
import { logger } from '@things-factory/env'
|
|
4
4
|
import { MarketplaceOrder } from '@things-factory/marketplace-base'
|
|
@@ -8,75 +8,72 @@ import { createLmdParcel, Worksheet } from '@things-factory/worksheet-base'
|
|
|
8
8
|
export const retryCreateLmdParcelsResolver = {
|
|
9
9
|
async retryCreateLmdParcels(_: void, {}, context: any): Promise<void> {
|
|
10
10
|
try {
|
|
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
|
-
.limit(500)
|
|
11
|
+
try {
|
|
12
|
+
let releaseGoodQb = getRepository(ReleaseGood)
|
|
13
|
+
.createQueryBuilder('rg')
|
|
14
|
+
.innerJoinAndSelect('rg.lastMileDelivery', 'lmd')
|
|
15
|
+
.innerJoinAndSelect('rg.domain', 'domain')
|
|
16
|
+
.innerJoinAndSelect('rg.bizplace', 'bizplace')
|
|
17
|
+
.innerJoinAndSelect('rg.creator', 'creator')
|
|
18
|
+
.leftJoinAndMapOne('rg.marketplaceOrder', MarketplaceOrder, 'mo', 'mo.order_no = rg.ref_no')
|
|
19
|
+
.where(`rg.lmd_option = true`)
|
|
20
|
+
.andWhere(`rg.status IN (:...status)`, {
|
|
21
|
+
status: [ORDER_STATUS.PICKING, ORDER_STATUS.READY_TO_PACK, ORDER_STATUS.PACKING]
|
|
22
|
+
})
|
|
23
|
+
.andWhere(`COALESCE(rg.count_parcel,0) <= 5`)
|
|
24
|
+
.andWhere(qb => {
|
|
25
|
+
const subQuery = qb
|
|
26
|
+
.subQuery()
|
|
27
|
+
.from(Worksheet, 'ws')
|
|
28
|
+
.innerJoin('ws.worksheetDetails', 'wsd')
|
|
29
|
+
.innerJoin('wsd.targetInventory', 'oi')
|
|
30
|
+
.where('rg.id = oi.release_good_id')
|
|
31
|
+
.andWhere('ws.type IN (:...wsType)', { wsType: ['PICKING', 'BATCH_PICKING'] })
|
|
32
|
+
.andWhere('EXTRACT(EPOCH FROM(CURRENT_TIMESTAMP-ws.started_at)) > 240')
|
|
33
|
+
.getQuery()
|
|
34
|
+
return 'EXISTS ' + subQuery
|
|
35
|
+
})
|
|
36
|
+
.andWhere(qb => {
|
|
37
|
+
const subQuery = qb
|
|
38
|
+
.subQuery()
|
|
39
|
+
.from(OrderPackage, 'opk')
|
|
40
|
+
.where('rg.id = opk.release_good_id')
|
|
41
|
+
.andWhere('opk.parcel_id ISNULL')
|
|
42
|
+
.getQuery()
|
|
43
|
+
return 'EXISTS ' + subQuery
|
|
44
|
+
})
|
|
45
|
+
.limit(500)
|
|
48
46
|
|
|
49
|
-
|
|
47
|
+
let releaseGoods: ReleaseGood[] = await releaseGoodQb.getMany()
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
})
|
|
66
|
-
await createLmdParcel(
|
|
67
|
-
[newReleaseGood],
|
|
68
|
-
tx,
|
|
69
|
-
newReleaseGood.domain,
|
|
70
|
-
releaseGood.user,
|
|
71
|
-
releaseGood?.marketplaceOrder
|
|
72
|
-
)
|
|
49
|
+
if (releaseGoods?.length) {
|
|
50
|
+
for (const releaseGood of releaseGoods) {
|
|
51
|
+
await getConnection().transaction(async tx => {
|
|
52
|
+
let newReleaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne({
|
|
53
|
+
where: { id: releaseGood.id },
|
|
54
|
+
relations: [
|
|
55
|
+
'domain',
|
|
56
|
+
'lastMileDelivery',
|
|
57
|
+
'orderPackages',
|
|
58
|
+
'orderPackages.orderPackageItems',
|
|
59
|
+
'orderPackages.orderPackageItems.orderProduct',
|
|
60
|
+
'orderPackages.orderPackageItems.orderProduct.product',
|
|
61
|
+
'orderPackages.orderPackageItems.orderProduct.productDetail'
|
|
62
|
+
]
|
|
73
63
|
})
|
|
74
|
-
|
|
64
|
+
createLmdParcel(
|
|
65
|
+
[newReleaseGood],
|
|
66
|
+
tx,
|
|
67
|
+
newReleaseGood.domain,
|
|
68
|
+
releaseGood.user,
|
|
69
|
+
releaseGood?.marketplaceOrder
|
|
70
|
+
)
|
|
71
|
+
})
|
|
75
72
|
}
|
|
76
|
-
} catch (e) {
|
|
77
|
-
logger.error(`retryCreateLmdParcels[GetTrackingNo]: ${e}`)
|
|
78
73
|
}
|
|
79
|
-
})
|
|
74
|
+
} catch (e) {
|
|
75
|
+
logger.error(`retryCreateLmdParcels[GetTrackingNo]: ${e}`)
|
|
76
|
+
}
|
|
80
77
|
} catch (e) {
|
|
81
78
|
logger.error(`retryCreateLmdParcels[MainError]: ${e}`)
|
|
82
79
|
}
|