更新 llms-full.txt

This commit is contained in:
oyo
2025-07-10 19:15:48 +08:00
parent 69c7ab9f36
commit b8a7593a6a

View File

@@ -245,7 +245,7 @@ DateTime endTime //会议结束时间
- **预定义方法:** 对于每一个DTOTOCO会自动其根Entity的唯一索引生成一些预定义的RPC方法及实现预定义方法不仅获取了根Entity的数据还通过RPC调用的方式**自动**获取了**所有扩展字段**的数据并对数据进行了拼装处理。如实体user有unique index(username)则会针对UserDto生成UserDto UserDtoService.getByUserName(String userName)和List<UserDto> UserDtoService.getByUserNames(List<String> userNames)。预定义方法内部根据外键关系自动生成了复杂DTO数据的递归、Join拼装的能力会直接返回DTO内部的所有继承字段和扩展字段的数据。注意自定义字段的数据获取不会自动生成需要在对应的convert方法中编写代码。
- **公开性:** DTO可以设置公开性如果DTO为公开则其生成的预定义RPC方法也为公开RPC可以被其他模块订阅并调用如果DTO为非公开则其生成的预定义RPC方法也为非公开RPC其他模块不可见
- **跨模块依赖:** 如果DTO内引用了其他模块的DTO则需要订阅其他模块的RPC(getByIds,getBy${foreignKey}等)方法用来获取对应的DTO
- **跨模块依赖:** 如果DTO内引用了其他模块的DTO则需要订阅其他模块的RPC(getBy${PrimaryKey},getBy${PrimaryKey}s,getBy${foreignKey}等)方法用来获取对应的DTO
- **复杂嵌套DTO获取流程:** 如果我们需要获取DTO通常有2种方式且两种方式都可以直接获取到复杂嵌套的DTO数据
- 第1种: 通过预定义方法获取DTO
- 第2种: 通过读方案获取DTO
@@ -277,7 +277,7 @@ DateTime endTime //会议结束时间
* 实现类Converter 其对应的唯一标志在类注解@AutoGenerated中指定,uuid规则: ${DTO在TOCO中的uuid}|DTO|CONVERTER
* 基类BaseConverter 其对应的唯一标志在类注解@AutoGenerated中指定,uuid规则: ${DTO在TOCO中的uuid}|DTO|BASE_CONVERTER
- **例子:**
* 如UserDto、UserDtoManager、UserDtoConverter extends UserDtoBaseConverter、UserDtoService或名称为${DtoName}Service内部包含getById,getByIds等方法。如果Dto为UserBaseDto则生成的类名为UserBaseDtoService
* 如UserDto、UserDtoManager、UserDtoConverter extends UserDtoBaseConverter、UserDtoService或名称为${DtoName}Service内部包含getBy${PrimaryKey},getBy${PrimaryKey}s等方法。如果Dto为UserBaseDto则生成的类名为UserBaseDtoService
- **修改建议:**
- 建议在Service与BaseConverter中进行代码扩展不建议修改结构定义文件和Manager文件。其中DTO的**自定义字段**由于不直接派生自Entity所以一般会对应取数逻辑代码。通常如果涉及到数据获取、计算和拼装批量处理的性能最好所以代码位置**必须**放在BaseConverter中已经自动生成的**列表**转换方法中批量取数组装如UserBaseDtoBaseConverter.convertUserToUserBaseDto(List<User>)或UserDtoBaseConverter.convertUserBaseDtoToUserDto(List<UserBaseDto>)
@@ -474,7 +474,7 @@ DateTime endTime //会议结束时间
- **派生源默认使用BaseDTO:** 除非用户指定了VO的派生源DTO否则创建VO时只可以用**BaseDTO**为派生源。
- **与DTO的转换关系:** 在创建一个**有派生源的**VO后TOCO会在生成代码时自动生成2种convert方法1.基础convert方法从DTO转换为VO仅转换结构以及基本类型字段的get/set方法命名为convertTo${VoName}、convertTo${VoName}List、convertTo${VoName}Map其中**Map转换方法**为底层批量方法通常也是自定义字段逻辑编写的位置复用性好会被其他convert方法调用单个和列表convert方法都通过**调用Map方法**来实现;2.带数据拼装逻辑的convert方法内部会**自动**调用基础convert方法从DTO转换为VO并设置基本类型字段数据然后再根据外键**自动**获取**扩展字段**的数据以拼装最终数据方法命名为convertAndAssembleData、convertAndAssembleDataList也就是说这两个方法已经**自动**获取了所有**继承字段**和**扩展字段**的数据)。这2种方法对应的代码会生成在VO对应的Converter类中
- **字段数据获取:** 对于继承自DTO的字段、以及扩展字段TOCO会在convert方法中自动生成数据的获取代码无需手动实现这两种字段的获取和拼装逻辑。对于自定义字段则**必须**在最底层的convertTo${VoName}Map方法中实现对应的获取和拼装逻辑以便于其他convert方法都能够**复用**这段逻辑。**禁止**在其他convert方法中实现自定义字段逻辑因为这样会导致某些场景下数据拼装不完整。
- **跨模块依赖:** 如果VO内存在由其他模块DTO派生出的子VO则需要订阅其他模块的RPC(getByIds,getBy${ForeignKey}s等)方法用来获取对应的DTO然后再转换为子VO
- **跨模块依赖:** 如果VO内存在由其他模块DTO派生出的子VO则需要订阅其他模块的RPC(getBy${PrimaryKey},getBy${PrimaryKey}s,getBy${ForeignKey}s等)方法用来获取对应的DTO然后再转换为子VO
- **复杂嵌套VO获取流程:** 如果我们需要获取VO通常有3种方式且3种方式都可以直接获取到复杂嵌套的VO数据
- 第1种: 先通过预定义方法获取VO的派生源BaseDTO再通过convertAndAssembleData或convertAndAssembleDataList方法转换成VO
- 第2种: 先通过读方案获取VO的派生源BaseDTO再通过convertAndAssembleData或convertAndAssembleDataList方法转换成VO
@@ -1088,7 +1088,7 @@ DateTime endTime //会议结束时间
结构中一些关键字段描述如下:
requestParams为请求参数列表response为返回结构requestParams中每个参数和response的结构相同其中name为参数名;type为参数类型参数类型取值范围为Boolean,String,Integer,Long,Float,Double,BigDecimal,Date,ByteArray,Enum,Eo,List,Dto,Qto,Bto,Void其中参数不能为Void如果不需要返回值则type设置为Voiddescription为描述typeUuid为参数对应类结构的UUID当type为Enum、Eo、Dto、Qto、Bto时包含该字段innerType为List内部类型当type为List时包含该字段innerUuid为List内部类结构的UUID当type为List且innerType为Enum、Eo、Dto、Qto、Bto时包含该字段。
- **代码产物和修改建议**
- **生成代码:** RPC会在service层中生成类文件及实现函数包含DTO自动生成的RPC如UserDtoService.getById或UserBaseDtoService.getById、读写方案自动生成的RPC如UserDtoQueryService.queryByListQto、UserBOService.createUser、自定义RPC如UserCustomService.customMethod。特别注意公开的RPC才可被其他模块使用RPC被订阅后会生成RpcAdapter适配器其他模块通过RpcAdapter才可调用该方法。如Order模块订阅了User模块的UserDtoService.getById则会在Order模块中生成UserDtoServiceInOrderRpcAdapter.getById方法Order模块中的代码必须通过@Resource private UserDtoServiceInOrderRpcAdapter userDtoServiceInOrderRpcAdapter;注入适配器后才可进行方法调用
- **生成代码:** RPC会在service层中生成类文件及实现函数包含DTO自动生成的RPC如UserDtoService.getById(主键为id)或StaffBaseDtoService.getByStaffId(主键为staff_id)、读写方案自动生成的RPC如UserDtoQueryService.queryByListQto、UserBOService.createUser、自定义RPC如UserCustomService.customMethod。特别注意公开的RPC才可被其他模块使用RPC被订阅后会生成RpcAdapter适配器其他模块通过RpcAdapter才可调用该方法。如Order模块订阅了User模块的UserDtoService.getById则会在Order模块中生成UserDtoServiceInOrderRpcAdapter.getById方法Order模块中的代码必须通过@Resource private UserDtoServiceInOrderRpcAdapter userDtoServiceInOrderRpcAdapter;注入适配器后才可进行方法调用。这里要注意,
- **修改建议:** 建议修改RPC方法不建议修改RPC方法签名、适配器中的内容
#### **2.14 应用程序接口 (API)**
- **定义与用途:** 在TOCO中API用于定义对外暴露的HTTP接口