@things-factory/operato-hub 4.3.328 → 4.3.330
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/email/send-emails.js +130 -104
- package/dist-server/graphql/resolvers/email/send-emails.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.js +4 -2
- package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.js.map +1 -1
- package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.js +4 -2
- package/dist-server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.js.map +1 -1
- package/openapi/v1/inbound.yaml +25 -11
- package/package.json +5 -5
- package/server/graphql/resolvers/email/send-emails.ts +191 -154
- package/server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.ts +4 -2
- package/server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.ts +4 -2
|
@@ -36,6 +36,7 @@ const email_base_1 = require("@things-factory/email-base");
|
|
|
36
36
|
const env_1 = require("@things-factory/env");
|
|
37
37
|
const shell_1 = require("@things-factory/shell");
|
|
38
38
|
const entities_1 = require("../../../entities");
|
|
39
|
+
const { PerformanceObserver, performance } = require('node:perf_hooks');
|
|
39
40
|
const EMAIL_SEARCH_INTERVAL = 35;
|
|
40
41
|
exports.sendEmailsResolver = {
|
|
41
42
|
async sendEmails(_, {}, context) {
|
|
@@ -94,111 +95,136 @@ function flattenObject(obj, delimiter = '|') {
|
|
|
94
95
|
return objResult;
|
|
95
96
|
}
|
|
96
97
|
async function processEmailCronJob(email, fromDate, toDate) {
|
|
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
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
98
|
+
try {
|
|
99
|
+
performance.mark(`processEmailCronJob start:(${email.id})`);
|
|
100
|
+
// processEmailStartTime = performance.now()
|
|
101
|
+
let attachments = [];
|
|
102
|
+
// black list filtration
|
|
103
|
+
// let partnerBlackList = JSON.parse(email.partnerBlackList) || []
|
|
104
|
+
// partner list
|
|
105
|
+
let partnerList = JSON.parse(email.partnerList) || [];
|
|
106
|
+
const partners = await (0, typeorm_1.getRepository)(auth_base_1.Partner).find({
|
|
107
|
+
where: { domain: email.domain, id: (0, typeorm_1.In)(partnerList) },
|
|
108
|
+
relations: ['partnerDomain']
|
|
109
|
+
});
|
|
110
|
+
// retrieve and process xlsx attachmennts
|
|
111
|
+
for (let attachment of email.emailAttachments) {
|
|
112
|
+
let client = shell_1.GraphqlLocalClient.client;
|
|
113
|
+
let attachmentVariables = JSON.parse(attachment.attachmentVariables);
|
|
114
|
+
let numberOfMonths = (attachmentVariables === null || attachmentVariables === void 0 ? void 0 : attachmentVariables.numberOfMonths) || 1;
|
|
115
|
+
let numberOfWeeks = (attachmentVariables === null || attachmentVariables === void 0 ? void 0 : attachmentVariables.numberOfWeeks) ? attachmentVariables.numberOfWeeks * 7 : 7;
|
|
116
|
+
let numberOfDays = (attachmentVariables === null || attachmentVariables === void 0 ? void 0 : attachmentVariables.numberOfDays) || 1;
|
|
117
|
+
for (let partner of partners) {
|
|
118
|
+
const bizplace = await (0, typeorm_1.getRepository)(biz_base_1.Bizplace).findOne({
|
|
119
|
+
where: { domain: partner.partnerDomain }
|
|
120
|
+
});
|
|
121
|
+
// date params processing
|
|
122
|
+
// let dateValue = new Date()
|
|
123
|
+
// let yesterday = dateValue.getDate() - 1
|
|
124
|
+
// let yesterdayBegin: any = new Date(dateValue.setDate(yesterday))
|
|
125
|
+
// let yesterdayEnd: any = new Date(dateValue.setDate(yesterday))
|
|
126
|
+
// yesterdayBegin.setHours(0, 0, 0, 0)
|
|
127
|
+
// yesterdayEnd.setHours(23, 59, 59, 999)
|
|
128
|
+
let timezoneOffset = (email === null || email === void 0 ? void 0 : email.timezoneOffset) || 0;
|
|
129
|
+
let curDate = new Date();
|
|
130
|
+
let curDateForMonth = new Date(curDate);
|
|
131
|
+
let curDateForWeek = new Date(curDate);
|
|
132
|
+
let curDateForDay = new Date(curDate);
|
|
133
|
+
let prevMonth = curDateForMonth.getMonth() - numberOfMonths;
|
|
134
|
+
let prevMonthBegin = new Date(curDateForMonth.setMonth(prevMonth));
|
|
135
|
+
prevMonthBegin.setHours(0, 0, 0, 0);
|
|
136
|
+
let prevMonthBeginDateTime = new Date(prevMonthBegin - timezoneOffset * 60000).toISOString();
|
|
137
|
+
let prevWeek = curDateForWeek.getDate() - numberOfWeeks; // subtract 1 week
|
|
138
|
+
let prevWeekBegin = new Date(curDateForWeek.setDate(prevWeek));
|
|
139
|
+
prevWeekBegin.setHours(0, 0, 0, 0);
|
|
140
|
+
let prevWeekBeginDateTime = new Date(prevWeekBegin - timezoneOffset * 60000).toISOString();
|
|
141
|
+
let prevDay = curDateForDay.getDate() - numberOfDays; // subtract 1 day
|
|
142
|
+
let prevDayBegin = new Date(curDateForDay.setDate(prevDay));
|
|
143
|
+
prevDayBegin.setHours(0, 0, 0, 0);
|
|
144
|
+
let prevDayBeginDateTime = new Date(prevDayBegin - timezoneOffset * 60000).toISOString();
|
|
145
|
+
let endDate = curDate;
|
|
146
|
+
endDate.setHours(23, 59, 59, 999);
|
|
147
|
+
let endDateTime = new Date(endDate - timezoneOffset * 60000).toISOString();
|
|
148
|
+
// let fromDate = new Date(yesterdayBegin - timezoneOffset * 60000).toISOString()
|
|
149
|
+
// let toDate = new Date(yesterdayEnd - timezoneOffset * 60000).toISOString()
|
|
150
|
+
// to trace UTC conversion in production
|
|
151
|
+
env_1.logger.info(`[email_utc_conversion] fromDate: ${fromDate}, toDate: ${toDate}`);
|
|
152
|
+
let variables = replaceValues(attachment.variables, [
|
|
153
|
+
{ name: '{{bizplaceId}}', value: `"${bizplace.id}"` },
|
|
154
|
+
{ name: '{{timezoneOffset}}', value: `${timezoneOffset}` },
|
|
155
|
+
{ name: '{{lastRunDateTime}}', value: `"${fromDate}"` },
|
|
156
|
+
{ name: '{{toDateTime}}', value: `"${endDateTime}"` },
|
|
157
|
+
{ name: '{{prevMonthBeginDateTime}}', value: `"${prevMonthBeginDateTime}"` },
|
|
158
|
+
{ name: '{{prevWeekBeginDateTime}}', value: `"${prevWeekBeginDateTime}"` },
|
|
159
|
+
{ name: '{{prevDayBeginDateTime}}', value: `"${prevDayBeginDateTime}"` }
|
|
160
|
+
]);
|
|
161
|
+
let user = email.creator;
|
|
162
|
+
delete user.creatorId;
|
|
163
|
+
delete user.updaterId;
|
|
164
|
+
// might show unused because of usage in eval
|
|
165
|
+
const response = await client.query({
|
|
166
|
+
query: (0, graphql_tag_1.default) `
|
|
167
|
+
${attachment.gqlString}
|
|
168
|
+
`,
|
|
169
|
+
variables: variables || {},
|
|
170
|
+
context: { state: { domain: email.domain, user } }
|
|
171
|
+
});
|
|
172
|
+
let excelResponse;
|
|
173
|
+
try {
|
|
174
|
+
performance.mark(`objDataToExcel start:${email.id}`);
|
|
175
|
+
let mappedResponse = eval(attachment.mappingFunction);
|
|
176
|
+
let header = JSON.parse(attachment.headers);
|
|
177
|
+
excelResponse = await (0, email_base_1.objDataToExcel)({ name: 'name', data: { header, data: mappedResponse } });
|
|
178
|
+
performance.mark(`objDataToExcel end:${email.id}`);
|
|
179
|
+
}
|
|
180
|
+
catch (e) {
|
|
181
|
+
performance.mark(`objDataToExcel end:${email.id}`);
|
|
182
|
+
env_1.logger.error(`[send-email] objDataToExcel(${email.id}): ${e}`);
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
let perf = performance.measure(`emailId:${email.id}`, `objDataToExcel start:${email.id}`, `objDataToExcel end:${email.id}`);
|
|
186
|
+
env_1.logger.info(`objDataToExcel performance: ${perf.toJSON()}`);
|
|
187
|
+
}
|
|
188
|
+
attachments.push({
|
|
189
|
+
filename: `${bizplace.name} - ${attachment.name}.xlsx`,
|
|
190
|
+
content: excelResponse,
|
|
191
|
+
contentType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
|
|
192
|
+
});
|
|
193
|
+
}
|
|
176
194
|
}
|
|
195
|
+
// modify content and subject
|
|
196
|
+
let bizplace = await (0, typeorm_1.getRepository)(biz_base_1.Bizplace).findOne({
|
|
197
|
+
where: { domain: email.domain },
|
|
198
|
+
relations: ['company']
|
|
199
|
+
});
|
|
200
|
+
let modifiedContent = email.content.replace('{{companyName}}', bizplace.company.name);
|
|
201
|
+
let modifiedSubject = email.subject.replace('{{warehouseName}}', email.domain.name);
|
|
202
|
+
modifiedSubject = modifiedSubject.replace('{{reportDate}}', new Date().toLocaleDateString('en-GB'));
|
|
203
|
+
let res = await (0, email_base_1.sendEmailSes)({
|
|
204
|
+
attachments,
|
|
205
|
+
subject: modifiedSubject,
|
|
206
|
+
content: modifiedContent,
|
|
207
|
+
toMailList: email.emailRecipients
|
|
208
|
+
.filter(er => er.type == 'to')
|
|
209
|
+
.map(er => {
|
|
210
|
+
return er.emailAddress;
|
|
211
|
+
}) || [],
|
|
212
|
+
ccMailList: email.emailRecipients
|
|
213
|
+
.filter(er => er.type == 'cc')
|
|
214
|
+
.map(er => {
|
|
215
|
+
return er.emailAddress;
|
|
216
|
+
}) || []
|
|
217
|
+
});
|
|
218
|
+
await (0, typeorm_1.getRepository)(entities_1.Email).update({ id: email.id }, { lastSent: new Date().toISOString() });
|
|
219
|
+
performance.mark(`processEmailCronJob end:(${email.id})`);
|
|
220
|
+
}
|
|
221
|
+
catch (e) {
|
|
222
|
+
performance.mark(`processEmailCronJob end:(${email.id})`);
|
|
223
|
+
env_1.logger.error(`[send-email] processEmailCronJob(${email.id}): ${e}`);
|
|
224
|
+
}
|
|
225
|
+
finally {
|
|
226
|
+
let perf = performance.measure(`emailId:${email.id}`, `processEmailCronJob start:(${email.id})`, `processEmailCronJob end:(${email.id})`);
|
|
227
|
+
env_1.logger.info(`processEmailCronJob performance: ${perf.toJSON()}`);
|
|
177
228
|
}
|
|
178
|
-
// modify content and subject
|
|
179
|
-
let bizplace = await (0, typeorm_1.getRepository)(biz_base_1.Bizplace).findOne({
|
|
180
|
-
where: { domain: email.domain },
|
|
181
|
-
relations: ['company']
|
|
182
|
-
});
|
|
183
|
-
let modifiedContent = email.content.replace('{{companyName}}', bizplace.company.name);
|
|
184
|
-
let modifiedSubject = email.subject.replace('{{warehouseName}}', email.domain.name);
|
|
185
|
-
modifiedSubject = modifiedSubject.replace('{{reportDate}}', new Date().toLocaleDateString('en-GB'));
|
|
186
|
-
//
|
|
187
|
-
let res = await (0, email_base_1.sendEmailSes)({
|
|
188
|
-
attachments,
|
|
189
|
-
subject: modifiedSubject,
|
|
190
|
-
content: modifiedContent,
|
|
191
|
-
toMailList: email.emailRecipients
|
|
192
|
-
.filter(er => er.type == 'to')
|
|
193
|
-
.map(er => {
|
|
194
|
-
return er.emailAddress;
|
|
195
|
-
}) || [],
|
|
196
|
-
ccMailList: email.emailRecipients
|
|
197
|
-
.filter(er => er.type == 'cc')
|
|
198
|
-
.map(er => {
|
|
199
|
-
return er.emailAddress;
|
|
200
|
-
}) || []
|
|
201
|
-
});
|
|
202
|
-
await (0, typeorm_1.getRepository)(entities_1.Email).update({ id: email.id }, { lastSent: new Date().toISOString() });
|
|
203
229
|
}
|
|
204
230
|
//# sourceMappingURL=send-emails.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-emails.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/email/send-emails.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wDAAyC;AACzC,8DAA6B;AAC7B,
|
|
1
|
+
{"version":3,"file":"send-emails.js","sourceRoot":"","sources":["../../../../server/graphql/resolvers/email/send-emails.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
6
7
|
const typeorm_1 = require("typeorm");
|
|
7
8
|
const api_1 = require("@things-factory/api");
|
|
8
9
|
const sales_base_1 = require("@things-factory/sales-base");
|
|
9
|
-
const error_util_1 = require("../utils/error-util");
|
|
10
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
11
10
|
const middlewares_1 = require("../middlewares");
|
|
11
|
+
const error_util_1 = require("../utils/error-util");
|
|
12
12
|
api_1.restfulApiRouter.get('/v1/warehouse/get-inbound-order-details', middlewares_1.businessMiddleware, middlewares_1.validationMiddleware, middlewares_1.loggingMiddleware, async (context, next) => {
|
|
13
13
|
var _a, _b, _c, _d;
|
|
14
14
|
try {
|
|
@@ -40,6 +40,8 @@ api_1.restfulApiRouter.get('/v1/warehouse/get-inbound-order-details', middleware
|
|
|
40
40
|
batchId: orderProduct.batchId,
|
|
41
41
|
packingType: orderProduct.packingType,
|
|
42
42
|
packingSize: orderProduct.packingSize,
|
|
43
|
+
uom: orderProduct.uom,
|
|
44
|
+
uomValue: orderProduct.uomValue,
|
|
43
45
|
qty: orderProduct.packQty,
|
|
44
46
|
palletQty: orderProduct.palletQty
|
|
45
47
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-inbound-order-details.js","sourceRoot":"","sources":["../../../../../../server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.ts"],"names":[],"mappings":";;;;;AAAA,qCAAuC;AAEvC,6CAAgE;AAChE,2DAA0D;AAE1D,
|
|
1
|
+
{"version":3,"file":"get-inbound-order-details.js","sourceRoot":"","sources":["../../../../../../server/routers/api/restful-apis/v1/warehouse/get-inbound-order-details.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
6
7
|
const typeorm_1 = require("typeorm");
|
|
7
8
|
const api_1 = require("@things-factory/api");
|
|
8
9
|
const sales_base_1 = require("@things-factory/sales-base");
|
|
9
|
-
const error_util_1 = require("../utils/error-util");
|
|
10
|
-
const lodash_1 = __importDefault(require("lodash"));
|
|
11
10
|
const middlewares_1 = require("../middlewares");
|
|
11
|
+
const error_util_1 = require("../utils/error-util");
|
|
12
12
|
api_1.restfulApiRouter.get('/v1/warehouse/get-inbound-order-list', middlewares_1.businessMiddleware, middlewares_1.validationMiddleware, middlewares_1.loggingMiddleware, async (context, next) => {
|
|
13
13
|
var _a, _b, _c, _d;
|
|
14
14
|
try {
|
|
@@ -48,6 +48,8 @@ api_1.restfulApiRouter.get('/v1/warehouse/get-inbound-order-list', middlewares_1
|
|
|
48
48
|
batchId: orderProduct.batchId,
|
|
49
49
|
packingType: orderProduct.packingType,
|
|
50
50
|
packingSize: orderProduct.packingSize,
|
|
51
|
+
uom: orderProduct.uom,
|
|
52
|
+
uomValue: orderProduct.uomValue,
|
|
51
53
|
qty: orderProduct.packQty,
|
|
52
54
|
palletQty: orderProduct.palletQty
|
|
53
55
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-inbound-order-list.js","sourceRoot":"","sources":["../../../../../../server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.ts"],"names":[],"mappings":";;;;;AAAA,qCAAgD;AAEhD,6CAAgE;AAChE,2DAA0D;AAE1D,
|
|
1
|
+
{"version":3,"file":"get-inbound-order-list.js","sourceRoot":"","sources":["../../../../../../server/routers/api/restful-apis/v1/warehouse/get-inbound-order-list.ts"],"names":[],"mappings":"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"}
|
package/openapi/v1/inbound.yaml
CHANGED
|
@@ -184,6 +184,13 @@ definitions:
|
|
|
184
184
|
packingSize:
|
|
185
185
|
type: 'integer'
|
|
186
186
|
example: 24
|
|
187
|
+
uom:
|
|
188
|
+
type: 'string'
|
|
189
|
+
example: 'UNIT'
|
|
190
|
+
uomValue:
|
|
191
|
+
type: 'integer'
|
|
192
|
+
format: 'double'
|
|
193
|
+
example: 24
|
|
187
194
|
qty:
|
|
188
195
|
type: 'integer'
|
|
189
196
|
example: 1
|
|
@@ -302,6 +309,13 @@ definitions:
|
|
|
302
309
|
packingSize:
|
|
303
310
|
type: 'integer'
|
|
304
311
|
example: 24
|
|
312
|
+
uom:
|
|
313
|
+
type: 'string'
|
|
314
|
+
example: 'UNIT'
|
|
315
|
+
uomValue:
|
|
316
|
+
type: 'integer'
|
|
317
|
+
format: 'double'
|
|
318
|
+
example: 24
|
|
305
319
|
qty:
|
|
306
320
|
type: 'integer'
|
|
307
321
|
example: 1
|
|
@@ -597,7 +611,7 @@ paths:
|
|
|
597
611
|
properties:
|
|
598
612
|
bizplaceId:
|
|
599
613
|
type: 'string'
|
|
600
|
-
example:
|
|
614
|
+
example: "ed2cd631-ac50-44aa-b798-6567d7acde63'(MANDATORY)"
|
|
601
615
|
required: true
|
|
602
616
|
refNo:
|
|
603
617
|
type: 'string'
|
|
@@ -610,10 +624,10 @@ paths:
|
|
|
610
624
|
example: 'reference doc 3'
|
|
611
625
|
etaDate:
|
|
612
626
|
type: 'string'
|
|
613
|
-
example:
|
|
627
|
+
example: "2019-10-31'(MANDATORY)"
|
|
614
628
|
required: true
|
|
615
629
|
ownTransport:
|
|
616
|
-
type:
|
|
630
|
+
type: "boolean'(MANDATORY)"
|
|
617
631
|
example: false
|
|
618
632
|
importCargo:
|
|
619
633
|
type: 'boolean'
|
|
@@ -635,7 +649,7 @@ paths:
|
|
|
635
649
|
example: '5 tonnes //compulsory when container is true'
|
|
636
650
|
supplierId:
|
|
637
651
|
type: 'string'
|
|
638
|
-
example:
|
|
652
|
+
example: "69a462c5-9a58-4a61-915d-7ef4c31c8937'(MANDATORY)"
|
|
639
653
|
orderProducts:
|
|
640
654
|
type: 'array'
|
|
641
655
|
items:
|
|
@@ -652,7 +666,7 @@ paths:
|
|
|
652
666
|
properties:
|
|
653
667
|
sku:
|
|
654
668
|
type: 'string'
|
|
655
|
-
example:
|
|
669
|
+
example: "00F8Y6'(MANDATORY)"
|
|
656
670
|
refCode:
|
|
657
671
|
type: 'string'
|
|
658
672
|
example: 'string'
|
|
@@ -665,7 +679,7 @@ paths:
|
|
|
665
679
|
example: 24
|
|
666
680
|
batchId:
|
|
667
681
|
type: 'string'
|
|
668
|
-
example:
|
|
682
|
+
example: "batch no 1'(MANDATORY)"
|
|
669
683
|
required: true
|
|
670
684
|
packingType:
|
|
671
685
|
type: 'string'
|
|
@@ -711,15 +725,15 @@ paths:
|
|
|
711
725
|
properties:
|
|
712
726
|
bizplaceId:
|
|
713
727
|
type: 'string'
|
|
714
|
-
example:
|
|
728
|
+
example: "ed2cd631-ac50-44aa-b798-6567d7acde63'(MANDATORY)"
|
|
715
729
|
required: true
|
|
716
730
|
ganNo:
|
|
717
731
|
type: 'string'
|
|
718
|
-
example:
|
|
732
|
+
example: "xxxxx'(MANDATORY)"
|
|
719
733
|
required: true
|
|
720
734
|
remark:
|
|
721
735
|
type: 'string'
|
|
722
|
-
example:
|
|
736
|
+
example: "reference reference'(MANDATORY)"
|
|
723
737
|
required: true
|
|
724
738
|
responses:
|
|
725
739
|
'200':
|
|
@@ -920,11 +934,11 @@ paths:
|
|
|
920
934
|
properties:
|
|
921
935
|
bizplaceId:
|
|
922
936
|
type: 'string'
|
|
923
|
-
example:
|
|
937
|
+
example: "string'(MANDATORY)"
|
|
924
938
|
required: true
|
|
925
939
|
ganNo:
|
|
926
940
|
type: 'string'
|
|
927
|
-
example:
|
|
941
|
+
example: "xxxxx'(MANDATORY)"
|
|
928
942
|
required: true
|
|
929
943
|
responses:
|
|
930
944
|
'200':
|
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.330",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -92,7 +92,7 @@
|
|
|
92
92
|
"@things-factory/pdf": "^4.3.281",
|
|
93
93
|
"@things-factory/product-ui": "^4.3.326",
|
|
94
94
|
"@things-factory/resource-ui": "^4.3.281",
|
|
95
|
-
"@things-factory/sales-base": "^4.3.
|
|
95
|
+
"@things-factory/sales-base": "^4.3.329",
|
|
96
96
|
"@things-factory/scene-data-transform": "^4.3.281",
|
|
97
97
|
"@things-factory/scene-excel": "^4.3.281",
|
|
98
98
|
"@things-factory/scene-firebase": "^4.3.281",
|
|
@@ -107,8 +107,8 @@
|
|
|
107
107
|
"@things-factory/setting-ui": "^4.3.281",
|
|
108
108
|
"@things-factory/shell": "^4.3.281",
|
|
109
109
|
"@things-factory/system-ui": "^4.3.281",
|
|
110
|
-
"@things-factory/warehouse-base": "^4.3.
|
|
111
|
-
"@things-factory/worksheet-base": "^4.3.
|
|
110
|
+
"@things-factory/warehouse-base": "^4.3.329",
|
|
111
|
+
"@things-factory/worksheet-base": "^4.3.329",
|
|
112
112
|
"cron-parser": "^4.7.0",
|
|
113
113
|
"koa2-swagger-ui": "^5.0.2",
|
|
114
114
|
"swagger-jsdoc": "^5.0.0",
|
|
@@ -120,5 +120,5 @@
|
|
|
120
120
|
"resolutions": {
|
|
121
121
|
"core-js": "^3.16.0"
|
|
122
122
|
},
|
|
123
|
-
"gitHead": "
|
|
123
|
+
"gitHead": "ad3bfe98841ad43e4c789cbd6cd0742321897c2a"
|
|
124
124
|
}
|
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
import * as cronParser from 'cron-parser'
|
|
2
2
|
import gql from 'graphql-tag'
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import {
|
|
4
|
+
getRepository,
|
|
5
|
+
In
|
|
6
|
+
} from 'typeorm'
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
Partner,
|
|
10
|
+
User
|
|
11
|
+
} from '@things-factory/auth-base'
|
|
6
12
|
import { Bizplace } from '@things-factory/biz-base'
|
|
7
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
objDataToExcel,
|
|
15
|
+
sendEmailSes
|
|
16
|
+
} from '@things-factory/email-base'
|
|
8
17
|
import { logger } from '@things-factory/env'
|
|
9
18
|
import { GraphqlLocalClient } from '@things-factory/shell'
|
|
10
19
|
|
|
11
20
|
import { Email } from '../../../entities'
|
|
12
21
|
|
|
22
|
+
const { PerformanceObserver, performance } = require('node:perf_hooks')
|
|
23
|
+
|
|
13
24
|
const EMAIL_SEARCH_INTERVAL = 35
|
|
14
25
|
|
|
15
26
|
export const sendEmailsResolver = {
|
|
@@ -30,7 +41,7 @@ export const sendEmailsResolver = {
|
|
|
30
41
|
|
|
31
42
|
if (dag < now && dag > thirtyMinsAgo) {
|
|
32
43
|
try {
|
|
33
|
-
|
|
44
|
+
processEmailCronJob(email, startDate.toISOString(), now.toISOString()) // removed await
|
|
34
45
|
} catch (e) {
|
|
35
46
|
logger.error(`[auto_email_log_by_id(${email.id})] ${e}`)
|
|
36
47
|
}
|
|
@@ -39,171 +50,197 @@ export const sendEmailsResolver = {
|
|
|
39
50
|
} catch (e) {
|
|
40
51
|
logger.error(`[auto_email_log] ${e}`)
|
|
41
52
|
}
|
|
42
|
-
|
|
43
53
|
return true
|
|
44
54
|
}
|
|
45
55
|
}
|
|
46
56
|
|
|
47
57
|
function replaceValues(variablesString: string, values: any = []) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
58
|
+
|
|
59
|
+
for (let obj of values) {
|
|
60
|
+
variablesString = variablesString.replace(obj.name, obj.value)
|
|
61
|
+
}
|
|
62
|
+
return JSON.parse(variablesString)
|
|
63
|
+
|
|
52
64
|
}
|
|
53
65
|
|
|
54
66
|
// NOTE: might show unused because of usage in eval function
|
|
55
67
|
function flattenObject(obj, delimiter = '|') {
|
|
56
|
-
var objResult = {}
|
|
57
|
-
for (var items in obj) {
|
|
58
|
-
if (!Object.hasOwnProperty.bind(obj)(items)) continue
|
|
59
68
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
69
|
+
var objResult = {}
|
|
70
|
+
for (var items in obj) {
|
|
71
|
+
if (!Object.hasOwnProperty.bind(obj)(items)) continue
|
|
72
|
+
|
|
73
|
+
if (!!obj[items] && typeof obj[items] == 'object') {
|
|
74
|
+
var flatObject = flattenObject(obj[items], delimiter)
|
|
75
|
+
for (var x in flatObject) {
|
|
76
|
+
if (!Object.hasOwnProperty.bind(flatObject)(x)) continue
|
|
64
77
|
|
|
65
|
-
|
|
78
|
+
objResult[items + delimiter + x] = flatObject[x]
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
objResult[items] = obj[items]
|
|
66
82
|
}
|
|
67
|
-
} else {
|
|
68
|
-
objResult[items] = obj[items]
|
|
69
83
|
}
|
|
70
|
-
|
|
71
|
-
return objResult
|
|
84
|
+
return objResult
|
|
72
85
|
}
|
|
73
86
|
|
|
74
87
|
async function processEmailCronJob(email, fromDate, toDate) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
let
|
|
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
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
88
|
+
|
|
89
|
+
try {
|
|
90
|
+
performance.mark(`processEmailCronJob start:(${email.id})`)
|
|
91
|
+
// processEmailStartTime = performance.now()
|
|
92
|
+
let attachments: any = []
|
|
93
|
+
// black list filtration
|
|
94
|
+
// let partnerBlackList = JSON.parse(email.partnerBlackList) || []
|
|
95
|
+
|
|
96
|
+
// partner list
|
|
97
|
+
let partnerList = JSON.parse(email.partnerList) || []
|
|
98
|
+
|
|
99
|
+
const partners: Partner[] = await getRepository(Partner).find({
|
|
100
|
+
where: { domain: email.domain, id: In(partnerList) },
|
|
101
|
+
relations: ['partnerDomain']
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
// retrieve and process xlsx attachmennts
|
|
105
|
+
for (let attachment of email.emailAttachments) {
|
|
106
|
+
let client = GraphqlLocalClient.client
|
|
107
|
+
let attachmentVariables = JSON.parse(attachment.attachmentVariables)
|
|
108
|
+
let numberOfMonths: number = attachmentVariables?.numberOfMonths || 1
|
|
109
|
+
let numberOfWeeks: number = attachmentVariables?.numberOfWeeks ? attachmentVariables.numberOfWeeks * 7 : 7
|
|
110
|
+
let numberOfDays: number = attachmentVariables?.numberOfDays || 1
|
|
111
|
+
|
|
112
|
+
for (let partner of partners) {
|
|
113
|
+
const bizplace: Bizplace = await getRepository(Bizplace).findOne({
|
|
114
|
+
where: { domain: partner.partnerDomain }
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
// date params processing
|
|
118
|
+
// let dateValue = new Date()
|
|
119
|
+
// let yesterday = dateValue.getDate() - 1
|
|
120
|
+
// let yesterdayBegin: any = new Date(dateValue.setDate(yesterday))
|
|
121
|
+
// let yesterdayEnd: any = new Date(dateValue.setDate(yesterday))
|
|
122
|
+
|
|
123
|
+
// yesterdayBegin.setHours(0, 0, 0, 0)
|
|
124
|
+
// yesterdayEnd.setHours(23, 59, 59, 999)
|
|
125
|
+
|
|
126
|
+
let timezoneOffset = email?.timezoneOffset || 0
|
|
127
|
+
|
|
128
|
+
let curDate = new Date()
|
|
129
|
+
let curDateForMonth = new Date(curDate)
|
|
130
|
+
let curDateForWeek = new Date(curDate)
|
|
131
|
+
let curDateForDay = new Date(curDate)
|
|
132
|
+
|
|
133
|
+
let prevMonth = curDateForMonth.getMonth() - numberOfMonths
|
|
134
|
+
let prevMonthBegin: any = new Date(curDateForMonth.setMonth(prevMonth))
|
|
135
|
+
prevMonthBegin.setHours(0, 0, 0, 0)
|
|
136
|
+
let prevMonthBeginDateTime = new Date(prevMonthBegin - timezoneOffset * 60000).toISOString()
|
|
137
|
+
|
|
138
|
+
let prevWeek = curDateForWeek.getDate() - numberOfWeeks // subtract 1 week
|
|
139
|
+
let prevWeekBegin: any = new Date(curDateForWeek.setDate(prevWeek))
|
|
140
|
+
prevWeekBegin.setHours(0, 0, 0, 0)
|
|
141
|
+
let prevWeekBeginDateTime = new Date(prevWeekBegin - timezoneOffset * 60000).toISOString()
|
|
142
|
+
|
|
143
|
+
let prevDay = curDateForDay.getDate() - numberOfDays // subtract 1 day
|
|
144
|
+
let prevDayBegin: any = new Date(curDateForDay.setDate(prevDay))
|
|
145
|
+
prevDayBegin.setHours(0, 0, 0, 0)
|
|
146
|
+
let prevDayBeginDateTime = new Date(prevDayBegin - timezoneOffset * 60000).toISOString()
|
|
147
|
+
|
|
148
|
+
let endDate: any = curDate
|
|
149
|
+
endDate.setHours(23, 59, 59, 999)
|
|
150
|
+
let endDateTime = new Date(endDate - timezoneOffset * 60000).toISOString()
|
|
151
|
+
|
|
152
|
+
// let fromDate = new Date(yesterdayBegin - timezoneOffset * 60000).toISOString()
|
|
153
|
+
// let toDate = new Date(yesterdayEnd - timezoneOffset * 60000).toISOString()
|
|
154
|
+
|
|
155
|
+
// to trace UTC conversion in production
|
|
156
|
+
logger.info(`[email_utc_conversion] fromDate: ${fromDate}, toDate: ${toDate}`)
|
|
157
|
+
|
|
158
|
+
let variables = replaceValues(attachment.variables, [
|
|
159
|
+
{ name: '{{bizplaceId}}', value: `"${bizplace.id}"` },
|
|
160
|
+
{ name: '{{timezoneOffset}}', value: `${timezoneOffset}` },
|
|
161
|
+
{ name: '{{lastRunDateTime}}', value: `"${fromDate}"` },
|
|
162
|
+
{ name: '{{toDateTime}}', value: `"${endDateTime}"` },
|
|
163
|
+
{ name: '{{prevMonthBeginDateTime}}', value: `"${prevMonthBeginDateTime}"` },
|
|
164
|
+
{ name: '{{prevWeekBeginDateTime}}', value: `"${prevWeekBeginDateTime}"` },
|
|
165
|
+
{ name: '{{prevDayBeginDateTime}}', value: `"${prevDayBeginDateTime}"` }
|
|
166
|
+
])
|
|
167
|
+
|
|
168
|
+
let user: User = email.creator
|
|
169
|
+
delete user.creatorId
|
|
170
|
+
delete user.updaterId
|
|
171
|
+
|
|
172
|
+
// might show unused because of usage in eval
|
|
173
|
+
const response = await client.query({
|
|
174
|
+
query: gql`
|
|
175
|
+
${attachment.gqlString}
|
|
176
|
+
`,
|
|
177
|
+
variables: variables || {},
|
|
178
|
+
context: { state: { domain: email.domain, user } }
|
|
179
|
+
} as any)
|
|
180
|
+
|
|
181
|
+
let excelResponse
|
|
182
|
+
|
|
183
|
+
try {
|
|
184
|
+
performance.mark(`objDataToExcel start:${email.id}`)
|
|
185
|
+
let mappedResponse = eval(attachment.mappingFunction)
|
|
186
|
+
|
|
187
|
+
let header = JSON.parse(attachment.headers)
|
|
188
|
+
|
|
189
|
+
excelResponse = await objDataToExcel({ name: 'name', data: { header, data: mappedResponse } })
|
|
190
|
+
|
|
191
|
+
performance.mark(`objDataToExcel end:${email.id}`)
|
|
192
|
+
|
|
193
|
+
} catch (e) {
|
|
194
|
+
performance.mark(`objDataToExcel end:${email.id}`)
|
|
195
|
+
logger.error(`[send-email] objDataToExcel(${email.id}): ${e}`)
|
|
196
|
+
} finally {
|
|
197
|
+
let perf = performance.measure(`emailId:${email.id}`, `objDataToExcel start:${email.id}`, `objDataToExcel end:${email.id}`)
|
|
198
|
+
logger.info(`objDataToExcel performance: ${perf.toJSON()}`)
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
attachments.push({
|
|
202
|
+
filename: `${bizplace.name} - ${attachment.name}.xlsx`,
|
|
203
|
+
content: excelResponse,
|
|
204
|
+
contentType: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'
|
|
205
|
+
})
|
|
206
|
+
}
|
|
175
207
|
}
|
|
176
|
-
}
|
|
177
208
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
+
// modify content and subject
|
|
210
|
+
let bizplace: Bizplace = await getRepository(Bizplace).findOne({
|
|
211
|
+
where: { domain: email.domain },
|
|
212
|
+
relations: ['company']
|
|
213
|
+
})
|
|
214
|
+
|
|
215
|
+
let modifiedContent = email.content.replace('{{companyName}}', bizplace.company.name)
|
|
216
|
+
let modifiedSubject = email.subject.replace('{{warehouseName}}', email.domain.name)
|
|
217
|
+
modifiedSubject = modifiedSubject.replace('{{reportDate}}', new Date().toLocaleDateString('en-GB'))
|
|
218
|
+
|
|
219
|
+
let res = await sendEmailSes({
|
|
220
|
+
attachments,
|
|
221
|
+
subject: modifiedSubject,
|
|
222
|
+
content: modifiedContent,
|
|
223
|
+
toMailList:
|
|
224
|
+
email.emailRecipients
|
|
225
|
+
.filter(er => er.type == 'to')
|
|
226
|
+
.map(er => {
|
|
227
|
+
return er.emailAddress
|
|
228
|
+
}) || [],
|
|
229
|
+
ccMailList:
|
|
230
|
+
email.emailRecipients
|
|
231
|
+
.filter(er => er.type == 'cc')
|
|
232
|
+
.map(er => {
|
|
233
|
+
return er.emailAddress
|
|
234
|
+
}) || []
|
|
235
|
+
})
|
|
236
|
+
|
|
237
|
+
await getRepository(Email).update({ id: email.id }, { lastSent: new Date().toISOString() })
|
|
238
|
+
performance.mark(`processEmailCronJob end:(${email.id})`)
|
|
239
|
+
} catch (e) {
|
|
240
|
+
performance.mark(`processEmailCronJob end:(${email.id})`)
|
|
241
|
+
logger.error(`[send-email] processEmailCronJob(${email.id}): ${e}`)
|
|
242
|
+
} finally {
|
|
243
|
+
let perf = performance.measure(`emailId:${email.id}`, `processEmailCronJob start:(${email.id})`, `processEmailCronJob end:(${email.id})`)
|
|
244
|
+
logger.info(`processEmailCronJob performance: ${perf.toJSON()}`)
|
|
245
|
+
}
|
|
209
246
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import _ from 'lodash'
|
|
1
2
|
import { getRepository } from 'typeorm'
|
|
2
3
|
|
|
3
4
|
import { restfulApiRouter as router } from '@things-factory/api'
|
|
4
5
|
import { ArrivalNotice } from '@things-factory/sales-base'
|
|
5
6
|
|
|
7
|
+
import { businessMiddleware, loggingMiddleware, validationMiddleware } from '../middlewares'
|
|
6
8
|
import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
|
|
7
|
-
import _ from 'lodash'
|
|
8
|
-
import { businessMiddleware, validationMiddleware, loggingMiddleware } from '../middlewares'
|
|
9
9
|
|
|
10
10
|
router.get(
|
|
11
11
|
'/v1/warehouse/get-inbound-order-details',
|
|
@@ -44,6 +44,8 @@ router.get(
|
|
|
44
44
|
batchId: orderProduct.batchId,
|
|
45
45
|
packingType: orderProduct.packingType,
|
|
46
46
|
packingSize: orderProduct.packingSize,
|
|
47
|
+
uom: orderProduct.uom,
|
|
48
|
+
uomValue: orderProduct.uomValue,
|
|
47
49
|
qty: orderProduct.packQty,
|
|
48
50
|
palletQty: orderProduct.palletQty
|
|
49
51
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
+
import _ from 'lodash'
|
|
1
2
|
import { Between, getRepository } from 'typeorm'
|
|
2
3
|
|
|
3
4
|
import { restfulApiRouter as router } from '@things-factory/api'
|
|
4
5
|
import { ArrivalNotice } from '@things-factory/sales-base'
|
|
5
6
|
|
|
7
|
+
import { businessMiddleware, loggingMiddleware, validationMiddleware } from '../middlewares'
|
|
6
8
|
import { ApiError, ApiErrorHandler, throwInternalServerError } from '../utils/error-util'
|
|
7
|
-
import _ from 'lodash'
|
|
8
|
-
import { businessMiddleware, validationMiddleware, loggingMiddleware } from '../middlewares'
|
|
9
9
|
|
|
10
10
|
router.get(
|
|
11
11
|
'/v1/warehouse/get-inbound-order-list',
|
|
@@ -52,6 +52,8 @@ router.get(
|
|
|
52
52
|
batchId: orderProduct.batchId,
|
|
53
53
|
packingType: orderProduct.packingType,
|
|
54
54
|
packingSize: orderProduct.packingSize,
|
|
55
|
+
uom: orderProduct.uom,
|
|
56
|
+
uomValue: orderProduct.uomValue,
|
|
55
57
|
qty: orderProduct.packQty,
|
|
56
58
|
palletQty: orderProduct.palletQty
|
|
57
59
|
}
|