2022-02-02 13:57:25 +08:00
|
|
|
|
package ${basePackage}.module.${table.moduleName}.service.${table.businessName};
|
2021-02-06 23:52:26 +08:00
|
|
|
|
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import org.springframework.validation.annotation.Validated;
|
2023-11-08 21:00:34 +08:00
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
2021-02-06 23:52:26 +08:00
|
|
|
|
|
|
|
|
|
import java.util.*;
|
2022-02-02 22:10:24 +08:00
|
|
|
|
import ${basePackage}.module.${table.moduleName}.controller.${sceneEnum.basePackage}.${table.businessName}.vo.*;
|
2022-02-02 13:57:25 +08:00
|
|
|
|
import ${basePackage}.module.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
|
2023-11-08 09:42:16 +08:00
|
|
|
|
## 特殊:主子表专属逻辑
|
2023-11-09 20:49:52 +08:00
|
|
|
|
#foreach ($subTable in $subTables)
|
2023-11-08 09:42:16 +08:00
|
|
|
|
import ${basePackage}.module.${subTable.moduleName}.dal.dataobject.${subTable.businessName}.${subTable.className}DO;
|
|
|
|
|
#end
|
2021-02-06 23:52:26 +08:00
|
|
|
|
import ${PageResultClassName};
|
|
|
|
|
|
2022-02-02 13:57:25 +08:00
|
|
|
|
import ${basePackage}.module.${table.moduleName}.convert.${table.businessName}.${table.className}Convert;
|
|
|
|
|
import ${basePackage}.module.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper;
|
2023-11-08 09:42:16 +08:00
|
|
|
|
## 特殊:主子表专属逻辑
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#foreach ($subTable in $subTables)
|
|
|
|
|
#set ($index = $foreach.count - 1)
|
|
|
|
|
import ${basePackage}.module.${subTable.moduleName}.dal.mysql.${subTable.businessName}.${subTable.className}Mapper;
|
2023-11-08 09:42:16 +08:00
|
|
|
|
#end
|
2021-02-07 00:34:54 +08:00
|
|
|
|
|
2021-05-03 01:17:34 +08:00
|
|
|
|
import static ${ServiceExceptionUtilClassName}.exception;
|
2022-02-02 13:57:25 +08:00
|
|
|
|
import static ${basePackage}.module.${table.moduleName}.enums.ErrorCodeConstants.*;
|
2021-02-06 23:52:26 +08:00
|
|
|
|
|
2023-09-10 23:36:23 +08:00
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.collection.ListUtil;
|
|
|
|
|
|
2021-02-06 23:52:26 +08:00
|
|
|
|
/**
|
2021-02-11 23:02:53 +08:00
|
|
|
|
* ${table.classComment} Service 实现类
|
|
|
|
|
*
|
|
|
|
|
* @author ${table.author}
|
|
|
|
|
*/
|
2021-02-07 00:34:54 +08:00
|
|
|
|
@Service
|
2021-02-06 23:52:26 +08:00
|
|
|
|
@Validated
|
2021-02-07 00:34:54 +08:00
|
|
|
|
public class ${table.className}ServiceImpl implements ${table.className}Service {
|
2021-02-06 23:52:26 +08:00
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private ${table.className}Mapper ${classNameVar}Mapper;
|
2023-11-08 09:42:16 +08:00
|
|
|
|
## 特殊:主子表专属逻辑
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#foreach ($subTable in $subTables)
|
|
|
|
|
#set ($index = $foreach.count - 1)
|
2023-11-08 09:42:16 +08:00
|
|
|
|
@Resource
|
2023-11-08 21:00:34 +08:00
|
|
|
|
private ${subTable.className}Mapper ${subClassNameVars.get($index)}Mapper;
|
2023-11-08 09:42:16 +08:00
|
|
|
|
#end
|
2021-02-06 23:52:26 +08:00
|
|
|
|
|
|
|
|
|
@Override
|
2023-11-08 21:00:34 +08:00
|
|
|
|
## 特殊:主子表专属逻辑
|
|
|
|
|
#if ( $subTables.size() > 0)
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
#end
|
2022-02-02 22:10:24 +08:00
|
|
|
|
public ${primaryColumn.javaType} create${simpleClassName}(${sceneEnum.prefixClass}${table.className}CreateReqVO createReqVO) {
|
2021-02-07 00:34:54 +08:00
|
|
|
|
// 插入
|
|
|
|
|
${table.className}DO ${classNameVar} = ${table.className}Convert.INSTANCE.convert(createReqVO);
|
|
|
|
|
${classNameVar}Mapper.insert(${classNameVar});
|
2023-11-08 09:42:16 +08:00
|
|
|
|
## 特殊:主子表专属逻辑
|
2023-11-09 20:49:52 +08:00
|
|
|
|
#if ( $subTables.size() > 0)
|
|
|
|
|
|
|
|
|
|
// 插入子表($subTable.classComment)
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#foreach ($subTable in $subTables)
|
|
|
|
|
#set ($index = $foreach.count - 1)
|
2023-11-09 20:49:52 +08:00
|
|
|
|
#set ($subSimpleClassName = $subSimpleClassNames.get($index))
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段
|
|
|
|
|
#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
|
|
|
|
|
#if ( $subTable.subJoinMany)
|
2023-11-09 20:49:52 +08:00
|
|
|
|
create${subSimpleClassName}List(${classNameVar}.getId(), createReqVO.get${subSimpleClassNames.get($index)}s());
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#else
|
2023-11-09 20:49:52 +08:00
|
|
|
|
create${subSimpleClassName}(${classNameVar}.getId(), createReqVO.get${subSimpleClassNames.get($index)}());
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#end
|
2023-11-09 20:49:52 +08:00
|
|
|
|
#end
|
2023-11-08 09:42:16 +08:00
|
|
|
|
#end
|
2021-02-07 00:34:54 +08:00
|
|
|
|
// 返回
|
|
|
|
|
return ${classNameVar}.getId();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2023-11-08 21:00:34 +08:00
|
|
|
|
## 特殊:主子表专属逻辑
|
|
|
|
|
#if ( $subTables.size() > 0)
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
#end
|
2022-02-02 22:10:24 +08:00
|
|
|
|
public void update${simpleClassName}(${sceneEnum.prefixClass}${table.className}UpdateReqVO updateReqVO) {
|
2021-02-07 00:34:54 +08:00
|
|
|
|
// 校验存在
|
2023-02-04 09:10:09 +08:00
|
|
|
|
validate${simpleClassName}Exists(updateReqVO.getId());
|
2021-02-07 00:34:54 +08:00
|
|
|
|
// 更新
|
|
|
|
|
${table.className}DO updateObj = ${table.className}Convert.INSTANCE.convert(updateReqVO);
|
|
|
|
|
${classNameVar}Mapper.updateById(updateObj);
|
2023-11-08 21:00:34 +08:00
|
|
|
|
## 特殊:主子表专属逻辑
|
2023-11-09 20:49:52 +08:00
|
|
|
|
#if ( $subTables.size() > 0)
|
|
|
|
|
|
|
|
|
|
// 更新子表
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#foreach ($subTable in $subTables)
|
|
|
|
|
#set ($index = $foreach.count - 1)
|
2023-11-09 20:49:52 +08:00
|
|
|
|
#set ($subSimpleClassName = $subSimpleClassNames.get($index))
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段
|
|
|
|
|
#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
|
|
|
|
|
#if ( $subTable.subJoinMany)
|
2023-11-09 20:49:52 +08:00
|
|
|
|
update${subSimpleClassName}List(updateReqVO.getId(), updateReqVO.get${subSimpleClassNames.get($index)}s());
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#else
|
2023-11-09 20:49:52 +08:00
|
|
|
|
update${subSimpleClassName}(updateReqVO.getId(), updateReqVO.get${subSimpleClassNames.get($index)}());
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#end
|
2023-11-09 20:49:52 +08:00
|
|
|
|
#end
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#end
|
2021-02-07 00:34:54 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2023-11-08 21:00:34 +08:00
|
|
|
|
## 特殊:主子表专属逻辑
|
|
|
|
|
#if ( $subTables.size() > 0)
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
|
#end
|
2021-02-07 00:34:54 +08:00
|
|
|
|
public void delete${simpleClassName}(${primaryColumn.javaType} id) {
|
|
|
|
|
// 校验存在
|
2023-02-04 09:10:09 +08:00
|
|
|
|
validate${simpleClassName}Exists(id);
|
2021-04-21 01:04:48 +08:00
|
|
|
|
// 删除
|
2021-02-07 00:34:54 +08:00
|
|
|
|
${classNameVar}Mapper.deleteById(id);
|
2023-11-08 21:00:34 +08:00
|
|
|
|
## 特殊:主子表专属逻辑
|
2023-11-09 20:49:52 +08:00
|
|
|
|
#if ( $subTables.size() > 0)
|
|
|
|
|
|
|
|
|
|
// 删除子表
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#foreach ($subTable in $subTables)
|
|
|
|
|
#set ($index = $foreach.count - 1)
|
2023-11-09 20:49:52 +08:00
|
|
|
|
#set ($subSimpleClassName = $subSimpleClassNames.get($index))
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#set ($subJoinColumn = $subJoinColumns.get($index))##当前 join 字段
|
|
|
|
|
#set ($SubJoinColumnName = $subJoinColumn.javaField.substring(0,1).toUpperCase() + ${subJoinColumn.javaField.substring(1)})##首字母大写
|
2023-11-09 20:49:52 +08:00
|
|
|
|
delete${subSimpleClassName}By${SubJoinColumnName}(id);
|
|
|
|
|
#end
|
2023-11-08 21:00:34 +08:00
|
|
|
|
#end
|
2021-02-07 00:34:54 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void validate${simpleClassName}Exists(${primaryColumn.javaType} id) {
|
|
|
|
|
if (${classNameVar}Mapper.selectById(id) == null) {
|
2021-03-13 13:37:59 +08:00
|
|
|
|
throw exception(${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS);
|
2021-02-07 00:34:54 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id) {
|
|
|
|
|
return ${classNameVar}Mapper.selectById(id);
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-10 17:45:04 +08:00
|
|
|
|
@Override
|
2022-02-02 22:10:24 +08:00
|
|
|
|
public PageResult<${table.className}DO> get${simpleClassName}Page(${sceneEnum.prefixClass}${table.className}PageReqVO pageReqVO) {
|
2021-02-27 01:29:18 +08:00
|
|
|
|
return ${classNameVar}Mapper.selectPage(pageReqVO);
|
2021-02-06 23:52:26 +08:00
|
|
|
|
}
|
|
|
|
|
|
2021-02-11 23:02:53 +08:00
|
|
|
|
@Override
|
2022-02-02 22:10:24 +08:00
|
|
|
|
public List<${table.className}DO> get${simpleClassName}List(${sceneEnum.prefixClass}${table.className}ExportReqVO exportReqVO) {
|
2021-02-27 01:29:18 +08:00
|
|
|
|
return ${classNameVar}Mapper.selectList(exportReqVO);
|
2021-02-11 23:02:53 +08:00
|
|
|
|
}
|
|
|
|
|
|
2023-11-09 20:49:52 +08:00
|
|
|
|
## 特殊:主子表专属逻辑
|
|
|
|
|
#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
|
2023-11-07 20:43:53 +08:00
|
|
|
|
}
|