diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectController.java index 17ba796..e5bcfc2 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectController.java @@ -5,12 +5,7 @@ import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.qinan.safetyeval.client.api.institution.EvalProjectApi; import org.qinan.safetyeval.client.co.institution.CustomerEvalProjectCO; -import org.qinan.safetyeval.client.co.institution.EvalProjectCO; -import org.qinan.safetyeval.client.co.institution.EvalProjectEnumsCO; -import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO; -import org.qinan.safetyeval.client.co.institution.EvalProjectProgressStatCO; -import org.qinan.safetyeval.client.co.institution.RiskWarningCO; -import org.qinan.safetyeval.client.co.institution.RiskWarningStatCO; +import org.qinan.safetyeval.client.co.institution.*; import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd; @@ -51,6 +46,12 @@ public class EvalProjectController { return evalProjectApi.page(query); } + @ApiOperation("我的项目统计") + @GetMapping("/projectStatistics") + public SingleResponse projectStatistics() { + return evalProjectApi.projectStatistics(); + } + @ApiOperation("安评项目枚举映射") @GetMapping("/enums") public SingleResponse enums() { diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalRiskAnalysisController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalRiskAnalysisController.java index 930c05f..e834ee7 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalRiskAnalysisController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalRiskAnalysisController.java @@ -50,7 +50,7 @@ public class EvalRiskAnalysisController { @ApiOperation("保存参与人") @PostMapping("/participant/save") - public SingleResponse saveParticipant(@Validated @RequestBody EvalRiskParticipantSaveCmd cmd) { + public SingleResponse saveParticipant(@Validated @RequestBody List cmd) { return evalRiskAnalysisApi.saveParticipant(cmd); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalContractExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalContractExecutor.java index 9743794..d63f300 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalContractExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalContractExecutor.java @@ -9,8 +9,6 @@ import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.institution.EvalContractSaveCmd; import org.qinan.safetyeval.domain.entity.EvalContractEntity; 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.EvalContractGateway; import org.qinan.safetyeval.domain.support.EvalNodeCodes; import org.springframework.stereotype.Service; @@ -59,11 +57,10 @@ public class EvalContractExecutor implements EvalContractApi { @Override public SingleResponse getByProject(String projectId) { Long pid = Long.parseLong(projectId); - evalProjectNodeSupport.assertRead(pid); EvalProjectEntity project = evalProjectNodeSupport.requireProject(pid); EvalContractEntity entity = evalContractGateway.getByProjectId(pid, project.getOrgId()); if (entity == null) { - throw new BizException(ErrorCode.EVAL_CONTRACT_NOT_FOUND); + return SingleResponse.success(null); } return SingleResponse.success(evalContractCmdConvertor.convertEToCO(entity)); } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectExecutor.java index d939339..d59058a 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalProjectExecutor.java @@ -1,14 +1,11 @@ package org.qinan.safetyeval.app.executor.institution; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.qinan.safetyeval.app.convertor.EvalProjectCmdConvertor; import org.qinan.safetyeval.client.api.institution.EvalProjectApi; import org.qinan.safetyeval.client.co.institution.CustomerEvalProjectCO; -import org.qinan.safetyeval.client.co.institution.EvalProjectCO; -import org.qinan.safetyeval.client.co.institution.EvalProjectEnumsCO; -import org.qinan.safetyeval.client.co.institution.EvalProjectProgressCO; -import org.qinan.safetyeval.client.co.institution.EvalProjectProgressStatCO; -import org.qinan.safetyeval.client.co.institution.RiskWarningCO; -import org.qinan.safetyeval.client.co.institution.RiskWarningStatCO; +import org.qinan.safetyeval.client.co.institution.*; import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd; @@ -37,9 +34,6 @@ import java.time.LocalDate; import java.util.List; import java.util.stream.Collectors; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; - @Service public class EvalProjectExecutor implements EvalProjectApi { @@ -169,6 +163,17 @@ public class EvalProjectExecutor implements EvalProjectApi { return co; } + @Override + public SingleResponse projectStatistics() { + EvalProjectPageQuery evalProjectPageQuery = new EvalProjectPageQuery(); + evalProjectPageQuery.setMyProject(true); + List data = page(evalProjectPageQuery).getData(); + EvalProjectStatisticsCO co = new EvalProjectStatisticsCO(); + long pendingMyHandlingSum = data.stream().map(item -> item.getParticipants().stream().map(EvalProjectParticipantItemCO::getId).distinct().count()).distinct().count(); + co.setParticipatingProjectSum(pendingMyHandlingSum); + return null; + } + /** * 根据项目结束日期计算剩余天数、进度状态码、进度状态名称。 * 规则(参考原型页面): diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalRiskAnalysisExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalRiskAnalysisExecutor.java index 2443054..8b4ab79 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalRiskAnalysisExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalRiskAnalysisExecutor.java @@ -65,11 +65,10 @@ public class EvalRiskAnalysisExecutor implements EvalRiskAnalysisApi { @Override public SingleResponse getByProject(String projectId) { Long pid = Long.parseLong(projectId); - evalProjectNodeSupport.assertRead(pid); EvalProjectEntity project = evalProjectNodeSupport.requireProject(pid); EvalRiskAnalysisEntity entity = evalRiskAnalysisGateway.getByProjectId(pid, project.getOrgId()); if (entity == null) { - throw new BizException(ErrorCode.EVAL_RISK_NOT_FOUND); + return SingleResponse.success(null); } return SingleResponse.success(toDetailCO(entity)); } @@ -80,29 +79,30 @@ public class EvalRiskAnalysisExecutor implements EvalRiskAnalysisApi { } @Override - public SingleResponse saveParticipant(EvalRiskParticipantSaveCmd cmd) { - EvalRiskAnalysisEntity risk = requireRisk(cmd.getRiskId()); - evalProjectNodeSupport.assertWrite(risk.getProjectId(), EvalNodeCodes.NODE_01); - EvalRiskParticipantEntity entity = evalRiskAnalysisCmdConvertor.convertParticipantCmdToE(cmd); - entity.setRiskId(risk.getId()); - entity.setProjectId(risk.getProjectId()); - if (entity.getSignStatusCode() == null) { - entity.setSignStatusCode(1); - } - EvalRiskParticipantEntity result; - if (entity.getId() == null) { - if (entity.getSortOrder() == null) { - entity.setSortOrder(0); + public SingleResponse saveParticipant(List cmdList) { + for (EvalRiskParticipantSaveCmd cmd : cmdList) { + EvalRiskAnalysisEntity risk = requireRisk(cmd.getRiskId()); +// evalProjectNodeSupport.assertWrite(risk.getProjectId(), EvalNodeCodes.NODE_01); + EvalRiskParticipantEntity entity = evalRiskAnalysisCmdConvertor.convertParticipantCmdToE(cmd); + entity.setRiskId(risk.getId()); + entity.setProjectId(risk.getProjectId()); + if (entity.getSignStatusCode() == null) { + entity.setSignStatusCode(1); } - result = evalRiskParticipantGateway.save(entity); - } else { - EvalRiskParticipantEntity existing = requireParticipant(entity.getId()); - if (!risk.getId().equals(existing.getRiskId())) { - throw new BizException(ErrorCode.EVAL_RISK_NOT_FOUND); + if (entity.getId() == null) { + if (entity.getSortOrder() == null) { + entity.setSortOrder(0); + } + evalRiskParticipantGateway.save(entity); + } else { + EvalRiskParticipantEntity existing = requireParticipant(entity.getId()); + if (!risk.getId().equals(existing.getRiskId())) { + throw new BizException(ErrorCode.EVAL_RISK_NOT_FOUND); + } + evalRiskParticipantGateway.modify(entity); } - result = evalRiskParticipantGateway.modify(entity); } - return SingleResponse.success(evalRiskAnalysisCmdConvertor.convertParticipantEToCO(result)); + return SingleResponse.success(true); } @Override @@ -117,7 +117,7 @@ public class EvalRiskAnalysisExecutor implements EvalRiskAnalysisApi { @Override public SingleResponse> listParticipants(String riskId) { EvalRiskAnalysisEntity risk = requireRisk(riskId); - evalProjectNodeSupport.assertRead(risk.getProjectId()); +// evalProjectNodeSupport.assertRead(risk.getProjectId()); return SingleResponse.success(evalRiskAnalysisCmdConvertor.convertParticipantListToCOList( evalRiskParticipantGateway.listByRiskId(risk.getId()))); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProjectApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProjectApi.java index 3417959..c53dabb 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProjectApi.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalProjectApi.java @@ -1,5 +1,6 @@ package org.qinan.safetyeval.client.api.institution; +import org.qinan.safetyeval.client.co.institution.*; import org.qinan.safetyeval.client.co.institution.CustomerEvalProjectCO; import org.qinan.safetyeval.client.co.institution.EvalProjectCO; import org.qinan.safetyeval.client.co.institution.EvalProjectEnumsCO; @@ -37,5 +38,8 @@ public interface EvalProjectApi { PageResponse riskWarningPage(RiskWarningPageQuery query); + SingleResponse projectStatistics(); + + PageResponse customerPage(CustomerEvalProjectPageQuery query); } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalRiskAnalysisApi.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalRiskAnalysisApi.java index cffb9b1..793eb4f 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalRiskAnalysisApi.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/EvalRiskAnalysisApi.java @@ -17,7 +17,7 @@ public interface EvalRiskAnalysisApi { SingleResponse enums(); - SingleResponse saveParticipant(EvalRiskParticipantSaveCmd cmd); + SingleResponse saveParticipant(List cmd); SingleResponse deleteParticipant(Long id); diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectStatisticsCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectStatisticsCO.java new file mode 100644 index 0000000..9bb821c --- /dev/null +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectStatisticsCO.java @@ -0,0 +1,34 @@ +package org.qinan.safetyeval.client.co.institution; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class EvalProjectStatisticsCO { + + + /** + * 延期项目 + */ + @ApiModelProperty("延期项目") + private Long delayedProjectSum = 0L; + + /** + * 现场任务 + */ + @ApiModelProperty("现场任务") + private Long onSiteTaskSum = 0L; + + /** + * 待我处理 + */ + @ApiModelProperty("待我处理") + private Long pendingMyHandlingSum = 0L; + + /** + * 参与项目 + */ + @ApiModelProperty("参与项目") + private Long participatingProjectSum = 0L; + +} 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 4b5264c..1681a0e 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 @@ -18,5 +18,8 @@ public class EvalProjectPageQuery extends BasePageQuery { @ApiModelProperty("客户负责人") private String customerContactName; + @ApiModelProperty("是否查询我的项目") + private Boolean myProject = false; + private Long customerId; } 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 2891222..8c3796f 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 @@ -29,4 +29,7 @@ public class EvalProjectQuery { @ApiModelProperty("项目进度状态:NORMAL正常 NEAR临期 DELAY延期") private String progressStatus; + + @ApiModelProperty("是否查询我的项目") + private Boolean myProject = false; } 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 518f688..f754fc0 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 @@ -11,6 +11,7 @@ import org.qinan.safetyeval.domain.entity.EvalProjectEntity; import org.qinan.safetyeval.domain.gateway.EvalProjectGateway; import org.qinan.safetyeval.domain.query.EvalProjectQuery; import org.qinan.safetyeval.domain.query.PageResult; +import org.qinan.safetyeval.infrastructure.adapter.auth.AuthUserContextAdapter; import org.qinan.safetyeval.infrastructure.convertor.EvalProjectDoConvertor; import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO; import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper; @@ -45,6 +46,7 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway { dataObject.setArchiveFlag(0); } InsertFieldDefaults.apply(dataObject); + dataObject.setProjectNode("[{\"type\":\"RISK_ANALYSIS\",\"state\":0},{\"type\":\"BUSINESS_CONTRACT\",\"state\":0},{\"type\":\"PROJECT_GROUP\",\"state\":0},{\"type\":\"SITE_SURVEY\",\"state\":0},{\"type\":\"REPORT_PREPARATION\",\"state\":0},{\"type\":\"INTERNAL_REVIEW\",\"state\":0},{\"type\":\"TECHNICAL_REVIEW\",\"state\":0},{\"type\":\"PROCESS_CONTROL\",\"state\":0}]"); evalProjectMapper.insert(dataObject); entity.setId(dataObject.getId()); return entity; @@ -157,6 +159,9 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway { if (!CollectionUtils.isEmpty(query.getProjectIds())) { wrapper.in(EvalProjectDO::getId, query.getProjectIds()); } + if (Boolean.TRUE.equals(query.getMyProject())) { + wrapper.apply("JSON_CONTAINS(participants_json, JSON_OBJECT('id', {0}))", AuthUserContextAdapter.getCurrentUserId()); + } applyProgressStatusFilter(wrapper, query.getProgressStatus()); wrapper.orderByDesc(EvalProjectDO::getId); return wrapper;