diff --git a/docs/db/phase2/init-phase2.sql b/docs/db/phase2/init-phase2.sql index 1aab3b7..f7c368c 100644 --- a/docs/db/phase2/init-phase2.sql +++ b/docs/db/phase2/init-phase2.sql @@ -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 '创建人姓名', diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/config/LocalDevUserContextConfig.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/config/LocalDevUserContextConfig.java index b22129b..5acdd14 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/config/LocalDevUserContextConfig.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/config/LocalDevUserContextConfig.java @@ -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 diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectDocController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectDocController.java index 1ea245c..fc6da3d 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectDocController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectDocController.java @@ -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 modify(@Validated @RequestBody EvalProjectDocModifyCmd cmd) { - return evalProjectDocApi.modify(cmd); - } - - @ApiOperation("删除资料") - @PostMapping("/delete") - public SingleResponse delete(@RequestBody Req req) { - return evalProjectDocApi.delete(req.getData()); - } - @ApiOperation("分页查询资料") @GetMapping("/page") public PageResponse page(@Validated EvalProjectDocPageQuery query) { return evalProjectDocApi.page(query); } - - @ApiOperation("按项目查询资料列表") - @GetMapping("/list") - public SingleResponse> list(@ApiParam("项目ID") @RequestParam String projectId) { - return evalProjectDocApi.listByProject(Long.parseLong(projectId)); - } - - @ApiOperation("确认资料状态") - @PostMapping("/confirm") - public SingleResponse confirm(@Validated @RequestBody EvalProjectDocConfirmCmd cmd) { - return evalProjectDocApi.confirm(cmd); - } } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/EvalProjectDocCmdConvertor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/EvalProjectDocCmdConvertor.java new file mode 100644 index 0000000..775fd4b --- /dev/null +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/convertor/EvalProjectDocCmdConvertor.java @@ -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 convertEListToCOList(List 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 items) { + if (items == null) { + return null; + } + try { + return OBJECT_MAPPER.writeValueAsString(items); + } catch (Exception e) { + throw new IllegalArgumentException("资料上传地址JSON序列化失败", e); + } + } + + default List fromProjectDocUrlJson(String json) { + if (!StringUtils.hasText(json)) { + return Collections.emptyList(); + } + try { + return OBJECT_MAPPER.readValue(json, new TypeReference>() { + }); + } catch (Exception e) { + return Collections.emptyList(); + } + } +} diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalCustomerExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalCustomerExecutor.java index 9f7dfb9..27e81dd 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalCustomerExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalCustomerExecutor.java @@ -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 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); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectDocExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectDocExecutor.java index 4d3e15e..727abeb 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectDocExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectDocExecutor.java @@ -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 save(EvalProjectDocAddCmd cmd) { + EvalProjectDocDO evalProjectDocDO = evalProjectDocMapper.selectOne(new LambdaQueryWrapper() + .eq(EvalProjectDocDO::getProjectId, cmd.getProjectId())); + if (Objects.nonNull(evalProjectDocDO)) { + String jsonString; + // 项目资料已经存在, 则追加上传文件 + if (evalProjectDocDO.getProjectDocUrl() != null) { + // 不存在url + List 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() + .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 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 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 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 pageResult = evalProjectDocDomainService.page(domainQuery); - return PageResponse.of( - pageResult.getRecords().stream().map(this::toCO).collect(Collectors.toList()), - pageResult.getTotal()); - } - - @Override - public SingleResponse> listByProject(Long projectId) { - Long orgId = institutionOrgSupport.resolveCurrentOrgId(); - assertProjectInOrg(projectId, orgId); - List list = evalProjectDocDomainService.listByProjectId(projectId, orgId).stream() + List list = pageResult.getRecords().stream() .map(this::toCO) .collect(Collectors.toList()); - return SingleResponse.success(list); - } - - @Override - public SingleResponse 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 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; } } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProjectDocApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProjectDocApi.java index 98e142e..9be38db 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProjectDocApi.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProjectDocApi.java @@ -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 save(EvalProjectDocAddCmd cmd); - SingleResponse modify(EvalProjectDocModifyCmd cmd); - - SingleResponse delete(Long id); - PageResponse page(EvalProjectDocPageQuery query); - - SingleResponse> listByProject(Long projectId); - - SingleResponse confirm(EvalProjectDocConfirmCmd cmd); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalCustomerCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalCustomerCO.java index 3d97a8b..3d8da70 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalCustomerCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalCustomerCO.java @@ -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 projects; } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectDocCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectDocCO.java index 54df4fa..e63c861 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectDocCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectDocCO.java @@ -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 projectDocUrl; - @ApiModelProperty(value = "确认状态名称:待确认/已确认/已退回", example = "待确认") - private String confirmStatusName; + @ApiModelProperty("查看文档列表, key对应资料类别枚举, val对应同类型的集合") + private Map> projectDocUrlMap; } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectDocMaterialItemCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectDocMaterialItemCO.java new file mode 100644 index 0000000..8d88e8c --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectDocMaterialItemCO.java @@ -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; +} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocAddCmd.java index c2741e6..106d222 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocAddCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocAddCmd.java @@ -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 projectDocUrl; } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocConfirmCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocConfirmCmd.java deleted file mode 100644 index 6dc73bf..0000000 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocConfirmCmd.java +++ /dev/null @@ -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; -} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocModifyCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocModifyCmd.java deleted file mode 100644 index 6cf5129..0000000 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocModifyCmd.java +++ /dev/null @@ -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; -} diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocPageQuery.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocPageQuery.java index 809cf70..c6a8c13 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocPageQuery.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocPageQuery.java @@ -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; } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectPageQuery.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectPageQuery.java index 45ff007..4b5264c 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectPageQuery.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectPageQuery.java @@ -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; } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/MaterialCategory.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/MaterialCategory.java new file mode 100644 index 0000000..a503f99 --- /dev/null +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/constant/MaterialCategory.java @@ -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; // 默认输出描述 + } +} \ No newline at end of file diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/EvalProjectDocEntity.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/EvalProjectDocEntity.java index 7186738..d4f4483 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/EvalProjectDocEntity.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/EvalProjectDocEntity.java @@ -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; } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/EvalProjectDocGateway.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/EvalProjectDocGateway.java index ae4c1e9..44edaeb 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/EvalProjectDocGateway.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/EvalProjectDocGateway.java @@ -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 page(EvalProjectDocQuery query); - - List listByProjectId(Long projectId, Long orgId); } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/EvalProjectDocQuery.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/EvalProjectDocQuery.java index 8167100..d9fb040 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/EvalProjectDocQuery.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/EvalProjectDocQuery.java @@ -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; } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/EvalProjectQuery.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/EvalProjectQuery.java index 0ce6b0a..04be0f1 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/EvalProjectQuery.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/EvalProjectQuery.java @@ -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 projectIds; } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/EvalProjectDocDomainService.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/EvalProjectDocDomainService.java index 3f9af5e..e339cfe 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/EvalProjectDocDomainService.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/EvalProjectDocDomainService.java @@ -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 page(EvalProjectDocQuery query) { return evalProjectDocGateway.page(query); } - - public List listByProjectId(Long projectId, Long orgId) { - return evalProjectDocGateway.listByProjectId(projectId, orgId); - } } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/EvalProjectDocDoConvertor.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/EvalProjectDocDoConvertor.java new file mode 100644 index 0000000..47fc248 --- /dev/null +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/convertor/EvalProjectDocDoConvertor.java @@ -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); +} diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/EvalProjectDocDO.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/EvalProjectDocDO.java index 40e69b3..ac20249 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/EvalProjectDocDO.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/dataobject/EvalProjectDocDO.java @@ -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; diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalProjectDocGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalProjectDocGatewayImpl.java index 95a4494..9689f39 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalProjectDocGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalProjectDocGatewayImpl.java @@ -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 page(EvalProjectDocQuery query) { Page page = new Page<>(query.getPageNum(), query.getPageSize()); IPage result = evalProjectDocMapper.selectPage(page, buildQueryWrapper(query)); List 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 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 buildQueryWrapper(EvalProjectDocQuery query) { LambdaQueryWrapper 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; - } } diff --git a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalProjectGatewayImpl.java b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalProjectGatewayImpl.java index fef1274..692d6dc 100644 --- a/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalProjectGatewayImpl.java +++ b/safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/EvalProjectGatewayImpl.java @@ -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; } }