package com.estate.expert.admin.initdata;
|
|
import com.estate.expert.admin.domain.business.device.usage.DeviceUsageDto;
|
import com.estate.expert.admin.domain.common.EntityRef;
|
import com.estate.expert.admin.domain.plan.PlanDto;
|
import com.estate.expert.admin.domain.plan.PlanType;
|
import com.estate.expert.admin.domain.project.ProjectDto;
|
import com.estate.expert.admin.domain.project.detail.AddressInfo;
|
import com.estate.expert.admin.domain.project.detail.CompanyInfo;
|
import com.estate.expert.admin.domain.project.enums.ProjectType;
|
import com.estate.expert.admin.domain.project.enums.ProjectUsageType;
|
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.initdata.common.ImportUtil;
|
import com.estate.expert.admin.service.*;
|
import com.estate.expert.admin.service.expert.DeviceExpertService;
|
import com.estate.expert.admin.service.expert.SysExpertService;
|
import com.estate.expert.admin.service.model.DeviceModelService;
|
import com.estate.expert.admin.service.model.SystemModelService;
|
import lombok.Builder;
|
import lombok.extern.slf4j.Slf4j;
|
|
import java.text.SimpleDateFormat;
|
import java.time.LocalDate;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Builder
|
@Slf4j
|
public class ImportPlanAndProject {
|
|
private UserService userService;
|
|
private PlanService planService;
|
|
private ProjectService projectService;
|
|
private ProjectInfoService projectInfoService;
|
|
private DeviceModelService deviceModelService;
|
|
private SystemModelService systemModelService;
|
|
private SysExpertService sysExpertService;
|
|
private DeviceExpertService deviceExpertService;
|
|
private DeviceUsageService deviceUsageService;
|
|
private DeviceService deviceService;
|
|
public void importProjects() {
|
log.info("Importing projects...");
|
|
var dateFormat = new SimpleDateFormat("yyyyMMddHHmm");
|
var itemCodePrefix = dateFormat.format(new Date());
|
|
ImportUtil.doImport(i -> {
|
var project = ProjectDto.builder()
|
.name("测试项目_" + i)
|
.type(ProjectType.HOUSE_CONSTRUCTION)
|
.usageType(ProjectUsageType.RESIDENTIAL)
|
.client(EntityRef.builder().id(1).build())
|
.itemCode(itemCodePrefix + String.format("%02d", i))
|
.departmentPath("/0")
|
.addressInfo(AddressInfo.builder()
|
.province("浙江省")
|
.city("杭州市")
|
.district("西湖区")
|
.detail("古荡街道" + i + "号")
|
.build())
|
.constructionCompanyInfo(CompanyInfo.builder()
|
.name("测试建设公司")
|
.leader("张三")
|
.phone("12345678901")
|
.build())
|
.supervisorCompanyInfo(CompanyInfo.builder()
|
.name("测试监理公司")
|
.leader("李四")
|
.phone("12345678902")
|
.build())
|
.developmentCompanyInfo(CompanyInfo.builder()
|
.name("测试开发公司")
|
.leader("王五")
|
.phone("12345678903")
|
.build())
|
.projectCost(1000000)
|
.constructionLicense("TEST_LICENSE_" + i)
|
.constructionLicenseFiles(List.of(EntityRef.of(1)))
|
.branchCompany("测试分公司")
|
.build();
|
var prj = projectService.add(userService.getSystemUser(), project);
|
|
var info = ProjectInfoDto.builder()
|
.project(EntityRef.builder().id(prj.getId()).build())
|
.detail("测试项目详情_" + i)
|
.progress("测试项目进展_" + i)
|
.progressThisSeason("测试本季度进展_" + i)
|
.updateDate(LocalDate.now())
|
.dangerousOptions(new ProjectDangerousType[] {ProjectDangerousType.DEMOLITION})
|
.superDangerousOptions(new ProjectSuperDangerousType[] {ProjectSuperDangerousType.DEMOLITION})
|
.build();
|
projectInfoService.add(userService.getSystemUser(), info);
|
});
|
}
|
|
public void importPlans() {
|
ImportUtil.doImport( index -> {
|
var plan = PlanDto.builder()
|
.name("测试计划_" + index)
|
.client(EntityRef.builder().id(1).build())
|
.type(PlanType.values() [index % PlanType.values().length])
|
.systemModel(EntityRef.builder().id(systemModelService.getDefaultModel().getId()).build())
|
.systemScoreExpert(EntityRef.builder().id(sysExpertService.getDefaultExpert().getId()).build())
|
.systemFuzzyExpert(EntityRef.builder().id(sysExpertService.getDefaultExpert().getId()).build())
|
.deviceModel(EntityRef.builder().id(deviceModelService.getDefaultModel().getId()).build())
|
.deviceFuzzyExpert(EntityRef.builder().id(deviceExpertService.getDefaultExpert().getId()).build())
|
.deviceScoreExpert(EntityRef.builder().id(deviceExpertService.getDefaultExpert().getId()).build())
|
.build();
|
planService.add(userService.getSystemUser(), plan);
|
});
|
}
|
|
public void importDeviceUsage() {
|
ImportUtil.doImport( index -> {
|
var usage = DeviceUsageDto.builder()
|
.device(EntityRef.builder().id(index).build())
|
.project(EntityRef.builder().id(1).build())
|
.properties(buildDeviceUsageMap(index))
|
.build();
|
deviceUsageService.add(userService.getSystemUser(), usage);
|
});
|
}
|
|
private Map<String, String> buildDeviceUsageMap(int index) {
|
var device = deviceService.get(index);
|
var deviceUsageForm = deviceService.deviceUsageForm(device.getType());
|
var properties = new HashMap<String, String>();
|
deviceUsageForm.forEach(group -> {
|
group.getItems().forEach(item -> {
|
switch (item.getType())
|
{
|
case STRING:
|
properties.put(item.getName(), item.getName() + "xxx");
|
break;
|
case INT:
|
properties.put(item.getName(), "1");
|
break;
|
case ENUM:
|
properties.put(item.getName(), item.getOptions()[0]);
|
break;
|
case DATE:
|
properties.put(item.getName(), "2024-01-01");
|
break;
|
}
|
});
|
});
|
return properties;
|
}
|
}
|