@things-factory/id-rule-base 6.1.84 → 6.1.89
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/service/doc-number/doc-number-mutation.js +112 -0
- package/dist-server/service/doc-number/doc-number-mutation.js.map +1 -0
- package/dist-server/service/doc-number/doc-number-query.js +168 -0
- package/dist-server/service/doc-number/doc-number-query.js.map +1 -0
- package/dist-server/service/doc-number/doc-number-type.js +161 -0
- package/dist-server/service/doc-number/doc-number-type.js.map +1 -0
- package/dist-server/service/doc-number/doc-number.js +175 -0
- package/dist-server/service/doc-number/doc-number.js.map +1 -0
- package/dist-server/service/doc-number/index.js +9 -0
- package/dist-server/service/doc-number/index.js.map +1 -0
- package/dist-server/service/id-rule/id-rule-types.js +0 -1
- package/dist-server/service/id-rule/id-rule-types.js.map +1 -1
- package/dist-server/service/id-rule/id-rule.js +3 -33
- package/dist-server/service/id-rule/id-rule.js.map +1 -1
- package/dist-server/service/index.js +4 -2
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/server/service/doc-number/doc-number-mutation.ts +121 -0
- package/server/service/doc-number/doc-number-query.ts +146 -0
- package/server/service/doc-number/doc-number-type.ts +115 -0
- package/server/service/doc-number/doc-number.ts +162 -0
- package/server/service/doc-number/index.ts +7 -0
- package/server/service/id-rule/id-rule-types.ts +2 -3
- package/server/service/id-rule/id-rule.ts +3 -35
- package/server/service/index.ts +4 -2
- package/translations/en.json +15 -0
- package/translations/ja.json +15 -0
- package/translations/ko.json +16 -1
- package/translations/ms.json +16 -1
- package/translations/zh.json +16 -1
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DocNumberMutation = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const type_graphql_1 = require("type-graphql");
|
|
6
|
+
const doc_number_1 = require("./doc-number");
|
|
7
|
+
const doc_number_type_1 = require("./doc-number-type");
|
|
8
|
+
let DocNumberMutation = class DocNumberMutation {
|
|
9
|
+
async createDocNumber(docNumber, context) {
|
|
10
|
+
const { domain, user, tx } = context.state;
|
|
11
|
+
return await tx.getRepository(doc_number_1.DocNumber).save(Object.assign(Object.assign({}, docNumber), { domain, creator: user, updater: user }));
|
|
12
|
+
}
|
|
13
|
+
async updateDocNumber(id, patch, context) {
|
|
14
|
+
const { domain, user, tx } = context.state;
|
|
15
|
+
const repository = tx.getRepository(doc_number_1.DocNumber);
|
|
16
|
+
const docNumber = await repository.findOne({
|
|
17
|
+
where: { domain: { id: domain.id }, id },
|
|
18
|
+
relations: ['domain', 'updater', 'creator']
|
|
19
|
+
});
|
|
20
|
+
return await repository.save(Object.assign(Object.assign(Object.assign({}, docNumber), patch), { updater: user }));
|
|
21
|
+
}
|
|
22
|
+
async updateMultipleDocNumber(patches, context) {
|
|
23
|
+
const { domain, user, tx } = context.state;
|
|
24
|
+
let results = [];
|
|
25
|
+
const _createRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === '+');
|
|
26
|
+
const _updateRecords = patches.filter((patch) => patch.cuFlag.toUpperCase() === 'M');
|
|
27
|
+
const docNumberRepo = tx.getRepository(doc_number_1.DocNumber);
|
|
28
|
+
if (_createRecords.length > 0) {
|
|
29
|
+
for (let i = 0; i < _createRecords.length; i++) {
|
|
30
|
+
const newRecord = _createRecords[i];
|
|
31
|
+
const result = await docNumberRepo.save(Object.assign(Object.assign({}, newRecord), { domain, creator: user, updater: user }));
|
|
32
|
+
results.push(Object.assign(Object.assign({}, result), { cuFlag: '+' }));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (_updateRecords.length > 0) {
|
|
36
|
+
for (let i = 0; i < _updateRecords.length; i++) {
|
|
37
|
+
const updRecord = _updateRecords[i];
|
|
38
|
+
const docNumber = await docNumberRepo.findOne({
|
|
39
|
+
where: { domain: { id: domain.id }, id: updRecord.id },
|
|
40
|
+
relations: ['domain', 'updater', 'creator']
|
|
41
|
+
});
|
|
42
|
+
const result = await docNumberRepo.save(Object.assign(Object.assign(Object.assign({}, docNumber), updRecord), { updater: user }));
|
|
43
|
+
results.push(Object.assign(Object.assign({}, result), { cuFlag: 'M' }));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return results;
|
|
47
|
+
}
|
|
48
|
+
async deleteDocNumber(id, context) {
|
|
49
|
+
const { domain, tx, user } = context.state;
|
|
50
|
+
await tx.getRepository(doc_number_1.DocNumber).remove({ domain, id, updater: user });
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
async deleteDocNumbers(ids, context) {
|
|
54
|
+
const { domain, tx, user } = context.state;
|
|
55
|
+
let delEntitis = ids.map(id => {
|
|
56
|
+
return { domain, id, updater: user };
|
|
57
|
+
});
|
|
58
|
+
await tx.getRepository(doc_number_1.DocNumber).remove(delEntitis);
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
tslib_1.__decorate([
|
|
63
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
|
64
|
+
(0, type_graphql_1.Mutation)(returns => doc_number_1.DocNumber, { description: 'To create new DocNumber' }),
|
|
65
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('docNumber')),
|
|
66
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
67
|
+
tslib_1.__metadata("design:type", Function),
|
|
68
|
+
tslib_1.__metadata("design:paramtypes", [doc_number_type_1.NewDocNumber, Object]),
|
|
69
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
70
|
+
], DocNumberMutation.prototype, "createDocNumber", null);
|
|
71
|
+
tslib_1.__decorate([
|
|
72
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
|
73
|
+
(0, type_graphql_1.Mutation)(returns => doc_number_1.DocNumber, { description: 'To modify DocNumber information' }),
|
|
74
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
75
|
+
tslib_1.__param(1, (0, type_graphql_1.Arg)('patch')),
|
|
76
|
+
tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
|
|
77
|
+
tslib_1.__metadata("design:type", Function),
|
|
78
|
+
tslib_1.__metadata("design:paramtypes", [String, doc_number_type_1.DocNumberPatch, Object]),
|
|
79
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
80
|
+
], DocNumberMutation.prototype, "updateDocNumber", null);
|
|
81
|
+
tslib_1.__decorate([
|
|
82
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
|
83
|
+
(0, type_graphql_1.Mutation)(returns => [doc_number_1.DocNumber], { description: "To modify multiple DocNumbers' information" }),
|
|
84
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('patches', type => [doc_number_type_1.DocNumberPatch])),
|
|
85
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
86
|
+
tslib_1.__metadata("design:type", Function),
|
|
87
|
+
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
88
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
89
|
+
], DocNumberMutation.prototype, "updateMultipleDocNumber", null);
|
|
90
|
+
tslib_1.__decorate([
|
|
91
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
|
92
|
+
(0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete DocNumber' }),
|
|
93
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
94
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
95
|
+
tslib_1.__metadata("design:type", Function),
|
|
96
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
97
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
98
|
+
], DocNumberMutation.prototype, "deleteDocNumber", null);
|
|
99
|
+
tslib_1.__decorate([
|
|
100
|
+
(0, type_graphql_1.Directive)('@transaction'),
|
|
101
|
+
(0, type_graphql_1.Mutation)(returns => Boolean, { description: 'To delete multiple docNumbers' }),
|
|
102
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('ids', type => [String])),
|
|
103
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
104
|
+
tslib_1.__metadata("design:type", Function),
|
|
105
|
+
tslib_1.__metadata("design:paramtypes", [Array, Object]),
|
|
106
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
107
|
+
], DocNumberMutation.prototype, "deleteDocNumbers", null);
|
|
108
|
+
DocNumberMutation = tslib_1.__decorate([
|
|
109
|
+
(0, type_graphql_1.Resolver)(doc_number_1.DocNumber)
|
|
110
|
+
], DocNumberMutation);
|
|
111
|
+
exports.DocNumberMutation = DocNumberMutation;
|
|
112
|
+
//# sourceMappingURL=doc-number-mutation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-number-mutation.js","sourceRoot":"","sources":["../../../server/service/doc-number/doc-number-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport { Resolver, Mutation, Arg, Ctx, Directive } from 'type-graphql'\nimport { In } from 'typeorm'\nimport { DocNumber } from './doc-number'\nimport { NewDocNumber, DocNumberPatch } from './doc-number-type'\nimport { Domain, getRepository } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\n\n@Resolver(DocNumber)\nexport class DocNumberMutation {\n @Directive('@transaction')\n @Mutation(returns => DocNumber, { description: 'To create new DocNumber' })\n async createDocNumber(@Arg('docNumber') docNumber: NewDocNumber, @Ctx() context: any): Promise<DocNumber> {\n const { domain, user, tx } = context.state\n\n return await tx.getRepository(DocNumber).save({\n ...docNumber,\n domain,\n creator: user,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Mutation(returns => DocNumber, { description: 'To modify DocNumber information' })\n async updateDocNumber(\n @Arg('id') id: string,\n @Arg('patch') patch: DocNumberPatch,\n @Ctx() context: any\n ): Promise<DocNumber> {\n const { domain, user, tx } = context.state\n\n const repository = tx.getRepository(DocNumber)\n const docNumber = await repository.findOne(\n {\n where: { domain: { id: domain.id }, id },\n relations: ['domain','updater','creator']\n }\n )\n\n return await repository.save({\n ...docNumber,\n ...patch,\n updater: user\n })\n }\n\n @Directive('@transaction')\n @Mutation(returns => [DocNumber], { description: \"To modify multiple DocNumbers' information\" })\n async updateMultipleDocNumber(\n @Arg('patches', type => [DocNumberPatch]) patches: DocNumberPatch[],\n @Ctx() context: any\n ): Promise<DocNumber[]> {\n const { domain, user, tx } = context.state\n\n let results = []\n const _createRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === '+')\n const _updateRecords = patches.filter((patch: any) => patch.cuFlag.toUpperCase() === 'M')\n const docNumberRepo = tx.getRepository(DocNumber)\n\n if (_createRecords.length > 0) {\n for (let i = 0; i < _createRecords.length; i++) {\n const newRecord = _createRecords[i]\n\n const result = await docNumberRepo.save({\n ...newRecord,\n domain,\n creator: user,\n updater: user\n })\n\n results.push({ ...result, cuFlag: '+' })\n }\n }\n\n if (_updateRecords.length > 0) {\n for (let i = 0; i < _updateRecords.length; i++) {\n const updRecord = _updateRecords[i]\n const docNumber = await docNumberRepo.findOne({\n where: { domain: { id: domain.id }, id:updRecord.id },\n relations: ['domain','updater','creator']\n })\n \n const result = await docNumberRepo.save({\n ...docNumber,\n ...updRecord,\n updater: user\n })\n\n results.push({ ...result, cuFlag: 'M' })\n }\n }\n\n return results\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete DocNumber' })\n async deleteDocNumber(@Arg('id') id: string, @Ctx() context: any): Promise<boolean> {\n const { domain, tx, user } = context.state\n await tx.getRepository(DocNumber).remove({ domain, id, updater:user })\n return true\n }\n\n @Directive('@transaction')\n @Mutation(returns => Boolean, { description: 'To delete multiple docNumbers' })\n async deleteDocNumbers(\n @Arg('ids', type => [String]) ids: string[],\n @Ctx() context: any\n ): Promise<boolean> {\n const { domain, tx, user } = context.state\n\n let delEntitis = ids.map(id=>{\n return {domain,id,updater:user}\n })\n\n await tx.getRepository(DocNumber).remove(delEntitis)\n\n return true\n }\n}\n"]}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DocNumberQuery = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const type_graphql_1 = require("type-graphql");
|
|
6
|
+
const shell_1 = require("@things-factory/shell");
|
|
7
|
+
const doc_number_1 = require("./doc-number");
|
|
8
|
+
const doc_number_type_1 = require("./doc-number-type");
|
|
9
|
+
const auth_base_1 = require("@things-factory/auth-base");
|
|
10
|
+
const shell_2 = require("@things-factory/shell");
|
|
11
|
+
let DocNumberQuery = class DocNumberQuery {
|
|
12
|
+
async docNumber(id, context) {
|
|
13
|
+
const { domain } = context.state;
|
|
14
|
+
return await (0, shell_1.getRepository)(doc_number_1.DocNumber).findOne({
|
|
15
|
+
where: { domain: { id: domain.id }, id }
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
async docNumbers(params, context) {
|
|
19
|
+
const { domain } = context.state;
|
|
20
|
+
const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
|
|
21
|
+
domain,
|
|
22
|
+
params,
|
|
23
|
+
repository: await (0, shell_1.getRepository)(doc_number_1.DocNumber),
|
|
24
|
+
searchables: ['code', 'description']
|
|
25
|
+
});
|
|
26
|
+
const [items, total] = await queryBuilder.getManyAndCount();
|
|
27
|
+
return { items, total };
|
|
28
|
+
}
|
|
29
|
+
async getNewDocNumber(id, context) {
|
|
30
|
+
const { domain } = context.state;
|
|
31
|
+
// 1. find one by id - TODO by Lock
|
|
32
|
+
let docNumber = await (0, shell_1.getRepository)(doc_number_1.DocNumber).findOne({
|
|
33
|
+
where: { domain: { id: domain.id }, id }
|
|
34
|
+
});
|
|
35
|
+
// 2. find one by code - TODO by Lock
|
|
36
|
+
if (docNumber == null) {
|
|
37
|
+
docNumber = await (0, shell_1.getRepository)(doc_number_1.DocNumber).findOne({
|
|
38
|
+
where: { domain: { id: domain.id }, code: id }
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
// 3. TODO throw exception
|
|
42
|
+
if (docNumber == null) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
// 4. 시퀀스 증가
|
|
46
|
+
let newDocNum = docNumber.currentNo;
|
|
47
|
+
if (docNumber.useDbSeqFlag) {
|
|
48
|
+
// TODO DATABASE SEQUENCE 호출
|
|
49
|
+
newDocNum += 1;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
newDocNum = docNumber.currentNo ? docNumber.currentNo + 1 : 1;
|
|
53
|
+
}
|
|
54
|
+
// 5. 문서 번호 expression 구성
|
|
55
|
+
if (!docNumber.expression) {
|
|
56
|
+
docNumber.updateExpression();
|
|
57
|
+
}
|
|
58
|
+
let expression = docNumber.expression;
|
|
59
|
+
// 6. 시퀀스 번호 사이클 처리
|
|
60
|
+
if (newDocNum > docNumber.endNo) {
|
|
61
|
+
newDocNum = docNumber.startNo;
|
|
62
|
+
}
|
|
63
|
+
// 7. 자리수 설정
|
|
64
|
+
let newDocNoStr = newDocNum.toString();
|
|
65
|
+
let docNumLength = newDocNoStr.length;
|
|
66
|
+
let docNoDigit = docNumber.seqDigitNum ? docNumber.seqDigitNum : 1;
|
|
67
|
+
// 8. 시퀀스 번호가 시퀀스 번호 사이즈보다 작은 경우 앞에 0을 붙임
|
|
68
|
+
if (docNoDigit > docNumLength) {
|
|
69
|
+
let addZeroCnt = docNoDigit - docNumLength;
|
|
70
|
+
for (let i = 0; i < addZeroCnt; i++) {
|
|
71
|
+
newDocNoStr = '0' + newDocNoStr;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// 9. 문서 번호 구성
|
|
75
|
+
let newDocNumber = expression.replace('${SEQ}', newDocNoStr);
|
|
76
|
+
let docUpdateInterval = docNumber.updateInterval;
|
|
77
|
+
if (docUpdateInterval && docUpdateInterval != 'NONE') {
|
|
78
|
+
const today = new Date();
|
|
79
|
+
let todayStr = today.getFullYear() + (today.getMonth() > 9 ? '' + today.getMonth() + 1 : '0' + today.getMonth() + 1) + today.getDate();
|
|
80
|
+
let intervalVal = '';
|
|
81
|
+
if (docUpdateInterval == 'yy') {
|
|
82
|
+
intervalVal = todayStr.substring(2, 4);
|
|
83
|
+
}
|
|
84
|
+
else if (docUpdateInterval == 'yyyy') {
|
|
85
|
+
intervalVal = todayStr.substring(0, 4);
|
|
86
|
+
}
|
|
87
|
+
else if (docUpdateInterval == 'yyMM') {
|
|
88
|
+
intervalVal = todayStr.substring(2, 6);
|
|
89
|
+
}
|
|
90
|
+
else if (docUpdateInterval == 'yyyyMM') {
|
|
91
|
+
intervalVal = todayStr.substring(0, 6);
|
|
92
|
+
}
|
|
93
|
+
else if (docUpdateInterval == 'yyMMdd') {
|
|
94
|
+
intervalVal = todayStr.substring(2, 8);
|
|
95
|
+
}
|
|
96
|
+
else if (docUpdateInterval == 'yyyyMMdd') {
|
|
97
|
+
intervalVal = todayStr;
|
|
98
|
+
}
|
|
99
|
+
newDocNumber = newDocNumber.replace('${' + docUpdateInterval + '}', intervalVal);
|
|
100
|
+
}
|
|
101
|
+
// 10. 현재 시퀀스 번호 저장
|
|
102
|
+
docNumber.domain = domain;
|
|
103
|
+
docNumber.currentNo = newDocNum;
|
|
104
|
+
docNumber.lastDocNumber = newDocNumber;
|
|
105
|
+
await (0, shell_1.getRepository)(doc_number_1.DocNumber).save(docNumber);
|
|
106
|
+
// 11. 최종
|
|
107
|
+
return docNumber;
|
|
108
|
+
}
|
|
109
|
+
async domain(docNumber) {
|
|
110
|
+
return await (0, shell_1.getRepository)(shell_2.Domain).findOneBy({ id: docNumber.domainId });
|
|
111
|
+
}
|
|
112
|
+
async creator(docNumber) {
|
|
113
|
+
return await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: docNumber.creatorId });
|
|
114
|
+
}
|
|
115
|
+
async updater(docNumber) {
|
|
116
|
+
return await (0, shell_1.getRepository)(auth_base_1.User).findOneBy({ id: docNumber.updaterId });
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
tslib_1.__decorate([
|
|
120
|
+
(0, type_graphql_1.Query)(returns => doc_number_1.DocNumber, { description: 'To fetch a DocNumber' }),
|
|
121
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
122
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
123
|
+
tslib_1.__metadata("design:type", Function),
|
|
124
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
125
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
126
|
+
], DocNumberQuery.prototype, "docNumber", null);
|
|
127
|
+
tslib_1.__decorate([
|
|
128
|
+
(0, type_graphql_1.Query)(returns => doc_number_type_1.DocNumberList, { description: 'To fetch multiple DocNumbers' }),
|
|
129
|
+
tslib_1.__param(0, (0, type_graphql_1.Args)()),
|
|
130
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
131
|
+
tslib_1.__metadata("design:type", Function),
|
|
132
|
+
tslib_1.__metadata("design:paramtypes", [shell_1.ListParam, Object]),
|
|
133
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
134
|
+
], DocNumberQuery.prototype, "docNumbers", null);
|
|
135
|
+
tslib_1.__decorate([
|
|
136
|
+
(0, type_graphql_1.Query)(returns => doc_number_1.DocNumber, { description: 'To generate a new DocNumber' }),
|
|
137
|
+
tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
|
|
138
|
+
tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
|
|
139
|
+
tslib_1.__metadata("design:type", Function),
|
|
140
|
+
tslib_1.__metadata("design:paramtypes", [String, Object]),
|
|
141
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
142
|
+
], DocNumberQuery.prototype, "getNewDocNumber", null);
|
|
143
|
+
tslib_1.__decorate([
|
|
144
|
+
(0, type_graphql_1.FieldResolver)(type => shell_2.Domain),
|
|
145
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
146
|
+
tslib_1.__metadata("design:type", Function),
|
|
147
|
+
tslib_1.__metadata("design:paramtypes", [doc_number_1.DocNumber]),
|
|
148
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
149
|
+
], DocNumberQuery.prototype, "domain", null);
|
|
150
|
+
tslib_1.__decorate([
|
|
151
|
+
(0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
|
|
152
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
153
|
+
tslib_1.__metadata("design:type", Function),
|
|
154
|
+
tslib_1.__metadata("design:paramtypes", [doc_number_1.DocNumber]),
|
|
155
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
156
|
+
], DocNumberQuery.prototype, "creator", null);
|
|
157
|
+
tslib_1.__decorate([
|
|
158
|
+
(0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
|
|
159
|
+
tslib_1.__param(0, (0, type_graphql_1.Root)()),
|
|
160
|
+
tslib_1.__metadata("design:type", Function),
|
|
161
|
+
tslib_1.__metadata("design:paramtypes", [doc_number_1.DocNumber]),
|
|
162
|
+
tslib_1.__metadata("design:returntype", Promise)
|
|
163
|
+
], DocNumberQuery.prototype, "updater", null);
|
|
164
|
+
DocNumberQuery = tslib_1.__decorate([
|
|
165
|
+
(0, type_graphql_1.Resolver)(doc_number_1.DocNumber)
|
|
166
|
+
], DocNumberQuery);
|
|
167
|
+
exports.DocNumberQuery = DocNumberQuery;
|
|
168
|
+
//# sourceMappingURL=doc-number-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-number-query.js","sourceRoot":"","sources":["../../../server/service/doc-number/doc-number-query.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport { Resolver, Query, FieldResolver, Root, Args, Arg, Ctx, Directive } from 'type-graphql'\nimport { ListParam, convertListParams, getRepository, getQueryBuilderFromListParams } from '@things-factory/shell'\nimport { DocNumber } from './doc-number'\nimport { DocNumberList } from './doc-number-type'\n\nimport { User } from '@things-factory/auth-base'\nimport { Domain } from '@things-factory/shell'\n\n\n@Resolver(DocNumber)\nexport class DocNumberQuery {\n @Query(returns => DocNumber, { description: 'To fetch a DocNumber' })\n async docNumber(@Arg('id') id: string, @Ctx() context: any): Promise<DocNumber> {\n const { domain } = context.state\n return await getRepository(DocNumber).findOne({\n where: { domain: { id: domain.id }, id }\n })\n }\n\n @Query(returns => DocNumberList, { description: 'To fetch multiple DocNumbers' })\n async docNumbers(@Args() params: ListParam, @Ctx() context: any): Promise<DocNumberList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n domain,\n params,\n repository: await getRepository(DocNumber),\n searchables: ['code', 'description']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n return { items, total }\n }\n\n @Query(returns => DocNumber, { description: 'To generate a new DocNumber' })\n async getNewDocNumber(@Arg('id') id: string, @Ctx() context: any): Promise<DocNumber> {\n const { domain } = context.state\n\n // 1. find one by id - TODO by Lock\n let docNumber = await getRepository(DocNumber).findOne({\n where: { domain: { id: domain.id }, id }\n })\n\n // 2. find one by code - TODO by Lock\n if(docNumber == null) {\n docNumber = await getRepository(DocNumber).findOne({\n where: { domain: { id: domain.id }, code : id }\n })\n }\n\n // 3. TODO throw exception\n if(docNumber == null) {\n return null\n } \n\n // 4. 시퀀스 증가\n let newDocNum = docNumber.currentNo\n\n if(docNumber.useDbSeqFlag) {\n // TODO DATABASE SEQUENCE 호출\n newDocNum += 1\n } else {\n newDocNum = docNumber.currentNo ? docNumber.currentNo + 1 : 1\n }\n\n // 5. 문서 번호 expression 구성\n if(!docNumber.expression) {\n docNumber.updateExpression()\n }\n\n let expression = docNumber.expression\n\n // 6. 시퀀스 번호 사이클 처리\n if(newDocNum > docNumber.endNo) {\n newDocNum = docNumber.startNo\n }\n\n // 7. 자리수 설정\n let newDocNoStr = newDocNum.toString()\n let docNumLength = newDocNoStr.length\n let docNoDigit = docNumber.seqDigitNum ? docNumber.seqDigitNum : 1\n\n // 8. 시퀀스 번호가 시퀀스 번호 사이즈보다 작은 경우 앞에 0을 붙임\n if(docNoDigit > docNumLength) {\n let addZeroCnt = docNoDigit - docNumLength\n for(let i = 0 ; i < addZeroCnt ; i++) {\n newDocNoStr = '0' + newDocNoStr\n }\n } \n\n // 9. 문서 번호 구성\n let newDocNumber = expression.replace('${SEQ}', newDocNoStr)\n let docUpdateInterval = docNumber.updateInterval\n if(docUpdateInterval && docUpdateInterval != 'NONE') {\n const today = new Date();\n let todayStr = today.getFullYear() + (today.getMonth() > 9 ? '' + today.getMonth() + 1 : '0' + today.getMonth() + 1) + today.getDate()\n let intervalVal = ''\n\n if(docUpdateInterval == 'yy') {\n intervalVal = todayStr.substring(2, 4)\n\n } else if(docUpdateInterval == 'yyyy') {\n intervalVal = todayStr.substring(0, 4)\n\n } else if(docUpdateInterval == 'yyMM') {\n intervalVal = todayStr.substring(2, 6)\n\n } else if(docUpdateInterval == 'yyyyMM') {\n intervalVal = todayStr.substring(0, 6)\n\n } else if(docUpdateInterval == 'yyMMdd') {\n intervalVal = todayStr.substring(2, 8)\n\n } else if(docUpdateInterval == 'yyyyMMdd') {\n intervalVal = todayStr\n }\n\n newDocNumber = newDocNumber.replace('${' + docUpdateInterval + '}', intervalVal)\n }\n\n // 10. 현재 시퀀스 번호 저장\n docNumber.domain = domain\n docNumber.currentNo = newDocNum\n docNumber.lastDocNumber = newDocNumber\n await getRepository(DocNumber).save(docNumber)\n\n // 11. 최종 \n return docNumber\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() docNumber: DocNumber): Promise<Domain> {\n return await getRepository(Domain).findOneBy({id:docNumber.domainId})\n }\n\n @FieldResolver(type => User)\n async creator(@Root() docNumber: DocNumber): Promise<User> {\n return await getRepository(User).findOneBy({id:docNumber.creatorId})\n }\n\n @FieldResolver(type => User)\n async updater(@Root() docNumber: DocNumber): Promise<User> {\n return await getRepository(User).findOneBy({id:docNumber.updaterId})\n }\n}\n"]}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DocNumberList = exports.DocNumberPatch = exports.NewDocNumber = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const type_graphql_1 = require("type-graphql");
|
|
6
|
+
const doc_number_1 = require("./doc-number");
|
|
7
|
+
let NewDocNumber = class NewDocNumber {
|
|
8
|
+
};
|
|
9
|
+
tslib_1.__decorate([
|
|
10
|
+
(0, type_graphql_1.Field)({ nullable: false }),
|
|
11
|
+
tslib_1.__metadata("design:type", String)
|
|
12
|
+
], NewDocNumber.prototype, "code", void 0);
|
|
13
|
+
tslib_1.__decorate([
|
|
14
|
+
(0, type_graphql_1.Field)({ nullable: false }),
|
|
15
|
+
tslib_1.__metadata("design:type", String)
|
|
16
|
+
], NewDocNumber.prototype, "description", void 0);
|
|
17
|
+
tslib_1.__decorate([
|
|
18
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
|
|
19
|
+
tslib_1.__metadata("design:type", Number)
|
|
20
|
+
], NewDocNumber.prototype, "startNo", void 0);
|
|
21
|
+
tslib_1.__decorate([
|
|
22
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
|
|
23
|
+
tslib_1.__metadata("design:type", Number)
|
|
24
|
+
], NewDocNumber.prototype, "endNo", void 0);
|
|
25
|
+
tslib_1.__decorate([
|
|
26
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
|
|
27
|
+
tslib_1.__metadata("design:type", Number)
|
|
28
|
+
], NewDocNumber.prototype, "currentNo", void 0);
|
|
29
|
+
tslib_1.__decorate([
|
|
30
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
31
|
+
tslib_1.__metadata("design:type", String)
|
|
32
|
+
], NewDocNumber.prototype, "prefix", void 0);
|
|
33
|
+
tslib_1.__decorate([
|
|
34
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
35
|
+
tslib_1.__metadata("design:type", String)
|
|
36
|
+
], NewDocNumber.prototype, "suffix", void 0);
|
|
37
|
+
tslib_1.__decorate([
|
|
38
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
39
|
+
tslib_1.__metadata("design:type", String)
|
|
40
|
+
], NewDocNumber.prototype, "updateInterval", void 0);
|
|
41
|
+
tslib_1.__decorate([
|
|
42
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
43
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
44
|
+
], NewDocNumber.prototype, "useDbSeqFlag", void 0);
|
|
45
|
+
tslib_1.__decorate([
|
|
46
|
+
(0, type_graphql_1.Field)({ nullable: false }),
|
|
47
|
+
tslib_1.__metadata("design:type", String)
|
|
48
|
+
], NewDocNumber.prototype, "seqName", void 0);
|
|
49
|
+
tslib_1.__decorate([
|
|
50
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
|
|
51
|
+
tslib_1.__metadata("design:type", Number)
|
|
52
|
+
], NewDocNumber.prototype, "seqDigitNum", void 0);
|
|
53
|
+
tslib_1.__decorate([
|
|
54
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
55
|
+
tslib_1.__metadata("design:type", String)
|
|
56
|
+
], NewDocNumber.prototype, "separator", void 0);
|
|
57
|
+
tslib_1.__decorate([
|
|
58
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
59
|
+
tslib_1.__metadata("design:type", String)
|
|
60
|
+
], NewDocNumber.prototype, "expression", void 0);
|
|
61
|
+
tslib_1.__decorate([
|
|
62
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
63
|
+
tslib_1.__metadata("design:type", String)
|
|
64
|
+
], NewDocNumber.prototype, "lastDocNumber", void 0);
|
|
65
|
+
tslib_1.__decorate([
|
|
66
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
67
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
68
|
+
], NewDocNumber.prototype, "activeFlag", void 0);
|
|
69
|
+
NewDocNumber = tslib_1.__decorate([
|
|
70
|
+
(0, type_graphql_1.InputType)()
|
|
71
|
+
], NewDocNumber);
|
|
72
|
+
exports.NewDocNumber = NewDocNumber;
|
|
73
|
+
let DocNumberPatch = class DocNumberPatch {
|
|
74
|
+
};
|
|
75
|
+
tslib_1.__decorate([
|
|
76
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.ID, { nullable: true }),
|
|
77
|
+
tslib_1.__metadata("design:type", String)
|
|
78
|
+
], DocNumberPatch.prototype, "id", void 0);
|
|
79
|
+
tslib_1.__decorate([
|
|
80
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
81
|
+
tslib_1.__metadata("design:type", String)
|
|
82
|
+
], DocNumberPatch.prototype, "code", void 0);
|
|
83
|
+
tslib_1.__decorate([
|
|
84
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
85
|
+
tslib_1.__metadata("design:type", String)
|
|
86
|
+
], DocNumberPatch.prototype, "description", void 0);
|
|
87
|
+
tslib_1.__decorate([
|
|
88
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
|
|
89
|
+
tslib_1.__metadata("design:type", Number)
|
|
90
|
+
], DocNumberPatch.prototype, "startNo", void 0);
|
|
91
|
+
tslib_1.__decorate([
|
|
92
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
|
|
93
|
+
tslib_1.__metadata("design:type", Number)
|
|
94
|
+
], DocNumberPatch.prototype, "endNo", void 0);
|
|
95
|
+
tslib_1.__decorate([
|
|
96
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
|
|
97
|
+
tslib_1.__metadata("design:type", Number)
|
|
98
|
+
], DocNumberPatch.prototype, "currentNo", void 0);
|
|
99
|
+
tslib_1.__decorate([
|
|
100
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
101
|
+
tslib_1.__metadata("design:type", String)
|
|
102
|
+
], DocNumberPatch.prototype, "prefix", void 0);
|
|
103
|
+
tslib_1.__decorate([
|
|
104
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
105
|
+
tslib_1.__metadata("design:type", String)
|
|
106
|
+
], DocNumberPatch.prototype, "suffix", void 0);
|
|
107
|
+
tslib_1.__decorate([
|
|
108
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
109
|
+
tslib_1.__metadata("design:type", String)
|
|
110
|
+
], DocNumberPatch.prototype, "updateInterval", void 0);
|
|
111
|
+
tslib_1.__decorate([
|
|
112
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
113
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
114
|
+
], DocNumberPatch.prototype, "useDbSeqFlag", void 0);
|
|
115
|
+
tslib_1.__decorate([
|
|
116
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
117
|
+
tslib_1.__metadata("design:type", String)
|
|
118
|
+
], DocNumberPatch.prototype, "seqName", void 0);
|
|
119
|
+
tslib_1.__decorate([
|
|
120
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int, { nullable: true }),
|
|
121
|
+
tslib_1.__metadata("design:type", Number)
|
|
122
|
+
], DocNumberPatch.prototype, "seqDigitNum", void 0);
|
|
123
|
+
tslib_1.__decorate([
|
|
124
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
125
|
+
tslib_1.__metadata("design:type", String)
|
|
126
|
+
], DocNumberPatch.prototype, "separator", void 0);
|
|
127
|
+
tslib_1.__decorate([
|
|
128
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
129
|
+
tslib_1.__metadata("design:type", String)
|
|
130
|
+
], DocNumberPatch.prototype, "expression", void 0);
|
|
131
|
+
tslib_1.__decorate([
|
|
132
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
133
|
+
tslib_1.__metadata("design:type", String)
|
|
134
|
+
], DocNumberPatch.prototype, "lastDocNumber", void 0);
|
|
135
|
+
tslib_1.__decorate([
|
|
136
|
+
(0, type_graphql_1.Field)({ nullable: true }),
|
|
137
|
+
tslib_1.__metadata("design:type", Boolean)
|
|
138
|
+
], DocNumberPatch.prototype, "activeFlag", void 0);
|
|
139
|
+
tslib_1.__decorate([
|
|
140
|
+
(0, type_graphql_1.Field)(),
|
|
141
|
+
tslib_1.__metadata("design:type", String)
|
|
142
|
+
], DocNumberPatch.prototype, "cuFlag", void 0);
|
|
143
|
+
DocNumberPatch = tslib_1.__decorate([
|
|
144
|
+
(0, type_graphql_1.InputType)()
|
|
145
|
+
], DocNumberPatch);
|
|
146
|
+
exports.DocNumberPatch = DocNumberPatch;
|
|
147
|
+
let DocNumberList = class DocNumberList {
|
|
148
|
+
};
|
|
149
|
+
tslib_1.__decorate([
|
|
150
|
+
(0, type_graphql_1.Field)(type => [doc_number_1.DocNumber]),
|
|
151
|
+
tslib_1.__metadata("design:type", Array)
|
|
152
|
+
], DocNumberList.prototype, "items", void 0);
|
|
153
|
+
tslib_1.__decorate([
|
|
154
|
+
(0, type_graphql_1.Field)(type => type_graphql_1.Int),
|
|
155
|
+
tslib_1.__metadata("design:type", Number)
|
|
156
|
+
], DocNumberList.prototype, "total", void 0);
|
|
157
|
+
DocNumberList = tslib_1.__decorate([
|
|
158
|
+
(0, type_graphql_1.ObjectType)()
|
|
159
|
+
], DocNumberList);
|
|
160
|
+
exports.DocNumberList = DocNumberList;
|
|
161
|
+
//# sourceMappingURL=doc-number-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-number-type.js","sourceRoot":"","sources":["../../../server/service/doc-number/doc-number-type.ts"],"names":[],"mappings":"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","sourcesContent":["\nimport { ObjectType, Field, InputType, Int, ID, Float, registerEnumType } from 'type-graphql'\nimport { DocNumber } from './doc-number'\n\n@InputType()\nexport class NewDocNumber {\n\n @Field({ nullable: false })\n code: string\n\n @Field({ nullable: false })\n description: string\n\n @Field(type => Int, { nullable: true })\n startNo: number\n\n @Field(type => Int, { nullable: true })\n endNo: number\n\n @Field(type => Int, { nullable: true })\n currentNo?: number\n\n @Field({ nullable:true })\n prefix?: string\n\n @Field({ nullable:true })\n suffix?: string\n\n @Field({ nullable: true })\n updateInterval?: string\n\n @Field({ nullable: true })\n useDbSeqFlag?: boolean\n\n @Field({ nullable: false })\n seqName: string\n\n @Field(type => Int, { nullable: true })\n seqDigitNum?: number\n\n @Field({ nullable: true })\n separator?: string\n\n @Field({ nullable: true })\n expression?: string\n\n @Field({ nullable: true })\n lastDocNumber?: string\n\n @Field({ nullable: true })\n activeFlag?: boolean\n}\n\n@InputType()\nexport class DocNumberPatch {\n @Field(type => ID, { nullable: true })\n id?: string\n\n @Field({ nullable: true })\n code?: string\n\n @Field({ nullable: true })\n description?: string\n\n @Field(type => Int, { nullable: true })\n startNo?: number\n\n @Field(type => Int, { nullable: true })\n endNo?: number\n\n @Field(type => Int, { nullable: true })\n currentNo?: number\n\n @Field({ nullable:true })\n prefix?: string\n\n @Field({ nullable:true })\n suffix?: string\n\n @Field({ nullable: true })\n updateInterval?: string\n\n @Field({ nullable: true })\n useDbSeqFlag?: boolean\n\n @Field({ nullable: true })\n seqName?: string\n\n @Field(type => Int, { nullable: true })\n seqDigitNum?: number\n\n @Field({ nullable: true })\n separator?: string\n\n @Field({ nullable: true })\n expression?: string\n\n @Field({ nullable: true })\n lastDocNumber?: string\n\n @Field({ nullable: true })\n activeFlag?: boolean\n\n @Field()\n cuFlag: string\n}\n\n@ObjectType()\nexport class DocNumberList {\n @Field(type => [DocNumber])\n items: DocNumber[]\n\n @Field(type => Int)\n total: number\n}\n"]}
|