feat: 项目资料
parent
fbaeb3e073
commit
766fc59573
|
|
@ -297,13 +297,11 @@ create table `eval_project_doc` (
|
|||
`id` bigint not null comment '主键',
|
||||
`org_id` bigint not null comment '机构id',
|
||||
`project_id` bigint not null comment '项目id',
|
||||
`doc_name` varchar(200) not null comment '资料名称',
|
||||
`doc_type_code` varchar(32) default null comment '资料类型编码(ENTERPRISE_BASE企业基础资料 LICENSE合法证照 DESIGN设计资料 SAFETY_SYSTEM安全管理制度 INSPECT_REPORT检测检验报告 SURVEY现场踏勘资料 RECTIFY整改资料 REPORT_REVIEW报告及审核资料 OTHER其他过程资料)',
|
||||
`doc_type_name` varchar(50) default null comment '资料类型名称(企业基础资料/合法证照/设计资料/安全管理制度/检测检验报告/现场踏勘资料/整改资料/报告及审核资料/其他过程资料)',
|
||||
`latest_version_no` int default 1 comment '最新版本号',
|
||||
`latest_file_url` varchar(500) default null comment '最新文件地址',
|
||||
`confirm_status_code` int default null comment '确认状态编码(1待确认2已确认3已退回)',
|
||||
`confirm_status_name` varchar(50) default null comment '确认状态名称',
|
||||
`project_no` varchar(64) not null comment '项目编号(eval_project.project_no)',
|
||||
`project_name` varchar(200) not null comment '项目名称(eval_project.project_name)',
|
||||
`customer_name` varchar(200) not null comment '被评价客户企业名称(eval_customer.customer_name)',
|
||||
`eval_type_code` varchar(32) default null comment '评价类型编码(eval_project.eval_type_code)',
|
||||
`project_doc_url` json default null comment '资料上传地址:[{"materialName":"","materialType":"","project_doc_url":""}]',
|
||||
`delete_enum` varchar(32) default null comment '删除标识true false',
|
||||
`remarks` varchar(255) default null comment '备注',
|
||||
`create_name` varchar(50) default null comment '创建人姓名',
|
||||
|
|
|
|||
|
|
@ -21,23 +21,7 @@ public class LocalDevUserContextConfig implements WebMvcConfigurer {
|
|||
private Long defaultOrgId;
|
||||
|
||||
private static final String[] LOCAL_DEV_PATHS = {
|
||||
"/**/org-info/**",
|
||||
"/**/org-department/**",
|
||||
"/**/org-position/**",
|
||||
"/**/org-qualification/**",
|
||||
"/**/org-personnel/**",
|
||||
"/**/org-personnel-cert/**",
|
||||
"/**/org-personnel-change/**",
|
||||
"/**/org-resign-apply/**",
|
||||
"/**/org-equipment/**",
|
||||
"/**/qual-filing/**",
|
||||
"/**/qual-filing-change/**",
|
||||
"/**/qual-filing-change-detail/**",
|
||||
"/**/qual-filing-commitment/**",
|
||||
"/**/qual-filing-equipment/**",
|
||||
"/**/qual-filing-material/**",
|
||||
"/**/qual-filing-personnel/**",
|
||||
"/**/qual-filing-personnel-cert/**",
|
||||
"/safetyEval/**"
|
||||
};
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -2,18 +2,20 @@ package org.qinan.safetyeval.adapter.web.institution;
|
|||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import org.qinan.safetyeval.client.api.institution.EvalProjectDocApi;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectDocCO;
|
||||
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.EvalProjectDocAddCmd;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectDocPageQuery;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@Api(tags = "机构端-安评项目资料")
|
||||
@RestController
|
||||
|
|
@ -29,33 +31,9 @@ public class EvalProjectDocController {
|
|||
return evalProjectDocApi.save(cmd);
|
||||
}
|
||||
|
||||
@ApiOperation("修改资料")
|
||||
@PostMapping("/modify")
|
||||
public SingleResponse<EvalProjectDocCO> modify(@Validated @RequestBody EvalProjectDocModifyCmd cmd) {
|
||||
return evalProjectDocApi.modify(cmd);
|
||||
}
|
||||
|
||||
@ApiOperation("删除资料")
|
||||
@PostMapping("/delete")
|
||||
public SingleResponse<Void> delete(@RequestBody Req<Long> req) {
|
||||
return evalProjectDocApi.delete(req.getData());
|
||||
}
|
||||
|
||||
@ApiOperation("分页查询资料")
|
||||
@GetMapping("/page")
|
||||
public PageResponse<EvalProjectDocCO> page(@Validated EvalProjectDocPageQuery query) {
|
||||
return evalProjectDocApi.page(query);
|
||||
}
|
||||
|
||||
@ApiOperation("按项目查询资料列表")
|
||||
@GetMapping("/list")
|
||||
public SingleResponse<List<EvalProjectDocCO>> list(@ApiParam("项目ID") @RequestParam String projectId) {
|
||||
return evalProjectDocApi.listByProject(Long.parseLong(projectId));
|
||||
}
|
||||
|
||||
@ApiOperation("确认资料状态")
|
||||
@PostMapping("/confirm")
|
||||
public SingleResponse<EvalProjectDocCO> confirm(@Validated @RequestBody EvalProjectDocConfirmCmd cmd) {
|
||||
return evalProjectDocApi.confirm(cmd);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,85 @@
|
|||
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.EvalProjectDocCO;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectDocMaterialItemCO;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectDocAddCmd;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectDocPageQuery;
|
||||
import org.qinan.safetyeval.domain.constant.EvalTypeEnum;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectDocEntity;
|
||||
import org.qinan.safetyeval.domain.query.EvalProjectDocQuery;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface EvalProjectDocCmdConvertor {
|
||||
|
||||
ObjectMapper OBJECT_MAPPER = new ObjectMapper();
|
||||
|
||||
@Mapping(target = "id", ignore = true)
|
||||
@Mapping(target = "orgId", ignore = true)
|
||||
@Mapping(target = "projectId", expression = "java(cmd.getProjectId() == null ? null : Long.parseLong(cmd.getProjectId()))")
|
||||
@Mapping(target = "projectNo", ignore = true)
|
||||
@Mapping(target = "projectName", ignore = true)
|
||||
@Mapping(target = "customerName", ignore = true)
|
||||
@Mapping(target = "evalTypeCode", ignore = true)
|
||||
@Mapping(target = "projectDocUrl", expression = "java(toProjectDocUrlJson(cmd.getProjectDocUrl()))")
|
||||
@Mapping(target = "tenantId", ignore = true)
|
||||
EvalProjectDocEntity convertAddCmdToE(EvalProjectDocAddCmd cmd);
|
||||
|
||||
@Mapping(target = "pageNum", source = "current")
|
||||
@Mapping(target = "pageSize", source = "size")
|
||||
@Mapping(target = "orgId", ignore = true)
|
||||
EvalProjectDocQuery convertPageQueryToQ(EvalProjectDocPageQuery query);
|
||||
|
||||
@Mapping(target = "id", expression = "java(entity.getId() == null ? null : String.valueOf(entity.getId()))")
|
||||
@Mapping(target = "projectId", expression = "java(entity.getProjectId() == null ? null : String.valueOf(entity.getProjectId()))")
|
||||
@Mapping(target = "evalTypeName", ignore = true)
|
||||
@Mapping(target = "projectDocUrl", ignore = true)
|
||||
@Mapping(target = "projectDocUrlMap", ignore = true)
|
||||
EvalProjectDocCO convertEToCO(EvalProjectDocEntity entity);
|
||||
|
||||
List<EvalProjectDocCO> convertEListToCOList(List<EvalProjectDocEntity> list);
|
||||
|
||||
@AfterMapping
|
||||
default void fillDisplayFields(EvalProjectDocEntity entity, @MappingTarget EvalProjectDocCO co) {
|
||||
if (entity == null || co == null) {
|
||||
return;
|
||||
}
|
||||
EvalTypeEnum evalType = EvalTypeEnum.ofCode(entity.getEvalTypeCode());
|
||||
if (evalType != null) {
|
||||
co.setEvalTypeName(evalType.getValue());
|
||||
}
|
||||
co.setProjectDocUrl(fromProjectDocUrlJson(entity.getProjectDocUrl()));
|
||||
}
|
||||
|
||||
default String toProjectDocUrlJson(List<EvalProjectDocMaterialItemCO> items) {
|
||||
if (items == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return OBJECT_MAPPER.writeValueAsString(items);
|
||||
} catch (Exception e) {
|
||||
throw new IllegalArgumentException("资料上传地址JSON序列化失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
default List<EvalProjectDocMaterialItemCO> fromProjectDocUrlJson(String json) {
|
||||
if (!StringUtils.hasText(json)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
try {
|
||||
return OBJECT_MAPPER.readValue(json, new TypeReference<List<EvalProjectDocMaterialItemCO>>() {
|
||||
});
|
||||
} catch (Exception e) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package org.qinan.safetyeval.app.executor.institution;
|
|||
|
||||
import org.qinan.safetyeval.app.convertor.EvalCustomerCmdConvertor;
|
||||
import org.qinan.safetyeval.client.api.institution.EvalCustomerApi;
|
||||
import org.qinan.safetyeval.client.api.institution.EvalProjectApi;
|
||||
import org.qinan.safetyeval.client.co.institution.EnumOptionCO;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalCustomerCO;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalCustomerEnumsCO;
|
||||
|
|
@ -10,11 +11,8 @@ import org.qinan.safetyeval.client.dto.SingleResponse;
|
|||
import org.qinan.safetyeval.client.dto.institution.EvalCustomerAddCmd;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalCustomerModifyCmd;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalCustomerPageQuery;
|
||||
import org.qinan.safetyeval.domain.constant.ChongqingDistrictEnum;
|
||||
import org.qinan.safetyeval.domain.constant.CustomerStatusEnum;
|
||||
import org.qinan.safetyeval.domain.constant.EnterpriseScaleEnum;
|
||||
import org.qinan.safetyeval.domain.constant.EnterpriseStatusEnum;
|
||||
import org.qinan.safetyeval.domain.constant.IndustryEnum;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectPageQuery;
|
||||
import org.qinan.safetyeval.domain.constant.*;
|
||||
import org.qinan.safetyeval.domain.entity.EvalCustomerEntity;
|
||||
import org.qinan.safetyeval.domain.exception.ErrorCode;
|
||||
import org.qinan.safetyeval.domain.query.EvalCustomerQuery;
|
||||
|
|
@ -42,6 +40,8 @@ public class EvalCustomerExecutor implements EvalCustomerApi {
|
|||
@Lazy
|
||||
@Autowired(required = false)
|
||||
private EvalCustomerCmdConvertor evalCustomerCmdConvertor;
|
||||
@Autowired
|
||||
private EvalProjectApi evalProjectApi;
|
||||
|
||||
@Override
|
||||
public SingleResponse<EvalCustomerCO> save(EvalCustomerAddCmd cmd) {
|
||||
|
|
@ -59,6 +59,9 @@ public class EvalCustomerExecutor implements EvalCustomerApi {
|
|||
long projectCount = evalCustomerDomainService.countProjects(id, entity.getOrgId());
|
||||
EvalCustomerCO co = evalCustomerCmdConvertor.convertEToCO(entity);
|
||||
co.setProjectCount(projectCount);
|
||||
EvalProjectPageQuery evalProjectPageQuery = new EvalProjectPageQuery();
|
||||
evalProjectPageQuery.setCustomerId(id);
|
||||
co.setProjects(evalProjectApi.page(evalProjectPageQuery).getData());
|
||||
return SingleResponse.success(co);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,23 +1,29 @@
|
|||
package org.qinan.safetyeval.app.executor.institution;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import org.qinan.safetyeval.app.convertor.EvalProjectDocCmdConvertor;
|
||||
import org.qinan.safetyeval.client.api.institution.EvalProjectDocApi;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectDocCO;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectDocMaterialItemCO;
|
||||
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.EvalProjectDocAddCmd;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectDocPageQuery;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectDocEntity;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||
import org.qinan.safetyeval.domain.exception.ErrorCode;
|
||||
import org.qinan.safetyeval.domain.query.EvalProjectDocQuery;
|
||||
import org.qinan.safetyeval.domain.query.PageResult;
|
||||
import org.qinan.safetyeval.domain.service.EvalProjectDocDomainService;
|
||||
import org.qinan.safetyeval.domain.service.EvalProjectDomainService;
|
||||
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDocDO;
|
||||
import org.qinan.safetyeval.infrastructure.mapper.EvalProjectDocMapper;
|
||||
import org.qinan.safetyeval.infrastructure.support.InstitutionOrgSupport;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
|
|
@ -29,102 +35,62 @@ public class EvalProjectDocExecutor implements EvalProjectDocApi {
|
|||
|
||||
@Lazy
|
||||
@Autowired(required = false)
|
||||
private EvalProjectDomainService evalProjectDomainService;
|
||||
private InstitutionOrgSupport institutionOrgSupport;
|
||||
|
||||
@Lazy
|
||||
@Autowired(required = false)
|
||||
private InstitutionOrgSupport institutionOrgSupport;
|
||||
private EvalProjectDocCmdConvertor evalProjectDocCmdConvertor;
|
||||
|
||||
@Autowired
|
||||
private EvalProjectDocMapper evalProjectDocMapper;
|
||||
|
||||
@Override
|
||||
public SingleResponse<EvalProjectDocCO> save(EvalProjectDocAddCmd cmd) {
|
||||
EvalProjectDocDO evalProjectDocDO = evalProjectDocMapper.selectOne(new LambdaQueryWrapper<EvalProjectDocDO>()
|
||||
.eq(EvalProjectDocDO::getProjectId, cmd.getProjectId()));
|
||||
if (Objects.nonNull(evalProjectDocDO)) {
|
||||
String jsonString;
|
||||
// 项目资料已经存在, 则追加上传文件
|
||||
if (evalProjectDocDO.getProjectDocUrl() != null) {
|
||||
// 不存在url
|
||||
List<EvalProjectDocMaterialItemCO> evalProjectDocMaterialItemCOS = JSON.parseArray(evalProjectDocDO.getProjectDocUrl(), EvalProjectDocMaterialItemCO.class);
|
||||
evalProjectDocMaterialItemCOS.addAll(cmd.getProjectDocUrl());
|
||||
jsonString = JSON.toJSONString(evalProjectDocMaterialItemCOS);
|
||||
evalProjectDocDO.setProjectDocUrl(jsonString);
|
||||
} else {
|
||||
jsonString = JSON.toJSONString(cmd.getProjectDocUrl());
|
||||
evalProjectDocDO.setProjectDocUrl(jsonString);
|
||||
}
|
||||
evalProjectDocMapper.update(new LambdaUpdateWrapper<EvalProjectDocDO>()
|
||||
.eq(EvalProjectDocDO::getId, evalProjectDocDO.getId())
|
||||
.set(EvalProjectDocDO::getProjectDocUrl, jsonString));
|
||||
return SingleResponse.success(new EvalProjectDocCO());
|
||||
}
|
||||
Long orgId = institutionOrgSupport.resolveCurrentOrgId();
|
||||
assertProjectInOrg(Long.parseLong(cmd.getProjectId()), orgId);
|
||||
EvalProjectDocEntity entity = new EvalProjectDocEntity();
|
||||
entity.setProjectId(Long.parseLong(cmd.getProjectId()));
|
||||
entity.setDocName(cmd.getDocName());
|
||||
entity.setDocTypeCode(cmd.getDocTypeCode());
|
||||
entity.setDocTypeName(cmd.getDocTypeName());
|
||||
entity.setLatestFileUrl(cmd.getLatestFileUrl());
|
||||
EvalProjectDocEntity entity = evalProjectDocCmdConvertor.convertAddCmdToE(cmd);
|
||||
EvalProjectDocEntity result = evalProjectDocDomainService.add(entity, orgId);
|
||||
return SingleResponse.success(toCO(result));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<EvalProjectDocCO> modify(EvalProjectDocModifyCmd cmd) {
|
||||
EvalProjectDocEntity existing = evalProjectDocDomainService.get(Long.parseLong(cmd.getId()));
|
||||
institutionOrgSupport.assertOrgAccess(existing.getOrgId(), ErrorCode.EVAL_PROJECT_DOC_NOT_FOUND);
|
||||
EvalProjectDocEntity entity = new EvalProjectDocEntity();
|
||||
entity.setId(Long.parseLong(cmd.getId()));
|
||||
entity.setDocName(cmd.getDocName());
|
||||
entity.setDocTypeCode(cmd.getDocTypeCode());
|
||||
entity.setDocTypeName(cmd.getDocTypeName());
|
||||
entity.setLatestFileUrl(cmd.getLatestFileUrl());
|
||||
entity.setLatestVersionNo(cmd.getLatestVersionNo());
|
||||
EvalProjectDocEntity result = evalProjectDocDomainService.modify(entity);
|
||||
return SingleResponse.success(toCO(result));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<Void> delete(Long id) {
|
||||
EvalProjectDocEntity existing = evalProjectDocDomainService.get(id);
|
||||
institutionOrgSupport.assertOrgAccess(existing.getOrgId(), ErrorCode.EVAL_PROJECT_DOC_NOT_FOUND);
|
||||
evalProjectDocDomainService.delete(id);
|
||||
return SingleResponse.success();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResponse<EvalProjectDocCO> page(EvalProjectDocPageQuery query) {
|
||||
Long orgId = institutionOrgSupport.resolveCurrentOrgId();
|
||||
EvalProjectDocQuery domainQuery = new EvalProjectDocQuery();
|
||||
domainQuery.setPageNum(query.getCurrent());
|
||||
domainQuery.setPageSize(query.getSize());
|
||||
domainQuery.setOrgId(orgId);
|
||||
if (query.getProjectId() != null) {
|
||||
domainQuery.setProjectId(Long.parseLong(query.getProjectId()));
|
||||
}
|
||||
EvalProjectDocQuery domainQuery = evalProjectDocCmdConvertor.convertPageQueryToQ(query);
|
||||
domainQuery.setOrgId(institutionOrgSupport.resolveCurrentOrgId());
|
||||
PageResult<EvalProjectDocEntity> pageResult = evalProjectDocDomainService.page(domainQuery);
|
||||
return PageResponse.of(
|
||||
pageResult.getRecords().stream().map(this::toCO).collect(Collectors.toList()),
|
||||
pageResult.getTotal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<List<EvalProjectDocCO>> listByProject(Long projectId) {
|
||||
Long orgId = institutionOrgSupport.resolveCurrentOrgId();
|
||||
assertProjectInOrg(projectId, orgId);
|
||||
List<EvalProjectDocCO> list = evalProjectDocDomainService.listByProjectId(projectId, orgId).stream()
|
||||
List<EvalProjectDocCO> list = pageResult.getRecords().stream()
|
||||
.map(this::toCO)
|
||||
.collect(Collectors.toList());
|
||||
return SingleResponse.success(list);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SingleResponse<EvalProjectDocCO> confirm(EvalProjectDocConfirmCmd cmd) {
|
||||
EvalProjectDocEntity existing = evalProjectDocDomainService.get(Long.parseLong(cmd.getId()));
|
||||
institutionOrgSupport.assertOrgAccess(existing.getOrgId(), ErrorCode.EVAL_PROJECT_DOC_NOT_FOUND);
|
||||
EvalProjectDocEntity result = evalProjectDocDomainService.confirm(Long.parseLong(cmd.getId()), cmd.getConfirmStatusCode());
|
||||
return SingleResponse.success(toCO(result));
|
||||
}
|
||||
|
||||
private void assertProjectInOrg(Long projectId, Long orgId) {
|
||||
EvalProjectEntity project = evalProjectDomainService.get(projectId);
|
||||
institutionOrgSupport.assertOrgAccess(project.getOrgId(), ErrorCode.EVAL_PROJECT_NOT_FOUND);
|
||||
return PageResponse.of(list, pageResult.getTotal());
|
||||
}
|
||||
|
||||
private EvalProjectDocCO toCO(EvalProjectDocEntity entity) {
|
||||
if (entity == null) {
|
||||
return null;
|
||||
EvalProjectDocCO co = evalProjectDocCmdConvertor.convertEToCO(entity);
|
||||
if (co != null && co.getProjectDocUrl() != null) {
|
||||
List<EvalProjectDocMaterialItemCO> evalProjectDocMaterialItemCOS = JSON.parseArray(entity.getProjectDocUrl(), EvalProjectDocMaterialItemCO.class);
|
||||
co.setProjectDocUrl(evalProjectDocMaterialItemCOS);
|
||||
co.setProjectDocUrlMap(evalProjectDocMaterialItemCOS.stream()
|
||||
.collect(Collectors.groupingBy(EvalProjectDocMaterialItemCO::getMaterialType)));
|
||||
}
|
||||
EvalProjectDocCO co = new EvalProjectDocCO();
|
||||
co.setId(entity.getId() != null ? String.valueOf(entity.getId()) : null);
|
||||
co.setProjectId(entity.getProjectId() != null ? String.valueOf(entity.getProjectId()) : null);
|
||||
co.setDocName(entity.getDocName());
|
||||
co.setDocTypeCode(entity.getDocTypeCode());
|
||||
co.setDocTypeName(entity.getDocTypeName());
|
||||
co.setLatestVersionNo(entity.getLatestVersionNo());
|
||||
co.setLatestFileUrl(entity.getLatestFileUrl());
|
||||
co.setConfirmStatusCode(entity.getConfirmStatusCode());
|
||||
co.setConfirmStatusName(entity.getConfirmStatusName());
|
||||
return co;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,21 +3,12 @@ package org.qinan.safetyeval.client.api.institution;
|
|||
import org.qinan.safetyeval.client.co.institution.EvalProjectDocCO;
|
||||
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||
import org.qinan.safetyeval.client.dto.institution.*;
|
||||
|
||||
import java.util.List;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectDocAddCmd;
|
||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectDocPageQuery;
|
||||
|
||||
public interface EvalProjectDocApi {
|
||||
|
||||
SingleResponse<EvalProjectDocCO> save(EvalProjectDocAddCmd cmd);
|
||||
|
||||
SingleResponse<EvalProjectDocCO> modify(EvalProjectDocModifyCmd cmd);
|
||||
|
||||
SingleResponse<Void> delete(Long id);
|
||||
|
||||
PageResponse<EvalProjectDocCO> page(EvalProjectDocPageQuery query);
|
||||
|
||||
SingleResponse<List<EvalProjectDocCO>> listByProject(Long projectId);
|
||||
|
||||
SingleResponse<EvalProjectDocCO> confirm(EvalProjectDocConfirmCmd cmd);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
|
|||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class EvalCustomerCO {
|
||||
|
|
@ -71,4 +72,7 @@ public class EvalCustomerCO {
|
|||
|
||||
@ApiModelProperty("服务项目数")
|
||||
private Long projectCount;
|
||||
|
||||
@ApiModelProperty("绑定项目")
|
||||
private List<EvalProjectCO> projects;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@ package org.qinan.safetyeval.client.co.institution;
|
|||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class EvalProjectDocCO {
|
||||
|
||||
|
|
@ -12,24 +15,24 @@ public class EvalProjectDocCO {
|
|||
@ApiModelProperty("项目ID")
|
||||
private String projectId;
|
||||
|
||||
@ApiModelProperty("资料名称")
|
||||
private String docName;
|
||||
@ApiModelProperty("项目编号")
|
||||
private String projectNo;
|
||||
|
||||
@ApiModelProperty(value = "资料类型编码:ENTERPRISE_BASE企业基础资料 LICENSE合法证照 DESIGN设计资料 SAFETY_SYSTEM安全管理制度 INSPECT_REPORT检测检验报告 SURVEY现场踏勘资料 RECTIFY整改资料 REPORT_REVIEW报告及审核资料 OTHER其他过程资料", example = "ENTERPRISE_BASE")
|
||||
private String docTypeCode;
|
||||
@ApiModelProperty("项目名称")
|
||||
private String projectName;
|
||||
|
||||
@ApiModelProperty(value = "资料类型名称:企业基础资料/合法证照/设计资料/安全管理制度/检测检验报告/现场踏勘资料/整改资料/报告及审核资料/其他过程资料", example = "企业基础资料")
|
||||
private String docTypeName;
|
||||
@ApiModelProperty("被评价客户企业名称")
|
||||
private String customerName;
|
||||
|
||||
@ApiModelProperty("最新版本号")
|
||||
private Integer latestVersionNo;
|
||||
@ApiModelProperty(value = "评价类型编码:PRE/ACCEPT/STATUS", example = "PRE")
|
||||
private String evalTypeCode;
|
||||
|
||||
@ApiModelProperty("最新文件地址")
|
||||
private String latestFileUrl;
|
||||
@ApiModelProperty(value = "评价类型名称", example = "安全预评价")
|
||||
private String evalTypeName;
|
||||
|
||||
@ApiModelProperty(value = "确认状态编码:1待确认 2已确认 3已退回", example = "1")
|
||||
private Integer confirmStatusCode;
|
||||
@ApiModelProperty("资料上传地址")
|
||||
private List<EvalProjectDocMaterialItemCO> projectDocUrl;
|
||||
|
||||
@ApiModelProperty(value = "确认状态名称:待确认/已确认/已退回", example = "待确认")
|
||||
private String confirmStatusName;
|
||||
@ApiModelProperty("查看文档列表, key对应资料类别枚举, val对应同类型的集合")
|
||||
private Map<String, List<EvalProjectDocMaterialItemCO>> projectDocUrlMap;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
package org.qinan.safetyeval.client.co.institution;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class EvalProjectDocMaterialItemCO {
|
||||
|
||||
@ApiModelProperty("资料名称")
|
||||
private String materialName;
|
||||
|
||||
@ApiModelProperty("资料类型")
|
||||
private String materialType;
|
||||
|
||||
@ApiModelProperty("资料上传地址")
|
||||
@JsonProperty("project_doc_url")
|
||||
private String projectDocUrl;
|
||||
}
|
||||
|
|
@ -2,22 +2,20 @@ package org.qinan.safetyeval.client.dto.institution;
|
|||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.qinan.safetyeval.client.co.institution.EvalProjectDocMaterialItemCO;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class EvalProjectDocAddCmd {
|
||||
|
||||
@ApiModelProperty("项目ID")
|
||||
@NotBlank(message = "项目ID不能为空")
|
||||
@ApiModelProperty(value = "项目ID", required = true)
|
||||
private String projectId;
|
||||
|
||||
@ApiModelProperty("资料名称")
|
||||
private String docName;
|
||||
|
||||
@ApiModelProperty(value = "资料类型编码:ENTERPRISE_BASE企业基础资料 LICENSE合法证照 DESIGN设计资料 SAFETY_SYSTEM安全管理制度 INSPECT_REPORT检测检验报告 SURVEY现场踏勘资料 RECTIFY整改资料 REPORT_REVIEW报告及审核资料 OTHER其他过程资料", example = "ENTERPRISE_BASE")
|
||||
private String docTypeCode;
|
||||
|
||||
@ApiModelProperty(value = "资料类型名称:企业基础资料/合法证照/设计资料/安全管理制度/检测检验报告/现场踏勘资料/整改资料/报告及审核资料/其他过程资料", example = "企业基础资料")
|
||||
private String docTypeName;
|
||||
|
||||
@ApiModelProperty("最新文件地址")
|
||||
private String latestFileUrl;
|
||||
@NotEmpty(message = "资料列表不能为空")
|
||||
@ApiModelProperty(value = "资料上传地址", required = true)
|
||||
private List<EvalProjectDocMaterialItemCO> projectDocUrl;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,14 +0,0 @@
|
|||
package org.qinan.safetyeval.client.dto.institution;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class EvalProjectDocConfirmCmd {
|
||||
|
||||
@ApiModelProperty("主键ID")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty(value = "确认状态编码:1待确认 2已确认 3已退回", example = "1")
|
||||
private Integer confirmStatusCode;
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
package org.qinan.safetyeval.client.dto.institution;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class EvalProjectDocModifyCmd {
|
||||
|
||||
@ApiModelProperty("主键ID")
|
||||
private String id;
|
||||
|
||||
@ApiModelProperty("资料名称")
|
||||
private String docName;
|
||||
|
||||
@ApiModelProperty(value = "资料类型编码:ENTERPRISE_BASE企业基础资料 LICENSE合法证照 DESIGN设计资料 SAFETY_SYSTEM安全管理制度 INSPECT_REPORT检测检验报告 SURVEY现场踏勘资料 RECTIFY整改资料 REPORT_REVIEW报告及审核资料 OTHER其他过程资料", example = "ENTERPRISE_BASE")
|
||||
private String docTypeCode;
|
||||
|
||||
@ApiModelProperty(value = "资料类型名称:企业基础资料/合法证照/设计资料/安全管理制度/检测检验报告/现场踏勘资料/整改资料/报告及审核资料/其他过程资料", example = "企业基础资料")
|
||||
private String docTypeName;
|
||||
|
||||
@ApiModelProperty("最新文件地址")
|
||||
private String latestFileUrl;
|
||||
|
||||
@ApiModelProperty("最新版本号")
|
||||
private Integer latestVersionNo;
|
||||
}
|
||||
|
|
@ -9,6 +9,9 @@ import org.qinan.safetyeval.client.dto.BasePageQuery;
|
|||
@EqualsAndHashCode(callSuper = true)
|
||||
public class EvalProjectDocPageQuery extends BasePageQuery {
|
||||
|
||||
@ApiModelProperty("项目ID")
|
||||
private String projectId;
|
||||
@ApiModelProperty("项目名称")
|
||||
private String projectName;
|
||||
|
||||
@ApiModelProperty("企业名称")
|
||||
private String customerName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,9 +4,6 @@ import io.swagger.annotations.ApiModelProperty;
|
|||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.qinan.safetyeval.client.dto.BasePageQuery;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
|
|
@ -21,19 +18,5 @@ public class EvalProjectPageQuery extends BasePageQuery {
|
|||
@ApiModelProperty("客户负责人")
|
||||
private String customerContactName;
|
||||
|
||||
@ApiModelProperty("项目开始时间起")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate planStartDateFrom;
|
||||
|
||||
@ApiModelProperty("项目开始时间止")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate planStartDateTo;
|
||||
|
||||
@ApiModelProperty("项目完成时间起")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate planEndDateFrom;
|
||||
|
||||
@ApiModelProperty("项目完成时间止")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate planEndDateTo;
|
||||
private Long customerId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,61 @@
|
|||
package org.qinan.safetyeval.domain.constant;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
/**
|
||||
* 资料分类枚举
|
||||
* 包含编码(val)和描述(msg)两个字段
|
||||
*/
|
||||
@Getter
|
||||
public enum MaterialCategory {
|
||||
|
||||
SITE_SURVEY("SITE_SURVEY", "现场踏勘资料"),
|
||||
REPORT("REPORT", "报告资料"),
|
||||
RECTIFICATION("RECTIFICATION", "整改资料"),
|
||||
OTHER("OTHER", "其他项目资料");
|
||||
|
||||
private final String val; // 编码/值
|
||||
private final String msg; // 描述信息
|
||||
|
||||
MaterialCategory(String val, String msg) {
|
||||
this.val = val;
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public String getVal() {
|
||||
return val;
|
||||
}
|
||||
|
||||
public String getMsg() {
|
||||
return msg;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据编码(val)获取枚举实例
|
||||
*/
|
||||
public static MaterialCategory fromVal(String val) {
|
||||
for (MaterialCategory category : values()) {
|
||||
if (category.val.equals(val)) {
|
||||
return category;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据描述(msg)获取枚举实例(可选)
|
||||
*/
|
||||
public static MaterialCategory fromMsg(String msg) {
|
||||
for (MaterialCategory category : values()) {
|
||||
if (category.msg.equals(msg)) {
|
||||
return category;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return msg; // 默认输出描述
|
||||
}
|
||||
}
|
||||
|
|
@ -8,12 +8,11 @@ public class EvalProjectDocEntity {
|
|||
private Long id;
|
||||
private Long orgId;
|
||||
private Long projectId;
|
||||
private String docName;
|
||||
private String docTypeCode;
|
||||
private String docTypeName;
|
||||
private Integer latestVersionNo;
|
||||
private String latestFileUrl;
|
||||
private Integer confirmStatusCode;
|
||||
private String confirmStatusName;
|
||||
private String projectNo;
|
||||
private String projectName;
|
||||
private String customerName;
|
||||
private String evalTypeCode;
|
||||
/** 资料上传地址 JSON 原文 */
|
||||
private String projectDocUrl;
|
||||
private Long tenantId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,19 +4,9 @@ import org.qinan.safetyeval.domain.entity.EvalProjectDocEntity;
|
|||
import org.qinan.safetyeval.domain.query.EvalProjectDocQuery;
|
||||
import org.qinan.safetyeval.domain.query.PageResult;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface EvalProjectDocGateway {
|
||||
|
||||
EvalProjectDocEntity save(EvalProjectDocEntity entity);
|
||||
|
||||
EvalProjectDocEntity get(Long id);
|
||||
|
||||
EvalProjectDocEntity modify(EvalProjectDocEntity entity);
|
||||
|
||||
void delete(Long id);
|
||||
|
||||
PageResult<EvalProjectDocEntity> page(EvalProjectDocQuery query);
|
||||
|
||||
List<EvalProjectDocEntity> listByProjectId(Long projectId, Long orgId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,5 +8,6 @@ public class EvalProjectDocQuery {
|
|||
private Long pageNum;
|
||||
private Long pageSize;
|
||||
private Long orgId;
|
||||
private Long projectId;
|
||||
private String projectName;
|
||||
private String customerName;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
package org.qinan.safetyeval.domain.query;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
|
|
@ -14,9 +16,13 @@ public class EvalProjectQuery {
|
|||
private String projectName;
|
||||
private String projectLeaderName;
|
||||
private String customerContactName;
|
||||
private LocalDate planStartDateFrom;
|
||||
private LocalDate planStartDateTo;
|
||||
private LocalDate planEndDateFrom;
|
||||
private LocalDate planEndDateTo;
|
||||
private Long customerId;
|
||||
@ApiModelProperty(value = "开始时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
@ApiModelProperty(value = "结束时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime endTime;
|
||||
private List<Long> projectIds;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
package org.qinan.safetyeval.domain.service;
|
||||
|
||||
import org.qinan.safetyeval.domain.entity.EvalCustomerEntity;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectDocEntity;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||
import org.qinan.safetyeval.domain.exception.BizException;
|
||||
import org.qinan.safetyeval.domain.exception.ErrorCode;
|
||||
import org.qinan.safetyeval.domain.gateway.EvalProjectDocGateway;
|
||||
|
|
@ -9,7 +11,6 @@ import org.qinan.safetyeval.domain.query.PageResult;
|
|||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@Service
|
||||
public class EvalProjectDocDomainService {
|
||||
|
|
@ -20,68 +21,25 @@ public class EvalProjectDocDomainService {
|
|||
@Resource
|
||||
private EvalProjectDomainService evalProjectDomainService;
|
||||
|
||||
@Resource
|
||||
private EvalCustomerDomainService evalCustomerDomainService;
|
||||
|
||||
public EvalProjectDocEntity add(EvalProjectDocEntity entity, Long orgId) {
|
||||
evalProjectDomainService.get(entity.getProjectId());
|
||||
EvalProjectEntity project = evalProjectDomainService.get(entity.getProjectId());
|
||||
if (!orgId.equals(project.getOrgId())) {
|
||||
throw new BizException(ErrorCode.EVAL_PROJECT_NOT_FOUND);
|
||||
}
|
||||
evalProjectDomainService.assertModifiable(project);
|
||||
EvalCustomerEntity customer = evalCustomerDomainService.get(project.getCustomerId());
|
||||
entity.setOrgId(orgId);
|
||||
if (entity.getLatestVersionNo() == null) {
|
||||
entity.setLatestVersionNo(1);
|
||||
}
|
||||
if (entity.getConfirmStatusCode() == null) {
|
||||
entity.setConfirmStatusCode(1);
|
||||
entity.setConfirmStatusName("待确认");
|
||||
}
|
||||
entity.setProjectNo(project.getProjectNo());
|
||||
entity.setProjectName(project.getProjectName());
|
||||
entity.setEvalTypeCode(project.getEvalTypeCode());
|
||||
entity.setCustomerName(customer.getCustomerName());
|
||||
return evalProjectDocGateway.save(entity);
|
||||
}
|
||||
|
||||
public EvalProjectDocEntity get(Long id) {
|
||||
EvalProjectDocEntity existing = evalProjectDocGateway.get(id);
|
||||
if (existing == null) {
|
||||
throw new BizException(ErrorCode.EVAL_PROJECT_DOC_NOT_FOUND);
|
||||
}
|
||||
return existing;
|
||||
}
|
||||
|
||||
public EvalProjectDocEntity modify(EvalProjectDocEntity entity) {
|
||||
EvalProjectDocEntity existing = get(entity.getId());
|
||||
evalProjectDomainService.assertModifiable(evalProjectDomainService.get(existing.getProjectId()));
|
||||
entity.setOrgId(existing.getOrgId());
|
||||
entity.setProjectId(existing.getProjectId());
|
||||
return evalProjectDocGateway.modify(entity);
|
||||
}
|
||||
|
||||
public void delete(Long id) {
|
||||
get(id);
|
||||
evalProjectDocGateway.delete(id);
|
||||
}
|
||||
|
||||
public EvalProjectDocEntity confirm(Long id, Integer confirmStatusCode) {
|
||||
EvalProjectDocEntity existing = get(id);
|
||||
evalProjectDomainService.assertModifiable(evalProjectDomainService.get(existing.getProjectId()));
|
||||
if (confirmStatusCode == null || confirmStatusCode < 1 || confirmStatusCode > 3) {
|
||||
throw new BizException(ErrorCode.EVAL_DOC_CONFIRM_STATUS_INVALID);
|
||||
}
|
||||
existing.setConfirmStatusCode(confirmStatusCode);
|
||||
switch (confirmStatusCode) {
|
||||
case 1:
|
||||
existing.setConfirmStatusName("待确认");
|
||||
break;
|
||||
case 2:
|
||||
existing.setConfirmStatusName("已确认");
|
||||
break;
|
||||
case 3:
|
||||
existing.setConfirmStatusName("已退回");
|
||||
break;
|
||||
default:
|
||||
throw new BizException(ErrorCode.EVAL_DOC_CONFIRM_STATUS_INVALID);
|
||||
}
|
||||
return evalProjectDocGateway.modify(existing);
|
||||
}
|
||||
|
||||
public PageResult<EvalProjectDocEntity> page(EvalProjectDocQuery query) {
|
||||
return evalProjectDocGateway.page(query);
|
||||
}
|
||||
|
||||
public List<EvalProjectDocEntity> listByProjectId(Long projectId, Long orgId) {
|
||||
return evalProjectDocGateway.listByProjectId(projectId, orgId);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
package org.qinan.safetyeval.infrastructure.convertor;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.qinan.safetyeval.domain.entity.EvalProjectDocEntity;
|
||||
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDocDO;
|
||||
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface EvalProjectDocDoConvertor {
|
||||
|
||||
EvalProjectDocDO convertEToDo(EvalProjectDocEntity entity);
|
||||
|
||||
EvalProjectDocEntity convertDoToE(EvalProjectDocDO dataObject);
|
||||
}
|
||||
|
|
@ -12,17 +12,12 @@ public class EvalProjectDocDO {
|
|||
private Long id;
|
||||
private Long orgId;
|
||||
private Long projectId;
|
||||
private String docName;
|
||||
/** 资料类型编码:ENTERPRISE_BASE企业基础资料 LICENSE合法证照 DESIGN设计资料 SAFETY_SYSTEM安全管理制度 INSPECT_REPORT检测检验报告 SURVEY现场踏勘资料 RECTIFY整改资料 REPORT_REVIEW报告及审核资料 OTHER其他过程资料,示例:ENTERPRISE_BASE */
|
||||
private String docTypeCode;
|
||||
/** 资料类型名称:企业基础资料/合法证照/设计资料/安全管理制度/检测检验报告/现场踏勘资料/整改资料/报告及审核资料/其他过程资料,示例:企业基础资料 */
|
||||
private String docTypeName;
|
||||
private Integer latestVersionNo;
|
||||
private String latestFileUrl;
|
||||
/** 确认状态编码:1待确认 2已确认 3已退回,示例:1 */
|
||||
private Integer confirmStatusCode;
|
||||
/** 确认状态名称:待确认/已确认/已退回,示例:待确认 */
|
||||
private String confirmStatusName;
|
||||
private String projectNo;
|
||||
private String projectName;
|
||||
private String customerName;
|
||||
private String evalTypeCode;
|
||||
/** 资料上传地址 JSON:[{"materialName":"","materialType":"","project_doc_url":""}] */
|
||||
private String projectDocUrl;
|
||||
private String deleteEnum;
|
||||
private String remarks;
|
||||
private String createName;
|
||||
|
|
|
|||
|
|
@ -7,11 +7,13 @@ import org.qinan.safetyeval.domain.entity.EvalProjectDocEntity;
|
|||
import org.qinan.safetyeval.domain.gateway.EvalProjectDocGateway;
|
||||
import org.qinan.safetyeval.domain.query.EvalProjectDocQuery;
|
||||
import org.qinan.safetyeval.domain.query.PageResult;
|
||||
import org.qinan.safetyeval.infrastructure.convertor.EvalProjectDocDoConvertor;
|
||||
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDocDO;
|
||||
import org.qinan.safetyeval.infrastructure.mapper.EvalProjectDocMapper;
|
||||
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
|
||||
import org.qinan.safetyeval.infrastructure.support.OrgContextResolver;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
|
@ -23,105 +25,45 @@ public class EvalProjectDocGatewayImpl implements EvalProjectDocGateway {
|
|||
@Resource
|
||||
private EvalProjectDocMapper evalProjectDocMapper;
|
||||
|
||||
@Resource
|
||||
private EvalProjectDocDoConvertor evalProjectDocDoConvertor;
|
||||
|
||||
@Resource
|
||||
private OrgContextResolver orgContextResolver;
|
||||
|
||||
@Override
|
||||
public EvalProjectDocEntity save(EvalProjectDocEntity entity) {
|
||||
EvalProjectDocDO dataObject = toDO(entity);
|
||||
EvalProjectDocDO dataObject = evalProjectDocDoConvertor.convertEToDo(entity);
|
||||
dataObject.setOrgId(orgContextResolver.resolveOrgId(entity.getOrgId()));
|
||||
InsertFieldDefaults.apply(dataObject);
|
||||
evalProjectDocMapper.insert(dataObject);
|
||||
entity.setId(dataObject.getId());
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EvalProjectDocEntity get(Long id) {
|
||||
EvalProjectDocDO dataObject = evalProjectDocMapper.selectById(id);
|
||||
if (dataObject == null || !"false".equals(dataObject.getDeleteEnum())) {
|
||||
return null;
|
||||
}
|
||||
return toEntity(dataObject);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EvalProjectDocEntity modify(EvalProjectDocEntity entity) {
|
||||
EvalProjectDocDO dataObject = toDO(entity);
|
||||
dataObject.setId(entity.getId());
|
||||
InsertFieldDefaults.applyForUpdate(dataObject);
|
||||
evalProjectDocMapper.updateById(dataObject);
|
||||
return get(entity.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void delete(Long id) {
|
||||
evalProjectDocMapper.deleteById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<EvalProjectDocEntity> page(EvalProjectDocQuery query) {
|
||||
Page<EvalProjectDocDO> page = new Page<>(query.getPageNum(), query.getPageSize());
|
||||
IPage<EvalProjectDocDO> result = evalProjectDocMapper.selectPage(page, buildQueryWrapper(query));
|
||||
List<EvalProjectDocEntity> entities = result.getRecords().stream()
|
||||
.map(this::toEntity)
|
||||
.map(evalProjectDocDoConvertor::convertDoToE)
|
||||
.collect(Collectors.toList());
|
||||
return PageResult.of(entities, result.getTotal(), result.getCurrent(), result.getSize());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EvalProjectDocEntity> listByProjectId(Long projectId, Long orgId) {
|
||||
EvalProjectDocQuery query = new EvalProjectDocQuery();
|
||||
query.setProjectId(projectId);
|
||||
query.setOrgId(orgId);
|
||||
return evalProjectDocMapper.selectList(buildQueryWrapper(query)).stream()
|
||||
.map(this::toEntity)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<EvalProjectDocDO> buildQueryWrapper(EvalProjectDocQuery query) {
|
||||
LambdaQueryWrapper<EvalProjectDocDO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.eq(EvalProjectDocDO::getDeleteEnum, "false");
|
||||
if (query.getOrgId() != null) {
|
||||
wrapper.eq(EvalProjectDocDO::getOrgId, query.getOrgId());
|
||||
}
|
||||
if (query.getProjectId() != null) {
|
||||
wrapper.eq(EvalProjectDocDO::getProjectId, query.getProjectId());
|
||||
if (StringUtils.hasText(query.getProjectName())) {
|
||||
wrapper.like(EvalProjectDocDO::getProjectName, query.getProjectName());
|
||||
}
|
||||
wrapper.orderByDesc(EvalProjectDocDO::getCreateTime);
|
||||
if (StringUtils.hasText(query.getCustomerName())) {
|
||||
wrapper.like(EvalProjectDocDO::getCustomerName, query.getCustomerName());
|
||||
}
|
||||
wrapper.orderByDesc(EvalProjectDocDO::getId);
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
private EvalProjectDocDO toDO(EvalProjectDocEntity entity) {
|
||||
EvalProjectDocDO dataObject = new EvalProjectDocDO();
|
||||
dataObject.setOrgId(orgContextResolver.resolveOrgId(entity.getOrgId()));
|
||||
dataObject.setProjectId(entity.getProjectId());
|
||||
dataObject.setDocName(entity.getDocName());
|
||||
dataObject.setDocTypeCode(entity.getDocTypeCode());
|
||||
dataObject.setDocTypeName(entity.getDocTypeName());
|
||||
dataObject.setLatestVersionNo(entity.getLatestVersionNo());
|
||||
dataObject.setLatestFileUrl(entity.getLatestFileUrl());
|
||||
dataObject.setConfirmStatusCode(entity.getConfirmStatusCode());
|
||||
dataObject.setConfirmStatusName(entity.getConfirmStatusName());
|
||||
dataObject.setTenantId(entity.getTenantId());
|
||||
return dataObject;
|
||||
}
|
||||
|
||||
private EvalProjectDocEntity toEntity(EvalProjectDocDO dataObject) {
|
||||
if (dataObject == null) {
|
||||
return null;
|
||||
}
|
||||
EvalProjectDocEntity entity = new EvalProjectDocEntity();
|
||||
entity.setId(dataObject.getId());
|
||||
entity.setOrgId(dataObject.getOrgId());
|
||||
entity.setProjectId(dataObject.getProjectId());
|
||||
entity.setDocName(dataObject.getDocName());
|
||||
entity.setDocTypeCode(dataObject.getDocTypeCode());
|
||||
entity.setDocTypeName(dataObject.getDocTypeName());
|
||||
entity.setLatestVersionNo(dataObject.getLatestVersionNo());
|
||||
entity.setLatestFileUrl(dataObject.getLatestFileUrl());
|
||||
entity.setConfirmStatusCode(dataObject.getConfirmStatusCode());
|
||||
entity.setConfirmStatusName(dataObject.getConfirmStatusName());
|
||||
entity.setTenantId(dataObject.getTenantId());
|
||||
return entity;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -114,22 +114,17 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway {
|
|||
if (StringUtils.hasText(query.getCustomerContactName())) {
|
||||
wrapper.like(EvalProjectDO::getCustomerContactName, query.getCustomerContactName());
|
||||
}
|
||||
if (query.getPlanStartDateFrom() != null) {
|
||||
wrapper.ge(EvalProjectDO::getPlanStartDate, query.getPlanStartDateFrom());
|
||||
if (query.getStartTime() != null && query.getEndTime() != null) {
|
||||
wrapper.le(EvalProjectDO::getPlanStartDate, query.getStartTime().toLocalDate())
|
||||
.ge(EvalProjectDO::getPlanEndDate, query.getEndTime().toLocalDate());
|
||||
}
|
||||
if (query.getPlanStartDateTo() != null) {
|
||||
wrapper.le(EvalProjectDO::getPlanStartDate, query.getPlanStartDateTo());
|
||||
}
|
||||
if (query.getPlanEndDateFrom() != null) {
|
||||
wrapper.ge(EvalProjectDO::getPlanEndDate, query.getPlanEndDateFrom());
|
||||
}
|
||||
if (query.getPlanEndDateTo() != null) {
|
||||
wrapper.le(EvalProjectDO::getPlanEndDate, query.getPlanEndDateTo());
|
||||
if (query.getCustomerId() != null) {
|
||||
wrapper.eq(EvalProjectDO::getCustomerId, query.getCustomerId());
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(query.getProjectIds())) {
|
||||
wrapper.in(EvalProjectDO::getId, query.getProjectIds());
|
||||
}
|
||||
wrapper.orderByDesc(EvalProjectDO::getPlanStartDate);
|
||||
wrapper.orderByDesc(EvalProjectDO::getId);
|
||||
return wrapper;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue