package ${packageName}.service.impl; <#if table.cacheServiceType==0 > <#assign Service = "AbstractCRUDServiceImpl"> <#elseif table.cacheServiceType==1 > <#assign Service = "AbstractCRUDCacheServiceImpl"> <#elseif table.cacheServiceType==2 > <#assign Service = "AbstractCRUDDynamicCacheServiceImpl"> <#else > <#assign Service = "AbstractCRUDServiceImpl"> </#if> import org.springframework.beans.BeanUtils; import java.util.function.Function; import org.springframework.stereotype.Service; import com.mortals.framework.service.impl.${Service}; import com.mortals.framework.exception.AppException; import com.mortals.framework.model.Context; import ${packageName}.dao.${ClassName}Dao; import ${packageName}.model.${ClassName}Entity; import ${packageName}.service.${ClassName}Service; <#if table.tplCategory=="sub" || table.tplCategory=="subone"> import org.springframework.beans.factory.annotation.Autowired; import ${subPackageName}.model.${subClassName}Entity; import ${subPackageName}.model.${subClassName}Query; import ${subPackageName}.service.${subClassName}Service; import org.springframework.util.ObjectUtils; import java.util.Date; import java.util.Arrays; import java.util.List; </#if> <#if pkColumn??&&pkColumn.isIncrement==0 > import cn.hutool.core.util.IdUtil; </#if> <#if pkColumn??&&pkColumn.isIncrement==0 > <#assign Temp> @Override protected void saveBefore(${ClassName}Entity entity, Context context) throws AppException { //非系统自增,需这里设置主键 <#if pkColumn.javaType=="String" > entity.set${pkColumn.javaField?cap_first}(IdUtil.fastSimpleUUID()); <#elseif pkColumn.javaType=="Integer"> entity.set${pkColumn.javaField?cap_first}(((Long)IdUtil.getSnowflake(0,1).nextId()).intValue()); <#elseif pkColumn.javaType=="Long"> entity.set${pkColumn.javaField?cap_first}(IdUtil.getSnowflake(0,1).nextId()); </#if> super.saveBefore(entity, context); } </#assign> <#else> <#assign Temp ></#assign> </#if> import lombok.extern.slf4j.Slf4j; /** * ${ClassName}Service * ${functionName} service实现 * * @author ${author} * @date ${datetime} */ @Service("${ClassName?uncap_first}Service") @Slf4j public class ${ClassName}ServiceImpl extends ${Service}<${ClassName}Dao, ${ClassName}Entity, ${pkColumn.javaType}> implements ${ClassName}Service { <#if table.tplCategory=="sub"> @Autowired private ${subClassName}Service ${subclassName}Service; @Override protected void findAfter(${ClassName}Entity params,PageInfo pageInfo, Context context, List<${ClassName}Entity> list) throws AppException { fillSubData(list); super.findAfter(params,pageInfo, context, list); } @Override protected void findAfter(${ClassName}Entity params, Context context, List<${ClassName}Entity> list) throws AppException { fillSubData(list); super.findAfter(params, context, list); } private void fillSubData(List<${ClassName}Entity> list) { List<${pkColumn.javaType}> idList = list.stream().map(i -> i.get${pkColumn.javaField?cap_first}()).collect(Collectors.toList()); if(ObjectUtils.isEmpty(idList))return; Map<${pkColumn.javaType}, List<${subClassName}Entity>> ${subclassName}ListMap = ${subclassName}Service .find(new ${subClassName}Query().${subTableFkClassName}List(idList)).parallelStream() .collect(Collectors.groupingBy(${subClassName}Entity::get${subTableFkClassName})); list.forEach(item -> item.set${subClassName}List(${subclassName}ListMap.get(item.get${pkColumn.javaField?cap_first}()))); } ${Temp} @Override protected void saveAfter(${ClassName}Entity entity, Context context) throws AppException { if(!ObjectUtils.isEmpty(entity.get${subClassName}List())){ entity.get${subClassName}List().stream().peek(item->{ <#if subPkColumn??&&subPkColumn.isIncrement==0 > <#if subPkColumn.javaType=="String" > item.set${subPkColumn.javaField?cap_first}(IdUtil.fastSimpleUUID()); <#elseif subPkColumn.javaType=="Integer"> item.set${subPkColumn.javaField?cap_first}(((Long)IdUtil.getSnowflake(1024,512).nextId()).intValue()); <#elseif subPkColumn.javaType=="Long"> item.set${subPkColumn.javaField?cap_first}(IdUtil.getSnowflake(1024,512).nextId()); </#if> </#if> item.set${subTableFkClassName}(entity.get${pkColumn.javaField?cap_first}()); item.setCreateUserId(this.getContextUserId(context)); item.setCreateTime(new Date()); }).count(); ${subclassName}Service.save(entity.get${subClassName}List()); } super.saveAfter(entity, context); } @Override protected void updateAfter(${ClassName}Entity entity, Context context) throws AppException { if(!ObjectUtils.isEmpty(entity.get${subClassName}List())){ ${subPkColumn.javaType}[] ${subclassName}Ids = ${subclassName}Service.find(new ${subClassName}Query().${subTableFkclassName}(entity.get${pkColumn.javaField?cap_first}())).stream().map(${subClassName}Entity::get${subPkColumn.javaField?cap_first}).toArray(${subPkColumn.javaType}[]::new); ${subclassName}Service.remove(${subclassName}Ids,context); entity.get${subClassName}List().stream().peek(item ->{ <#if subPkColumn??&&subPkColumn.isIncrement==0 > <#if subPkColumn.javaType=="String" > item.set${subPkColumn.javaField?cap_first}(IdUtil.fastSimpleUUID()); <#elseif subPkColumn.javaType=="Integer"> item.set${subPkColumn.javaField?cap_first}(((Long)IdUtil.getSnowflake(1024,512).nextId()).intValue()); <#elseif subPkColumn.javaType=="Long"> item.set${subPkColumn.javaField?cap_first}(IdUtil.getSnowflake(1024,512).nextId()); </#if> </#if> item.set${subTableFkClassName}(entity.get${pkColumn.javaField?cap_first}()); item.setCreateUserId(this.getContextUserId(context)); item.setCreateTime(new Date()); item.setUpdateUserId(this.getContextUserId(context)); item.setUpdateTime(new Date()); }).count(); ${subclassName}Service.save(entity.get${subClassName}List()); } super.updateAfter(entity, context); } @Override protected void removeAfter(${pkColumn.javaType}[] ids, Context context, int result) throws AppException { List<${subClassName}Entity> ${subclassName}list = ${subclassName}Service.find(new ${subClassName?cap_first}Query().${subTableFkClassName?uncap_first}List(Arrays.asList(ids))); ${subclassName}Service.removeList(${subclassName}list,context); super.removeAfter(ids, context, result); } <#elseif table.tplCategory=="subone"> @Autowired private ${subClassName}Service ${subclassName}Service; @Override protected void findAfter(${ClassName}Entity params,PageInfo pageInfo, Context context, List<${ClassName}Entity> list) throws AppException { fillSubData(list); super.findAfter(params,pageInfo, context, list); } @Override protected void findAfter(${ClassName}Entity params, Context context, List<${ClassName}Entity> list) throws AppException { fillSubData(list); super.findAfter(params, context, list); } private void fillSubData(List<${ClassName}Entity> list) { List<${pkColumn.javaType}> idList = list.stream().map(i -> i.get${pkColumn.javaField?cap_first}()).collect(Collectors.toList()); if(ObjectUtils.isEmpty(idList)) return; ${subClassName}Query ${subclassName}Query = new ${subClassName}Query(); ${subclassName}Query.set${subTableFkClassName}List(idList); Map<${pkColumn.javaType}, ${subClassName}Entity> ${subclassName}Map = ${subclassName}Service.find(${subclassName}Query).stream().collect(Collectors.toMap(${subClassName}Entity::get${subTableFkClassName}, Function.identity(), (n1, n2) -> n1)); list.forEach(item -> item.set${subClassName}Entity(${subclassName}Map.get(item.get${pkColumn.javaField?cap_first}()))); } ${Temp} @Override protected void saveAfter(${ClassName}Entity entity, Context context) throws AppException { if(!ObjectUtils.isEmpty(entity.get${subClassName}Entity())){ ${subClassName}Entity ${subclassName}Entity = new ${subClassName}Entity(); ${subclassName}Entity.initAttrValue(); ${subClassName}Entity subEntity=entity.get${subClassName}Entity(); BeanUtils.copyProperties(subEntity,${subclassName}Entity); <#if subPkColumn??&&subPkColumn.isIncrement==0&&subPkColumn.javaType=="String" > ${subclassName}Entity.set${subPkColumn.javaField?cap_first}(IdUtil.fastSimpleUUID()); <#elseif subPkColumn??&&subPkColumn.isIncrement==0&&subPkColumn.javaType=="Integer"> ${subclassName}Entity.set${subPkColumn.javaField?cap_first}(((Long)IdUtil.getSnowflake(1024,512).nextId()).intValue()); <#elseif subPkColumn??&&subPkColumn.isIncrement==0&&subPkColumn.javaType=="Long"> ${subclassName}Entity.set${subPkColumn.javaField?cap_first}(IdUtil.getSnowflake(1024,512).nextId()); </#if> ${subclassName}Entity.set${subTableFkClassName}(entity.get${pkColumn.javaField?cap_first}()); ${subclassName}Entity.setCreateUserId(this.getContextUserId(context)); ${subclassName}Entity.setCreateTime(new Date()); ${subclassName}Service.save(${subclassName}Entity,context); } super.saveAfter(entity, context); } @Override protected void updateAfter(${ClassName}Entity entity, Context context) throws AppException { if(!ObjectUtils.isEmpty(entity.get${subClassName}Entity())){ ${subClassName}Entity subEntity=entity.get${subClassName}Entity(); subEntity.setUpdateUserId(this.getContextUserId(context)); subEntity.setUpdateTime(new Date()); ${subclassName}Service.update(subEntity,context); } super.updateAfter(entity, context); } @Override protected void removeAfter(${pkColumn.javaType}[] ids, Context context, int result) throws AppException { List<${subClassName}Entity> ${subclassName}list = ${subclassName}Service.find(new ${subClassName?cap_first}Query().${subTableFkClassName?uncap_first}List(Arrays.asList(ids))); ${subclassName}Service.removeList(${subclassName}list,context); super.removeAfter(ids, context, result); } <#else> ${Temp} </#if> }