Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
8b24069dca
@ -1,26 +1,55 @@
|
||||
package cd.casic.framework.commons.util.json.databind;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.databind.BeanProperty;
|
||||
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||
import com.fasterxml.jackson.databind.JsonSerializer;
|
||||
import com.fasterxml.jackson.databind.SerializerProvider;
|
||||
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
/**
|
||||
* 基于时间戳的 LocalDateTime 序列化器
|
||||
*
|
||||
* @author 老五
|
||||
*/
|
||||
public class TimestampLocalDateTimeSerializer extends JsonSerializer<LocalDateTime> {
|
||||
public class TimestampLocalDateTimeSerializer extends JsonSerializer<LocalDateTime> implements ContextualSerializer {
|
||||
|
||||
public static final TimestampLocalDateTimeSerializer INSTANCE = new TimestampLocalDateTimeSerializer();
|
||||
private DateTimeFormatter dateTimeFormatter = null;
|
||||
|
||||
public TimestampLocalDateTimeSerializer() {
|
||||
}
|
||||
|
||||
public TimestampLocalDateTimeSerializer(DateTimeFormatter dateTimeFormatter) {
|
||||
this.dateTimeFormatter = dateTimeFormatter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
|
||||
// 将 LocalDateTime 对象,转换为 Long 时间戳
|
||||
gen.writeNumber(value.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
|
||||
// // 将 LocalDateTime 对象,转换为 Long 时间戳
|
||||
// gen.writeNumber(value.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
|
||||
if (dateTimeFormatter != null) {
|
||||
gen.writeString(value.format(dateTimeFormatter));
|
||||
} else {
|
||||
gen.writeNumber(value.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public JsonSerializer<?> createContextual(SerializerProvider serializerProvider, BeanProperty property) throws JsonMappingException {
|
||||
if (property != null) {
|
||||
JsonFormat format = property.getAnnotation(JsonFormat.class);
|
||||
if (format != null && !format.pattern().isEmpty()) {
|
||||
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format.pattern());
|
||||
return new TimestampLocalDateTimeSerializer(dateTimeFormatter);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ public class ShuiMuController {
|
||||
private ShuiMuService shuiMuService;
|
||||
@GetMapping("/getToken")
|
||||
public CommonResult<String> getToken(){
|
||||
return CommonResult.success(shuiMuService.getToken());
|
||||
return CommonResult.success(shuiMuService.getToken().replace("Bearer ",""));
|
||||
}
|
||||
/**
|
||||
* 获取编译环境
|
||||
|
@ -1,7 +1,11 @@
|
||||
package cd.casic.ci.process.dto.resp.shuimu;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Data
|
||||
public class ShuiMuTestProblemResp {
|
||||
private String id;
|
||||
@ -14,6 +18,9 @@ public class ShuiMuTestProblemResp {
|
||||
private String testid;
|
||||
private String testGroupId;
|
||||
private String createAt;
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime createTime;
|
||||
private String description;
|
||||
private String cwe;
|
||||
private String testGroupIdAndproblemId;
|
||||
|
@ -44,4 +44,6 @@ public class TestCaseManagerResp {
|
||||
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
private Integer fileCount;
|
||||
private String fileSize;
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.scheduling.annotation.EnableAsync;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.io.File;
|
||||
@ -137,7 +138,7 @@ public class AFLWorker extends DockerWorker {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@Async
|
||||
|
||||
public void afterTaskExecute(TaskRunContext context){
|
||||
append(context,"开始拉取afl输出信息");
|
||||
PipTask contextDef = (PipTask)context.getContextDef();
|
||||
|
@ -33,6 +33,10 @@ import org.springframework.web.util.UriComponentsBuilder;
|
||||
import java.io.*;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.util.*;
|
||||
|
||||
import static cd.casic.ci.process.constant.ShuiMuUrlConstant.*;
|
||||
@ -295,7 +299,15 @@ public class ShuiMuServiceImpl implements ShuiMuService {
|
||||
ResponseEntity<String> exchange = restTemplate.exchange(uriString, HttpMethod.GET, entity, String.class, new HashMap<>());
|
||||
JSONObject jsonObject = JSON.parseObject(exchange.getBody());
|
||||
String data = jsonObject.getString("data");
|
||||
return JSONArray.parseArray(data, ShuiMuTestProblemResp.class);
|
||||
List<ShuiMuTestProblemResp> shuiMuTestProblemResps = JSONArray.parseArray(data, ShuiMuTestProblemResp.class);
|
||||
shuiMuTestProblemResps.forEach(item ->{
|
||||
String createAt = item.getCreateAt();
|
||||
LocalDateTime date = Instant.ofEpochMilli(Long.parseLong(createAt))
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.toLocalDateTime();
|
||||
item.setCreateTime(date);
|
||||
});
|
||||
return shuiMuTestProblemResps;
|
||||
}
|
||||
@Override
|
||||
public ShuiMuProjectReportResp getProjectReport(String projectId) {
|
||||
|
@ -33,4 +33,5 @@ public interface TestCaseInfoService extends IService<TestCaseInfo> {
|
||||
TestCaseInfoResp findById(String id);
|
||||
|
||||
List<String> findFileTypeList();
|
||||
List<TestCaseInfoResp> findByManagerIds(List<String> idList);
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
|
||||
import cd.casic.framework.commons.pojo.PageResult;
|
||||
import cd.casic.framework.security.dal.user.AdminUserDO;
|
||||
import cd.casic.framework.tenant.core.service.AdminUserServiceImpl;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@ -24,6 +25,7 @@ import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -138,6 +140,17 @@ public class TestCaseInfoServiceImpl extends ServiceImpl<TestCaseInfoDao, TestCa
|
||||
return fileTypeList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<TestCaseInfoResp> findByManagerIds(List<String> idList) {
|
||||
if (CollectionUtils.isEmpty(idList)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
LambdaQueryWrapper<TestCaseInfo> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(TestCaseInfo::getTestCaseManagerId,idList);
|
||||
List<TestCaseInfo> testCaseInfos = testCaseInfoDao.selectList(wrapper);
|
||||
return TestCaseInfoConverter.INSTANCE.toRespList(testCaseInfos);
|
||||
}
|
||||
|
||||
|
||||
private void setUserName(TestCaseInfoResp testCaseInfoResp) {
|
||||
if (!StringUtils.isEmpty(testCaseInfoResp.getCreator())){
|
||||
|
@ -3,12 +3,14 @@ package cd.casic.ci.process.process.service.testCase.impl;
|
||||
|
||||
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerQueryReq;
|
||||
import cd.casic.ci.process.dto.req.testCase.TestCaseManagerReq;
|
||||
import cd.casic.ci.process.dto.resp.testCase.TestCaseInfoResp;
|
||||
import cd.casic.ci.process.dto.resp.testCase.TestCaseManagerResp;
|
||||
import cd.casic.ci.process.process.converter.TestCaseManagerConverter;
|
||||
import cd.casic.ci.process.process.dao.testCase.TestCaseInfoDao;
|
||||
import cd.casic.ci.process.process.dao.testCase.TestCaseManagerDao;
|
||||
import cd.casic.ci.process.process.dataObject.testCase.TestCaseInfo;
|
||||
import cd.casic.ci.process.process.dataObject.testCase.TestCaseManager;
|
||||
import cd.casic.ci.process.process.service.testCase.TestCaseInfoService;
|
||||
import cd.casic.ci.process.process.service.testCase.TestCaseManagerService;
|
||||
import cd.casic.ci.process.properties.TargetFileUploadProperties;
|
||||
import cd.casic.framework.commons.exception.ServiceException;
|
||||
@ -16,6 +18,8 @@ import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants;
|
||||
import cd.casic.framework.commons.pojo.PageResult;
|
||||
import cd.casic.framework.security.dal.user.AdminUserDO;
|
||||
import cd.casic.framework.tenant.core.service.AdminUserServiceImpl;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@ -27,10 +31,13 @@ import jakarta.annotation.Resource;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author HopeLi
|
||||
@ -55,6 +62,9 @@ public class TestCaseManagerServiceImpl extends ServiceImpl<TestCaseManagerDao,
|
||||
@Resource
|
||||
private TargetFileUploadProperties fileUploadProperties;
|
||||
|
||||
@Resource
|
||||
private TestCaseInfoService testCaseInfoService;
|
||||
|
||||
@Override
|
||||
public String create(TestCaseManagerReq req) {
|
||||
TestCaseManager testCaseManager = TestCaseManagerConverter.INSTANCE.toBean(req);
|
||||
@ -118,9 +128,14 @@ public class TestCaseManagerServiceImpl extends ServiceImpl<TestCaseManagerDao,
|
||||
}
|
||||
List<TestCaseManagerResp> respList = TestCaseManagerConverter.INSTANCE.toRespList(testCaseManagerPage.getRecords());
|
||||
respList.forEach(this::setUserName);
|
||||
List<String> list = respList.stream().map(TestCaseManagerResp::getId).toList();
|
||||
List<TestCaseInfoResp> testCaseInfos = testCaseInfoService.findByManagerIds(list);
|
||||
Map<String, List<TestCaseInfoResp>> collect = testCaseInfos.stream().collect(Collectors.groupingBy(TestCaseInfoResp::getTestCaseManagerId));
|
||||
fullManagerFileInfo(respList,collect);
|
||||
return new PageResult<>(respList,testCaseManagerPage.getTotal(),testCaseManagerPage.getCurrent(),testCaseManagerPage.getSize());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public TestCaseManagerResp findById(String id) {
|
||||
TestCaseManager testCaseManager = testCaseManagerDao.selectById(id);
|
||||
@ -190,4 +205,41 @@ public class TestCaseManagerServiceImpl extends ServiceImpl<TestCaseManagerDao,
|
||||
}
|
||||
}
|
||||
}
|
||||
private void fullManagerFileInfo(List<TestCaseManagerResp> respList,Map<String,List<TestCaseInfoResp>> caseInfoMap){
|
||||
if (CollectionUtils.isEmpty(respList)||CollectionUtils.isEmpty(caseInfoMap)) {
|
||||
return;
|
||||
}
|
||||
for (TestCaseManagerResp managerInfo : respList) {
|
||||
List<TestCaseInfoResp> testCaseInfos = caseInfoMap.get(managerInfo.getId());
|
||||
if (CollectionUtils.isEmpty(testCaseInfos)) {
|
||||
continue;
|
||||
}
|
||||
Integer size = 0;
|
||||
Integer fileCount = testCaseInfos.size();
|
||||
for (TestCaseInfoResp testCaseInfo : testCaseInfos) {
|
||||
JSONArray array= JSONArray.parseArray(testCaseInfo.getTestFileList());
|
||||
if (!array.isEmpty()) {
|
||||
JSONObject jsonObject = array.getJSONObject(0);
|
||||
Integer fileSize = jsonObject.getInteger("size");
|
||||
size+=fileSize;
|
||||
}
|
||||
}
|
||||
managerInfo.setFileCount(fileCount);
|
||||
managerInfo.setFileSize(getSizeStr(size));
|
||||
}
|
||||
}
|
||||
private String getSizeStr(Integer size){
|
||||
Integer devid=1;
|
||||
int level = 0; // 0 -byte 1-kb 2-mb 3-gb
|
||||
while (size/devid>=1024){
|
||||
devid*=1024;
|
||||
};
|
||||
return switch (level) {
|
||||
case 0 -> size / devid + "byte";
|
||||
case 1 -> size / devid + "kb";
|
||||
case 2 -> size / devid + "mb";
|
||||
case 3 -> size / devid + "gb";
|
||||
default -> size + "";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user