123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- package ${basePackage}.module.${table.moduleName}.service.${table.businessName};
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.transaction.annotation.Transactional;
- import java.util.*;
- import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*;
- import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
- ## 特殊:主子表专属逻辑
- #foreach ($subTable in $subTables)
- import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO;
- #end
- import ${PageResultClassName};
- import ${basePackage}.module.${table.moduleName}.convert.${table.businessName}.${table.className}Convert;
- import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper;
- ## 特殊:主子表专属逻辑
- #foreach ($subTable in $subTables)
- #set ($index = $foreach.count - 1)
- import ${basePackage}.module.${subTable.moduleName}.dal.mysql.${subTable.businessName}.${subTable.className}Mapper;
- #end
- import static ${ServiceExceptionUtilClassName}.exception;
- import static ${basePackage}.module.${table.moduleName}.enums.ErrorCodeConstants.*;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.core.collection.ListUtil;
- /**
- * ${table.classComment} Service 实现类
- *
- * @author ${table.author}
- */
- @Service
- @Validated
- public class ${table.className}ServiceImpl implements ${table.className}Service {
- @Resource
- private ${table.className}Mapper ${classNameVar}Mapper;
- ## 特殊:主子表专属逻辑
- #foreach ($subTable in $subTables)
- #set ($index = $foreach.count - 1)
- @Resource
- private ${subTable.className}Mapper ${subClassNameVars.get($index)}Mapper;
- #end
- @Override
- ## 特殊:主子表专属逻辑
- #if ( $subTables.size() > 0)
- @Transactional(rollbackFor = Exception.class)
- #end
- public ${primaryColumn.javaType} create${simpleClassName}(${sceneEnum.prefixClass}${table.className}CreateReqVO createReqVO) {
- // 插入
- ${table.className}DO ${classNameVar} = ${table.className}Convert.INSTANCE.convert(createReqVO);
- ${classNameVar}Mapper.insert(${classNameVar});
- ## 特殊:主子表专属逻辑
- #if ( $subTables.size() > 0)
- // 插入子表($subTable.classComment)
- #foreach ($subTable in $subTables)
- #set ($index = $foreach.count - 1)
- #set ($subSimpleClassName = $subSimpleClassNames.get($index))
- #set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段
- #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
- #if ( $subTable.subJoinMany)
- create${subSimpleClassName}List(${classNameVar}.getId(), createReqVO.get${subSimpleClassNames.get($index)}s());
- #else
- create${subSimpleClassName}(${classNameVar}.getId(), createReqVO.get${subSimpleClassNames.get($index)}());
- #end
- #end
- #end
- // 返回
- return ${classNameVar}.getId();
- }
- @Override
- ## 特殊:主子表专属逻辑
- #if ( $subTables.size() > 0)
- @Transactional(rollbackFor = Exception.class)
- #end
- public void update${simpleClassName}(${sceneEnum.prefixClass}${table.className}UpdateReqVO updateReqVO) {
- // 校验存在
- validate${simpleClassName}Exists(updateReqVO.getId());
- // 更新
- ${table.className}DO updateObj = ${table.className}Convert.INSTANCE.convert(updateReqVO);
- ${classNameVar}Mapper.updateById(updateObj);
- ## 特殊:主子表专属逻辑
- #if ( $subTables.size() > 0)
- // 更新子表
- #foreach ($subTable in $subTables)
- #set ($index = $foreach.count - 1)
- #set ($subSimpleClassName = $subSimpleClassNames.get($index))
- #set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段
- #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
- #if ( $subTable.subJoinMany)
- update${subSimpleClassName}List(updateReqVO.getId(), updateReqVO.get${subSimpleClassNames.get($index)}s());
- #else
- update${subSimpleClassName}(updateReqVO.getId(), updateReqVO.get${subSimpleClassNames.get($index)}());
- #end
- #end
- #end
- }
- @Override
- ## 特殊:主子表专属逻辑
- #if ( $subTables.size() > 0)
- @Transactional(rollbackFor = Exception.class)
- #end
- public void delete${simpleClassName}(${primaryColumn.javaType} id) {
- // 校验存在
- validate${simpleClassName}Exists(id);
- // 删除
- ${classNameVar}Mapper.deleteById(id);
- ## 特殊:主子表专属逻辑
- #if ( $subTables.size() > 0)
- // 删除子表
- #foreach ($subTable in $subTables)
- #set ($index = $foreach.count - 1)
- #set ($subSimpleClassName = $subSimpleClassNames.get($index))
- #set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段
- #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
- delete${subSimpleClassName}By${SubJoinColumnName}(id);
- #end
- #end
- }
- private void validate${simpleClassName}Exists(${primaryColumn.javaType} id) {
- if (${classNameVar}Mapper.selectById(id) == null) {
- throw exception(${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS);
- }
- }
- @Override
- public ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id) {
- return ${classNameVar}Mapper.selectById(id);
- }
- @Override
- public PageResult<${table.className}DO> get${simpleClassName}Page(${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO) {
- return ${classNameVar}Mapper.selectPage(pageReqVO);
- }
- @Override
- public List<${table.className}DO> get${simpleClassName}List(${sceneEnum.prefixClass}${table.className}ExportReqVO exportReqVO) {
- return ${classNameVar}Mapper.selectList(exportReqVO);
- }
- ## 特殊:主子表专属逻辑
- #foreach ($subTable in $subTables)
- #set ($index = $foreach.count - 1)
- #set ($subSimpleClassName = $subSimpleClassNames.get($index))
- #set ($subPrimaryColumn = $subPrimaryColumns.get($index))##当前 primary 字段
- #set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段
- #set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
- #set ($subClassNameVar = $subClassNameVars.get($index))
- // ==================== 子表($subTable.classComment) ====================
- ## 情况一:MASTER_ERP 时,需要分查询页子表
- #if ( $table.templateType == 11 )
- @Override
- public PageResult<${subTable.className}DO> get${subSimpleClassName}Page(PageParam pageReqVO, ${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
- return ${subClassNameVars.get($index)}Mapper.selectPage(pageReqVO, ${subJoinColumn.javaField});
- }
- ## 情况二:非 MASTER_ERP 时,需要列表查询子表
- #else
- #if ( $subTable.subJoinMany )
- @Override
- public List<${subTable.className}DO> get${subSimpleClassName}ListBy${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
- return ${subClassNameVars.get($index)}Mapper.selectListBy${SubJoinColumnName}(${subJoinColumn.javaField});
- }
- #else
- @Override
- public ${subTable.className}DO get${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaType} ${subJoinColumn.javaField}) {
- return ${subClassNameVars.get($index)}Mapper.selectBy${SubJoinColumnName}(${subJoinColumn.javaField});
- }
- #end
- #end
- ## 情况一:MASTER_ERP 时,支持单个的新增、修改、删除操作
- #if ( $table.templateType == 11 )
- @Override
- public ${subPrimaryColumn.javaType} create${subSimpleClassName}(@Valid ${subTable.className}DO ${subClassNameVar}) {
- ${subClassNameVars.get($index)}Mapper.insert(${subClassNameVar});
- return ${subClassNameVar}.getId();
- }
- @Override
- public void update${subSimpleClassName}(@Valid ${subTable.className}DO ${subClassNameVar}) {
- ${subClassNameVars.get($index)}Mapper.updateById(${subClassNameVar});
- }
- @Override
- public void delete${subSimpleClassName}(${subPrimaryColumn.javaType} id) {
- ${subClassNameVars.get($index)}Mapper.deleteById(id);
- }
- ## 情况二:非 MASTER_ERP 时,支持批量的新增、修改操作
- #else
- #if ( $subTable.subJoinMany)
- private void create${subSimpleClassName}List(${primaryColumn.javaType} ${subJoinColumn.javaField}, List<${subTable.className}DO> list) {
- list.forEach(o -> o.set$SubJoinColumnName(${subJoinColumn.javaField}));
- ${subClassNameVars.get($index)}Mapper.insertBatch(list);
- }
- private void update${subSimpleClassName}List(${primaryColumn.javaType} ${subJoinColumn.javaField}, List<${subTable.className}DO> list) {
- delete${subSimpleClassName}By${SubJoinColumnName}(${subJoinColumn.javaField});
- create${subSimpleClassName}List(${subJoinColumn.javaField}, list);
- }
- #else
- private void create${subSimpleClassName}(${primaryColumn.javaType} ${subJoinColumn.javaField}, ${subTable.className}DO ${subClassNameVar}) {
- ${subClassNameVar}.set$SubJoinColumnName(${subJoinColumn.javaField});
- ${subClassNameVars.get($index)}Mapper.insert(${subClassNameVar});
- }
- private void update${subSimpleClassName}(${primaryColumn.javaType} ${subJoinColumn.javaField}, ${subTable.className}DO ${subClassNameVar}) {
- ${subClassNameVar}.set$SubJoinColumnName(${subJoinColumn.javaField});
- ${subClassNameVars.get($index)}Mapper.updateById(${subClassNameVar});
- }
- #end
- private void delete${subSimpleClassName}By${SubJoinColumnName}(${primaryColumn.javaType} ${subJoinColumn.javaField}) {
- ${subClassNameVars.get($index)}Mapper.deleteBy${SubJoinColumnName}(${subJoinColumn.javaField});
- }
- #end
- #end
- }
|