Browse Source

优化模板与取值算法

master
hejl 3 weeks ago
parent
commit
8d1ed2ee29
  1. 58
      win_text_editor/assets/config/uft_macro_list.yaml
  2. 70
      win_text_editor/lib/modules/code_creater/services/code_create_service.dart

58
win_text_editor/assets/config/uft_macro_list.yaml

@ -66,7 +66,7 @@ templates: @@ -66,7 +66,7 @@ templates:
body: |
<M>[获取记录][{{tableName}}({{keyName}})][
{{#keyFields}}
{{name}} = @{{name}}{{^isLast}}, {{/isLast}}
{{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}}
{{/keyFields}}
]
[继续执行]
@ -80,7 +80,29 @@ templates: @@ -80,7 +80,29 @@ templates:
<F>[修改索引字段][{{tableName}}][
{{#keyFields}}
{{name}} = @{{name}}{{^isLast}}, {{/isLast}}
{{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}}
{{/keyFields}}
]
}
修改记录_ALL:
body: |
<M>[获取记录][{{tableName}}({{keyName}})][
{{#keyFields}}
{{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}}
{{/keyFields}}
]
[继续执行]
[记录不为空][{{tableName}}]
{
[修改记录][{{tableName}}][
{{#fields}}
{{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}}
{{/fields}}
]
<F>[修改索引字段][{{tableName}}][
{{#keyFields}}
{{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}}
{{/keyFields}}
]
}
@ -89,7 +111,7 @@ templates: @@ -89,7 +111,7 @@ templates:
body: |
<M>[获取记录][{{tableName}}({{keyName}})][
{{#keyFields}}
{{name}} = @{{name}}{{^isLast}}, {{/isLast}}
{{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}}
{{/keyFields}}
]
[继续执行]
@ -102,7 +124,7 @@ templates: @@ -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: @@ -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: @@ -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: @@ -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: @@ -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: @@ -197,7 +219,7 @@ templates:
尾部插入组件:
body: |
[插入组件][{{name}}][
[尾部插入组件][{{name}}][
{{#fields}}
{{name}} = @{{#partnerName}}{{partnerName}}.{{/partnerName}}{{name}}{{^isLast}}, {{/isLast}}
{{/fields}}
@ -209,7 +231,7 @@ templates: @@ -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}}
]

70
win_text_editor/lib/modules/code_creater/services/code_create_service.dart

@ -166,6 +166,15 @@ class CodeCreateService { @@ -166,6 +166,15 @@ class CodeCreateService {
List<String> 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 { @@ -174,7 +183,6 @@ class CodeCreateService {
inputFields.add(fieldName);
}
}
if (iterateStack.isNotEmpty) {
//
iterateOutputFields.putIfAbsent(iterateStack.last, () => []).addAll(fieldNames);
@ -200,8 +208,7 @@ class CodeCreateService { @@ -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 { @@ -229,9 +236,16 @@ class CodeCreateService {
);
List<String> 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 { @@ -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);
}
}
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));
}
continue case_get;
case_get:
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 { @@ -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 = ,');
}

Loading…
Cancel
Save