|
@@ -6,8 +6,15 @@ import java.util.List;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.mybatisflex.core.paginate.Page;
|
|
|
import com.mybatisflex.core.query.QueryWrapper;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.eco.common.core.core.domain.model.LoginUser;
|
|
|
+import org.eco.common.excel.entity.ExcelResultRes;
|
|
|
+import org.eco.common.excel.service.IExcelService;
|
|
|
+import org.eco.common.core.utils.bean.BeanUtils;
|
|
|
import org.eco.common.core.utils.MapstructUtils;
|
|
|
+import org.eco.system.service.IImportExportService;
|
|
|
import org.eco.common.core.utils.StringUtils;
|
|
|
+import org.eco.system.domain.bo.ImportExportBo;
|
|
|
import org.eco.common.orm.core.page.PageQuery;
|
|
|
import org.eco.common.core.core.page.PageResult;
|
|
|
import org.eco.common.orm.core.service.impl.BaseServiceImpl;
|
|
@@ -19,16 +26,20 @@ import org.eco.common.orm.core.service.impl.BaseServiceImpl;
|
|
|
import jakarta.annotation.Resource;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
-#if($table.sub)
|
|
|
-import java.util.ArrayList;
|
|
|
-import ${packageName}.domain.${subClassName};
|
|
|
-import ${packageName}.mapper.${subClassName}Mapper;
|
|
|
-import static ${packageName}.domain.table.${subClassName}TableDef.${CapitalUnderScoreSubClassName};
|
|
|
-#end
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
+import java.io.IOException;
|
|
|
+ #if($table.sub)
|
|
|
+ import java.util.ArrayList;
|
|
|
+ import ${packageName}.domain.${subClassName};
|
|
|
+ import ${packageName}.mapper.${subClassName}Mapper;
|
|
|
+ import static ${packageName}.domain.table.${subClassName}TableDef.${CapitalUnderScoreSubClassName};
|
|
|
+ #end
|
|
|
import ${packageName}.mapper.${ClassName}Mapper;
|
|
|
import ${packageName}.domain.${ClassName};
|
|
|
import ${packageName}.domain.bo.${ClassName}Bo;
|
|
|
import ${packageName}.domain.vo.${ClassName}Vo;
|
|
|
+import ${packageName}.domain.vo.${ClassName}ImportVo;
|
|
|
+import ${packageName}.listener.${ClassName}ImportListener;
|
|
|
import ${packageName}.service.I${ClassName}Service;
|
|
|
import static ${packageName}.domain.table.${ClassName}TableDef.${CapitalUnderScoreClassName};
|
|
|
|
|
@@ -39,12 +50,19 @@ import static ${packageName}.domain.table.${ClassName}TableDef.${CapitalUnderSco
|
|
|
* @date ${datetime}
|
|
|
*/
|
|
|
@Service
|
|
|
+@Slf4j
|
|
|
public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper, ${ClassName}> implements I${ClassName}Service {
|
|
|
@Resource
|
|
|
private ${ClassName}Mapper ${className}Mapper;
|
|
|
- #if($table.sub)
|
|
|
+
|
|
|
@Resource
|
|
|
- private ${subClassName}Mapper ${subclassName}Mapper;
|
|
|
+ private IExcelService excelService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private IImportExportService importExportService;
|
|
|
+ #if($table.sub)
|
|
|
+ @Resource
|
|
|
+ private ${subClassName}Mapper ${subclassName}Mapper;
|
|
|
#end
|
|
|
|
|
|
@Override
|
|
@@ -63,17 +81,17 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
|
|
|
#set($capitalColumnName=$column.columnName.toUpperCase())
|
|
|
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
|
|
#set($mpMethod=$column.queryType.toLowerCase())
|
|
|
- #if($queryType != 'BETWEEN')
|
|
|
- queryWrapper.and(${CapitalUnderScoreClassName}.${capitalColumnName}.$mpMethod
|
|
|
- (${className}Bo.get$AttrName()));
|
|
|
- #else
|
|
|
- queryWrapper.and(${CapitalUnderScoreClassName}.${capitalColumnName}.$mpMethod
|
|
|
- (${className}Bo.getParams().get("begin$AttrName"), ${className}Bo.getParams().get("end$AttrName")));
|
|
|
- #end
|
|
|
+ #if($queryType != 'BETWEEN')
|
|
|
+ queryWrapper.and(${CapitalUnderScoreClassName}.${capitalColumnName}.$mpMethod
|
|
|
+ (${className}Bo.get$AttrName()));
|
|
|
+ #else
|
|
|
+ queryWrapper.and(${CapitalUnderScoreClassName}.${capitalColumnName}.$mpMethod
|
|
|
+ (${className}Bo.getParams().get("begin$AttrName"), ${className}Bo.getParams().get("end$AttrName")));
|
|
|
+ #end
|
|
|
#end
|
|
|
#end
|
|
|
#if($table.tree)
|
|
|
- queryWrapper.orderBy(${CapitalUnderScoreClassName}.ORDER_NUM.asc());
|
|
|
+ queryWrapper.orderBy(${CapitalUnderScoreClassName}.ORDER_NUM.asc());
|
|
|
#end
|
|
|
|
|
|
return queryWrapper;
|
|
@@ -113,26 +131,50 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
|
|
|
}
|
|
|
|
|
|
#if($table.crud || $table.sub)
|
|
|
+ /**
|
|
|
+ * 分页查询${functionName}列表
|
|
|
+ *
|
|
|
+ * @param ${className}Bo ${functionName}Bo
|
|
|
+ * @return 分页${functionName}集合
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public PageResult<${ClassName}Vo> selectPage(${ClassName}Bo ${className}Bo) {
|
|
|
+ QueryWrapper queryWrapper = buildQueryWrapper(${className}Bo);
|
|
|
+ #if($table.sub)
|
|
|
+ Page<${ClassName}Vo> page = ${className}Mapper.paginateWithRelationsAs(PageQuery.build(), queryWrapper, ${ClassName}Vo.class);
|
|
|
+ #else
|
|
|
+ Page<${ClassName}Vo> page = this.pageAs(PageQuery.build(), queryWrapper, ${ClassName}Vo.class);
|
|
|
+ #end
|
|
|
+ return PageResult.build(page);
|
|
|
+ }
|
|
|
+ #end
|
|
|
+
|
|
|
/**
|
|
|
- * 分页查询${functionName}列表
|
|
|
+ * 新增${functionName}
|
|
|
*
|
|
|
* @param ${className}Bo ${functionName}Bo
|
|
|
- * @return 分页${functionName}集合
|
|
|
+ * @return 结果:true 操作成功,false 操作失败
|
|
|
*/
|
|
|
+ #if($table.sub)
|
|
|
+ @Transactional
|
|
|
+ #end
|
|
|
@Override
|
|
|
- public PageResult<${ClassName}Vo> selectPage(${ClassName}Bo ${className}Bo) {
|
|
|
- QueryWrapper queryWrapper = buildQueryWrapper(${className}Bo);
|
|
|
+ public boolean insert(${ClassName}Bo ${className}Bo) {
|
|
|
+ ${ClassName} ${className} =MapstructUtils.convert(${className}Bo, ${ClassName}. class);
|
|
|
+
|
|
|
#if($table.sub)
|
|
|
- Page<${ClassName}Vo> page = ${className}Mapper.paginateWithRelationsAs(PageQuery.build(), queryWrapper, ${ClassName}Vo.class);
|
|
|
+ boolean inserted = this.save(${className});//使用全局配置的雪花算法主键生成器生成ID值
|
|
|
+ if (inserted && ObjectUtil.isNotNull(${className})) {
|
|
|
+ return insert${subClassName}(${className});
|
|
|
+ }
|
|
|
+ return false;
|
|
|
#else
|
|
|
- Page<${ClassName}Vo> page = this.pageAs(PageQuery.build(), queryWrapper, ${ClassName}Vo.class);
|
|
|
+ return this.save(${className});//使用全局配置的雪花算法主键生成器生成ID值
|
|
|
#end
|
|
|
- return PageResult.build(page);
|
|
|
}
|
|
|
- #end
|
|
|
|
|
|
/**
|
|
|
- * 新增${functionName}
|
|
|
+ * 新增${functionName},前台提供主键值,一般用于导入的场合
|
|
|
*
|
|
|
* @param ${className}Bo ${functionName}Bo
|
|
|
* @return 结果:true 操作成功,false 操作失败
|
|
@@ -141,18 +183,34 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
|
|
|
@Transactional
|
|
|
#end
|
|
|
@Override
|
|
|
- public boolean insert(${ClassName}Bo ${className}Bo) {
|
|
|
- ${ClassName} ${className} =MapstructUtils.convert(${className}Bo, ${ClassName}. class);
|
|
|
+ public boolean insertWithPk(${ClassName}Bo ${className}Bo)
|
|
|
+ {
|
|
|
+ ${ClassName} ${className} = MapstructUtils.convert(${className}Bo, ${ClassName}.class);
|
|
|
+
|
|
|
+ #if($table.tree)
|
|
|
+ //获取祖级列表字段
|
|
|
+ Long parentId = ${className}.getParentId();
|
|
|
+ if (parentId == 0) {
|
|
|
+ ${className}.setAncestors("0");
|
|
|
+ } else {
|
|
|
+ ${ClassName}Vo parent${ClassName} = selectById(${className}Bo.getParentId());
|
|
|
+ if (ObjectUtil.isNotNull(parent${ClassName})) {
|
|
|
+ ${className}.setAncestors(parent${ClassName}.getAncestors()+"," +parentId);
|
|
|
+ } else {
|
|
|
+ ${className}.setAncestors("0");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #end
|
|
|
|
|
|
#if($table.sub)
|
|
|
- boolean inserted = this.save(${className});//使用全局配置的雪花算法主键生成器生成ID值
|
|
|
- if (inserted && ObjectUtil.isNotNull(${className})) {
|
|
|
- return insert${subClassName}(${className});
|
|
|
- }
|
|
|
- return false;
|
|
|
- #else
|
|
|
- return this.save(${className});//使用全局配置的雪花算法主键生成器生成ID值
|
|
|
- #end
|
|
|
+ boolean inserted = ${className}Mapper.insertWithPk(${className}) > 0;//前台传来主键值
|
|
|
+ if (inserted && ObjectUtil.isNotNull(${className})) {
|
|
|
+ return insert${subClassName}(${className});
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ #else
|
|
|
+ return ${className}Mapper.insertWithPk(${className}) > 0;//前台传来主键值
|
|
|
+ #end
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -183,6 +241,40 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void asyncImportData(MultipartFile file, boolean updateSupport, LoginUser loginUser) {
|
|
|
+ ExcelResultRes result;
|
|
|
+ try {
|
|
|
+ String name = file.getOriginalFilename();
|
|
|
+ result = excelService.importExcel(file.getInputStream(), name, ${ClassName}ImportVo.class, new ${ClassName}ImportListener(updateSupport, loginUser));
|
|
|
+ } catch (IOException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ ImportExportBo bo = new ImportExportBo();
|
|
|
+ BeanUtils.copyProperties(result, bo);
|
|
|
+ bo.setUpdateBy(loginUser.getUserId());
|
|
|
+ bo.setCreateBy(loginUser.getUserId());
|
|
|
+ bo.setType("0");
|
|
|
+ boolean flag = importExportService.insert(bo);
|
|
|
+ if (flag) {
|
|
|
+ log.info("异步导入日志写入成功");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void asyncExport(List<${ClassName}Vo> listVo, String sheetName, LoginUser loginUser) {
|
|
|
+ ExcelResultRes result = excelService.exportExcel(listVo, sheetName, ${ClassName}Vo.class);
|
|
|
+ ImportExportBo bo = new ImportExportBo();
|
|
|
+ BeanUtils.copyProperties(result, bo);
|
|
|
+ bo.setUpdateBy(loginUser.getUserId());
|
|
|
+ bo.setCreateBy(loginUser.getUserId());
|
|
|
+ bo.setType("1");
|
|
|
+ boolean flag = importExportService.insert(bo);
|
|
|
+ if (flag) {
|
|
|
+ log.info("异步导出日志写入成功");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 批量删除${functionName}
|
|
|
*
|
|
@@ -193,33 +285,34 @@ public class ${ClassName}ServiceImpl extends BaseServiceImpl<${ClassName}Mapper,
|
|
|
@Override
|
|
|
public boolean deleteByIds(${pkColumn.javaType}[] ${pkColumn.javaField}s) {
|
|
|
#if($table.sub)
|
|
|
- QueryWrapper queryWrapper = QueryWrapper.create().from(${CapitalUnderScoreSubClassName}).where(${CapitalUnderScoreSubClassName}.${CapitalUnderScoreSubTableFkClassName}.
|
|
|
- in(Arrays.asList(${pkColumn.javaField}s)));
|
|
|
- ${subclassName}Mapper.deleteByQuery(queryWrapper);
|
|
|
+ QueryWrapper queryWrapper = QueryWrapper.create().from(${CapitalUnderScoreSubClassName}).where(${CapitalUnderScoreSubClassName}.${CapitalUnderScoreSubTableFkClassName}.
|
|
|
+ in(Arrays.asList(${pkColumn.javaField}s)));
|
|
|
+ ${subclassName}Mapper.deleteByQuery(queryWrapper);
|
|
|
#end
|
|
|
return this.removeByIds(Arrays.asList(${pkColumn.javaField}s));
|
|
|
}
|
|
|
|
|
|
#if($table.sub)
|
|
|
- /**
|
|
|
- * 新增${subTable.functionName}信息
|
|
|
- *
|
|
|
- * @param ${className} ${functionName}对象
|
|
|
- */
|
|
|
- private boolean insert${subClassName}(${ClassName} ${className}) {
|
|
|
- List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
|
|
|
- ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
|
|
|
- if (StringUtils.isNotNull(${subclassName}List)) {
|
|
|
- List<${subClassName}> list = new ArrayList<>();
|
|
|
- for (${subClassName} ${subclassName} :${subclassName}List){
|
|
|
- ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
|
|
|
- list.add(${subclassName});
|
|
|
- }
|
|
|
- if (list.size() > 0) {
|
|
|
- return ${subclassName}Mapper.insertBatch(list) > 0;
|
|
|
+ /**
|
|
|
+ * 新增${subTable.functionName}信息
|
|
|
+ *
|
|
|
+ * @param ${className} ${functionName}对象
|
|
|
+ */
|
|
|
+ private boolean insert${subClassName}(${ClassName} ${className}) {
|
|
|
+ List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
|
|
|
+ ${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
|
|
|
+ if (StringUtils.isNotNull(${subclassName}List)) {
|
|
|
+ List<${subClassName}> list = new ArrayList<>();
|
|
|
+ for (${subClassName} ${subclassName} :${subclassName}List){
|
|
|
+ ${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
|
|
|
+ list.add(${subclassName});
|
|
|
+ }
|
|
|
+ if (list.size() > 0) {
|
|
|
+ return ${subclassName}Mapper.insertBatch(list) > 0;
|
|
|
+ }
|
|
|
}
|
|
|
+ return true;
|
|
|
}
|
|
|
- return true;
|
|
|
- }
|
|
|
+
|
|
|
#end
|
|
|
}
|