@things-factory/worksheet-base 4.3.86 → 4.3.87
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/worksheet/picking/fetch-and-assign-picking-task.js +38 -36
- package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js.map +1 -1
- package/package.json +2 -2
- package/server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.ts +42 -41
|
@@ -25,8 +25,7 @@ exports.fetchAndAssignPickingTaskResolver = {
|
|
|
25
25
|
.select('ws.id')
|
|
26
26
|
.addSelect('ws.name')
|
|
27
27
|
.addSelect('ws.status')
|
|
28
|
-
.
|
|
29
|
-
.innerJoin('ws.releaseGood', 'rg')
|
|
28
|
+
.innerJoinAndSelect('ws.releaseGood', 'rg')
|
|
30
29
|
.where('(ws.domain_id = :domain_id AND ws.type = :type AND ws.assignee_id =:assignee AND (ws.status = :status1 OR ws.status = :status2))', {
|
|
31
30
|
domain_id: domain.id,
|
|
32
31
|
type: constants_1.WORKSHEET_TYPE.PICKING,
|
|
@@ -47,42 +46,45 @@ exports.fetchAndAssignPickingTaskResolver = {
|
|
|
47
46
|
return 'NOT EXISTS ' + subQuery;
|
|
48
47
|
})
|
|
49
48
|
.orderBy('"rg"."created_at"', 'ASC');
|
|
50
|
-
worksheet = await worksheetQb.
|
|
49
|
+
worksheet = await worksheetQb.getOne();
|
|
51
50
|
if (!worksheet) {
|
|
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
|
-
if (
|
|
51
|
+
// update and return updated worksheet id
|
|
52
|
+
let updatedWorksheets = await (0, typeorm_1.getConnection)().transaction(async (tx2) => {
|
|
53
|
+
let x = await tx2.getRepository(entities_1.Worksheet).query(`
|
|
54
|
+
UPDATE worksheets ws SET assignee_id = $2,
|
|
55
|
+
updated_at = NOW(),
|
|
56
|
+
updater_id = $2
|
|
57
|
+
FROM (
|
|
58
|
+
SELECT ws.id, ws.name, ws.status, ws.release_good_id FROM worksheets ws
|
|
59
|
+
INNER JOIN release_goods rg ON rg.id = ws.release_good_id
|
|
60
|
+
WHERE
|
|
61
|
+
ws.domain_id = $1 AND
|
|
62
|
+
ws.type = 'PICKING' AND
|
|
63
|
+
ws.assignee_id IS NULL AND
|
|
64
|
+
(ws.status = 'EXECUTING' OR ws.status = 'DEACTIVATED') AND
|
|
65
|
+
NOT EXISTS (
|
|
66
|
+
SELECT count(id) AS "totalPS"
|
|
67
|
+
FROM order_inventories oi
|
|
68
|
+
WHERE oi.release_good_id = ws.release_good_id AND
|
|
69
|
+
oi.status = 'PENDING_SPLIT'
|
|
70
|
+
GROUP BY oi.release_good_id
|
|
71
|
+
HAVING count(id) > 0
|
|
72
|
+
)
|
|
73
|
+
ORDER BY rg.release_date, rg.created_at LIMIT 1
|
|
74
|
+
) src where src.id = ws.id
|
|
75
|
+
RETURNING ws.id;
|
|
76
|
+
`, [domain.id, assignee.id]);
|
|
77
|
+
return x[0];
|
|
78
|
+
});
|
|
79
|
+
if (updatedWorksheets.length == 0)
|
|
81
80
|
throw new Error('no suitable worksheet found');
|
|
82
|
-
|
|
81
|
+
// relace worksheet with newly assigned worksheet
|
|
82
|
+
worksheet = await tx
|
|
83
|
+
.getRepository(entities_1.Worksheet)
|
|
84
|
+
.findOne({ where: { id: updatedWorksheets[0].id }, relations: ['releaseGood'] });
|
|
83
85
|
}
|
|
84
|
-
if (worksheet.
|
|
85
|
-
await (0, activate_picking_1.activatePicking)(tx, domain, user, worksheet.
|
|
86
|
+
if (worksheet.status == constants_1.WORKSHEET_STATUS.DEACTIVATED)
|
|
87
|
+
await (0, activate_picking_1.activatePicking)(tx, domain, user, worksheet.name);
|
|
86
88
|
const locationSortingRules = await tx.getRepository(setting_base_1.Setting).findOne({
|
|
87
89
|
where: { domain, name: 'rule-for-picking-product' }
|
|
88
90
|
});
|
|
@@ -90,7 +92,7 @@ exports.fetchAndAssignPickingTaskResolver = {
|
|
|
90
92
|
const locationSortingRule = Object.keys(sortingRule).map(field => {
|
|
91
93
|
return { name: field, desc: sortingRule[field] === 'DESC' };
|
|
92
94
|
});
|
|
93
|
-
const releaseGood = await tx.getRepository(sales_base_1.ReleaseGood).findOne(worksheet.
|
|
95
|
+
const releaseGood = await tx.getRepository(sales_base_1.ReleaseGood).findOne(worksheet.releaseGood.id);
|
|
94
96
|
return await (0, picking_worksheet_1.pickingWorksheet)(domain, releaseGood.name, locationSortingRule, tx);
|
|
95
97
|
}
|
|
96
98
|
catch (error) {
|
package/dist-server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-and-assign-picking-task.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.ts"],"names":[],"mappings":";;;AAAA,qCAAsD;AAEtD,yDAAgD;AAChD,2DAAwE;AACxE,+DAAsD;AAGtD,qDAAwE;AACxE,mDAAgD;AAChD,4DAAuD;AACvD,yDAAoD;AAEvC,QAAA,iCAAiC,GAAG;IAC/C,KAAK,CAAC,yBAAyB,CAAC,CAAM,EAAE,EAAE,EAAE,OAAY;QACtD,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,GAAsD,OAAO,CAAC,KAAK,CAAA;YAC7F,MAAM,QAAQ,GAAS,MAAM,EAAE,CAAC,aAAa,CAAC,gBAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;YAChG,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,KAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,UAAkB,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC;gBACtF,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;YAEhE,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;YAE5D,IAAI,
|
|
1
|
+
{"version":3,"file":"fetch-and-assign-picking-task.js","sourceRoot":"","sources":["../../../../../server/graphql/resolvers/worksheet/picking/fetch-and-assign-picking-task.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/worksheet-base",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.87",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
"@things-factory/transport-base": "^4.3.86",
|
|
41
41
|
"@things-factory/warehouse-base": "^4.3.86"
|
|
42
42
|
},
|
|
43
|
-
"gitHead": "
|
|
43
|
+
"gitHead": "a8a7a0ddad241a559d0d6b24c4d7e6503f81049b"
|
|
44
44
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { EntityManager,
|
|
1
|
+
import { EntityManager, getConnection } from 'typeorm'
|
|
2
2
|
|
|
3
3
|
import { User } from '@things-factory/auth-base'
|
|
4
|
-
import {
|
|
4
|
+
import { OrderInventory, ReleaseGood } from '@things-factory/sales-base'
|
|
5
5
|
import { Setting } from '@things-factory/setting-base'
|
|
6
6
|
import { Domain } from '@things-factory/shell'
|
|
7
7
|
|
|
@@ -20,15 +20,14 @@ export const fetchAndAssignPickingTaskResolver = {
|
|
|
20
20
|
|
|
21
21
|
if (!assignee) throw new Error('failed to find target user')
|
|
22
22
|
|
|
23
|
-
let worksheet:
|
|
23
|
+
let worksheet: Worksheet
|
|
24
24
|
let worksheetQb = await tx
|
|
25
25
|
.getRepository(Worksheet)
|
|
26
26
|
.createQueryBuilder('ws')
|
|
27
27
|
.select('ws.id')
|
|
28
28
|
.addSelect('ws.name')
|
|
29
29
|
.addSelect('ws.status')
|
|
30
|
-
.
|
|
31
|
-
.innerJoin('ws.releaseGood', 'rg')
|
|
30
|
+
.innerJoinAndSelect('ws.releaseGood', 'rg')
|
|
32
31
|
.where(
|
|
33
32
|
'(ws.domain_id = :domain_id AND ws.type = :type AND ws.assignee_id =:assignee AND (ws.status = :status1 OR ws.status = :status2))',
|
|
34
33
|
{
|
|
@@ -53,48 +52,50 @@ export const fetchAndAssignPickingTaskResolver = {
|
|
|
53
52
|
})
|
|
54
53
|
.orderBy('"rg"."created_at"', 'ASC')
|
|
55
54
|
|
|
56
|
-
worksheet = await worksheetQb.
|
|
55
|
+
worksheet = await worksheetQb.getOne()
|
|
57
56
|
|
|
58
57
|
if (!worksheet) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
domain_id
|
|
71
|
-
type
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
58
|
+
// update and return updated worksheet id
|
|
59
|
+
let updatedWorksheets = await getConnection().transaction(async (tx2: EntityManager) => {
|
|
60
|
+
let x = await tx2.getRepository(Worksheet).query(
|
|
61
|
+
`
|
|
62
|
+
UPDATE worksheets ws SET assignee_id = $2,
|
|
63
|
+
updated_at = NOW(),
|
|
64
|
+
updater_id = $2
|
|
65
|
+
FROM (
|
|
66
|
+
SELECT ws.id, ws.name, ws.status, ws.release_good_id FROM worksheets ws
|
|
67
|
+
INNER JOIN release_goods rg ON rg.id = ws.release_good_id
|
|
68
|
+
WHERE
|
|
69
|
+
ws.domain_id = $1 AND
|
|
70
|
+
ws.type = 'PICKING' AND
|
|
71
|
+
ws.assignee_id IS NULL AND
|
|
72
|
+
(ws.status = 'EXECUTING' OR ws.status = 'DEACTIVATED') AND
|
|
73
|
+
NOT EXISTS (
|
|
74
|
+
SELECT count(id) AS "totalPS"
|
|
75
|
+
FROM order_inventories oi
|
|
76
|
+
WHERE oi.release_good_id = ws.release_good_id AND
|
|
77
|
+
oi.status = 'PENDING_SPLIT'
|
|
78
|
+
GROUP BY oi.release_good_id
|
|
79
|
+
HAVING count(id) > 0
|
|
80
|
+
)
|
|
81
|
+
ORDER BY rg.release_date, rg.created_at LIMIT 1
|
|
82
|
+
) src where src.id = ws.id
|
|
83
|
+
RETURNING ws.id;
|
|
84
|
+
`,
|
|
85
|
+
[domain.id, assignee.id]
|
|
75
86
|
)
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
.subQuery()
|
|
79
|
-
.select('COUNT(*) AS totalPS')
|
|
80
|
-
.from(OrderInventory, 'OrderInventory')
|
|
81
|
-
.where('OrderInventory.release_good_id = ws.release_good_id')
|
|
82
|
-
.andWhere(`OrderInventory.status = 'PENDING_SPLIT'`)
|
|
83
|
-
.groupBy('OrderInventory.release_good_id')
|
|
84
|
-
.having('COUNT(*) > 0')
|
|
85
|
-
.getQuery()
|
|
86
|
-
return 'NOT EXISTS ' + subQuery
|
|
87
|
-
})
|
|
88
|
-
.orderBy('"rg"."created_at"', 'ASC')
|
|
87
|
+
return x[0]
|
|
88
|
+
})
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
if (updatedWorksheets.length == 0) throw new Error('no suitable worksheet found')
|
|
91
91
|
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
// relace worksheet with newly assigned worksheet
|
|
93
|
+
worksheet = await tx
|
|
94
|
+
.getRepository(Worksheet)
|
|
95
|
+
.findOne({ where: { id: updatedWorksheets[0].id }, relations: ['releaseGood'] })
|
|
94
96
|
}
|
|
95
97
|
|
|
96
|
-
if (worksheet.
|
|
97
|
-
await activatePicking(tx, domain, user, worksheet.ws_name)
|
|
98
|
+
if (worksheet.status == WORKSHEET_STATUS.DEACTIVATED) await activatePicking(tx, domain, user, worksheet.name)
|
|
98
99
|
|
|
99
100
|
const locationSortingRules: Setting = await tx.getRepository(Setting).findOne({
|
|
100
101
|
where: { domain, name: 'rule-for-picking-product' }
|
|
@@ -105,7 +106,7 @@ export const fetchAndAssignPickingTaskResolver = {
|
|
|
105
106
|
return { name: field, desc: sortingRule[field] === 'DESC' }
|
|
106
107
|
})
|
|
107
108
|
|
|
108
|
-
const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne(worksheet.
|
|
109
|
+
const releaseGood: ReleaseGood = await tx.getRepository(ReleaseGood).findOne(worksheet.releaseGood.id)
|
|
109
110
|
|
|
110
111
|
return await pickingWorksheet(domain, releaseGood.name, locationSortingRule, tx)
|
|
111
112
|
} catch (error) {
|