mcp-vue-codegen 1.2.1 → 1.3.0

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.
@@ -0,0 +1,11 @@
1
+ export interface BackendGenerateResult {
2
+ success: boolean;
3
+ files: {
4
+ path: string;
5
+ lines: number;
6
+ description: string;
7
+ }[];
8
+ error?: string;
9
+ }
10
+ export declare function generateJavaCrud(schemaJson: string, projectRoot: string): Promise<BackendGenerateResult>;
11
+ //# sourceMappingURL=backend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../src/generators/backend.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAyG9G"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.generateJavaCrud = generateJavaCrud;
37
+ const fs = __importStar(require("node:fs"));
38
+ const path = __importStar(require("node:path"));
39
+ const validate_js_1 = require("../tools/validate.js");
40
+ const entity_tpl_js_1 = require("../templates/backend/entity.tpl.js");
41
+ const mapper_tpl_js_1 = require("../templates/backend/mapper.tpl.js");
42
+ const service_tpl_js_1 = require("../templates/backend/service.tpl.js");
43
+ const controller_tpl_js_1 = require("../templates/backend/controller.tpl.js");
44
+ async function generateJavaCrud(schemaJson, projectRoot) {
45
+ try {
46
+ const schema = (0, validate_js_1.parseSchema)(schemaJson);
47
+ const m = schema.module;
48
+ const entity = m.entityName;
49
+ const moduleName = m.moduleName;
50
+ const hasDetail = !!schema.detail;
51
+ const files = [];
52
+ // 基础路径
53
+ const apiBase = path.join(projectRoot, `worsoft-${moduleName}`, `worsoft-${moduleName}-api`, 'src', 'main', 'java', 'com', 'worsoft', 'worsoft', moduleName);
54
+ const bizBase = path.join(projectRoot, `worsoft-${moduleName}`, `worsoft-${moduleName}-biz`, 'src', 'main', 'java', 'com', 'worsoft', 'worsoft', moduleName);
55
+ const resourceBase = path.join(projectRoot, `worsoft-${moduleName}`, `worsoft-${moduleName}-biz`, 'src', 'main', 'resources');
56
+ // 辅助函数:写文件
57
+ function writeFile(filePath, content, desc) {
58
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
59
+ fs.writeFileSync(filePath, content, 'utf-8');
60
+ files.push({ path: filePath, lines: content.split('\n').length, description: desc });
61
+ }
62
+ // 1. Entity
63
+ writeFile(path.join(apiBase, 'entity', `${entity}Entity.java`), (0, entity_tpl_js_1.generateMasterEntity)(schema), `主表实体类`);
64
+ if (hasDetail) {
65
+ writeFile(path.join(apiBase, 'entity', `${entity}DetailEntity.java`), (0, entity_tpl_js_1.generateDetailEntity)(schema), `从表实体类`);
66
+ }
67
+ // 2. Mapper
68
+ writeFile(path.join(bizBase, 'mapper', `${entity}Mapper.java`), (0, mapper_tpl_js_1.generateMasterMapper)(schema), `主表 Mapper 接口`);
69
+ writeFile(path.join(resourceBase, 'mapper', `${entity}Mapper.xml`), (0, mapper_tpl_js_1.generateMasterMapperXml)(schema), `主表 Mapper XML`);
70
+ if (hasDetail) {
71
+ writeFile(path.join(bizBase, 'mapper', `${entity}DetailMapper.java`), (0, mapper_tpl_js_1.generateDetailMapper)(schema), `从表 Mapper 接口`);
72
+ writeFile(path.join(resourceBase, 'mapper', `${entity}DetailMapper.xml`), (0, mapper_tpl_js_1.generateDetailMapperXml)(schema), `从表 Mapper XML`);
73
+ }
74
+ // 3. Service
75
+ writeFile(path.join(bizBase, 'service', `${entity}Service.java`), (0, service_tpl_js_1.generateMasterService)(schema), `主表 Service 接口`);
76
+ writeFile(path.join(bizBase, 'service', 'impl', `${entity}ServiceImpl.java`), (0, service_tpl_js_1.generateMasterServiceImpl)(schema), `主表 Service 实现(含从表CRUD、${m.hasWorkflow ? '工作流回调' : ''})`);
77
+ if (hasDetail) {
78
+ writeFile(path.join(bizBase, 'service', `${entity}DetailService.java`), (0, service_tpl_js_1.generateDetailService)(schema), `从表 Service 接口`);
79
+ writeFile(path.join(bizBase, 'service', 'impl', `${entity}DetailServiceImpl.java`), (0, service_tpl_js_1.generateDetailServiceImpl)(schema), `从表 Service 实现`);
80
+ }
81
+ // 4. Controller
82
+ writeFile(path.join(bizBase, 'controller', `${entity}Controller.java`), (0, controller_tpl_js_1.generateController)(schema), `Controller(${[m.hasWorkflow && '工作流', m.hasExport && '导出', m.hasPrint && '打印'].filter(Boolean).join('、') || 'CRUD'})`);
83
+ return { success: true, files };
84
+ }
85
+ catch (e) {
86
+ return { success: false, files: [], error: e.message };
87
+ }
88
+ }
89
+ //# sourceMappingURL=backend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend.js","sourceRoot":"","sources":["../../src/generators/backend.ts"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -41,9 +41,10 @@ const fs = __importStar(require("node:fs"));
41
41
  const path = __importStar(require("node:path"));
42
42
  const validate_js_1 = require("./tools/validate.js");
43
43
  const generate_js_1 = require("./tools/generate.js");
44
+ const backend_js_1 = require("./generators/backend.js");
44
45
  const server = new mcp_js_1.McpServer({
45
46
  name: 'mcp-vue-codegen',
46
- version: '1.2.0',
47
+ version: '1.3.0',
47
48
  });
48
49
  /**
49
50
  * 读取 schema:支持文件路径或 JSON 字符串
@@ -120,6 +121,36 @@ projectRoot 和 outputDir 都是可选的,不传则使用当前工作目录作
120
121
  };
121
122
  }
122
123
  });
124
+ // Tool 3: generate_java_crud
125
+ server.tool('generate_java_crud', `根据 JSON 文档生成完整的 Java 后端 CRUD 代码(Entity、Mapper、Service、ServiceImpl、Controller)。
126
+
127
+ 自动生成到 {projectRoot}/worsoft-{moduleName}/ 下对应的 api 和 biz 子模块中。
128
+ 包含:主表/从表实体类、Mapper接口及XML、Service接口及实现、Controller(含分页查询、新增、修改、删除、导出、打印等接口)。`, {
129
+ schemaInput: zod_1.z.string().describe('JSON 文件路径(如 E:/codegen/table-schema.json)或 JSON 字符串'),
130
+ projectRoot: zod_1.z.string().optional().describe('后端项目根目录(如 E:/vue3/worsoft5.3),不传则使用当前工作目录'),
131
+ }, async ({ schemaInput, projectRoot }) => {
132
+ try {
133
+ const schemaJson = resolveSchemaJson(schemaInput);
134
+ const root = projectRoot || process.cwd();
135
+ const result = await (0, backend_js_1.generateJavaCrud)(schemaJson, root);
136
+ if (result.success) {
137
+ const fileList = result.files
138
+ .map(f => ` - ${f.path} (${f.lines} 行) — ${f.description}`)
139
+ .join('\n');
140
+ return {
141
+ content: [{ type: 'text', text: `✅ 后端代码生成成功!\n\n生成文件列表:\n${fileList}` }],
142
+ };
143
+ }
144
+ return {
145
+ content: [{ type: 'text', text: `❌ 后端代码生成失败:${result.error}` }],
146
+ };
147
+ }
148
+ catch (e) {
149
+ return {
150
+ content: [{ type: 'text', text: `❌ 错误:${e.message}` }],
151
+ };
152
+ }
153
+ });
123
154
  // Start the server
124
155
  async function main() {
125
156
  const transport = new stdio_js_1.StdioServerTransport();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,oEAAoE;AACpE,wEAAiF;AACjF,6BAAwB;AACxB,4CAA8B;AAC9B,gDAAkC;AAClC,qDAAkE;AAClE,qDAAsD;AACtD,wDAA2D;AAE3D,MAAM,MAAM,GAAG,IAAI,kBAAS,CAAC;IAC3B,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,WAAmB,EAAE,UAAkB;IAC9D,MAAM,MAAM,GAAG,IAAA,yBAAW,EAAC,UAAU,CAAC,CAAC;IACvC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAC3E,CAAC;AAED,0BAA0B;AAC1B,MAAM,CAAC,IAAI,CACT,iBAAiB,EACjB,6GAA6G,EAC7G;IACE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;CACxF,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAA,4BAAc,EAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;aACtE,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,mBAAmB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;SAC1H,CAAC;IACJ,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;SAChE,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,4BAA4B;AAC5B,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB;;;kDAGgD,EAChD;IACE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IACvF,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAChE,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAChE,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;IAChD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1C,MAAM,cAAc,GAAG,SAAS,IAAI,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAe,EAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK;iBAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;iBAC3D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,cAAc,gBAAgB,QAAQ,EAAE,EAAE,CAAC;aAC1G,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;SACvE,CAAC;IACJ,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;SAChE,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,6BAA6B;AAC7B,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB;;;2EAGyE,EACzE;IACE,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;IACvF,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;CACzF,EACD,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;IACrC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAE1C,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAgB,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK;iBAC1B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;iBAC3D,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,2BAA2B,QAAQ,EAAE,EAAE,CAAC;aAClF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,cAAc,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;SAChE,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC;AAEF,mBAAmB;AACnB,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TableSchema } from '../../types/schema.js';
2
+ export declare function generateController(schema: TableSchema): string;
3
+ //# sourceMappingURL=controller.tpl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/backend/controller.tpl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAgM9D"}
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateController = generateController;
4
+ function generateController(schema) {
5
+ const m = schema.module;
6
+ const entity = m.entityName;
7
+ const hasWorkflow = m.hasWorkflow;
8
+ const hasExport = m.hasExport;
9
+ const hasPrint = m.hasPrint;
10
+ const pkg = `com.worsoft.worsoft.${m.moduleName}.controller`;
11
+ const basePkg = `com.worsoft.worsoft.${m.moduleName}`;
12
+ // 请求路径:从 apiBasePath 取最后一段,如 /oa/certBorrow → /certBorrow
13
+ const pathSegments = m.apiBasePath.split('/').filter(Boolean);
14
+ const requestPath = '/' + pathSegments[pathSegments.length - 1];
15
+ // 基类选择
16
+ const baseController = hasWorkflow ? 'BaseProcessController' : 'BaseProcessController';
17
+ const baseControllerImport = `import com.worsoft.worsoft.common.data.base.${baseController};
18
+ import com.worsoft.worsoft.common.data.base.BaseService;`;
19
+ let imports = `import com.worsoft.worsoft.common.core.constant.ErrorConstants;
20
+ import com.worsoft.worsoft.common.core.constant.FieldConstant;
21
+ import com.worsoft.worsoft.common.core.util.R;
22
+ ${baseControllerImport}
23
+ import com.worsoft.worsoft.common.data.dto.PageDto;
24
+ import com.worsoft.worsoft.common.data.util.BaseQueryWrapper;
25
+ import com.worsoft.worsoft.common.data.util.WrapperBuilder;
26
+ import com.worsoft.worsoft.common.security.util.SecurityUtils;
27
+ import ${basePkg}.entity.${entity}Entity;
28
+ import ${basePkg}.service.${entity}Service;
29
+ import io.swagger.v3.oas.annotations.Operation;
30
+ import io.swagger.v3.oas.annotations.tags.Tag;
31
+ import lombok.RequiredArgsConstructor;
32
+ import org.springframework.web.bind.annotation.*;
33
+ import java.util.List;`;
34
+ if (hasExport) {
35
+ imports += `
36
+ import cn.hutool.core.bean.BeanUtil;
37
+ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
38
+ import com.worsoft.worsoft.common.excel.annotation.ResponseExcel;
39
+ import com.worsoft.worsoft.common.excel.dto.ExportExcelVO;
40
+ import java.util.Map;`;
41
+ }
42
+ if (hasPrint) {
43
+ imports += `
44
+ import com.worsoft.worsoft.common.data.handler.JimuResolver;
45
+ import com.worsoft.worsoft.common.security.tenant.TenantContextHolder;`;
46
+ }
47
+ // 方法生成
48
+ let methods = '';
49
+ // getCurrentService
50
+ methods += `
51
+ @Override
52
+ protected BaseService getCurrentService() {
53
+ return ${lowerFirst(entity)}Service;
54
+ }
55
+ `;
56
+ // removeByIds
57
+ methods += `
58
+ /**
59
+ * 通过id删除${m.businessName}
60
+ */
61
+ @Operation(summary = "通过id删除${m.businessName}", description = "通过id删除${m.businessName}")
62
+ @PostMapping("/removeByIds")
63
+ public R removeById(@RequestBody List<Long> ids) {
64
+ return R.ok(${lowerFirst(entity)}Service.removeByIds(ids));
65
+ }
66
+ `;
67
+ // save
68
+ methods += `
69
+ /**
70
+ * 新增${m.businessName}
71
+ */
72
+ @Operation(summary = "新增${m.businessName}", description = "新增${m.businessName}")
73
+ @PostMapping
74
+ public R save(@RequestBody ${entity}Entity entity) {
75
+ if (${lowerFirst(entity)}Service.save(entity)) {
76
+ return R.ok(entity);
77
+ }
78
+ return R.failed(ErrorConstants.SUBMIT_ERROR_MSG);
79
+ }
80
+ `;
81
+ // updateById
82
+ methods += `
83
+ /**
84
+ * 修改${m.businessName}
85
+ */
86
+ @Operation(summary = "修改${m.businessName}", description = "修改${m.businessName}")
87
+ @PostMapping("/updateById")
88
+ public R updateById(@RequestBody ${entity}Entity entity) {
89
+ if (${lowerFirst(entity)}Service.updateAllColumnById(entity)) {
90
+ return R.ok(entity);
91
+ }
92
+ return R.failed(ErrorConstants.DB_UPDATE_ERROR_MSG);
93
+ }
94
+ `;
95
+ // getById
96
+ methods += `
97
+ /**
98
+ * 通过id查询${m.businessName}
99
+ */
100
+ @Operation(summary = "通过id查询", description = "通过id查询")
101
+ @GetMapping("/{id}")
102
+ public R getById(@PathVariable("id") Long id) {
103
+ return R.ok(${lowerFirst(entity)}Service.getById(id));
104
+ }
105
+ `;
106
+ // page
107
+ methods += `
108
+ /**
109
+ * 分页查询${m.businessName}
110
+ */
111
+ @Operation(summary = "分页查询", description = "分页查询")
112
+ @GetMapping("/page")
113
+ public R get${entity}Page(PageDto page, ${entity}Entity entity) {
114
+ BaseQueryWrapper<${entity}Entity> query = WrapperBuilder.generateQuery(entity, page);
115
+ query.likeRight(FieldConstant.CREATE_PSM_FULL_ID, SecurityUtils.getCurrentPsmInfo().getOgnFullId());
116
+ return R.ok(${lowerFirst(entity)}Service.page(page, query));
117
+ }
118
+ `;
119
+ // export
120
+ if (hasExport) {
121
+ methods += `
122
+ /**
123
+ * 导出${m.businessName}
124
+ */
125
+ @ResponseExcel
126
+ @Operation(summary = "导出功能", description = "导出功能")
127
+ @PostMapping("/export")
128
+ public ExportExcelVO export(@RequestBody Map params) {
129
+ PageDto page = new PageDto();
130
+ page.setSize(-1);
131
+ BeanUtil.copyProperties(params, page);
132
+ ${entity}Entity entity = new ${entity}Entity();
133
+ BeanUtil.copyProperties(params, entity);
134
+ BaseQueryWrapper<${entity}Entity> query = WrapperBuilder.generateQuery(entity, page);
135
+ query.likeRight(FieldConstant.CREATE_PSM_FULL_ID, SecurityUtils.getCurrentPsmInfo().getOgnFullId());
136
+ List<${entity}Entity> records = ${lowerFirst(entity)}Service.page((Page) page, query).getRecords();
137
+ return new ExportExcelVO(records, params);
138
+ }
139
+ `;
140
+ }
141
+ // print
142
+ if (hasPrint) {
143
+ methods += `
144
+ /**
145
+ * 获取打印数据
146
+ */
147
+ @Operation(summary = "获取打印数据通过ID", description = "获取打印数据通过ID")
148
+ @GetMapping("/getPrintById/{id}")
149
+ public R getPrintById(@PathVariable("id") Long id) {
150
+ try {
151
+ TenantContextHolder.setTenantSkip();
152
+ return R.ok(JimuResolver.getObj(${lowerFirst(entity)}Service.getById(id)));
153
+ } finally {
154
+ TenantContextHolder.clear();
155
+ }
156
+ }
157
+ `;
158
+ }
159
+ return `/*
160
+ * Copyright (c) 2018-2025, worsoft All rights reserved.
161
+ */
162
+ package ${pkg};
163
+
164
+ ${imports}
165
+
166
+ /**
167
+ * ${m.businessName}
168
+ *
169
+ * @author codegen
170
+ */
171
+ @RestController
172
+ @RequiredArgsConstructor
173
+ @RequestMapping("${requestPath}")
174
+ @Tag(description = "${entity}", name = "${m.businessName}管理")
175
+ public class ${entity}Controller extends ${baseController} {
176
+
177
+ private final ${entity}Service ${lowerFirst(entity)}Service;
178
+ ${methods}
179
+ }
180
+ `;
181
+ }
182
+ function lowerFirst(s) {
183
+ return s.charAt(0).toLowerCase() + s.slice(1);
184
+ }
185
+ //# sourceMappingURL=controller.tpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.tpl.js","sourceRoot":"","sources":["../../../src/templates/backend/controller.tpl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { TableSchema } from '../../types/schema.js';
2
+ export declare function generateMasterEntity(schema: TableSchema): string;
3
+ export declare function generateDetailEntity(schema: TableSchema): string;
4
+ //# sourceMappingURL=entity.tpl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/backend/entity.tpl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,MAAM,uBAAuB,CAAC;AAuD9D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA4FhE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA0EhE"}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateMasterEntity = generateMasterEntity;
4
+ exports.generateDetailEntity = generateDetailEntity;
5
+ /** BaseEntity 已有的字段,不需要在子类中重复声明 */
6
+ const BASE_ENTITY_FIELDS = new Set([
7
+ 'version', 'createUserId', 'createUser', 'createPosId', 'createPos',
8
+ 'createDptId', 'createDpt', 'createOgnId', 'createOgn',
9
+ 'createPsmFullId', 'createPsmFullName', 'updatePsmFullId', 'updatePsmFullName',
10
+ 'createTime', 'updateTime'
11
+ ]);
12
+ /** 将 schema 的 dataType + 字段特征 映射为 Java 类型 */
13
+ function toJavaType(field) {
14
+ if (field.isPrimaryKey)
15
+ return 'Long';
16
+ if (field.isForeignKey)
17
+ return 'Long';
18
+ if (field.fieldName === 'tenantId')
19
+ return 'Long';
20
+ if (field.fieldName.endsWith('Id') && !field.dictCode)
21
+ return 'Long';
22
+ if (field.dataType === 'date')
23
+ return 'LocalDate';
24
+ if (field.dataType === 'datetime')
25
+ return 'LocalDateTime';
26
+ return 'String';
27
+ }
28
+ /** 获取需要导入的 Java 类型 */
29
+ function getImports(fields) {
30
+ const imports = new Set();
31
+ for (const f of fields) {
32
+ const jt = toJavaType(f);
33
+ if (jt === 'LocalDate')
34
+ imports.add('java.time.LocalDate');
35
+ if (jt === 'LocalDateTime')
36
+ imports.add('java.time.LocalDateTime');
37
+ }
38
+ return Array.from(imports).sort();
39
+ }
40
+ /** 是否有 @DateTimeFormat 注解 */
41
+ function needsDateTimeFormat(field) {
42
+ return field.dataType === 'date' && !!field.dateFormat;
43
+ }
44
+ /** 是否有 @Dict 注解 */
45
+ function needsDict(field) {
46
+ return !!field.dictCode && !!field.needFormatter;
47
+ }
48
+ /** 从 tableName 去掉模块前缀,如 oa_cert_borrow → cert_borrow */
49
+ function stripModulePrefix(tableName, moduleName) {
50
+ const prefix = moduleName + '_';
51
+ return tableName.startsWith(prefix) ? tableName.substring(prefix.length) : tableName;
52
+ }
53
+ /** 过滤掉 BaseEntity 已有的字段 */
54
+ function filterEntityFields(fields) {
55
+ return fields.filter(f => !BASE_ENTITY_FIELDS.has(f.fieldName));
56
+ }
57
+ // ========== Entity ==========
58
+ function generateMasterEntity(schema) {
59
+ const m = schema.module;
60
+ const master = schema.master;
61
+ const entityName = m.entityName;
62
+ const pkg = `com.worsoft.worsoft.${m.moduleName}.entity`;
63
+ const tableName = stripModulePrefix(master.tableName, m.moduleName);
64
+ const fields = filterEntityFields(master.fields);
65
+ const hasDetail = !!schema.detail;
66
+ const javaImports = getImports(fields);
67
+ const needsList = hasDetail;
68
+ const needsDict = fields.some(f => f.dictCode && f.needFormatter);
69
+ const needsDateFormat = fields.some(f => needsDateTimeFormat(f));
70
+ let importBlock = `import com.baomidou.mybatisplus.annotation.IdType;
71
+ import com.baomidou.mybatisplus.annotation.TableId;
72
+ import com.baomidou.mybatisplus.annotation.TableName;
73
+ import com.worsoft.worsoft.common.core.base.BaseEntity;
74
+ import io.swagger.v3.oas.annotations.media.Schema;
75
+ import lombok.Data;
76
+ import lombok.EqualsAndHashCode;\n`;
77
+ if (hasDetail) {
78
+ importBlock += `import com.baomidou.mybatisplus.annotation.TableField;\n`;
79
+ importBlock += `import java.util.List;\n`;
80
+ }
81
+ if (needsDict) {
82
+ importBlock += `import com.worsoft.worsoft.common.core.annotation.Dict;\n`;
83
+ }
84
+ if (needsDateFormat) {
85
+ importBlock += `import org.springframework.format.annotation.DateTimeFormat;\n`;
86
+ }
87
+ for (const imp of javaImports) {
88
+ importBlock += `import ${imp};\n`;
89
+ }
90
+ // 生成字段声明
91
+ const fieldDecls = fields.map(f => {
92
+ const javaType = toJavaType(f);
93
+ let annotations = '';
94
+ if (f.isPrimaryKey) {
95
+ annotations += ` @TableId(type = IdType.ASSIGN_ID)\n`;
96
+ }
97
+ annotations += ` @Schema(description = "${f.label}")`;
98
+ if (f.dictCode && f.needFormatter) {
99
+ annotations += `\n @Dict(value = "${f.dictCode}")`;
100
+ }
101
+ if (needsDateTimeFormat(f)) {
102
+ annotations += `\n @DateTimeFormat(pattern="${f.dateFormat}")`;
103
+ }
104
+ return `\n${annotations}\n private ${javaType} ${f.fieldName};`;
105
+ }).join('\n');
106
+ // 从表关联字段
107
+ const detailField = hasDetail ? `
108
+
109
+ /**
110
+ * ${schema.detail.detailTitle}
111
+ */
112
+ @TableField(exist = false)
113
+ @Schema(description = "${schema.detail.detailTitle}")
114
+ private List<${entityName}DetailEntity> ${schema.detail.detailListName};` : '';
115
+ return `/*
116
+ * Copyright (c) 2018-2025, worsoft All rights reserved.
117
+ */
118
+ package ${pkg};
119
+
120
+ ${importBlock}
121
+ /**
122
+ * ${m.businessName}
123
+ *
124
+ * @author codegen
125
+ */
126
+ @Data
127
+ @TableName("${tableName}")
128
+ @EqualsAndHashCode(callSuper = true)
129
+ @Schema(description = "${m.businessName}")
130
+ public class ${entityName}Entity extends BaseEntity<${entityName}Entity> {
131
+ ${fieldDecls}
132
+ ${detailField}
133
+
134
+ /**
135
+ * 行状态: 0=normal; -1=delete
136
+ */
137
+ @TableField(exist = false)
138
+ @Schema(description = "行状态.取值范围0:正常; -1:删除;")
139
+ private Integer rowStatus = 0;
140
+ }
141
+ `;
142
+ }
143
+ function generateDetailEntity(schema) {
144
+ if (!schema.detail)
145
+ return '';
146
+ const m = schema.module;
147
+ const detail = schema.detail;
148
+ const entityName = m.entityName;
149
+ const pkg = `com.worsoft.worsoft.${m.moduleName}.entity`;
150
+ const tableName = stripModulePrefix(detail.tableName, m.moduleName);
151
+ const fields = filterEntityFields(detail.fields);
152
+ const javaImports = getImports(fields);
153
+ const needsDateFormat = fields.some(f => needsDateTimeFormat(f));
154
+ let importBlock = `import com.baomidou.mybatisplus.annotation.IdType;
155
+ import com.baomidou.mybatisplus.annotation.TableField;
156
+ import com.baomidou.mybatisplus.annotation.TableId;
157
+ import com.baomidou.mybatisplus.annotation.TableName;
158
+ import com.worsoft.worsoft.common.core.base.BaseEntity;
159
+ import io.swagger.v3.oas.annotations.media.Schema;
160
+ import lombok.Data;
161
+ import lombok.EqualsAndHashCode;\n`;
162
+ if (needsDateFormat) {
163
+ importBlock += `import org.springframework.format.annotation.DateTimeFormat;\n`;
164
+ }
165
+ for (const imp of javaImports) {
166
+ importBlock += `import ${imp};\n`;
167
+ }
168
+ const fieldDecls = fields.map(f => {
169
+ const javaType = toJavaType(f);
170
+ let annotations = '';
171
+ if (f.isPrimaryKey) {
172
+ annotations += ` @TableId(type = IdType.ASSIGN_ID)\n`;
173
+ }
174
+ if (f.fieldName === 'tenantId') {
175
+ annotations += ` @Schema(description = "${f.label}", hidden = true)`;
176
+ }
177
+ else {
178
+ annotations += ` @Schema(description = "${f.label}")`;
179
+ }
180
+ if (needsDateTimeFormat(f)) {
181
+ annotations += `\n @DateTimeFormat(pattern="${f.dateFormat}")`;
182
+ }
183
+ return `\n${annotations}\n private ${javaType} ${f.fieldName};`;
184
+ }).join('\n');
185
+ return `/*
186
+ * Copyright (c) 2018-2025, worsoft All rights reserved.
187
+ */
188
+ package ${pkg};
189
+
190
+ ${importBlock}
191
+ /**
192
+ * ${detail.detailTitle}
193
+ *
194
+ * @author codegen
195
+ */
196
+ @Data
197
+ @TableName("${tableName}")
198
+ @EqualsAndHashCode(callSuper = true)
199
+ @Schema(description = "${detail.detailTitle}")
200
+ public class ${entityName}DetailEntity extends BaseEntity<${entityName}DetailEntity> {
201
+
202
+ private static final long serialVersionUID = 1L;
203
+ ${fieldDecls}
204
+
205
+ /**
206
+ * 行状态: 0=normal; -1=delete
207
+ */
208
+ @TableField(exist = false)
209
+ @Schema(description = "行状态.取值范围0:正常; -1:删除;")
210
+ private Integer rowStatus = 0;
211
+ }
212
+ `;
213
+ }
214
+ //# sourceMappingURL=entity.tpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.tpl.js","sourceRoot":"","sources":["../../../src/templates/backend/entity.tpl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { TableSchema } from '../../types/schema.js';
2
+ export declare function generateMasterMapper(schema: TableSchema): string;
3
+ export declare function generateDetailMapper(schema: TableSchema): string;
4
+ export declare function generateMasterMapperXml(schema: TableSchema): string;
5
+ export declare function generateDetailMapperXml(schema: TableSchema): string;
6
+ //# sourceMappingURL=mapper.tpl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/backend/mapper.tpl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAwBhE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAyBhE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAWnE;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAYnE"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateMasterMapper = generateMasterMapper;
4
+ exports.generateDetailMapper = generateDetailMapper;
5
+ exports.generateMasterMapperXml = generateMasterMapperXml;
6
+ exports.generateDetailMapperXml = generateDetailMapperXml;
7
+ function generateMasterMapper(schema) {
8
+ const m = schema.module;
9
+ const pkg = `com.worsoft.worsoft.${m.moduleName}.mapper`;
10
+ const entityPkg = `com.worsoft.worsoft.${m.moduleName}.entity`;
11
+ return `/*
12
+ * Copyright (c) 2018-2025, worsoft All rights reserved.
13
+ */
14
+ package ${pkg};
15
+
16
+ import com.worsoft.worsoft.common.data.datascope.WorsoftBaseMapper;
17
+ import ${entityPkg}.${m.entityName}Entity;
18
+ import org.apache.ibatis.annotations.Mapper;
19
+
20
+ /**
21
+ * ${m.businessName}
22
+ *
23
+ * @author codegen
24
+ */
25
+ @Mapper
26
+ public interface ${m.entityName}Mapper extends WorsoftBaseMapper<${m.entityName}Entity> {
27
+
28
+ }
29
+ `;
30
+ }
31
+ function generateDetailMapper(schema) {
32
+ if (!schema.detail)
33
+ return '';
34
+ const m = schema.module;
35
+ const pkg = `com.worsoft.worsoft.${m.moduleName}.mapper`;
36
+ const entityPkg = `com.worsoft.worsoft.${m.moduleName}.entity`;
37
+ return `/*
38
+ * Copyright (c) 2018-2025, worsoft All rights reserved.
39
+ */
40
+ package ${pkg};
41
+
42
+ import com.worsoft.worsoft.common.data.datascope.WorsoftBaseMapper;
43
+ import ${entityPkg}.${m.entityName}DetailEntity;
44
+ import org.apache.ibatis.annotations.Mapper;
45
+
46
+ /**
47
+ * ${schema.detail.detailTitle}
48
+ *
49
+ * @author codegen
50
+ */
51
+ @Mapper
52
+ public interface ${m.entityName}DetailMapper extends WorsoftBaseMapper<${m.entityName}DetailEntity> {
53
+
54
+ }
55
+ `;
56
+ }
57
+ function generateMasterMapperXml(schema) {
58
+ const m = schema.module;
59
+ const ns = `com.worsoft.worsoft.${m.moduleName}.mapper.${m.entityName}Mapper`;
60
+ return `<?xml version="1.0" encoding="UTF-8"?>
61
+ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
62
+
63
+ <mapper namespace="${ns}">
64
+
65
+ </mapper>
66
+ `;
67
+ }
68
+ function generateDetailMapperXml(schema) {
69
+ if (!schema.detail)
70
+ return '';
71
+ const m = schema.module;
72
+ const ns = `com.worsoft.worsoft.${m.moduleName}.mapper.${m.entityName}DetailMapper`;
73
+ return `<?xml version="1.0" encoding="UTF-8"?>
74
+ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
75
+
76
+ <mapper namespace="${ns}">
77
+
78
+ </mapper>
79
+ `;
80
+ }
81
+ //# sourceMappingURL=mapper.tpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.tpl.js","sourceRoot":"","sources":["../../../src/templates/backend/mapper.tpl.ts"],"names":[],"mappings":";;AAEA,oDAwBC;AAED,oDAyBC;AAED,0DAWC;AAED,0DAYC;AA9ED,SAAgB,oBAAoB,CAAC,MAAmB;IACtD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,MAAM,GAAG,GAAG,uBAAuB,CAAC,CAAC,UAAU,SAAS,CAAC;IACzD,MAAM,SAAS,GAAG,uBAAuB,CAAC,CAAC,UAAU,SAAS,CAAC;IAE/D,OAAO;;;UAGC,GAAG;;;SAGJ,SAAS,IAAI,CAAC,CAAC,UAAU;;;;KAI7B,CAAC,CAAC,YAAY;;;;;mBAKA,CAAC,CAAC,UAAU,oCAAoC,CAAC,CAAC,UAAU;;;CAG9E,CAAC;AACF,CAAC;AAED,SAAgB,oBAAoB,CAAC,MAAmB;IACtD,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,MAAM,GAAG,GAAG,uBAAuB,CAAC,CAAC,UAAU,SAAS,CAAC;IACzD,MAAM,SAAS,GAAG,uBAAuB,CAAC,CAAC,UAAU,SAAS,CAAC;IAE/D,OAAO;;;UAGC,GAAG;;;SAGJ,SAAS,IAAI,CAAC,CAAC,UAAU;;;;KAI7B,MAAM,CAAC,MAAM,CAAC,WAAW;;;;;mBAKX,CAAC,CAAC,UAAU,0CAA0C,CAAC,CAAC,UAAU;;;CAGpF,CAAC;AACF,CAAC;AAED,SAAgB,uBAAuB,CAAC,MAAmB;IACzD,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,MAAM,EAAE,GAAG,uBAAuB,CAAC,CAAC,UAAU,WAAW,CAAC,CAAC,UAAU,QAAQ,CAAC;IAE9E,OAAO;;;qBAGY,EAAE;;;CAGtB,CAAC;AACF,CAAC;AAED,SAAgB,uBAAuB,CAAC,MAAmB;IACzD,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,MAAM,EAAE,GAAG,uBAAuB,CAAC,CAAC,UAAU,WAAW,CAAC,CAAC,UAAU,cAAc,CAAC;IAEpF,OAAO;;;qBAGY,EAAE;;;CAGtB,CAAC;AACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { TableSchema } from '../../types/schema.js';
2
+ export declare function generateMasterService(schema: TableSchema): string;
3
+ export declare function generateDetailService(schema: TableSchema): string;
4
+ export declare function generateMasterServiceImpl(schema: TableSchema): string;
5
+ export declare function generateDetailServiceImpl(schema: TableSchema): string;
6
+ //# sourceMappingURL=service.tpl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.tpl.d.ts","sourceRoot":"","sources":["../../../src/templates/backend/service.tpl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAsBjE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAuBjE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAmKrE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA4BrE"}
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateMasterService = generateMasterService;
4
+ exports.generateDetailService = generateDetailService;
5
+ exports.generateMasterServiceImpl = generateMasterServiceImpl;
6
+ exports.generateDetailServiceImpl = generateDetailServiceImpl;
7
+ function generateMasterService(schema) {
8
+ const m = schema.module;
9
+ const pkg = `com.worsoft.worsoft.${m.moduleName}.service`;
10
+ const entityPkg = `com.worsoft.worsoft.${m.moduleName}.entity`;
11
+ return `/*
12
+ * Copyright (c) 2018-2025, worsoft All rights reserved.
13
+ */
14
+ package ${pkg};
15
+
16
+ import com.worsoft.worsoft.common.data.base.BaseService;
17
+ import ${entityPkg}.${m.entityName}Entity;
18
+
19
+ /**
20
+ * ${m.businessName}
21
+ *
22
+ * @author codegen
23
+ */
24
+ public interface ${m.entityName}Service extends BaseService<${m.entityName}Entity> {
25
+
26
+ }
27
+ `;
28
+ }
29
+ function generateDetailService(schema) {
30
+ if (!schema.detail)
31
+ return '';
32
+ const m = schema.module;
33
+ const pkg = `com.worsoft.worsoft.${m.moduleName}.service`;
34
+ const entityPkg = `com.worsoft.worsoft.${m.moduleName}.entity`;
35
+ return `/*
36
+ * Copyright (c) 2018-2025, worsoft All rights reserved.
37
+ */
38
+ package ${pkg};
39
+
40
+ import com.worsoft.worsoft.common.data.base.BaseService;
41
+ import ${entityPkg}.${m.entityName}DetailEntity;
42
+
43
+ /**
44
+ * ${schema.detail.detailTitle}
45
+ *
46
+ * @author codegen
47
+ */
48
+ public interface ${m.entityName}DetailService extends BaseService<${m.entityName}DetailEntity> {
49
+
50
+ }
51
+ `;
52
+ }
53
+ function generateMasterServiceImpl(schema) {
54
+ const m = schema.module;
55
+ const entity = m.entityName;
56
+ const hasDetail = !!schema.detail;
57
+ const hasWorkflow = m.hasWorkflow;
58
+ const pkg = `com.worsoft.worsoft.${m.moduleName}.service.impl`;
59
+ const basePkg = `com.worsoft.worsoft.${m.moduleName}`;
60
+ let imports = `import com.worsoft.worsoft.common.data.base.BaseServiceImpl;
61
+ import ${basePkg}.entity.${entity}Entity;
62
+ import ${basePkg}.mapper.${entity}Mapper;
63
+ import ${basePkg}.service.${entity}Service;
64
+ import org.springframework.stereotype.Service;`;
65
+ if (hasDetail) {
66
+ const detail = schema.detail;
67
+ imports += `
68
+ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
69
+ import ${basePkg}.entity.${entity}DetailEntity;
70
+ import ${basePkg}.mapper.${entity}DetailMapper;
71
+ import org.springframework.beans.factory.annotation.Autowired;
72
+ import org.springframework.transaction.annotation.Transactional;
73
+ import java.io.Serializable;
74
+ import java.util.Collection;
75
+ import java.util.List;`;
76
+ }
77
+ if (hasWorkflow) {
78
+ imports += `
79
+ import cn.hutool.core.util.StrUtil;
80
+ import com.worsoft.worsoft.common.core.constant.enums.BillState;
81
+ import com.worsoft.worsoft.admin.feign.RemoteBillNumberService;
82
+ import java.time.LocalDateTime;`;
83
+ }
84
+ // 生成类体
85
+ let classBody = '';
86
+ if (hasDetail) {
87
+ const detail = schema.detail;
88
+ const detailListName = detail.detailListName;
89
+ const detailFkField = detail.detailFkField;
90
+ classBody += `
91
+ @Autowired
92
+ private ${entity}DetailMapper ${lowerFirst(entity)}DetailMapper;
93
+ `;
94
+ if (hasWorkflow) {
95
+ classBody += `
96
+ @Autowired
97
+ private RemoteBillNumberService remoteBillNumberService;
98
+ `;
99
+ }
100
+ // save
101
+ classBody += `
102
+ /**
103
+ * 新增${m.businessName}(含从表)
104
+ */
105
+ @Transactional(rollbackFor = Exception.class)
106
+ @Override
107
+ public boolean save(${entity}Entity entity) {
108
+ boolean result = super.save(entity);
109
+ this.saveDetails(entity);${hasWorkflow ? `
110
+ if (StrUtil.equals(BillState.FINISHED.getStatus(), entity.getBillStateId())) {
111
+ this.processCompleted(entity.getId());
112
+ }` : ''}
113
+ return result;
114
+ }
115
+
116
+ /**
117
+ * 修改${m.businessName}(含从表)
118
+ */
119
+ @Transactional(rollbackFor = Exception.class)
120
+ @Override
121
+ public boolean updateAllColumnById(${entity}Entity entity) {
122
+ boolean result = super.updateAllColumnById(entity);
123
+ ${lowerFirst(entity)}DetailMapper.delete(new QueryWrapper<${entity}DetailEntity>().eq("${toSnakeCase(detailFkField)}", entity.getId()));
124
+ this.saveDetails(entity);${hasWorkflow ? `
125
+ if (StrUtil.equals(BillState.FINISHED.getStatus(), entity.getBillStateId())) {
126
+ this.processCompleted(entity.getId());
127
+ }` : ''}
128
+ return result;
129
+ }
130
+
131
+ /**
132
+ * 查询${m.businessName}(含从表)
133
+ */
134
+ @Override
135
+ public ${entity}Entity getById(Serializable id) {
136
+ ${entity}Entity result = super.getById(id);
137
+ List<${entity}DetailEntity> details = ${lowerFirst(entity)}DetailMapper.selectList(new QueryWrapper<${entity}DetailEntity>().eq("${toSnakeCase(detailFkField)}", id));
138
+ result.set${upperFirst(detailListName)}(details);
139
+ return result;
140
+ }
141
+
142
+ /**
143
+ * 删除${m.businessName}(级联删除从表)
144
+ */
145
+ @Transactional(rollbackFor = Exception.class)
146
+ @Override
147
+ public boolean removeByIds(Collection idList) {
148
+ ${entity}DetailEntity detail = new ${entity}DetailEntity();
149
+ detail.delete(new QueryWrapper<${entity}DetailEntity>().in("${toSnakeCase(detailFkField)}", idList));
150
+ return super.removeByIds(idList);
151
+ }
152
+
153
+ /**
154
+ * 保存从表明细
155
+ */
156
+ private void saveDetails(${entity}Entity entity) {
157
+ List<${entity}DetailEntity> list = entity.get${upperFirst(detailListName)}();
158
+ if (list != null) {
159
+ for (${entity}DetailEntity detail : list) {
160
+ detail.set${upperFirst(detailFkField)}(entity.getId());
161
+ detail.insert();
162
+ }
163
+ }
164
+ }`;
165
+ }
166
+ else if (hasWorkflow) {
167
+ classBody += `
168
+ @Autowired
169
+ private RemoteBillNumberService remoteBillNumberService;
170
+ `;
171
+ }
172
+ // processCompleted (workflow)
173
+ if (hasWorkflow) {
174
+ classBody += `
175
+
176
+ /**
177
+ * 流程完成回调
178
+ */
179
+ @Override
180
+ @Transactional(rollbackFor = Exception.class)
181
+ public void processCompleted(Long businessId) {
182
+ ${entity}Entity entity = this.getById(businessId);
183
+ super.processCompleted(entity);
184
+ entity.setBillStateId(BillState.FINISHED.getStatus());
185
+ entity.setBillCode(remoteBillNumberService.getBillCode());
186
+ entity.setFinishedTime(LocalDateTime.now());
187
+ baseMapper.updateById(entity);
188
+ }`;
189
+ }
190
+ return `/*
191
+ * Copyright (c) 2018-2025, worsoft All rights reserved.
192
+ */
193
+ package ${pkg};
194
+
195
+ ${imports}
196
+
197
+ /**
198
+ * ${m.businessName} ServiceImpl
199
+ *
200
+ * @author codegen
201
+ */
202
+ @Service
203
+ public class ${entity}ServiceImpl extends BaseServiceImpl<${entity}Mapper, ${entity}Entity> implements ${entity}Service {
204
+ ${classBody}
205
+ }
206
+ `;
207
+ }
208
+ function generateDetailServiceImpl(schema) {
209
+ if (!schema.detail)
210
+ return '';
211
+ const m = schema.module;
212
+ const entity = m.entityName;
213
+ const pkg = `com.worsoft.worsoft.${m.moduleName}.service.impl`;
214
+ const basePkg = `com.worsoft.worsoft.${m.moduleName}`;
215
+ return `/*
216
+ * Copyright (c) 2018-2025, worsoft All rights reserved.
217
+ */
218
+ package ${pkg};
219
+
220
+ import com.worsoft.worsoft.common.data.base.BaseServiceImpl;
221
+ import ${basePkg}.entity.${entity}DetailEntity;
222
+ import ${basePkg}.mapper.${entity}DetailMapper;
223
+ import ${basePkg}.service.${entity}DetailService;
224
+ import org.springframework.stereotype.Service;
225
+
226
+ /**
227
+ * ${schema.detail.detailTitle}
228
+ *
229
+ * @author codegen
230
+ */
231
+ @Service
232
+ public class ${entity}DetailServiceImpl extends BaseServiceImpl<${entity}DetailMapper, ${entity}DetailEntity> implements ${entity}DetailService {
233
+
234
+ }
235
+ `;
236
+ }
237
+ function lowerFirst(s) {
238
+ return s.charAt(0).toLowerCase() + s.slice(1);
239
+ }
240
+ function upperFirst(s) {
241
+ return s.charAt(0).toUpperCase() + s.slice(1);
242
+ }
243
+ function toSnakeCase(s) {
244
+ return s.replace(/([A-Z])/g, '_$1').toLowerCase();
245
+ }
246
+ //# sourceMappingURL=service.tpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.tpl.js","sourceRoot":"","sources":["../../../src/templates/backend/service.tpl.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-vue-codegen",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "description": "MCP Server for generating Vue3 CRUD module code from database table schema JSON",
5
5
  "author": "anshu",
6
6
  "main": "build/index.js",