|
|
@ -166,6 +166,15 @@ class CodeCreateService { |
|
|
|
List<String> fieldNames = memoryTable.columns.map((col) => col.name).toList(); |
|
|
|
List<String> fieldNames = memoryTable.columns.map((col) => col.name).toList(); |
|
|
|
|
|
|
|
|
|
|
|
switch (action) { |
|
|
|
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 '获取记录': |
|
|
|
case '获取记录': |
|
|
|
for (var fieldName in memoryTable.keyFields) { |
|
|
|
for (var fieldName in memoryTable.keyFields) { |
|
|
|
if (!outputFields.contains(fieldName) && |
|
|
|
if (!outputFields.contains(fieldName) && |
|
|
@ -174,7 +183,6 @@ class CodeCreateService { |
|
|
|
inputFields.add(fieldName); |
|
|
|
inputFields.add(fieldName); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (iterateStack.isNotEmpty) { |
|
|
|
if (iterateStack.isNotEmpty) { |
|
|
|
//仍在遍历块内,加入最近遍历块中 |
|
|
|
//仍在遍历块内,加入最近遍历块中 |
|
|
|
iterateOutputFields.putIfAbsent(iterateStack.last, () => []).addAll(fieldNames); |
|
|
|
iterateOutputFields.putIfAbsent(iterateStack.last, () => []).addAll(fieldNames); |
|
|
@ -200,8 +208,7 @@ class CodeCreateService { |
|
|
|
break; |
|
|
|
break; |
|
|
|
case '插入记录': |
|
|
|
case '插入记录': |
|
|
|
case '修改记录': |
|
|
|
case '修改记录': |
|
|
|
case '删除记录': |
|
|
|
for (var fieldName in fieldNames) { |
|
|
|
for (var fieldName in memoryTable.keyFields) { |
|
|
|
|
|
|
|
if (!outputFields.contains(fieldName) && |
|
|
|
if (!outputFields.contains(fieldName) && |
|
|
|
!inputFields.contains(fieldName) && |
|
|
|
!inputFields.contains(fieldName) && |
|
|
|
!iterateOutputFields.values.expand((list) => list).contains(fieldName)) { |
|
|
|
!iterateOutputFields.values.expand((list) => list).contains(fieldName)) { |
|
|
@ -229,9 +236,16 @@ class CodeCreateService { |
|
|
|
); |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
List<String> fieldNames = component.fields.map((col) => col.name).toList(); |
|
|
|
List<String> fieldNames = component.fields.map((col) => col.name).toList(); |
|
|
|
|
|
|
|
final componentName = component.name; |
|
|
|
|
|
|
|
|
|
|
|
switch (action) { |
|
|
|
switch (action) { |
|
|
|
case "遍历组件": |
|
|
|
case "遍历组件": |
|
|
|
|
|
|
|
if (!outputFields.contains(componentName) && |
|
|
|
|
|
|
|
!inputFields.contains(componentName) && |
|
|
|
|
|
|
|
!iterateOutputFields.values.expand((list) => list).contains(componentName)) { |
|
|
|
|
|
|
|
inputFields.add(componentName); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
iterateStack.add(component.name); //入栈 |
|
|
|
iterateStack.add(component.name); //入栈 |
|
|
|
|
|
|
|
|
|
|
|
iterateOutputFields.putIfAbsent(iterateStack.last, () => []).addAll(fieldNames); |
|
|
|
iterateOutputFields.putIfAbsent(iterateStack.last, () => []).addAll(fieldNames); |
|
|
@ -242,33 +256,58 @@ class CodeCreateService { |
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case "插入组件": |
|
|
|
|
|
|
|
case "修改组件": |
|
|
|
case "修改组件": |
|
|
|
for (var field in component.fields) { |
|
|
|
//组件名检查 |
|
|
|
if (!outputFields.contains(field.name) && |
|
|
|
if (!outputFields.contains(componentName) && |
|
|
|
!inputFields.contains(field.name) && |
|
|
|
!inputFields.contains(componentName) && |
|
|
|
!iterateOutputFields.values.expand((list) => list).contains(field.name)) { |
|
|
|
!iterateOutputFields.values.expand((list) => list).contains(componentName)) { |
|
|
|
inputFields.add(field.name); |
|
|
|
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; |
|
|
|
if (iterateStack.isNotEmpty) { |
|
|
|
case_get: |
|
|
|
//仍在遍历块内,加入最近遍历块中 |
|
|
|
|
|
|
|
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 "获取组件": |
|
|
|
case "获取组件": |
|
|
|
|
|
|
|
//组件名检查 |
|
|
|
|
|
|
|
if (!outputFields.contains(componentName) && |
|
|
|
|
|
|
|
!inputFields.contains(componentName) && |
|
|
|
|
|
|
|
!iterateOutputFields.values.expand((list) => list).contains(componentName)) { |
|
|
|
|
|
|
|
inputFields.add(componentName); |
|
|
|
|
|
|
|
} |
|
|
|
//将出参加入作用域出参列表中 |
|
|
|
//将出参加入作用域出参列表中 |
|
|
|
if (iterateStack.isNotEmpty) { |
|
|
|
if (iterateStack.isNotEmpty) { |
|
|
|
//仍在遍历块内,加入最近遍历块中 |
|
|
|
//仍在遍历块内,加入最近遍历块中 |
|
|
|
iterateOutputFields.putIfAbsent(iterateStack.last, () => []).addAll(fieldNames); |
|
|
|
iterateOutputFields.putIfAbsent(iterateStack.last, () => []).addAll(fieldNames); |
|
|
|
iterateOutputFields[iterateStack.last]!.add(component.name); |
|
|
|
iterateOutputFields[iterateStack.last]!.add(componentName); |
|
|
|
iteratePartnerMap |
|
|
|
iteratePartnerMap |
|
|
|
.putIfAbsent(member.name, () => []) |
|
|
|
.putIfAbsent(member.name, () => []) |
|
|
|
.add(CodePartner(name: member.name, fields: fieldNames)); |
|
|
|
.add(CodePartner(name: member.name, fields: fieldNames)); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
//加入全局出参中 |
|
|
|
//加入全局出参中 |
|
|
|
outputFields.addAll(fieldNames); |
|
|
|
outputFields.addAll(fieldNames); |
|
|
|
outputFields.add(component.name); |
|
|
|
outputFields.add(componentName); |
|
|
|
beforePartner.add(CodePartner(name: member.name, fields: fieldNames)); |
|
|
|
beforePartner.add(CodePartner(name: member.name, fields: fieldNames)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -287,7 +326,8 @@ class CodeCreateService { |
|
|
|
|
|
|
|
|
|
|
|
await parseRelationShips(members, selectedOperation); |
|
|
|
await parseRelationShips(members, selectedOperation); |
|
|
|
|
|
|
|
|
|
|
|
codeBuffer.writeln("//可能需要传入的参数"); |
|
|
|
if (inputFields.isNotEmpty) codeBuffer.writeln("//可能需要传入的参数"); |
|
|
|
|
|
|
|
|
|
|
|
for (var field in inputFields) { |
|
|
|
for (var field in inputFields) { |
|
|
|
codeBuffer.writeln('@$field = ,'); |
|
|
|
codeBuffer.writeln('@$field = ,'); |
|
|
|
} |
|
|
|
} |
|
|
|