diff --git a/win_text_editor/assets/config/uft_macro_list.yaml b/win_text_editor/assets/config/uft_macro_list.yaml index 628985b..ec85701 100644 --- a/win_text_editor/assets/config/uft_macro_list.yaml +++ b/win_text_editor/assets/config/uft_macro_list.yaml @@ -66,7 +66,7 @@ templates: body: | [获取记录][{{tableName}}({{keyName}})][ {{#keyFields}} - {{name}} = @{{name}}{{^isLast}}, {{/isLast}} + {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}} {{/keyFields}} ] [继续执行] @@ -80,7 +80,29 @@ templates: [修改索引字段][{{tableName}}][ {{#keyFields}} - {{name}} = @{{name}}{{^isLast}}, {{/isLast}} + {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}} + {{/keyFields}} + ] + } + 修改记录_ALL: + body: | + [获取记录][{{tableName}}({{keyName}})][ + {{#keyFields}} + {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}} + {{/keyFields}} + ] + [继续执行] + [记录不为空][{{tableName}}] + { + [修改记录][{{tableName}}][ + {{#fields}} + {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}} + {{/fields}} + ] + + [修改索引字段][{{tableName}}][ + {{#keyFields}} + {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}} {{/keyFields}} ] } @@ -89,7 +111,7 @@ templates: body: | [获取记录][{{tableName}}({{keyName}})][ {{#keyFields}} - {{name}} = @{{name}}{{^isLast}}, {{/isLast}} + {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}} {{/keyFields}} ] [继续执行] @@ -102,7 +124,7 @@ templates: body: | [遍历记录开始][{{tableName}}({{selectIndexOrKey.name}})][ {{#selectIndexOrKey.fields}} - {{name}} = @{{name}}{{^isLast}}, {{/isLast}} + {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}} {{/selectIndexOrKey.fields}} ][ {{#selectedFields}} @@ -116,15 +138,7 @@ templates: 遍历记录_ALL: body: | - [遍历记录开始][{{tableName}}({{selectIndexOrKey.name}})][ - {{#selectIndexOrKey.fields}} - {{name}} = @{{name}}{{^isLast}}, {{/isLast}} - {{/selectIndexOrKey.fields}} - ][ - {{#selectedFields}} - {{name}} = @{{name}}{{^isLast}}, {{/isLast}} - {{/selectedFields}} - ] + [遍历记录开始][{{tableName}}][][] 遍历记录结束_ALL: @@ -147,13 +161,21 @@ templates: {{/selectedFields}} ] + 修改组件_ALL: + body: | + [修改组件][{{name}}][@num][ + {{#fields}} + {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}} + {{/fields}} + ] + 获取组件: body: | {{#hasIndex}}[组件排序][{{name}}(index.name)]{{/hasIndex}} [获取组件][{{name}}{{#hasIndex}}({{index.name}}){{/hasIndex}}][{{^hasIndex}}[@num][{{/hasIndex}} {{#hasIndex}} {{#index.fields}} - {{name}} = @{{name}}{{^isLast}}, {{/isLast}} + {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}} {{/index.fields}} ][ {{/hasIndex}} @@ -168,7 +190,7 @@ templates: [获取组件][{{name}}{{#hasIndex}}({{index.name}}){{/hasIndex}}][{{^hasIndex}}[@num][{{/hasIndex}} {{#hasIndex}} {{#index.fields}} - {{name}} = @{{name}}{{^isLast}}, {{/isLast}} + {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}} {{/index.fields}} ][ {{/hasIndex}}] @@ -179,7 +201,7 @@ templates: [遍历组件开始][{{name}}{{#hasIndex}}({{index.name}}){{/hasIndex}}][ {{#hasIndex}} {{#index.fields}} - {{name}} = @{{name}}{{^isLast}}, {{/isLast}} + {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}} {{/index.fields}} {{/hasIndex}} ][ @@ -197,7 +219,7 @@ templates: 尾部插入组件: body: | - [插入组件][{{name}}][ + [尾部插入组件][{{name}}][ {{#fields}} {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}} {{/fields}} @@ -209,7 +231,7 @@ templates: [遍历组件开始][{{name}}{{#hasIndex}}({{index.name}}){{/hasIndex}}][ {{#hasIndex}} {{#index.fields}} - {{name}} = @{{name}} {{^isLast}}, {{/isLast}} + {{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}} {{^isLast}}, {{/isLast}} {{/index.fields}} {{/hasIndex}} ] diff --git a/win_text_editor/lib/modules/code_creater/services/code_create_service.dart b/win_text_editor/lib/modules/code_creater/services/code_create_service.dart index 849c18d..a3ff006 100644 --- a/win_text_editor/lib/modules/code_creater/services/code_create_service.dart +++ b/win_text_editor/lib/modules/code_creater/services/code_create_service.dart @@ -166,6 +166,15 @@ class CodeCreateService { List fieldNames = memoryTable.columns.map((col) => col.name).toList(); switch (action) { + case '删除记录': + for (var fieldName in memoryTable.keyFields) { + if (!outputFields.contains(fieldName) && + !inputFields.contains(fieldName) && + !iterateOutputFields.values.expand((list) => list).contains(fieldName)) { + inputFields.add(fieldName); + } + } + break; case '获取记录': for (var fieldName in memoryTable.keyFields) { if (!outputFields.contains(fieldName) && @@ -174,7 +183,6 @@ class CodeCreateService { inputFields.add(fieldName); } } - if (iterateStack.isNotEmpty) { //仍在遍历块内,加入最近遍历块中 iterateOutputFields.putIfAbsent(iterateStack.last, () => []).addAll(fieldNames); @@ -200,8 +208,7 @@ class CodeCreateService { break; case '插入记录': case '修改记录': - case '删除记录': - for (var fieldName in memoryTable.keyFields) { + for (var fieldName in fieldNames) { if (!outputFields.contains(fieldName) && !inputFields.contains(fieldName) && !iterateOutputFields.values.expand((list) => list).contains(fieldName)) { @@ -229,9 +236,16 @@ class CodeCreateService { ); List fieldNames = component.fields.map((col) => col.name).toList(); + final componentName = component.name; switch (action) { case "遍历组件": + if (!outputFields.contains(componentName) && + !inputFields.contains(componentName) && + !iterateOutputFields.values.expand((list) => list).contains(componentName)) { + inputFields.add(componentName); + } + iterateStack.add(component.name); //入栈 iterateOutputFields.putIfAbsent(iterateStack.last, () => []).addAll(fieldNames); @@ -242,33 +256,58 @@ class CodeCreateService { break; - case "插入组件": case "修改组件": - for (var field in component.fields) { - if (!outputFields.contains(field.name) && - !inputFields.contains(field.name) && - !iterateOutputFields.values.expand((list) => list).contains(field.name)) { - inputFields.add(field.name); + //组件名检查 + if (!outputFields.contains(componentName) && + !inputFields.contains(componentName) && + !iterateOutputFields.values.expand((list) => list).contains(componentName)) { + inputFields.add(componentName); + } + continue case_insert; + case_insert: + case "插入组件": + case "尾部插入组件": + //入参检查 + for (var name in fieldNames) { + if (!outputFields.contains(name) && + !inputFields.contains(name) && + !iterateOutputFields.values.expand((list) => list).contains(name)) { + inputFields.add(name); } } - continue case_get; - case_get: + if (iterateStack.isNotEmpty) { + //仍在遍历块内,加入最近遍历块中 + iterateOutputFields.putIfAbsent(iterateStack.last, () => []).add(componentName); + iteratePartnerMap + .putIfAbsent(member.name, () => []) + .add(CodePartner(name: member.name, fields: fieldNames)); + } else { + //加入全局出参中 + outputFields.add(componentName); + beforePartner.add(CodePartner(name: member.name, fields: fieldNames)); + } + break; case "获取组件": + //组件名检查 + if (!outputFields.contains(componentName) && + !inputFields.contains(componentName) && + !iterateOutputFields.values.expand((list) => list).contains(componentName)) { + inputFields.add(componentName); + } //将出参加入作用域出参列表中 if (iterateStack.isNotEmpty) { //仍在遍历块内,加入最近遍历块中 iterateOutputFields.putIfAbsent(iterateStack.last, () => []).addAll(fieldNames); - iterateOutputFields[iterateStack.last]!.add(component.name); + iterateOutputFields[iterateStack.last]!.add(componentName); iteratePartnerMap .putIfAbsent(member.name, () => []) .add(CodePartner(name: member.name, fields: fieldNames)); } else { //加入全局出参中 outputFields.addAll(fieldNames); - outputFields.add(component.name); + outputFields.add(componentName); beforePartner.add(CodePartner(name: member.name, fields: fieldNames)); } - break; } @@ -287,7 +326,8 @@ class CodeCreateService { await parseRelationShips(members, selectedOperation); - codeBuffer.writeln("//可能需要传入的参数"); + if (inputFields.isNotEmpty) codeBuffer.writeln("//可能需要传入的参数"); + for (var field in inputFields) { codeBuffer.writeln('@$field = ,'); }