package com.estate.expert.admin.initdata;
|
|
import com.estate.expert.admin.domain.common.EntityRef;
|
import com.estate.expert.admin.domain.exam.record.error.ErrorLevel;
|
import com.estate.expert.admin.domain.exam.record.error.ErrorRecordDto;
|
import com.estate.expert.admin.domain.exam.record.review.ErrorReviewDto;
|
import com.estate.expert.admin.domain.exam.record.review.ErrorReviewState;
|
import com.estate.expert.admin.domain.exam.record.warning.WarningRecordDto;
|
import com.estate.expert.admin.domain.exam.task.check.CheckTaskDto;
|
import com.estate.expert.admin.domain.exam.task.pass.ByPassInfoDto;
|
import com.estate.expert.admin.domain.exam.task.review.ReviewTaskDto;
|
import com.estate.expert.admin.domain.project.info.ProjectDangerousType;
|
import com.estate.expert.admin.domain.project.info.ProjectInfoDto;
|
import com.estate.expert.admin.domain.project.info.ProjectSuperDangerousType;
|
import com.estate.expert.admin.domain.standard.hierachy.Hierarchy;
|
import com.estate.expert.admin.domain.standard.hierachy.HierarchyIds;
|
import com.estate.expert.admin.domain.standard.problem.Problem;
|
import com.estate.expert.admin.initdata.common.ImportUtil;
|
import com.estate.expert.admin.service.*;
|
import lombok.Builder;
|
import lombok.extern.slf4j.Slf4j;
|
|
import java.time.LocalDate;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Set;
|
|
@Slf4j
|
@Builder
|
public class ImportTaskAndRecord {
|
|
UserService userService;
|
|
CheckTaskService checkTaskService;
|
|
ErrorRecordService errorRecordService;
|
|
WarningRecordService warningRecordService;
|
|
ProblemService problemService;
|
|
DeviceService deviceService;
|
|
HierarchyService hierarchyService;
|
|
private ProjectInfoService projectInfoService;
|
|
public void importCheckTasks() {
|
var systemUser = userService.getSystemUser();
|
for(int i = 1; i <= 10; i++) {
|
for(int j = 1; j <= 10; j++) {
|
CheckTaskDto checkTaskDto = CheckTaskDto.builder()
|
.assemblePlace("集合点_" + i + "_" + j)
|
.date(LocalDate.now())
|
.project(EntityRef.builder().id(i).build())
|
.plan(EntityRef.builder().id(j).build())
|
.groupLeaders(Set.of(EntityRef.builder().id(1).build()))
|
.groupMembers(Set.of(EntityRef.builder().id(2).build()))
|
.drivers(List.of(EntityRef.builder().id(3).build()))
|
.cars(List.of(EntityRef.builder().id(1).build()))
|
.location("地点_" + i + "_" + j)
|
.gps(new Double[]{116.0, 40.0})
|
.build();
|
checkTaskService.add(systemUser, checkTaskDto);
|
}
|
}
|
}
|
|
public void importProjectInfos()
|
{
|
log.info("Importing project infos...");
|
var systemUser = userService.getSystemUser();
|
var dtos = new ArrayList<ProjectInfoDto>();
|
for(var checkTask : checkTaskService.findAll()) {
|
var projectInfoDto = ProjectInfoDto.builder()
|
.checkTask(EntityRef.builder().id(checkTask.getId()).build())
|
.detail("项目详情_任务_" + checkTask.getId())
|
.progress("项目进展_任务_" + checkTask.getId())
|
.dangerousOptions(new ProjectDangerousType[] {ProjectDangerousType.DEMOLITION})
|
.superDangerousOptions(new ProjectSuperDangerousType[] {ProjectSuperDangerousType.DEMOLITION})
|
.progressThisSeason("近一季度施工进展情况_任务_" + checkTask.getId())
|
.updateDate(LocalDate.now())
|
.build();
|
dtos.add(projectInfoDto);
|
}
|
projectInfoService.addDtos(systemUser, dtos);
|
}
|
|
// 从Id列表中随机选择n个Id
|
private List<Problem> randomSelect(List<Problem> ids, int n) {
|
if(ids.isEmpty())
|
return List.of();
|
var cloneIds = new ArrayList<>(ids);
|
var result = new ArrayList<Problem>();
|
var count = Math.min(n, 30);
|
for(int i = 0; i < count; i++) {
|
int index = (int)(Math.random() * cloneIds.size());
|
result.add(ids.get(index));
|
cloneIds.remove(index);
|
}
|
return result;
|
}
|
|
private String getProblemHierarchyName(Problem problem, Hierarchy hierarchy) {
|
return hierarchy.getContent().get(problem.getHierarchyPath()).getName();
|
}
|
|
private List<String> getProblemHierarchyNames(Problem problem, Hierarchy hierarchy) {
|
return hierarchy.getContent().get(problem.getHierarchyPath()).getNames();
|
}
|
|
public void importRecords() {
|
var hierarchy = hierarchyService.get(HierarchyIds.SYSTEM);
|
|
for(var checkTask : checkTaskService.findAll()) {
|
var errorRecords = new ArrayList<ErrorRecordDto>();
|
var warningRecords = new ArrayList<WarningRecordDto>();
|
|
final int checkTaskId = checkTask.getId();
|
var problems = checkTaskService.getSystemProblems(checkTaskId, null);
|
|
randomSelect(problems, checkTaskId).forEach(problem -> {
|
var record = ErrorRecordDto.builder()
|
.checkTask(EntityRef.builder().id(checkTaskId).build())
|
.problem(EntityRef.builder().id(problem.getId()).build())
|
.numberFactorIndex(0)
|
.scaleFactorIndex(0)
|
.level(ErrorLevel.values()[problem.getId() % ErrorLevel.values().length])
|
.problemPart("问题部位_" + problem.getId())
|
.hierarchyName(getProblemHierarchyName(problem, hierarchy))
|
.hierarchyNames(getProblemHierarchyNames(problem, hierarchy))
|
.suggestion("建议_" + problem.getId())
|
.remark("备注_" + problem.getId())
|
.images(List.of(EntityRef.of(1), EntityRef.of(4), EntityRef.of(5)))
|
.build();
|
errorRecords.add(record);
|
|
var warningRecord = WarningRecordDto.builder()
|
.checkTask(EntityRef.builder().id(checkTaskId).build())
|
.problem(EntityRef.builder().id(problem.getId()).build())
|
.hierarchyName(getProblemHierarchyName(problem, hierarchy))
|
.hierarchyNames(getProblemHierarchyNames(problem, hierarchy))
|
.content("正确做法_" + problem.getId())
|
.remark("备注_" + problem.getId())
|
.images(List.of(EntityRef.of(1)))
|
.build();
|
warningRecords.add(warningRecord);
|
});
|
|
log.info("Importing system {} error records, {} warning to task {}",
|
errorRecords.size(), warningRecords.size(), checkTaskId);
|
errorRecordService.addDtos(userService.getSystemUser(), errorRecords);
|
warningRecordService.addDtos(userService.getSystemUser(), warningRecords);
|
}
|
}
|
|
public void importDeviceRecords() {
|
for(var checkTask : checkTaskService.findAll()) {
|
final int checkTaskId = checkTask.getId();
|
var errorRecords = new ArrayList<ErrorRecordDto>();
|
var warningRecords = new ArrayList<WarningRecordDto>();
|
|
ImportUtil.doImport(i -> {
|
var device = deviceService.get(i);;
|
|
var deviceModel = checkTask.getPlan().getDeviceModel();
|
var problems = checkTaskService.getDeviceProblems(checkTaskId, device.getType().hierarchyPath());
|
|
var hierarchy = deviceModel.getHierarchy();
|
// 给每个设备添加问题
|
randomSelect(problems, checkTaskId).forEach(problem -> {
|
var record = ErrorRecordDto.builder()
|
.checkTask(EntityRef.builder().id(checkTaskId).build())
|
.device(EntityRef.builder().id(i).build())
|
.problem(EntityRef.builder().id(problem.getId()).build())
|
.numberFactorIndex(0)
|
.scaleFactorIndex(0)
|
.level(ErrorLevel.values()[problem.getId() % ErrorLevel.values().length])
|
.problemPart("问题部位_" + problem.getId())
|
.hierarchyName(getProblemHierarchyName(problem, hierarchy))
|
.hierarchyNames(getProblemHierarchyNames(problem, hierarchy))
|
.suggestion("建议_" + problem.getId())
|
.remark("备注_" + problem.getId())
|
.images(List.of(EntityRef.of(1), EntityRef.of(4)))
|
.build();
|
errorRecords.add(record);
|
|
// 目前设备不需要正确做法
|
// var warningRecord = WarningRecordDto.builder()
|
// .device(EntityRef.builder().id(i).build())
|
// .checkTask(EntityRef.builder().id(checkTaskId).build())
|
// .problem(EntityRef.builder().id(problem.getId()).build())
|
// .hierarchyName(getProblemHierarchyName(problem, hierarchy))
|
// .device(EntityRef.builder().id(1).build())
|
// .content("正确做法_" + problem.getId())
|
// .remark("备注_" + problem.getId())
|
// .build();
|
// warningRecords.add(warningRecord);
|
});
|
});
|
|
log.info("Importing device {} error records, {} warning to checkTask {}",
|
errorRecords.size(), warningRecords.size(), checkTask.getId());
|
errorRecordService.addDtos(userService.getSystemUser(), errorRecords);
|
warningRecordService.addDtos(userService.getSystemUser(), warningRecords);
|
}
|
}
|
|
public void importByPassInfo(){
|
log.info("Importing by pass info...");
|
for(var checkTask : checkTaskService.findAll()) {
|
var byPassInfo = ByPassInfoDto.builder()
|
.advice("建议_" + checkTask.getId())
|
.conclusion("结论_" + checkTask.getId())
|
.systemHierarchyPaths(List.of("/0/0/0/0/0/0", "/0/0/0/0/1/0"))
|
.build();
|
checkTaskService.setByPassInfo(checkTask.getId(), byPassInfo);
|
}
|
}
|
|
public void closeCheckTasks() {
|
log.info("Closing check tasks...");
|
for(var checkTask : checkTaskService.findAll()) {
|
checkTaskService.close(checkTask.getId());
|
}
|
}
|
|
public void importReviewTasks()
|
{
|
var systemUser = userService.getSystemUser();
|
var checkTasks = checkTaskService.findAll();
|
for(var checkTask : checkTasks) {
|
var reviewTaskDto = ReviewTaskDto.builder()
|
.assemblePlace("集合点_" + checkTask.getId())
|
.reviewProblems(List.of(List.of(ErrorLevel.P1, ErrorLevel.P2, ErrorLevel.P3, ErrorLevel.P4).toArray(new ErrorLevel[0])))
|
.date(LocalDate.now())
|
.groupLeaders(Set.of(EntityRef.builder().id(1).build()))
|
.groupMembers(Set.of(EntityRef.builder().id(2).build()))
|
.drivers(List.of(EntityRef.builder().id(3).build()))
|
.cars(List.of(EntityRef.builder().id(1).build()))
|
.build();
|
checkTaskService.addReviewTask(systemUser, checkTask.getId(), reviewTaskDto);
|
}
|
}
|
|
public void importReviewRecords()
|
{
|
var systemUser = userService.getSystemUser();
|
for(var checkTask : checkTaskService.findAll()) {
|
log.info("Importing review records to task {}", checkTask.getId());
|
errorRecordService.listSystemErrors(checkTask.getId()).forEach(errorRecord -> {
|
var reviewRecord = ErrorReviewDto.builder()
|
.content("复核内容_" + errorRecord.getId())
|
.state(ErrorReviewState.REFORMED)
|
.images(List.of(EntityRef.of(1)))
|
.build();
|
errorRecordService.addReview(systemUser, errorRecord.getId(), reviewRecord);
|
});
|
}
|
}
|
|
public void closeReviewTasks() {
|
for(var checkTask : checkTaskService.findAll()) {
|
checkTaskService.closeReviewTask(checkTask.getId());
|
}
|
}
|
}
|