feat(ui): 新增本地上传
--story=1013573 --user=郭雨琦 https://www.tapd.cn/55049933/prong/stories/view/1155049933001013573
This commit is contained in:
parent
6b7a529c40
commit
9dcbaae2b5
|
@ -11,6 +11,11 @@ export function getFileModules(projectId) {
|
||||||
return get(url);
|
return get(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getTypeNodeByProjectId(projectId, moduleType) {
|
||||||
|
let url = '/file/module/type/list/' + projectId + "/" + moduleType;
|
||||||
|
return get(url);
|
||||||
|
}
|
||||||
|
|
||||||
export function getMetadataTypes() {
|
export function getMetadataTypes() {
|
||||||
let url = '/file/metadata/get/type/all';
|
let url = '/file/metadata/get/type/all';
|
||||||
return get(url);
|
return get(url);
|
||||||
|
|
|
@ -11,6 +11,8 @@ public interface BaseFileModuleMapper {
|
||||||
|
|
||||||
List<FileModuleVo> getNodeTreeByProjectId(@Param("projectId") String projectId);
|
List<FileModuleVo> getNodeTreeByProjectId(@Param("projectId") String projectId);
|
||||||
|
|
||||||
|
List<FileModuleVo> getTypeNodeTreeByProjectId(@Param("projectId") String projectId, @Param("moduleType") String moduleType);
|
||||||
|
|
||||||
void updatePos(String id, Double pos);
|
void updatePos(String id, Double pos);
|
||||||
|
|
||||||
String getNameById(String moduleId);
|
String getNameById(String moduleId);
|
||||||
|
|
|
@ -17,6 +17,16 @@
|
||||||
where file_module.project_id = #{projectId}
|
where file_module.project_id = #{projectId}
|
||||||
order by file_module.pos asc
|
order by file_module.pos asc
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="getTypeNodeTreeByProjectId" resultType="io.metersphere.metadata.vo.FileModuleVo">
|
||||||
|
select
|
||||||
|
<include refid="io.metersphere.base.mapper.FileModuleMapper.Base_Column_List"/>
|
||||||
|
from file_module
|
||||||
|
where file_module.project_id = #{projectId} and file_module.module_type = #{moduleType}
|
||||||
|
order by file_module.pos asc
|
||||||
|
</select>
|
||||||
|
|
||||||
<select id="getNameById" resultType="java.lang.String">
|
<select id="getNameById" resultType="java.lang.String">
|
||||||
select name from file_module
|
select name from file_module
|
||||||
where id = #{0}
|
where id = #{0}
|
||||||
|
|
|
@ -30,6 +30,12 @@ public class FileModuleController {
|
||||||
return fileModuleService.getNodeTreeByProjectId(projectId);
|
return fileModuleService.getNodeTreeByProjectId(projectId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping("/type/list/{projectId}/{moduleType}")
|
||||||
|
public List<FileModuleVo> getTypeNodeByProjectId(@PathVariable String projectId, @PathVariable String moduleType) {
|
||||||
|
baseCheckPermissionService.checkProjectOwner(projectId);
|
||||||
|
return fileModuleService.getTypeNodeByProjectId(projectId, moduleType);
|
||||||
|
}
|
||||||
|
|
||||||
@PostMapping("/add")
|
@PostMapping("/add")
|
||||||
@RequiresPermissions("PROJECT_FILE:READ+UPLOAD+JAR")
|
@RequiresPermissions("PROJECT_FILE:READ+UPLOAD+JAR")
|
||||||
@MsAuditLog(module = OperLogModule.PROJECT_FILE_MANAGEMENT, type = OperLogConstants.CREATE, title = "#node.name", content = "#msClass.getLogDetails(#node)", msClass = FileModuleService.class)
|
@MsAuditLog(module = OperLogModule.PROJECT_FILE_MANAGEMENT, type = OperLogConstants.CREATE, title = "#node.name", content = "#msClass.getLogDetails(#node)", msClass = FileModuleService.class)
|
||||||
|
|
|
@ -10,9 +10,7 @@ import io.metersphere.base.mapper.ext.BaseFileMetadataMapper;
|
||||||
import io.metersphere.base.mapper.ext.BaseFileModuleMapper;
|
import io.metersphere.base.mapper.ext.BaseFileModuleMapper;
|
||||||
import io.metersphere.commons.constants.ApiTestConstants;
|
import io.metersphere.commons.constants.ApiTestConstants;
|
||||||
import io.metersphere.commons.exception.MSException;
|
import io.metersphere.commons.exception.MSException;
|
||||||
import io.metersphere.commons.utils.JSON;
|
import io.metersphere.commons.utils.*;
|
||||||
import io.metersphere.commons.utils.LogUtil;
|
|
||||||
import io.metersphere.commons.utils.SessionUtils;
|
|
||||||
import io.metersphere.i18n.Translator;
|
import io.metersphere.i18n.Translator;
|
||||||
import io.metersphere.log.utils.ReflexObjectUtil;
|
import io.metersphere.log.utils.ReflexObjectUtil;
|
||||||
import io.metersphere.log.vo.DetailColumn;
|
import io.metersphere.log.vo.DetailColumn;
|
||||||
|
@ -389,4 +387,36 @@ public class FileModuleService extends NodeTreeService<FileModuleVo> {
|
||||||
return baseFileModuleMapper.getNameById(moduleId);
|
return baseFileModuleMapper.getNameById(moduleId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<FileModuleVo> getTypeNodeByProjectId(String projectId, String moduleType) {
|
||||||
|
// 判断当前项目下是否有默认模块,没有添加默认模块
|
||||||
|
FileModule fileModule = this.initDefaultNode(projectId);
|
||||||
|
FileModuleVo fileModuleVo = new FileModuleVo();
|
||||||
|
BeanUtils.copyBean(fileModuleVo, fileModule);
|
||||||
|
List<FileModuleVo> modules = baseFileModuleMapper.getTypeNodeTreeByProjectId(projectId, moduleType);
|
||||||
|
if (StringUtils.equals(moduleType, "module")) {
|
||||||
|
modules.add(0, fileModuleVo);
|
||||||
|
}
|
||||||
|
List<String> ids = modules.stream().map(FileModuleVo::getId).collect(Collectors.toList());
|
||||||
|
if (CollectionUtils.isEmpty(ids)) {
|
||||||
|
return getNodeTrees(modules);
|
||||||
|
}
|
||||||
|
List<Map<String, Object>> moduleCounts = baseFileMetadataMapper.moduleCountByMetadataIds(ids);
|
||||||
|
Map<String, Integer> moduleCountMap = this.nodeCalculate(moduleCounts);
|
||||||
|
// 逐层统计
|
||||||
|
if (MapUtils.isNotEmpty(moduleCountMap)) {
|
||||||
|
modules.forEach(node -> {
|
||||||
|
int countNum = 0;
|
||||||
|
List<String> moduleIds = new ArrayList<>();
|
||||||
|
moduleIds = this.nodeList(modules, node.getId(), moduleIds);
|
||||||
|
moduleIds.add(node.getId());
|
||||||
|
for (String moduleId : moduleIds) {
|
||||||
|
if (moduleCountMap.containsKey(moduleId)) {
|
||||||
|
countNum += moduleCountMap.get(moduleId).intValue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
node.setCaseNum(countNum);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return getNodeTrees(modules);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue