Commit d1047999 authored by 盖献康's avatar 盖献康

Merge branch 'gaixiankang' into 'dev'

检验报告PDF - 检验结论、签发日期 发布/编辑/暂存 任务

See merge request !295
parents a5c5d24e 3bf4bd1c
...@@ -46,6 +46,14 @@ public class ModelTestTask { ...@@ -46,6 +46,14 @@ public class ModelTestTask {
@TableField(exist = false) @TableField(exist = false)
public static final String TASK_STATUS_FINISH = "FINISH"; public static final String TASK_STATUS_FINISH = "FINISH";
/**
* 任务结果
*/
@TableField(exist = false)
public static final String TASK_STATUS_PASS = "PASS";
@TableField(exist = false)
public static final String TASK_STATUS_REJECT = "REJECT";
@ApiModelProperty("主键") @ApiModelProperty("主键")
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.ASSIGN_ID)
@JsonFormat(shape = JsonFormat.Shape.STRING) @JsonFormat(shape = JsonFormat.Shape.STRING)
......
package com.ruoyi.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 检验项目VO
* @author gxk
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("检验项目VO")
public class InspectionItemVO {
@ApiModelProperty("检验项目名")
private String inspectionItemName;
@ApiModelProperty("检验项目结果")
private String taskResult;
}
package com.ruoyi.domain.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 用于检验报告PDF 的 检验结论
* @author gxk
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("检验结论VO")
public class TestConclusionVO {
@ApiModelProperty("体系审查任务结论")
private String systemReviewTaskResult;
@ApiModelProperty("车辆检验任务结论")
private String carReviewTaskResult;
@ApiModelProperty("车型试验任务结论")
private String modelTestTaskResult;
@ApiModelProperty("系统审查任务完成日期")
private String systemReviewTaskDate;
@ApiModelProperty("车辆检验任务完成日期")
private String carReviewTaskDate;
@ApiModelProperty("车型试验任务完成日期")
private String modelTestTaskDate;
}
...@@ -5,6 +5,7 @@ import com.ruoyi.domain.Task; ...@@ -5,6 +5,7 @@ import com.ruoyi.domain.Task;
import com.ruoyi.domain.TaskUserRelation; import com.ruoyi.domain.TaskUserRelation;
import com.ruoyi.domain.vo.EnterpriseFilePdfVO; import com.ruoyi.domain.vo.EnterpriseFilePdfVO;
import com.ruoyi.domain.vo.InspectionReportPdfVO; import com.ruoyi.domain.vo.InspectionReportPdfVO;
import com.ruoyi.domain.vo.TestConclusionVO;
import com.ruoyi.web.request.TaskFindFinishRequest; import com.ruoyi.web.request.TaskFindFinishRequest;
import com.ruoyi.web.request.TaskFindPendingRequest; import com.ruoyi.web.request.TaskFindPendingRequest;
import com.ruoyi.web.request.TaskFindRequest; import com.ruoyi.web.request.TaskFindRequest;
...@@ -67,4 +68,10 @@ public interface TaskMapper extends BaseMapper<Task> { ...@@ -67,4 +68,10 @@ public interface TaskMapper extends BaseMapper<Task> {
List<UserNameResponse> findByFinishTaskList(@Param("taskList") List<Task> taskList); List<UserNameResponse> findByFinishTaskList(@Param("taskList") List<Task> taskList);
/**
* 通过总任务ID查询当前任务的每个子任务的结果
* @param taskId
* @return
*/
TestConclusionVO selectTestConclusion(Long taskId);
} }
...@@ -27,11 +27,10 @@ import com.ruoyi.common.core.domain.entity.SysDictData; ...@@ -27,11 +27,10 @@ import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.PdfBaseWriter; import com.ruoyi.common.utils.PdfBaseWriter;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.domain.ModelTestTask;
import com.ruoyi.domain.Sample; import com.ruoyi.domain.Sample;
import com.ruoyi.domain.TestRecords; import com.ruoyi.domain.TestRecords;
import com.ruoyi.domain.vo.EnterpriseFilePdfVO; import com.ruoyi.domain.vo.*;
import com.ruoyi.domain.vo.InspectionReportPdfVO;
import com.ruoyi.domain.vo.ReviewEnterpriseArchiveViewVO;
import com.ruoyi.mapper.SampleManagementMapper; import com.ruoyi.mapper.SampleManagementMapper;
import com.ruoyi.mapper.TaskMapper; import com.ruoyi.mapper.TaskMapper;
import com.ruoyi.mapper.TestRecordsMapper; import com.ruoyi.mapper.TestRecordsMapper;
...@@ -42,11 +41,6 @@ import io.minio.MinioClient; ...@@ -42,11 +41,6 @@ import io.minio.MinioClient;
import io.minio.ObjectWriteArgs; import io.minio.ObjectWriteArgs;
import io.minio.PutObjectArgs; import io.minio.PutObjectArgs;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.commonmark.node.Node;
import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.HtmlRenderer;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Entities;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -670,30 +664,6 @@ public class PdfTemplateManagementServiceImpl implements PdfTemplateManagementSe ...@@ -670,30 +664,6 @@ public class PdfTemplateManagementServiceImpl implements PdfTemplateManagementSe
} }
/**
*
* @param markdownContent
* @return
*/
public static String convertMarkdownToHtml(String markdownContent) {
// 创建 Markdown 解析器
Parser parser = Parser.builder().build();
// 解析 Markdown
Node document = parser.parse(markdownContent);
// 创建 HTML 渲染器
HtmlRenderer renderer = HtmlRenderer.builder().build();
// 渲染 HTML
org.jsoup.nodes.Document doc = Jsoup.parse(renderer.render(document).replaceAll("\\\\n", "<br>"));
// jsoup标准化标签,生成闭合标签
doc.outputSettings().syntax(org.jsoup.nodes.Document.OutputSettings.Syntax.xml);
doc.outputSettings().escapeMode(Entities.EscapeMode.xhtml);
return doc.html();
}
private static String headerText; private static String headerText;
public static class MyHeaderFooter extends PdfPageEventHelper { public static class MyHeaderFooter extends PdfPageEventHelper {
...@@ -792,10 +762,77 @@ public class PdfTemplateManagementServiceImpl implements PdfTemplateManagementSe ...@@ -792,10 +762,77 @@ public class PdfTemplateManagementServiceImpl implements PdfTemplateManagementSe
+ inspectionReport.getTaskBeginTime() + "至" + inspectionReport.getTaskBeginTime() + "至"
+ inspectionReport.getTaskEndTime() + "在" + inspectionReport.getTaskEndTime() + "在"
+ inspectionReport.getInspectionCenterName() + "进行"); + inspectionReport.getInspectionCenterName() + "进行");
inspectionReport.setInspectionItem(getInspectionItemByTaskItem(inspectionReport.getInspectionItem())); String taskItem = getInspectionItemByTaskItem(inspectionReport.getInspectionItem());
inspectionReport.setInspectionItem(taskItem);
// 检验结论
inspectionReport.setTestConclusion(getTestConclusion(taskItem, taskId, inspectionReport));
return inspectionReport; return inspectionReport;
} }
/**
* 获取检验结论
* @return
*/
private String getTestConclusion(String taskItem, Long taskId, InspectionReportPdfVO inspectionReport) {
int num = 0;
String result = "";
String issueDate = "";
String passItemName = "";
String failItemName = "";
List<String> taskItemList = Arrays.asList(taskItem.split(","));
List<InspectionItemVO> list = new ArrayList<>();
TestConclusionVO testConclusionVO = taskMapper.selectTestConclusion(taskId);
if (ObjectUtil.isNotEmpty(testConclusionVO.getSystemReviewTaskResult())) {
list.add(InspectionItemVO.builder()
.inspectionItemName(taskItemList.get(num))
.taskResult(testConclusionVO.getSystemReviewTaskResult()).build());
issueDate = testConclusionVO.getSystemReviewTaskDate();
num++;
}
if (ObjectUtil.isNotEmpty(testConclusionVO.getCarReviewTaskResult())) {
list.add(InspectionItemVO.builder()
.inspectionItemName(taskItemList.get(num))
.taskResult(testConclusionVO.getCarReviewTaskResult()).build());
issueDate = testConclusionVO.getCarReviewTaskDate();
num++;
}
if (ObjectUtil.isNotEmpty(testConclusionVO.getModelTestTaskResult())) {
list.add(InspectionItemVO.builder()
.inspectionItemName(taskItemList.get(num))
.taskResult(testConclusionVO.getModelTestTaskResult()).build());
issueDate = testConclusionVO.getModelTestTaskDate();
}
inspectionReport.setIssueDate(issueDate);
for (InspectionItemVO item : list) {
if (item.getTaskResult().equals(ModelTestTask.TASK_STATUS_PASS)) {
passItemName += item.getInspectionItemName() + "、";
}
if (item.getTaskResult().equals(ModelTestTask.TASK_STATUS_REJECT)) {
failItemName += item.getInspectionItemName() + "、";
}
}
if (StrUtil.isNotEmpty(passItemName)) {
passItemName = passItemName.substring(0, passItemName.length() - 1);
result = "经检验,该样品的"
+ passItemName
+ "检验项目的检验结果符合"
+ inspectionReport.getInspectionBasis()
+ "的要求,";
}
if (StrUtil.isNotEmpty(failItemName)) {
failItemName = failItemName.substring(0, failItemName.length() - 1);
result += "该样品的"
+ failItemName
+ "检验项目的检验结果不符合"
+ inspectionReport.getInspectionBasis()
+ "的要求。";
}
if (result.endsWith(",")) {
result = result.substring(0, result.length() - 1) + "。";
}
return " " + result;
}
/** /**
* 渲染数据 * 渲染数据
* @param fields * @param fields
......
...@@ -63,22 +63,26 @@ public class StrategyModelTestTaskPending implements StrategyModelTestTask, Init ...@@ -63,22 +63,26 @@ public class StrategyModelTestTaskPending implements StrategyModelTestTask, Init
JSONObject jsonObject = testUseCaseService.callThirdPartyInterface(url, map); JSONObject jsonObject = testUseCaseService.callThirdPartyInterface(url, map);
Integer sumCount = (Integer) jsonObject.get("case_count"); Integer sumCount = (Integer) jsonObject.get("case_count");
AtomicReference<Integer> currentCount = new AtomicReference<>(0); AtomicReference<Integer> currentCount = new AtomicReference<>(0);
AtomicReference<Integer> failedCount = new AtomicReference<>(0);
List<CaseStatistics> caseStatisticsList = jsonObject.getList("case_statistics", CaseStatistics.class); List<CaseStatistics> caseStatisticsList = jsonObject.getList("case_statistics", CaseStatistics.class);
if (CollUtil.isNotEmpty(caseStatisticsList)) { if (CollUtil.isNotEmpty(caseStatisticsList)) {
caseStatisticsList.forEach(obj -> { caseStatisticsList.forEach(obj -> {
if (CaseStatistics.CASE_STATUS_FAILED.equals(obj.status) || CaseStatistics.CASE_STATUS_PASSED.equals(obj.status)) { if (CaseStatistics.CASE_STATUS_FAILED.equals(obj.status) || CaseStatistics.CASE_STATUS_PASSED.equals(obj.status)) {
currentCount.updateAndGet(v -> v + obj.getCount()); currentCount.updateAndGet(v -> v + obj.getCount());
} }
if (CaseStatistics.CASE_STATUS_FAILED.equals(obj.status)) {
failedCount.updateAndGet(v -> v + obj.getCount());
}
}); });
} }
Integer integer = currentCount.get();
System.out.println(integer);
// 进行中的任务, 点击返回后, 判断当前用例完成程度, 用例都完成后状态改为待签字 // 进行中的任务, 点击返回后, 判断当前用例完成程度, 用例都完成后状态改为待签字
if (sumCount.equals(currentCount.get())) { if (sumCount.equals(currentCount.get())) {
modelTestTaskMapper.update(new ModelTestTask(), modelTestTaskMapper.update(new ModelTestTask(),
new LambdaUpdateWrapper<ModelTestTask>() new LambdaUpdateWrapper<ModelTestTask>()
.set(ModelTestTask::getTaskEndTime, new Date()) .set(ModelTestTask::getTaskEndTime, new Date())
.set(ModelTestTask::getTaskStatus, ModelTestTask.TASK_STATUS_SIGNED) .set(ModelTestTask::getTaskStatus, ModelTestTask.TASK_STATUS_SIGNED)
.set(failedCount.get() > 0, ModelTestTask::getTaskResult, ModelTestTask.TASK_STATUS_REJECT)
.set(failedCount.get().equals(0), ModelTestTask::getTaskResult, ModelTestTask.TASK_STATUS_PASS)
.eq(ModelTestTask::getId, modelTestTask.getId())); .eq(ModelTestTask::getId, modelTestTask.getId()));
} }
} }
......
...@@ -2,6 +2,7 @@ package com.ruoyi.service.impl; ...@@ -2,6 +2,7 @@ package com.ruoyi.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...@@ -201,7 +202,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -201,7 +202,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
taskService.save(task); taskService.save(task);
// 总任务包含车型试验,添加任务-场景关联信息 // 总任务包含车型试验,添加任务-场景关联信息
saveTaskScenario(task.getId(), request.getTestScenarioList()); // saveTaskScenario(task.getId(), request.getTestScenarioList());
// 构建并保存该任务所关联的审核组信息 // 构建并保存该任务所关联的审核组信息
saveUserRelation(auditors,task); saveUserRelation(auditors,task);
...@@ -423,7 +424,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -423,7 +424,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
} }
// 测试场景 // 测试场景
response.setTestScenarioList(selectTestScenarioList(task)); // response.setTestScenarioList(selectTestScenarioList(task));
// 小组成员 // 小组成员
response.setAuditors(setAuditors(request.getId())); response.setAuditors(setAuditors(request.getId()));
...@@ -501,7 +502,9 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -501,7 +502,9 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
} }
task.setTaskStatus(Task.TASK_STATUS_TEMPORARILY); task.setTaskStatus(Task.TASK_STATUS_TEMPORARILY);
String joinTaskList = StringUtils.join(request.getTaskList(),","); String joinTaskList = StringUtils.join(request.getTaskList(),",");
task.setTaskList(joinTaskList); if (StrUtil.isNotEmpty(joinTaskList)) {
task.setTaskList(joinTaskList);
}
BeanUtils.copyBeanProp(task, request); BeanUtils.copyBeanProp(task, request);
if (standard != null) { if (standard != null) {
...@@ -530,7 +533,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -530,7 +533,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
taskService.save(task); taskService.save(task);
// 测试场景 // 测试场景
saveTaskScenario(task.getId(), request.getTestScenarioList()); // saveTaskScenario(task.getId(), request.getTestScenarioList());
// 保存任务与小组信息 // 保存任务与小组信息
saveUserRelation(auditors,task); saveUserRelation(auditors,task);
...@@ -549,7 +552,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -549,7 +552,7 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
@Override @Override
public void editTemporaryStorageTask(TaskEditRequest request) { public void editTemporaryStorageTask(TaskEditRequest request) {
Task oldTask = taskMapper.findByName(request.getTaskName()); // Task oldTask = taskMapper.findByName(request.getTaskName());
// TODO 任务名称验重 // TODO 任务名称验重
// if (oldTask == null || Objects.equals(oldTask.getId(), request.getId())) { // if (oldTask == null || Objects.equals(oldTask.getId(), request.getId())) {
...@@ -571,8 +574,8 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -571,8 +574,8 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
task.setFile(standard.getFile()); task.setFile(standard.getFile());
} }
taskScenarioRelationMapper.delete(new QueryWrapper<TaskScenarioRelation>().lambda().eq(TaskScenarioRelation::getTaskId, task.getId())); // taskScenarioRelationMapper.delete(new QueryWrapper<TaskScenarioRelation>().lambda().eq(TaskScenarioRelation::getTaskId, task.getId()));
saveTaskScenario(task.getId(), request.getTestScenarioList()); // saveTaskScenario(task.getId(), request.getTestScenarioList());
// 找到审查组长 // 找到审查组长
TaskUserRelation leader = null; TaskUserRelation leader = null;
...@@ -619,13 +622,13 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -619,13 +622,13 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
BeanUtils.copyBeanProp(response, task); BeanUtils.copyBeanProp(response, task);
if (response.getTaskList().startsWith(",")) { // if (response.getTaskList().startsWith(",")) {
String taskList = response.getTaskList().substring(1); // String taskList = response.getTaskList().substring(1);
response.setTaskList(taskList); // response.setTaskList(taskList);
} // }
// 测试场景 // 测试场景
response.setTestScenarioList(selectTestScenarioList(task)); // response.setTestScenarioList(selectTestScenarioList(task));
// 小组成员 // 小组成员
response.setAuditors(setAuditors(task.getId())); response.setAuditors(setAuditors(task.getId()));
...@@ -1055,14 +1058,14 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -1055,14 +1058,14 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
BeanUtils.copyBeanProp(createRequest, request); BeanUtils.copyBeanProp(createRequest, request);
task.setModelTestTaskId(saveModelTest(createRequest,initiator,standard,leader)); task.setModelTestTaskId(saveModelTest(createRequest,initiator,standard,leader));
// 任务-场景 // 任务-场景
saveTaskScenario(task.getId(), createRequest.getTestScenarioList()); // saveTaskScenario(task.getId(), createRequest.getTestScenarioList());
} }
if (!request.getTaskList().contains(Task.SUB_TASK_TRFIS) && ObjectUtil.isNotNull(task.getModelTestTaskId())) { if (!request.getTaskList().contains(Task.SUB_TASK_TRFIS) && ObjectUtil.isNotNull(task.getModelTestTaskId())) {
// 删除 // 删除
modelTestTaskService.removeById(task.getModelTestTaskId()); modelTestTaskService.removeById(task.getModelTestTaskId());
task.setModelTestTaskIdNull(); task.setModelTestTaskIdNull();
// 删除 任务-场景 // 删除 任务-场景
taskScenarioRelationMapper.delete(new QueryWrapper<TaskScenarioRelation>().lambda().eq(TaskScenarioRelation::getTaskId, task.getId())); // taskScenarioRelationMapper.delete(new QueryWrapper<TaskScenarioRelation>().lambda().eq(TaskScenarioRelation::getTaskId, task.getId()));
} }
if (request.getTaskList().contains(Task.SUB_TASK_TRFIS) && if (request.getTaskList().contains(Task.SUB_TASK_TRFIS) &&
!request.getTaskList().contains(Task.SUB_TASK_GRFIS) && !request.getTaskList().contains(Task.SUB_TASK_GRFIS) &&
...@@ -1075,8 +1078,8 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas ...@@ -1075,8 +1078,8 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task>implements Tas
) { ) {
TaskCreateRequest createRequest = new TaskCreateRequest(); TaskCreateRequest createRequest = new TaskCreateRequest();
BeanUtils.copyBeanProp(createRequest, request); BeanUtils.copyBeanProp(createRequest, request);
taskScenarioRelationMapper.delete(new QueryWrapper<TaskScenarioRelation>().lambda().eq(TaskScenarioRelation::getTaskId, task.getId())); // taskScenarioRelationMapper.delete(new QueryWrapper<TaskScenarioRelation>().lambda().eq(TaskScenarioRelation::getTaskId, task.getId()));
saveTaskScenario(task.getId(), createRequest.getTestScenarioList()); // saveTaskScenario(task.getId(), createRequest.getTestScenarioList());
} }
} }
} }
......
...@@ -390,5 +390,22 @@ ...@@ -390,5 +390,22 @@
</foreach> </foreach>
</select> </select>
<select id="selectTestConclusion" parameterType="java.lang.Long" resultType="com.ruoyi.domain.vo.TestConclusionVO">
select
srt.task_result AS systemReviewTaskResult,
DATE_FORMAT(srt.task_end_time, '%Y-%m-%d') AS systemReviewTaskDate,
crt.task_result AS carReviewTaskResult,
DATE_FORMAT(crt.task_end_time, '%Y-%m-%d') AS carReviewTaskDate,
mtt.task_result AS modelTestTaskResult,
DATE_FORMAT(mtt.task_end_time, '%Y-%m-%d') AS modelTestTaskDate
from
t_task t
left join t_system_review_task srt on t.system_review_task_id = srt.id
left join t_car_review_task crt on t.car_review_task_id = crt.id
left join t_model_test_task mtt on t.model_test_task_id = mtt.id
where
t.id = #{taskId}
</select>
</mapper> </mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment