feat: 安平项目
parent
4c3a378c46
commit
5a996f38f5
|
|
@ -229,23 +229,22 @@ drop table if exists `eval_project`;
|
|||
create table `eval_project` (
|
||||
`id` bigint not null comment '主键',
|
||||
`org_id` bigint not null comment '评价机构id',
|
||||
`customer_id` bigint not null comment '客户id',
|
||||
`project_no` varchar(64) not null comment '项目编号',
|
||||
`customer_id` bigint not null comment '被评价客户id(eval_customer.id)',
|
||||
`project_no` varchar(64) not null comment '项目编号(系统生成)',
|
||||
`project_name` varchar(200) not null comment '项目名称',
|
||||
`eval_type_code` varchar(32) default null comment '评价类型编码(PRE安全预评价 ACCEPT安全验收评价 STATUS安全现状评价)',
|
||||
`eval_type_name` varchar(50) default null comment '评价类型名称(安全预评价/安全验收评价/安全现状评价)',
|
||||
`business_scope` varchar(500) default null comment '业务范围',
|
||||
`plan_start_date` date default null comment '计划开始日期',
|
||||
`plan_end_date` date default null comment '计划结束日期',
|
||||
`actual_start_date` date default null comment '实际开始日期',
|
||||
`actual_end_date` date default null comment '实际结束日期',
|
||||
`current_stage_code` varchar(32) default null comment '当前展示阶段编码(NODE_01风险分析 NODE_02业务合同 NODE_03项目组成立 NODE_04现场踏勘 NODE_05报告编制 NODE_06内部审核 NODE_07技术审核 NODE_08过程控制 ARCHIVED已归档 CANCELLED已作废)',
|
||||
`current_stage_name` varchar(50) default null comment '当前展示阶段名称(风险分析/业务合同/项目组成立/现场踏勘/报告编制/内部审核/技术审核/过程控制/已归档/已作废)',
|
||||
`status_code` int default null comment '项目状态编码(1草稿2进行中3已归档4已作废)',
|
||||
`status_name` varchar(50) default null comment '项目状态名称',
|
||||
`leader_personnel_id` bigint default null comment '项目负责人人员id',
|
||||
`leader_name` varchar(50) default null comment '项目负责人姓名',
|
||||
`cancel_reason` varchar(500) default null comment '作废原因',
|
||||
`eval_type_code` varchar(32) default null comment '评价类型编码(见EvalTypeEnum:PRE/ACCEPT/STATUS)',
|
||||
`customer_contact_name` varchar(50) default null comment '客户负责人(手填)',
|
||||
`customer_contact_phone` varchar(20) default null comment '联系电话(手填)',
|
||||
`district_code` varchar(32) default null comment '项目所在地编码(见ChongqingDistrictEnum)',
|
||||
`plan_start_date` date default null comment '项目开始时间',
|
||||
`plan_end_date` date default null comment '项目完成时间',
|
||||
`customer_address` varchar(500) default null comment '客户所在地(手填)',
|
||||
`longitude` varchar(32) default null comment '经度(手填)',
|
||||
`latitude` varchar(32) default null comment '纬度(手填)',
|
||||
`checkin_radius_meters` int default null comment '打卡有效范围(米,手填)',
|
||||
`participants_json` json default null comment '参与人员JSON:[{"name":"名称","id":1}]',
|
||||
`project_leader_name` varchar(50) default null comment '项目负责人(手填)',
|
||||
`archive_flag` int not null default 0 comment '项目归档(1归档0未归档)',
|
||||
`delete_enum` varchar(32) default null comment '删除标识true false',
|
||||
`remarks` varchar(255) default null comment '备注',
|
||||
`create_name` varchar(50) default null comment '创建人姓名',
|
||||
|
|
@ -261,8 +260,10 @@ create table `eval_project` (
|
|||
unique key `uk_eval_project_no` (`project_no`),
|
||||
key `idx_eval_project_org` (`org_id`),
|
||||
key `idx_eval_project_customer` (`customer_id`),
|
||||
key `idx_eval_project_status` (`status_code`),
|
||||
key `idx_eval_project_stage` (`current_stage_code`)
|
||||
key `idx_eval_project_plan_start` (`plan_start_date`),
|
||||
key `idx_eval_project_plan_end` (`plan_end_date`),
|
||||
key `idx_eval_project_district` (`district_code`),
|
||||
key `idx_eval_project_archive` (`archive_flag`)
|
||||
) engine=innodb default charset=utf8mb4 collate=utf8mb4_0900_ai_ci comment='安评项目主表';
|
||||
|
||||
drop table if exists `eval_project_member`;
|
||||
|
|
|
|||
|
|
@ -5,10 +5,11 @@ import io.swagger.annotations.ApiOperation;
|
|||
import io.swagger.annotations.ApiParam;
|
||||
import org.qinan.safetyeval.client.api.institution.EvalProjectApi;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectCO;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectEnumsCO;
|
||||
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||
import org.qinan.safetyeval.client.dto.institution.*;
|
||||
import org.qinan.safetyeval.infrastructure.dataobject.base.Req;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
|
@ -22,7 +23,7 @@ public class EvalProjectController {
|
|||
@Resource
|
||||
private EvalProjectApi evalProjectApi;
|
||||
|
||||
@ApiOperation("新增项目")
|
||||
@ApiOperation("新建项目")
|
||||
@PostMapping("/save")
|
||||
public SingleResponse<EvalProjectCO> save(@Validated @RequestBody EvalProjectAddCmd cmd) {
|
||||
return evalProjectApi.save(cmd);
|
||||
|
|
@ -34,39 +35,15 @@ public class EvalProjectController {
|
|||
return evalProjectApi.get(Long.parseLong(id));
|
||||
}
|
||||
|
||||
@ApiOperation("修改项目")
|
||||
@PostMapping("/modify")
|
||||
public SingleResponse<EvalProjectCO> modify(@Validated @RequestBody EvalProjectModifyCmd cmd) {
|
||||
return evalProjectApi.modify(cmd);
|
||||
}
|
||||
|
||||
@ApiOperation("删除项目")
|
||||
@PostMapping("/delete")
|
||||
public SingleResponse<Void> delete(@RequestBody Req<Long> req) {
|
||||
return evalProjectApi.delete(req.getData());
|
||||
}
|
||||
|
||||
@ApiOperation("分页查询项目")
|
||||
@GetMapping("/page")
|
||||
public PageResponse<EvalProjectCO> page(@Validated EvalProjectPageQuery query) {
|
||||
return evalProjectApi.page(query);
|
||||
}
|
||||
|
||||
@ApiOperation("作废项目")
|
||||
@PostMapping("/cancel")
|
||||
public SingleResponse<EvalProjectCO> cancel(@Validated @RequestBody EvalProjectCancelCmd cmd) {
|
||||
return evalProjectApi.cancel(cmd);
|
||||
}
|
||||
|
||||
@ApiOperation("项目进度分页查询")
|
||||
@GetMapping("/progress/page")
|
||||
public PageResponse<EvalProjectCO> progressPage(@Validated EvalProjectPageQuery query) {
|
||||
return evalProjectApi.progressPage(query);
|
||||
}
|
||||
|
||||
@ApiOperation("我的项目分页")
|
||||
@GetMapping("/my-page")
|
||||
public PageResponse<EvalProjectCO> myPage(@Validated EvalProjectMyPageQuery query) {
|
||||
return evalProjectApi.myPage(query);
|
||||
@ApiOperation("安评项目枚举映射")
|
||||
@GetMapping("/enums")
|
||||
public SingleResponse<EvalProjectEnumsCO> enums() {
|
||||
return evalProjectApi.enums();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,122 @@
|
|||
package org.qinan.safetyeval.app.convertor;
|
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.mapstruct.AfterMapping;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
import org.mapstruct.MappingTarget;
|
||||
import org.qinan.safetyeval.client.co.institution.EnumOptionCO;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectCO;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectEnumsCO;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectParticipantItemCO;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery;
|
||||
import org.qinan.safetyeval.domain.constant.ChongqingDistrictEnum;
|
||||
import org.qinan.safetyeval.domain.constant.EvalTypeEnum;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||
import org.qinan.safetyeval.domain.query.EvalProjectQuery;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface EvalProjectCmdConvertor {
|
||||
|
||||
ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||
|
||||
@Mapping(target = "id", ignore = true)
|
||||
@Mapping(target = "orgId", ignore = true)
|
||||
@Mapping(target = "projectNo", ignore = true)
|
||||
@Mapping(target = "customerId", expression = "java(cmd.getCustomerId() == null ? null : Long.parseLong(cmd.getCustomerId()))")
|
||||
@Mapping(target = "participantsJson", expression = "java(toParticipantsJson(cmd.getParticipants()))")
|
||||
@Mapping(target = "archiveFlag", expression = "java(cmd.getArchiveFlag() == null ? 0 : cmd.getArchiveFlag())")
|
||||
@Mapping(target = "tenantId", ignore = true)
|
||||
EvalProjectEntity convertAddCmdToE(EvalProjectAddCmd cmd);
|
||||
|
||||
@Mapping(target = "pageNum", source = "current")
|
||||
@Mapping(target = "pageSize", source = "size")
|
||||
@Mapping(target = "orgId", ignore = true)
|
||||
@Mapping(target = "projectIds", ignore = true)
|
||||
EvalProjectQuery convertPageQueryToQ(EvalProjectPageQuery query);
|
||||
|
||||
@Mapping(target = "id", expression = "java(entity.getId() == null ? null : String.valueOf(entity.getId()))")
|
||||
@Mapping(target = "customerId", expression = "java(entity.getCustomerId() == null ? null : String.valueOf(entity.getCustomerId()))")
|
||||
@Mapping(target = "evalTypeName", ignore = true)
|
||||
@Mapping(target = "districtName", ignore = true)
|
||||
@Mapping(target = "participants", ignore = true)
|
||||
@Mapping(target = "projectPhaseCode", ignore = true)
|
||||
@Mapping(target = "projectPhaseName", ignore = true)
|
||||
EvalProjectCO convertEToCO(EvalProjectEntity entity);
|
||||
|
||||
List<EvalProjectCO> convertEListToCOList(List<EvalProjectEntity> list);
|
||||
|
||||
@AfterMapping
|
||||
default void fillDisplayFields(EvalProjectEntity entity, @MappingTarget EvalProjectCO co) {
|
||||
if (entity == null || co == null) {
|
||||
return;
|
||||
}
|
||||
EvalTypeEnum evalType = EvalTypeEnum.ofCode(entity.getEvalTypeCode());
|
||||
if (evalType != null) {
|
||||
co.setEvalTypeName(evalType.getValue());
|
||||
}
|
||||
ChongqingDistrictEnum district = ChongqingDistrictEnum.ofCode(entity.getDistrictCode());
|
||||
if (district != null) {
|
||||
co.setDistrictName(district.getValue());
|
||||
}
|
||||
co.setParticipants(fromParticipantsJson(entity.getParticipantsJson()));
|
||||
fillProjectPhase(entity.getPlanEndDate(), co);
|
||||
}
|
||||
|
||||
default void fillProjectPhase(LocalDate planEndDate, EvalProjectCO co) {
|
||||
if (planEndDate == null) {
|
||||
return;
|
||||
}
|
||||
LocalDate today = LocalDate.now();
|
||||
if (today.isAfter(planEndDate)) {
|
||||
co.setProjectPhaseCode("DELAY");
|
||||
co.setProjectPhaseName("延期");
|
||||
} else {
|
||||
co.setProjectPhaseCode("NORMAL");
|
||||
co.setProjectPhaseName("正常");
|
||||
}
|
||||
}
|
||||
|
||||
default String toParticipantsJson(List<EvalProjectParticipantItemCO> participants) {
|
||||
if (participants == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return OBJECT_MAPPER.writeValueAsString(participants);
|
||||
} catch (Exception e) {
|
||||
throw new IllegalArgumentException("参与人员JSON序列化失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
default List<EvalProjectParticipantItemCO> fromParticipantsJson(String json) {
|
||||
if (!StringUtils.hasText(json)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
try {
|
||||
return OBJECT_MAPPER.readValue(json, new TypeReference<List<EvalProjectParticipantItemCO>>() {
|
||||
});
|
||||
} catch (Exception e) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
default EvalProjectEnumsCO buildEnums() {
|
||||
EvalProjectEnumsCO co = new EvalProjectEnumsCO();
|
||||
co.setEvalType(Arrays.stream(EvalTypeEnum.values())
|
||||
.map(e -> new EnumOptionCO(e.getCode(), e.getValue()))
|
||||
.collect(Collectors.toList()));
|
||||
co.setDistrict(Arrays.stream(ChongqingDistrictEnum.values())
|
||||
.map(e -> new EnumOptionCO(e.getCode(), e.getValue()))
|
||||
.collect(Collectors.toList()));
|
||||
return co;
|
||||
}
|
||||
}
|
||||
|
|
@ -8,6 +8,7 @@ import org.qinan.safetyeval.client.co.institution.EvalProcessControlCO;
|
|||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProcessArchiveCmd;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProcessControlSaveCmd;
|
||||
import org.qinan.safetyeval.domain.constant.EvalTypeEnum;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProcessControlEntity;
|
||||
import org.qinan.safetyeval.domain.entity.EvalReportDraftEntity;
|
||||
|
|
@ -81,7 +82,7 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
|
|||
public SingleResponse<EvalProcessControlCO> archive(EvalProcessArchiveCmd cmd) {
|
||||
Long projectId = Long.parseLong(cmd.getProjectId());
|
||||
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
|
||||
if (project.getStatusCode() != null && project.getStatusCode() == 3) {
|
||||
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
|
||||
throw new BizException(ErrorCode.EVAL_ARCHIVE_ALREADY_DONE);
|
||||
}
|
||||
evalProjectNodeSupport.assertWrite(projectId, EvalNodeCodes.NODE_08);
|
||||
|
|
@ -122,8 +123,8 @@ public class EvalProcessControlExecutor implements EvalProcessControlApi {
|
|||
report.setReportName(project.getProjectName() + "安评报告");
|
||||
report.setReportYear(LocalDateTime.now().getYear());
|
||||
report.setEvalTypeCode(project.getEvalTypeCode());
|
||||
report.setEvalTypeName(project.getEvalTypeName());
|
||||
report.setBusinessScope(project.getBusinessScope());
|
||||
EvalTypeEnum evalType = EvalTypeEnum.ofCode(project.getEvalTypeCode());
|
||||
report.setEvalTypeName(evalType != null ? evalType.getValue() : null);
|
||||
report.setPublicFlag(2);
|
||||
report.setCompleteFlag(1);
|
||||
report.setReportStatusCode(1);
|
||||
|
|
|
|||
|
|
@ -1,36 +1,25 @@
|
|||
package org.qinan.safetyeval.app.executor.institution;
|
||||
|
||||
import org.qinan.safetyeval.app.convertor.EvalProjectCmdConvertor;
|
||||
import org.qinan.safetyeval.client.api.institution.EvalProjectApi;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectCO;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectEnumsCO;
|
||||
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||
import org.qinan.safetyeval.client.dto.institution.*;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectMemberEntity;
|
||||
import org.qinan.safetyeval.domain.entity.OrgPersonnelEntity;
|
||||
import org.qinan.safetyeval.domain.exception.BizException;
|
||||
import org.qinan.safetyeval.domain.exception.ErrorCode;
|
||||
import org.qinan.safetyeval.domain.gateway.OrgPersonnelGateway;
|
||||
import org.qinan.safetyeval.domain.query.EvalProjectQuery;
|
||||
import org.qinan.safetyeval.domain.query.PageResult;
|
||||
import org.qinan.safetyeval.domain.service.EvalProjectDomainService;
|
||||
import org.qinan.safetyeval.domain.service.EvalProjectMemberDomainService;
|
||||
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter;
|
||||
import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserInfo;
|
||||
import org.qinan.safetyeval.infrastructure.support.InstitutionOrgSupport;
|
||||
import org.qinan.safetyeval.infrastructure.support.ProjectNoGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.dao.DuplicateKeyException;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class EvalProjectExecutor implements EvalProjectApi {
|
||||
|
|
@ -49,115 +38,36 @@ public class EvalProjectExecutor implements EvalProjectApi {
|
|||
|
||||
@Lazy
|
||||
@Autowired(required = false)
|
||||
private OrgPersonnelGateway orgPersonnelGateway;
|
||||
|
||||
@Lazy
|
||||
@Autowired(required = false)
|
||||
private EvalProjectMemberDomainService evalProjectMemberDomainService;
|
||||
private EvalProjectCmdConvertor evalProjectCmdConvertor;
|
||||
|
||||
@Override
|
||||
public SingleResponse<EvalProjectCO> save(EvalProjectAddCmd cmd) {
|
||||
Long orgId = institutionOrgSupport.resolveCurrentOrgId();
|
||||
EvalProjectEntity entity = new EvalProjectEntity();
|
||||
entity.setCustomerId(Long.parseLong(cmd.getCustomerId()));
|
||||
entity.setProjectName(cmd.getProjectName());
|
||||
entity.setEvalTypeCode(cmd.getEvalTypeCode());
|
||||
entity.setEvalTypeName(cmd.getEvalTypeName());
|
||||
entity.setBusinessScope(cmd.getBusinessScope());
|
||||
entity.setPlanStartDate(cmd.getPlanStartDate());
|
||||
entity.setPlanEndDate(cmd.getPlanEndDate());
|
||||
entity.setStatusCode(cmd.getStatusCode());
|
||||
evalProjectDomainService.applyDefaultStatusAndStage(entity);
|
||||
EvalProjectEntity entity = evalProjectCmdConvertor.convertAddCmdToE(cmd);
|
||||
EvalProjectEntity result = saveWithProjectNo(entity, orgId);
|
||||
return SingleResponse.success(toCO(result));
|
||||
return SingleResponse.success(evalProjectCmdConvertor.convertEToCO(result));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<EvalProjectCO> get(Long id) {
|
||||
EvalProjectEntity entity = evalProjectDomainService.get(id);
|
||||
institutionOrgSupport.assertOrgAccess(entity.getOrgId(), ErrorCode.EVAL_PROJECT_NOT_FOUND);
|
||||
return SingleResponse.success(toCO(entity));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<EvalProjectCO> modify(EvalProjectModifyCmd cmd) {
|
||||
EvalProjectEntity existing = evalProjectDomainService.get(Long.parseLong(cmd.getId()));
|
||||
institutionOrgSupport.assertOrgAccess(existing.getOrgId(), ErrorCode.EVAL_PROJECT_NOT_FOUND);
|
||||
EvalProjectEntity entity = new EvalProjectEntity();
|
||||
entity.setId(Long.parseLong(cmd.getId()));
|
||||
if (cmd.getCustomerId() != null) {
|
||||
entity.setCustomerId(Long.parseLong(cmd.getCustomerId()));
|
||||
}
|
||||
entity.setProjectName(cmd.getProjectName());
|
||||
entity.setEvalTypeCode(cmd.getEvalTypeCode());
|
||||
entity.setEvalTypeName(cmd.getEvalTypeName());
|
||||
entity.setBusinessScope(cmd.getBusinessScope());
|
||||
entity.setPlanStartDate(cmd.getPlanStartDate());
|
||||
entity.setPlanEndDate(cmd.getPlanEndDate());
|
||||
entity.setActualStartDate(cmd.getActualStartDate());
|
||||
entity.setActualEndDate(cmd.getActualEndDate());
|
||||
entity.setStatusCode(cmd.getStatusCode());
|
||||
EvalProjectEntity result = evalProjectDomainService.modify(entity);
|
||||
return SingleResponse.success(toCO(result));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<Void> delete(Long id) {
|
||||
EvalProjectEntity existing = evalProjectDomainService.get(id);
|
||||
institutionOrgSupport.assertOrgAccess(existing.getOrgId(), ErrorCode.EVAL_PROJECT_NOT_FOUND);
|
||||
evalProjectDomainService.delete(id);
|
||||
return SingleResponse.success();
|
||||
return SingleResponse.success(evalProjectCmdConvertor.convertEToCO(entity));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResponse<EvalProjectCO> page(EvalProjectPageQuery query) {
|
||||
Long orgId = institutionOrgSupport.resolveCurrentOrgId();
|
||||
EvalProjectQuery domainQuery = toDomainQuery(query, orgId, null);
|
||||
EvalProjectQuery domainQuery = evalProjectCmdConvertor.convertPageQueryToQ(query);
|
||||
domainQuery.setOrgId(institutionOrgSupport.resolveCurrentOrgId());
|
||||
PageResult<EvalProjectEntity> pageResult = evalProjectDomainService.page(domainQuery);
|
||||
return PageResponse.of(
|
||||
pageResult.getRecords().stream().map(this::toCO).collect(Collectors.toList()),
|
||||
evalProjectCmdConvertor.convertEListToCOList(pageResult.getRecords()),
|
||||
pageResult.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<EvalProjectCO> cancel(EvalProjectCancelCmd cmd) {
|
||||
Long id = Long.parseLong(cmd.getId());
|
||||
EvalProjectEntity existing = evalProjectDomainService.get(id);
|
||||
institutionOrgSupport.assertOrgAccess(existing.getOrgId(), ErrorCode.EVAL_PROJECT_NOT_FOUND);
|
||||
evalProjectDomainService.cancel(id, cmd.getCancelReason());
|
||||
return SingleResponse.success(toCO(evalProjectDomainService.get(id)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResponse<EvalProjectCO> progressPage(EvalProjectPageQuery query) {
|
||||
return page(query);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResponse<EvalProjectCO> myPage(EvalProjectMyPageQuery query) {
|
||||
Long orgId = institutionOrgSupport.resolveCurrentOrgId();
|
||||
Long personnelId = resolvePersonnelId(query.getPersonnelId());
|
||||
if (personnelId == null) {
|
||||
return PageResponse.of(Collections.emptyList(), 0L);
|
||||
}
|
||||
List<EvalProjectMemberEntity> memberships =
|
||||
evalProjectMemberDomainService.listByPersonnelId(personnelId, orgId);
|
||||
if (CollectionUtils.isEmpty(memberships)) {
|
||||
return PageResponse.of(Collections.emptyList(), 0L);
|
||||
}
|
||||
Map<Long, EvalProjectMemberEntity> memberByProject = memberships.stream()
|
||||
.collect(Collectors.toMap(EvalProjectMemberEntity::getProjectId, Function.identity(), (a, b) -> a));
|
||||
List<Long> projectIds = memberships.stream()
|
||||
.map(EvalProjectMemberEntity::getProjectId)
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
EvalProjectQuery domainQuery = toDomainQuery(query, orgId, projectIds);
|
||||
PageResult<EvalProjectEntity> pageResult = evalProjectDomainService.page(domainQuery);
|
||||
return PageResponse.of(
|
||||
pageResult.getRecords().stream()
|
||||
.map(entity -> toMyProjectCO(entity, memberByProject.get(entity.getId())))
|
||||
.collect(Collectors.toList()),
|
||||
pageResult.getTotal());
|
||||
public SingleResponse<EvalProjectEnumsCO> enums() {
|
||||
return SingleResponse.success(evalProjectCmdConvertor.buildEnums());
|
||||
}
|
||||
|
||||
private EvalProjectEntity saveWithProjectNo(EvalProjectEntity entity, Long orgId) {
|
||||
|
|
@ -175,81 +85,4 @@ public class EvalProjectExecutor implements EvalProjectApi {
|
|||
}
|
||||
throw new BizException(ErrorCode.EVAL_PROJECT_NO_GENERATE_FAILED);
|
||||
}
|
||||
|
||||
private Long resolvePersonnelId(String personnelIdOverride) {
|
||||
if (StringUtils.hasText(personnelIdOverride)) {
|
||||
return Long.parseLong(personnelIdOverride);
|
||||
}
|
||||
AuthUserInfo user = AuthUserContextAdapter.getCurrentUser();
|
||||
if (user == null) {
|
||||
return null;
|
||||
}
|
||||
String account = user.getAccount();
|
||||
if (!StringUtils.hasText(account)) {
|
||||
account = user.getUserName();
|
||||
}
|
||||
if (!StringUtils.hasText(account)) {
|
||||
return null;
|
||||
}
|
||||
OrgPersonnelEntity personnel = orgPersonnelGateway.getByAccount(account);
|
||||
return personnel == null ? null : personnel.getId();
|
||||
}
|
||||
|
||||
private EvalProjectQuery toDomainQuery(EvalProjectPageQuery query, Long orgId, List<Long> projectIds) {
|
||||
EvalProjectQuery domainQuery = new EvalProjectQuery();
|
||||
domainQuery.setPageNum(query.getCurrent());
|
||||
domainQuery.setPageSize(query.getSize());
|
||||
domainQuery.setOrgId(orgId);
|
||||
domainQuery.setProjectName(query.getProjectName());
|
||||
domainQuery.setStatusCode(query.getStatusCode());
|
||||
domainQuery.setLeaderName(query.getLeaderName());
|
||||
domainQuery.setPlanStartDateFrom(query.getPlanStartDateFrom());
|
||||
domainQuery.setPlanStartDateTo(query.getPlanStartDateTo());
|
||||
domainQuery.setPlanEndDateFrom(query.getPlanEndDateFrom());
|
||||
domainQuery.setPlanEndDateTo(query.getPlanEndDateTo());
|
||||
domainQuery.setCurrentStageCode(query.getCurrentStageCode());
|
||||
domainQuery.setProjectIds(projectIds);
|
||||
return domainQuery;
|
||||
}
|
||||
|
||||
private EvalProjectCO toMyProjectCO(EvalProjectEntity entity, EvalProjectMemberEntity membership) {
|
||||
EvalProjectCO co = toCO(entity);
|
||||
if (co == null) {
|
||||
return null;
|
||||
}
|
||||
// P1 占位:待办数/摘要固定空;P2 八节点办理后填实
|
||||
co.setPendingTodoCount(0);
|
||||
co.setTodoSummary("");
|
||||
if (membership != null) {
|
||||
co.setMyRoleCode(membership.getRoleCode());
|
||||
co.setMyRoleName(membership.getRoleName());
|
||||
}
|
||||
return co;
|
||||
}
|
||||
|
||||
private EvalProjectCO toCO(EvalProjectEntity entity) {
|
||||
if (entity == null) {
|
||||
return null;
|
||||
}
|
||||
EvalProjectCO co = new EvalProjectCO();
|
||||
co.setId(entity.getId() != null ? String.valueOf(entity.getId()) : null);
|
||||
co.setCustomerId(entity.getCustomerId() != null ? String.valueOf(entity.getCustomerId()) : null);
|
||||
co.setProjectNo(entity.getProjectNo());
|
||||
co.setProjectName(entity.getProjectName());
|
||||
co.setEvalTypeCode(entity.getEvalTypeCode());
|
||||
co.setEvalTypeName(entity.getEvalTypeName());
|
||||
co.setBusinessScope(entity.getBusinessScope());
|
||||
co.setPlanStartDate(entity.getPlanStartDate());
|
||||
co.setPlanEndDate(entity.getPlanEndDate());
|
||||
co.setActualStartDate(entity.getActualStartDate());
|
||||
co.setActualEndDate(entity.getActualEndDate());
|
||||
co.setCurrentStageCode(entity.getCurrentStageCode());
|
||||
co.setCurrentStageName(entity.getCurrentStageName());
|
||||
co.setStatusCode(entity.getStatusCode());
|
||||
co.setStatusName(entity.getStatusName());
|
||||
co.setLeaderPersonnelId(entity.getLeaderPersonnelId() != null ? String.valueOf(entity.getLeaderPersonnelId()) : null);
|
||||
co.setLeaderName(entity.getLeaderName());
|
||||
co.setCancelReason(entity.getCancelReason());
|
||||
return co;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ public class EvalProjectNodeSupport {
|
|||
if (project == null) {
|
||||
return false;
|
||||
}
|
||||
if (project.getStatusCode() != null && (project.getStatusCode() == 3 || project.getStatusCode() == 4)) {
|
||||
if (project.getArchiveFlag() != null && project.getArchiveFlag() == 1) {
|
||||
return false;
|
||||
}
|
||||
return nodeWriteAuthority.canWrite(projectId, project.getOrgId(), nodeCode);
|
||||
|
|
|
|||
|
|
@ -33,10 +33,6 @@ public class RegulatorEvalProjectMonitorExecutor implements RegulatorEvalProject
|
|||
domainQuery.setPageNum(query.getCurrent());
|
||||
domainQuery.setPageSize(query.getSize());
|
||||
domainQuery.setOrgId(query.getOrgId());
|
||||
domainQuery.setStatusCode(query.getStatusCode());
|
||||
domainQuery.setCurrentStageCode(query.getCurrentStageCode());
|
||||
domainQuery.setCreateTimeFrom(query.getCreateTimeFrom());
|
||||
domainQuery.setCreateTimeTo(query.getCreateTimeTo());
|
||||
domainQuery.setPlanStartDateFrom(query.getPlanStartDateFrom());
|
||||
domainQuery.setPlanStartDateTo(query.getPlanStartDateTo());
|
||||
PageResult<EvalProjectEntity> pageResult = evalProjectGateway.page(domainQuery);
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectMonitorCO;
|
|||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectNodeItemCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalProjectNodeOverviewCO;
|
||||
import org.qinan.safetyeval.client.co.regulator.RegulatorEvalSurveySupervisionCO;
|
||||
import org.qinan.safetyeval.domain.constant.EvalTypeEnum;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||
import org.qinan.safetyeval.domain.entity.EvalSurveyEntity;
|
||||
|
||||
|
|
@ -29,20 +30,13 @@ public final class RegulatorMonitorCoConverter {
|
|||
co.setProjectNo(entity.getProjectNo());
|
||||
co.setProjectName(entity.getProjectName());
|
||||
co.setEvalTypeCode(entity.getEvalTypeCode());
|
||||
co.setEvalTypeName(entity.getEvalTypeName());
|
||||
co.setBusinessScope(entity.getBusinessScope());
|
||||
EvalTypeEnum evalType = EvalTypeEnum.ofCode(entity.getEvalTypeCode());
|
||||
if (evalType != null) {
|
||||
co.setEvalTypeName(evalType.getValue());
|
||||
}
|
||||
co.setPlanStartDate(entity.getPlanStartDate());
|
||||
co.setPlanEndDate(entity.getPlanEndDate());
|
||||
co.setActualStartDate(entity.getActualStartDate());
|
||||
co.setActualEndDate(entity.getActualEndDate());
|
||||
co.setCurrentStageCode(entity.getCurrentStageCode());
|
||||
co.setCurrentStageName(entity.getCurrentStageName());
|
||||
co.setStatusCode(entity.getStatusCode());
|
||||
co.setStatusName(entity.getStatusName());
|
||||
co.setLeaderPersonnelId(entity.getLeaderPersonnelId() != null
|
||||
? String.valueOf(entity.getLeaderPersonnelId()) : null);
|
||||
co.setLeaderName(entity.getLeaderName());
|
||||
co.setCancelReason(entity.getCancelReason());
|
||||
co.setLeaderName(entity.getProjectLeaderName());
|
||||
return co;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
package org.qinan.safetyeval.client.api.institution;
|
||||
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectCO;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectEnumsCO;
|
||||
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||
import org.qinan.safetyeval.client.dto.institution.*;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery;
|
||||
|
||||
public interface EvalProjectApi {
|
||||
|
||||
|
|
@ -11,15 +13,7 @@ public interface EvalProjectApi {
|
|||
|
||||
SingleResponse<EvalProjectCO> get(Long id);
|
||||
|
||||
SingleResponse<EvalProjectCO> modify(EvalProjectModifyCmd cmd);
|
||||
|
||||
SingleResponse<Void> delete(Long id);
|
||||
|
||||
PageResponse<EvalProjectCO> page(EvalProjectPageQuery query);
|
||||
|
||||
SingleResponse<EvalProjectCO> cancel(EvalProjectCancelCmd cmd);
|
||||
|
||||
PageResponse<EvalProjectCO> progressPage(EvalProjectPageQuery query);
|
||||
|
||||
PageResponse<EvalProjectCO> myPage(EvalProjectMyPageQuery query);
|
||||
SingleResponse<EvalProjectEnumsCO> enums();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
|
|||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class EvalProjectCO {
|
||||
|
|
@ -11,7 +12,7 @@ public class EvalProjectCO {
|
|||
@ApiModelProperty("主键ID")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("客户ID")
|
||||
@ApiModelProperty("被评价客户id")
|
||||
private String customerId;
|
||||
|
||||
@ApiModelProperty("项目编号")
|
||||
|
|
@ -20,65 +21,54 @@ public class EvalProjectCO {
|
|||
@ApiModelProperty("项目名称")
|
||||
private String projectName;
|
||||
|
||||
@ApiModelProperty(value = "评价类型编码:PRE安全预评价 ACCEPT安全验收评价 STATUS安全现状评价", example = "PRE")
|
||||
@ApiModelProperty("评价类型编码")
|
||||
private String evalTypeCode;
|
||||
|
||||
@ApiModelProperty(value = "评价类型名称:安全预评价/安全验收评价/安全现状评价", example = "安全预评价")
|
||||
@ApiModelProperty("评价类型名称")
|
||||
private String evalTypeName;
|
||||
|
||||
@ApiModelProperty("业务范围")
|
||||
private String businessScope;
|
||||
@ApiModelProperty("客户负责人")
|
||||
private String customerContactName;
|
||||
|
||||
@ApiModelProperty("计划开始日期")
|
||||
@ApiModelProperty("联系电话")
|
||||
private String customerContactPhone;
|
||||
|
||||
@ApiModelProperty("项目所在地编码")
|
||||
private String districtCode;
|
||||
|
||||
@ApiModelProperty("项目所在地名称")
|
||||
private String districtName;
|
||||
|
||||
@ApiModelProperty("项目开始时间")
|
||||
private LocalDate planStartDate;
|
||||
|
||||
@ApiModelProperty("计划结束日期")
|
||||
@ApiModelProperty("项目完成时间")
|
||||
private LocalDate planEndDate;
|
||||
|
||||
@ApiModelProperty("实际开始日期")
|
||||
private LocalDate actualStartDate;
|
||||
@ApiModelProperty("客户所在地")
|
||||
private String customerAddress;
|
||||
|
||||
@ApiModelProperty("实际结束日期")
|
||||
private LocalDate actualEndDate;
|
||||
@ApiModelProperty("经度")
|
||||
private String longitude;
|
||||
|
||||
@ApiModelProperty(value = "当前阶段编码:NODE_01风险分析 NODE_02业务合同 NODE_03项目组成立 NODE_04现场踏勘 NODE_05报告编制 NODE_06内部审核 NODE_07技术审核 NODE_08过程控制 ARCHIVED已归档 CANCELLED已作废", example = "NODE_02")
|
||||
private String currentStageCode;
|
||||
@ApiModelProperty("纬度")
|
||||
private String latitude;
|
||||
|
||||
@ApiModelProperty(value = "当前阶段名称:风险分析/业务合同/项目组成立/现场踏勘/报告编制/内部审核/技术审核/过程控制/已归档/已作废", example = "业务合同")
|
||||
private String currentStageName;
|
||||
@ApiModelProperty("打卡有效范围(米)")
|
||||
private Integer checkinRadiusMeters;
|
||||
|
||||
@ApiModelProperty(value = "项目状态编码:1草稿 2进行中 3已归档 4已作废", example = "2")
|
||||
private Integer statusCode;
|
||||
@ApiModelProperty("参与人员")
|
||||
private List<EvalProjectParticipantItemCO> participants;
|
||||
|
||||
@ApiModelProperty(value = "项目状态名称:草稿/进行中/已归档/已作废", example = "进行中")
|
||||
private String statusName;
|
||||
@ApiModelProperty("项目负责人")
|
||||
private String projectLeaderName;
|
||||
|
||||
@ApiModelProperty("负责人人员ID")
|
||||
private String leaderPersonnelId;
|
||||
@ApiModelProperty(value = "项目归档:1归档 0未归档", example = "0")
|
||||
private Integer archiveFlag;
|
||||
|
||||
@ApiModelProperty("负责人姓名")
|
||||
private String leaderName;
|
||||
@ApiModelProperty("项目阶段编码:NORMAL正常 DELAY延期(按完成时间判定,不落库)")
|
||||
private String projectPhaseCode;
|
||||
|
||||
@ApiModelProperty("作废原因")
|
||||
private String cancelReason;
|
||||
|
||||
/** 我的项目:当前人在该项目的角色编码(非 my-page 可为空) */
|
||||
@ApiModelProperty(value = "我的角色编码:LEADER项目负责人 PROCESS_OWNER过程控制负责人 RISK_OWNER风险分析负责人 CONTRACT_OWNER合同办理人 SURVEY_OWNER踏勘负责人 DRAFT_OWNER报告编制人 INTERNAL_REVIEWER内部审核人 TECH_REVIEWER技术审核人 MEMBER项目组成员", example = "MEMBER")
|
||||
private String myRoleCode;
|
||||
|
||||
/** 我的项目:当前人在该项目的角色名称 */
|
||||
@ApiModelProperty(value = "我的角色名称:项目负责人/过程控制负责人/风险分析负责人/合同办理人/踏勘负责人/报告编制人/内部审核人/技术审核人/项目组成员", example = "项目组成员")
|
||||
private String myRoleName;
|
||||
|
||||
/**
|
||||
* 待我处理数量占位。P1 固定 0;P2 八节点办理后填实。
|
||||
*/
|
||||
@ApiModelProperty("待我处理数(P1 占位,固定 0)")
|
||||
private Integer pendingTodoCount;
|
||||
|
||||
/**
|
||||
* 待办摘要占位。P1 固定空串;P2 填节点待办文案。
|
||||
*/
|
||||
@ApiModelProperty("待办摘要(P1 占位,固定空串)")
|
||||
private String todoSummary;
|
||||
@ApiModelProperty("项目阶段名称:正常/延期")
|
||||
private String projectPhaseName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
package org.qinan.safetyeval.client.co.institution;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class EvalProjectEnumsCO {
|
||||
|
||||
@ApiModelProperty("评价类型")
|
||||
private List<EnumOptionCO> evalType;
|
||||
|
||||
@ApiModelProperty("项目所在地(重庆市区级)")
|
||||
private List<EnumOptionCO> district;
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
package org.qinan.safetyeval.client.co.institution;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class EvalProjectParticipantItemCO {
|
||||
|
||||
@ApiModelProperty("人员id")
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("人员名称")
|
||||
private String name;
|
||||
}
|
||||
|
|
@ -2,33 +2,64 @@ package org.qinan.safetyeval.client.dto.institution;
|
|||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectParticipantItemCO;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class EvalProjectAddCmd {
|
||||
|
||||
@ApiModelProperty("客户ID")
|
||||
private String customerId;
|
||||
|
||||
@ApiModelProperty("项目名称")
|
||||
@NotBlank(message = "项目名称不能为空")
|
||||
@ApiModelProperty(value = "项目名称", required = true)
|
||||
private String projectName;
|
||||
|
||||
@ApiModelProperty(value = "评价类型编码:PRE安全预评价 ACCEPT安全验收评价 STATUS安全现状评价", example = "PRE")
|
||||
@NotBlank(message = "评价类型不能为空")
|
||||
@ApiModelProperty(value = "评价类型编码:PRE/ACCEPT/STATUS", required = true, example = "PRE")
|
||||
private String evalTypeCode;
|
||||
|
||||
@ApiModelProperty(value = "评价类型名称:安全预评价/安全验收评价/安全现状评价", example = "安全预评价")
|
||||
private String evalTypeName;
|
||||
@NotBlank(message = "被评价客户不能为空")
|
||||
@ApiModelProperty(value = "被评价客户id(客户管理id)", required = true)
|
||||
private String customerId;
|
||||
|
||||
@ApiModelProperty("业务范围")
|
||||
private String businessScope;
|
||||
@ApiModelProperty("客户负责人(手填)")
|
||||
private String customerContactName;
|
||||
|
||||
@ApiModelProperty("计划开始日期")
|
||||
@ApiModelProperty("联系电话(手填)")
|
||||
private String customerContactPhone;
|
||||
|
||||
@ApiModelProperty("项目所在地编码(ChongqingDistrictEnum)")
|
||||
private String districtCode;
|
||||
|
||||
@ApiModelProperty("项目开始时间")
|
||||
private LocalDate planStartDate;
|
||||
|
||||
@ApiModelProperty("计划结束日期")
|
||||
@ApiModelProperty("项目完成时间")
|
||||
private LocalDate planEndDate;
|
||||
|
||||
@ApiModelProperty(value = "项目状态编码:1草稿 2进行中 3已归档 4已作废", example = "2")
|
||||
private Integer statusCode;
|
||||
@ApiModelProperty("客户所在地(手填)")
|
||||
private String customerAddress;
|
||||
|
||||
@ApiModelProperty("经度")
|
||||
private String longitude;
|
||||
|
||||
@ApiModelProperty("纬度")
|
||||
private String latitude;
|
||||
|
||||
@ApiModelProperty("打卡有效范围(米)")
|
||||
private Integer checkinRadiusMeters;
|
||||
|
||||
@NotNull(message = "参与人员不能为空")
|
||||
@Size(min = 5, message = "请至少选取5名项目参与人员")
|
||||
@ApiModelProperty(value = "参与人员", required = true)
|
||||
private List<EvalProjectParticipantItemCO> participants;
|
||||
|
||||
@ApiModelProperty("项目负责人(手填)")
|
||||
private String projectLeaderName;
|
||||
|
||||
@ApiModelProperty(value = "项目归档:1归档 0未归档", example = "0")
|
||||
private Integer archiveFlag;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,28 +15,25 @@ public class EvalProjectPageQuery extends BasePageQuery {
|
|||
@ApiModelProperty("项目名称")
|
||||
private String projectName;
|
||||
|
||||
@ApiModelProperty(value = "项目状态编码:1草稿 2进行中 3已归档 4已作废", example = "2")
|
||||
private Integer statusCode;
|
||||
@ApiModelProperty("项目负责人")
|
||||
private String projectLeaderName;
|
||||
|
||||
@ApiModelProperty("负责人姓名")
|
||||
private String leaderName;
|
||||
@ApiModelProperty("客户负责人")
|
||||
private String customerContactName;
|
||||
|
||||
@ApiModelProperty("计划开始日期起")
|
||||
@ApiModelProperty("项目开始时间起")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate planStartDateFrom;
|
||||
|
||||
@ApiModelProperty("计划开始日期止")
|
||||
@ApiModelProperty("项目开始时间止")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate planStartDateTo;
|
||||
|
||||
@ApiModelProperty("计划结束日期起")
|
||||
@ApiModelProperty("项目完成时间起")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate planEndDateFrom;
|
||||
|
||||
@ApiModelProperty("计划结束日期止")
|
||||
@ApiModelProperty("项目完成时间止")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate planEndDateTo;
|
||||
|
||||
@ApiModelProperty(value = "当前阶段编码:NODE_01风险分析 NODE_02业务合同 NODE_03项目组成立 NODE_04现场踏勘 NODE_05报告编制 NODE_06内部审核 NODE_07技术审核 NODE_08过程控制 ARCHIVED已归档 CANCELLED已作废", example = "NODE_02")
|
||||
private String currentStageCode;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,40 @@
|
|||
package org.qinan.safetyeval.domain.constant;
|
||||
|
||||
/**
|
||||
* 安全评价类型枚举
|
||||
*/
|
||||
public enum EvalTypeEnum {
|
||||
|
||||
PRE("PRE", "安全预评价"),
|
||||
ACCEPT("ACCEPT", "安全设施竣工验收评价"),
|
||||
STATUS("STATUS", "安全现状评价"),
|
||||
;
|
||||
|
||||
private final String code;
|
||||
private final String value;
|
||||
|
||||
EvalTypeEnum(String code, String value) {
|
||||
this.code = code;
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static EvalTypeEnum ofCode(String code) {
|
||||
if (code == null) {
|
||||
return null;
|
||||
}
|
||||
for (EvalTypeEnum item : values()) {
|
||||
if (item.code.equals(code)) {
|
||||
return item;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,12 +1,11 @@
|
|||
package org.qinan.safetyeval.domain.entity;
|
||||
|
||||
import lombok.Data;
|
||||
import org.qinan.safetyeval.domain.support.EvalStatusHelper;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
@Data
|
||||
public class EvalProjectEntity{
|
||||
public class EvalProjectEntity {
|
||||
|
||||
private Long id;
|
||||
private Long orgId;
|
||||
|
|
@ -14,18 +13,19 @@ public class EvalProjectEntity{
|
|||
private String projectNo;
|
||||
private String projectName;
|
||||
private String evalTypeCode;
|
||||
private String evalTypeName;
|
||||
private String businessScope;
|
||||
private String customerContactName;
|
||||
private String customerContactPhone;
|
||||
private String districtCode;
|
||||
private LocalDate planStartDate;
|
||||
private LocalDate planEndDate;
|
||||
private LocalDate actualStartDate;
|
||||
private LocalDate actualEndDate;
|
||||
private String currentStageCode;
|
||||
private String currentStageName;
|
||||
private Integer statusCode;
|
||||
private String statusName;
|
||||
private Long leaderPersonnelId;
|
||||
private String leaderName;
|
||||
private String cancelReason;
|
||||
private String customerAddress;
|
||||
private String longitude;
|
||||
private String latitude;
|
||||
private Integer checkinRadiusMeters;
|
||||
/** JSON: [{"name":"名称","id":1}] */
|
||||
private String participantsJson;
|
||||
private String projectLeaderName;
|
||||
/** 1归档 0未归档 */
|
||||
private Integer archiveFlag;
|
||||
private Long tenantId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,5 +18,5 @@ public interface EvalProjectGateway {
|
|||
|
||||
long countByCustomerId(Long customerId, Long orgId);
|
||||
|
||||
void updateLeader(Long projectId, Long leaderPersonnelId, String leaderName);
|
||||
void updateLeader(Long projectId, String leaderName);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ package org.qinan.safetyeval.domain.query;
|
|||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
|
|
@ -13,16 +12,11 @@ public class EvalProjectQuery {
|
|||
private Long pageSize;
|
||||
private Long orgId;
|
||||
private String projectName;
|
||||
/** 项目状态编码:1草稿 2进行中 3已归档 4已作废,示例:2 */
|
||||
private Integer statusCode;
|
||||
private String leaderName;
|
||||
private String projectLeaderName;
|
||||
private String customerContactName;
|
||||
private LocalDate planStartDateFrom;
|
||||
private LocalDate planStartDateTo;
|
||||
private LocalDate planEndDateFrom;
|
||||
private LocalDate planEndDateTo;
|
||||
/** 当前阶段编码:NODE_01风险分析 NODE_02业务合同 NODE_03项目组成立 NODE_04现场踏勘 NODE_05报告编制 NODE_06内部审核 NODE_07技术审核 NODE_08过程控制 ARCHIVED已归档 CANCELLED已作废,示例:NODE_02 */
|
||||
private String currentStageCode;
|
||||
private LocalDateTime createTimeFrom;
|
||||
private LocalDateTime createTimeTo;
|
||||
private List<Long> projectIds;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,11 +13,6 @@ import javax.annotation.Resource;
|
|||
@Service
|
||||
public class EvalProjectDomainService {
|
||||
|
||||
private static final String STAGE_NODE_01 = "NODE_01";
|
||||
private static final String STAGE_NODE_01_NAME = "风险分析";
|
||||
private static final String STAGE_CANCELLED = "CANCELLED";
|
||||
private static final String STAGE_CANCELLED_NAME = "已作废";
|
||||
|
||||
@Resource
|
||||
private EvalProjectGateway evalProjectGateway;
|
||||
|
||||
|
|
@ -27,7 +22,9 @@ public class EvalProjectDomainService {
|
|||
public EvalProjectEntity add(EvalProjectEntity entity, Long orgId) {
|
||||
evalCustomerDomainService.requireCustomerInOrg(entity.getCustomerId(), orgId);
|
||||
entity.setOrgId(orgId);
|
||||
applyDefaultStatusAndStage(entity);
|
||||
if (entity.getArchiveFlag() == null) {
|
||||
entity.setArchiveFlag(0);
|
||||
}
|
||||
return evalProjectGateway.save(entity);
|
||||
}
|
||||
|
||||
|
|
@ -39,82 +36,23 @@ public class EvalProjectDomainService {
|
|||
return existing;
|
||||
}
|
||||
|
||||
public EvalProjectEntity modify(EvalProjectEntity entity) {
|
||||
EvalProjectEntity existing = get(entity.getId());
|
||||
assertModifiable(existing);
|
||||
if (entity.getCustomerId() != null && !entity.getCustomerId().equals(existing.getCustomerId())) {
|
||||
evalCustomerDomainService.requireCustomerInOrg(entity.getCustomerId(), existing.getOrgId());
|
||||
}
|
||||
entity.setOrgId(existing.getOrgId());
|
||||
entity.setProjectNo(existing.getProjectNo());
|
||||
fillStatusName(entity);
|
||||
return evalProjectGateway.modify(entity);
|
||||
}
|
||||
|
||||
public void delete(Long id) {
|
||||
get(id);
|
||||
evalProjectGateway.delete(id);
|
||||
}
|
||||
|
||||
public void cancel(Long id, String cancelReason) {
|
||||
EvalProjectEntity existing = get(id);
|
||||
existing.setStatusCode(4);
|
||||
existing.setStatusName("已作废");
|
||||
existing.setCurrentStageCode(STAGE_CANCELLED);
|
||||
existing.setCurrentStageName(STAGE_CANCELLED_NAME);
|
||||
existing.setCancelReason(cancelReason);
|
||||
evalProjectGateway.modify(existing);
|
||||
}
|
||||
|
||||
public PageResult<EvalProjectEntity> page(EvalProjectQuery query) {
|
||||
return evalProjectGateway.page(query);
|
||||
}
|
||||
|
||||
public void updateLeader(Long projectId, Long leaderPersonnelId, String leaderName) {
|
||||
evalProjectGateway.updateLeader(projectId, leaderPersonnelId, leaderName);
|
||||
evalProjectGateway.updateLeader(projectId, leaderName);
|
||||
}
|
||||
|
||||
public void assertModifiable(EvalProjectEntity existing) {
|
||||
if (existing.getStatusCode() != null && existing.getStatusCode() == 4) {
|
||||
throw new BizException(ErrorCode.EVAL_PROJECT_CANCELLED);
|
||||
}
|
||||
if (existing.getStatusCode() != null && existing.getStatusCode() == 3) {
|
||||
if (existing.getArchiveFlag() != null && existing.getArchiveFlag() == 1) {
|
||||
throw new BizException(ErrorCode.EVAL_PROJECT_ARCHIVED);
|
||||
}
|
||||
}
|
||||
|
||||
public void applyDefaultStatusAndStage(EvalProjectEntity entity) {
|
||||
if (entity.getStatusCode() == null || entity.getStatusCode() != 1) {
|
||||
entity.setStatusCode(2);
|
||||
entity.setStatusName("进行中");
|
||||
} else {
|
||||
entity.setStatusName("草稿");
|
||||
}
|
||||
if (entity.getCurrentStageCode() == null) {
|
||||
entity.setCurrentStageCode(STAGE_NODE_01);
|
||||
entity.setCurrentStageName(STAGE_NODE_01_NAME);
|
||||
}
|
||||
}
|
||||
|
||||
private void fillStatusName(EvalProjectEntity entity) {
|
||||
if (entity.getStatusCode() == null) {
|
||||
return;
|
||||
}
|
||||
switch (entity.getStatusCode()) {
|
||||
case 1:
|
||||
entity.setStatusName("草稿");
|
||||
break;
|
||||
case 2:
|
||||
entity.setStatusName("进行中");
|
||||
break;
|
||||
case 3:
|
||||
entity.setStatusName("已归档");
|
||||
break;
|
||||
case 4:
|
||||
entity.setStatusName("已作废");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
public void markArchived(Long projectId) {
|
||||
EvalProjectEntity existing = get(projectId);
|
||||
existing.setArchiveFlag(1);
|
||||
evalProjectGateway.modify(existing);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,13 +2,12 @@ package org.qinan.safetyeval.domain.service;
|
|||
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||
import org.qinan.safetyeval.domain.gateway.EvalProjectGateway;
|
||||
import org.qinan.safetyeval.domain.support.EvalNodeCodes;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 节点完成时同步项目 current_stage;归档时更新 status。
|
||||
* 节点完成后的项目侧同步。主表已去掉阶段/状态字段后,仅归档写 archive_flag。
|
||||
*/
|
||||
@Service
|
||||
public class ProjectStageSyncService {
|
||||
|
|
@ -17,24 +16,7 @@ public class ProjectStageSyncService {
|
|||
private EvalProjectGateway evalProjectGateway;
|
||||
|
||||
public void onNodeCompleted(Long projectId, String completedNodeCode) {
|
||||
if (projectId == null || completedNodeCode == null) {
|
||||
return;
|
||||
}
|
||||
EvalProjectEntity project = evalProjectGateway.get(projectId);
|
||||
if (project == null) {
|
||||
return;
|
||||
}
|
||||
String nextStage = nextStageAfterComplete(completedNodeCode);
|
||||
if (nextStage == null) {
|
||||
return;
|
||||
}
|
||||
project.setCurrentStageCode(nextStage);
|
||||
project.setCurrentStageName(stageName(nextStage));
|
||||
if (project.getStatusCode() == null || project.getStatusCode() == 1) {
|
||||
project.setStatusCode(2);
|
||||
project.setStatusName("进行中");
|
||||
}
|
||||
evalProjectGateway.modify(project);
|
||||
// 项目主表不再维护 current_stage,节点完成不再回写主表
|
||||
}
|
||||
|
||||
public void onArchived(Long projectId) {
|
||||
|
|
@ -42,59 +24,7 @@ public class ProjectStageSyncService {
|
|||
if (project == null) {
|
||||
return;
|
||||
}
|
||||
project.setStatusCode(3);
|
||||
project.setStatusName("已归档");
|
||||
project.setCurrentStageCode(EvalNodeCodes.ARCHIVED);
|
||||
project.setCurrentStageName(EvalNodeCodes.ARCHIVED_NAME);
|
||||
project.setArchiveFlag(1);
|
||||
evalProjectGateway.modify(project);
|
||||
}
|
||||
|
||||
private String nextStageAfterComplete(String completedNodeCode) {
|
||||
switch (completedNodeCode) {
|
||||
case EvalNodeCodes.NODE_01:
|
||||
return EvalNodeCodes.NODE_02;
|
||||
case EvalNodeCodes.NODE_02:
|
||||
return EvalNodeCodes.NODE_03;
|
||||
case EvalNodeCodes.NODE_03:
|
||||
return EvalNodeCodes.NODE_04;
|
||||
case EvalNodeCodes.NODE_04:
|
||||
return EvalNodeCodes.NODE_05;
|
||||
case EvalNodeCodes.NODE_05:
|
||||
return EvalNodeCodes.NODE_06;
|
||||
case EvalNodeCodes.NODE_06:
|
||||
return EvalNodeCodes.NODE_07;
|
||||
case EvalNodeCodes.NODE_07:
|
||||
return EvalNodeCodes.NODE_08;
|
||||
case EvalNodeCodes.NODE_08:
|
||||
// 归档阶段仅由 onArchived 推进,禁止 get-or-save 完成误推 ARCHIVED
|
||||
return null;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private String stageName(String stageCode) {
|
||||
switch (stageCode) {
|
||||
case EvalNodeCodes.NODE_01:
|
||||
return EvalNodeCodes.NODE_01_NAME;
|
||||
case EvalNodeCodes.NODE_02:
|
||||
return EvalNodeCodes.NODE_02_NAME;
|
||||
case EvalNodeCodes.NODE_03:
|
||||
return EvalNodeCodes.NODE_03_NAME;
|
||||
case EvalNodeCodes.NODE_04:
|
||||
return EvalNodeCodes.NODE_04_NAME;
|
||||
case EvalNodeCodes.NODE_05:
|
||||
return EvalNodeCodes.NODE_05_NAME;
|
||||
case EvalNodeCodes.NODE_06:
|
||||
return EvalNodeCodes.NODE_06_NAME;
|
||||
case EvalNodeCodes.NODE_07:
|
||||
return EvalNodeCodes.NODE_07_NAME;
|
||||
case EvalNodeCodes.NODE_08:
|
||||
return EvalNodeCodes.NODE_08_NAME;
|
||||
case EvalNodeCodes.ARCHIVED:
|
||||
return EvalNodeCodes.ARCHIVED_NAME;
|
||||
default:
|
||||
return stageCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
package org.qinan.safetyeval.infrastructure.convertor;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO;
|
||||
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface EvalProjectDoConvertor {
|
||||
|
||||
EvalProjectDO convertEToDo(EvalProjectEntity entity);
|
||||
|
||||
EvalProjectEntity convertDoToE(EvalProjectDO dataObject);
|
||||
}
|
||||
|
|
@ -15,26 +15,19 @@ public class EvalProjectDO {
|
|||
private Long customerId;
|
||||
private String projectNo;
|
||||
private String projectName;
|
||||
/** 评价类型编码:PRE安全预评价 ACCEPT安全验收评价 STATUS安全现状评价,示例:PRE */
|
||||
private String evalTypeCode;
|
||||
/** 评价类型名称:安全预评价/安全验收评价/安全现状评价,示例:安全预评价 */
|
||||
private String evalTypeName;
|
||||
private String businessScope;
|
||||
private String customerContactName;
|
||||
private String customerContactPhone;
|
||||
private String districtCode;
|
||||
private LocalDate planStartDate;
|
||||
private LocalDate planEndDate;
|
||||
private LocalDate actualStartDate;
|
||||
private LocalDate actualEndDate;
|
||||
/** 当前阶段编码:NODE_01风险分析 NODE_02业务合同 NODE_03项目组成立 NODE_04现场踏勘 NODE_05报告编制 NODE_06内部审核 NODE_07技术审核 NODE_08过程控制 ARCHIVED已归档 CANCELLED已作废,示例:NODE_02 */
|
||||
private String currentStageCode;
|
||||
/** 当前阶段名称:风险分析/业务合同/项目组成立/现场踏勘/报告编制/内部审核/技术审核/过程控制/已归档/已作废,示例:业务合同 */
|
||||
private String currentStageName;
|
||||
/** 项目状态编码:1草稿 2进行中 3已归档 4已作废,示例:2 */
|
||||
private Integer statusCode;
|
||||
/** 项目状态名称:草稿/进行中/已归档/已作废,示例:进行中 */
|
||||
private String statusName;
|
||||
private Long leaderPersonnelId;
|
||||
private String leaderName;
|
||||
private String cancelReason;
|
||||
private String customerAddress;
|
||||
private String longitude;
|
||||
private String latitude;
|
||||
private Integer checkinRadiusMeters;
|
||||
private String participantsJson;
|
||||
private String projectLeaderName;
|
||||
private Integer archiveFlag;
|
||||
private String deleteEnum;
|
||||
private String remarks;
|
||||
private String createName;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
|||
import org.qinan.safetyeval.domain.gateway.EvalProjectGateway;
|
||||
import org.qinan.safetyeval.domain.query.EvalProjectQuery;
|
||||
import org.qinan.safetyeval.domain.query.PageResult;
|
||||
import org.qinan.safetyeval.infrastructure.convertor.EvalProjectDoConvertor;
|
||||
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO;
|
||||
import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper;
|
||||
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
|
||||
|
|
@ -25,12 +26,19 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway {
|
|||
@Resource
|
||||
private EvalProjectMapper evalProjectMapper;
|
||||
|
||||
@Resource
|
||||
private EvalProjectDoConvertor evalProjectDoConvertor;
|
||||
|
||||
@Resource
|
||||
private OrgContextResolver orgContextResolver;
|
||||
|
||||
@Override
|
||||
public EvalProjectEntity save(EvalProjectEntity entity) {
|
||||
EvalProjectDO dataObject = toDO(entity);
|
||||
EvalProjectDO dataObject = evalProjectDoConvertor.convertEToDo(entity);
|
||||
dataObject.setOrgId(orgContextResolver.resolveOrgId(entity.getOrgId()));
|
||||
if (dataObject.getArchiveFlag() == null) {
|
||||
dataObject.setArchiveFlag(0);
|
||||
}
|
||||
InsertFieldDefaults.apply(dataObject);
|
||||
evalProjectMapper.insert(dataObject);
|
||||
entity.setId(dataObject.getId());
|
||||
|
|
@ -43,13 +51,14 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway {
|
|||
if (dataObject == null || !"false".equals(dataObject.getDeleteEnum())) {
|
||||
return null;
|
||||
}
|
||||
return toEntity(dataObject);
|
||||
return evalProjectDoConvertor.convertDoToE(dataObject);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EvalProjectEntity modify(EvalProjectEntity entity) {
|
||||
EvalProjectDO dataObject = toDO(entity);
|
||||
EvalProjectDO dataObject = evalProjectDoConvertor.convertEToDo(entity);
|
||||
dataObject.setId(entity.getId());
|
||||
dataObject.setOrgId(orgContextResolver.resolveOrgId(entity.getOrgId()));
|
||||
InsertFieldDefaults.applyForUpdate(dataObject);
|
||||
evalProjectMapper.updateById(dataObject);
|
||||
return get(entity.getId());
|
||||
|
|
@ -65,7 +74,7 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway {
|
|||
Page<EvalProjectDO> page = new Page<>(query.getPageNum(), query.getPageSize());
|
||||
IPage<EvalProjectDO> result = evalProjectMapper.selectPage(page, buildQueryWrapper(query));
|
||||
List<EvalProjectEntity> entities = result.getRecords().stream()
|
||||
.map(this::toEntity)
|
||||
.map(evalProjectDoConvertor::convertDoToE)
|
||||
.collect(Collectors.toList());
|
||||
return PageResult.of(entities, result.getTotal(), result.getCurrent(), result.getSize());
|
||||
}
|
||||
|
|
@ -82,11 +91,10 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void updateLeader(Long projectId, Long leaderPersonnelId, String leaderName) {
|
||||
public void updateLeader(Long projectId, String leaderName) {
|
||||
EvalProjectDO dataObject = new EvalProjectDO();
|
||||
dataObject.setId(projectId);
|
||||
dataObject.setLeaderPersonnelId(leaderPersonnelId);
|
||||
dataObject.setLeaderName(leaderName);
|
||||
dataObject.setProjectLeaderName(leaderName);
|
||||
InsertFieldDefaults.applyForUpdate(dataObject);
|
||||
evalProjectMapper.updateById(dataObject);
|
||||
}
|
||||
|
|
@ -100,11 +108,11 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway {
|
|||
if (StringUtils.hasText(query.getProjectName())) {
|
||||
wrapper.like(EvalProjectDO::getProjectName, query.getProjectName());
|
||||
}
|
||||
if (query.getStatusCode() != null) {
|
||||
wrapper.eq(EvalProjectDO::getStatusCode, query.getStatusCode());
|
||||
if (StringUtils.hasText(query.getProjectLeaderName())) {
|
||||
wrapper.like(EvalProjectDO::getProjectLeaderName, query.getProjectLeaderName());
|
||||
}
|
||||
if (StringUtils.hasText(query.getLeaderName())) {
|
||||
wrapper.like(EvalProjectDO::getLeaderName, query.getLeaderName());
|
||||
if (StringUtils.hasText(query.getCustomerContactName())) {
|
||||
wrapper.like(EvalProjectDO::getCustomerContactName, query.getCustomerContactName());
|
||||
}
|
||||
if (query.getPlanStartDateFrom() != null) {
|
||||
wrapper.ge(EvalProjectDO::getPlanStartDate, query.getPlanStartDateFrom());
|
||||
|
|
@ -118,71 +126,10 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway {
|
|||
if (query.getPlanEndDateTo() != null) {
|
||||
wrapper.le(EvalProjectDO::getPlanEndDate, query.getPlanEndDateTo());
|
||||
}
|
||||
if (StringUtils.hasText(query.getCurrentStageCode())) {
|
||||
wrapper.eq(EvalProjectDO::getCurrentStageCode, query.getCurrentStageCode());
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(query.getProjectIds())) {
|
||||
wrapper.in(EvalProjectDO::getId, query.getProjectIds());
|
||||
}
|
||||
if (query.getCreateTimeFrom() != null) {
|
||||
wrapper.ge(EvalProjectDO::getCreateTime, query.getCreateTimeFrom());
|
||||
}
|
||||
if (query.getCreateTimeTo() != null) {
|
||||
wrapper.le(EvalProjectDO::getCreateTime, query.getCreateTimeTo());
|
||||
}
|
||||
wrapper.orderByDesc(EvalProjectDO::getCreateTime);
|
||||
wrapper.orderByDesc(EvalProjectDO::getPlanStartDate);
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
private EvalProjectDO toDO(EvalProjectEntity entity) {
|
||||
EvalProjectDO dataObject = new EvalProjectDO();
|
||||
dataObject.setOrgId(orgContextResolver.resolveOrgId(entity.getOrgId()));
|
||||
dataObject.setCustomerId(entity.getCustomerId());
|
||||
dataObject.setProjectNo(entity.getProjectNo());
|
||||
dataObject.setProjectName(entity.getProjectName());
|
||||
dataObject.setEvalTypeCode(entity.getEvalTypeCode());
|
||||
dataObject.setEvalTypeName(entity.getEvalTypeName());
|
||||
dataObject.setBusinessScope(entity.getBusinessScope());
|
||||
dataObject.setPlanStartDate(entity.getPlanStartDate());
|
||||
dataObject.setPlanEndDate(entity.getPlanEndDate());
|
||||
dataObject.setActualStartDate(entity.getActualStartDate());
|
||||
dataObject.setActualEndDate(entity.getActualEndDate());
|
||||
dataObject.setCurrentStageCode(entity.getCurrentStageCode());
|
||||
dataObject.setCurrentStageName(entity.getCurrentStageName());
|
||||
dataObject.setStatusCode(entity.getStatusCode());
|
||||
dataObject.setStatusName(entity.getStatusName());
|
||||
dataObject.setLeaderPersonnelId(entity.getLeaderPersonnelId());
|
||||
dataObject.setLeaderName(entity.getLeaderName());
|
||||
dataObject.setCancelReason(entity.getCancelReason());
|
||||
dataObject.setTenantId(entity.getTenantId());
|
||||
return dataObject;
|
||||
}
|
||||
|
||||
private EvalProjectEntity toEntity(EvalProjectDO dataObject) {
|
||||
if (dataObject == null) {
|
||||
return null;
|
||||
}
|
||||
EvalProjectEntity entity = new EvalProjectEntity();
|
||||
entity.setId(dataObject.getId());
|
||||
entity.setOrgId(dataObject.getOrgId());
|
||||
entity.setCustomerId(dataObject.getCustomerId());
|
||||
entity.setProjectNo(dataObject.getProjectNo());
|
||||
entity.setProjectName(dataObject.getProjectName());
|
||||
entity.setEvalTypeCode(dataObject.getEvalTypeCode());
|
||||
entity.setEvalTypeName(dataObject.getEvalTypeName());
|
||||
entity.setBusinessScope(dataObject.getBusinessScope());
|
||||
entity.setPlanStartDate(dataObject.getPlanStartDate());
|
||||
entity.setPlanEndDate(dataObject.getPlanEndDate());
|
||||
entity.setActualStartDate(dataObject.getActualStartDate());
|
||||
entity.setActualEndDate(dataObject.getActualEndDate());
|
||||
entity.setCurrentStageCode(dataObject.getCurrentStageCode());
|
||||
entity.setCurrentStageName(dataObject.getCurrentStageName());
|
||||
entity.setStatusCode(dataObject.getStatusCode());
|
||||
entity.setStatusName(dataObject.getStatusName());
|
||||
entity.setLeaderPersonnelId(dataObject.getLeaderPersonnelId());
|
||||
entity.setLeaderName(dataObject.getLeaderName());
|
||||
entity.setCancelReason(dataObject.getCancelReason());
|
||||
entity.setTenantId(dataObject.getTenantId());
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue