feat: 项目合同
parent
23a1332ba0
commit
ecc828a00a
|
|
@ -5,12 +5,7 @@ import io.swagger.annotations.ApiOperation;
|
||||||
import io.swagger.annotations.ApiParam;
|
import io.swagger.annotations.ApiParam;
|
||||||
import org.qinan.safetyeval.client.api.institution.EvalProjectApi;
|
import org.qinan.safetyeval.client.api.institution.EvalProjectApi;
|
||||||
import org.qinan.safetyeval.client.co.institution.CustomerEvalProjectCO;
|
import org.qinan.safetyeval.client.co.institution.CustomerEvalProjectCO;
|
||||||
import org.qinan.safetyeval.client.co.institution.EvalProjectCO;
|
import org.qinan.safetyeval.client.co.institution.*;
|
||||||
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.dto.PageResponse;
|
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd;
|
import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd;
|
||||||
|
|
@ -51,6 +46,12 @@ public class EvalProjectController {
|
||||||
return evalProjectApi.page(query);
|
return evalProjectApi.page(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("我的项目统计")
|
||||||
|
@GetMapping("/projectStatistics")
|
||||||
|
public SingleResponse<EvalProjectStatisticsCO> projectStatistics() {
|
||||||
|
return evalProjectApi.projectStatistics();
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation("安评项目枚举映射")
|
@ApiOperation("安评项目枚举映射")
|
||||||
@GetMapping("/enums")
|
@GetMapping("/enums")
|
||||||
public SingleResponse<EvalProjectEnumsCO> enums() {
|
public SingleResponse<EvalProjectEnumsCO> enums() {
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ public class EvalRiskAnalysisController {
|
||||||
|
|
||||||
@ApiOperation("保存参与人")
|
@ApiOperation("保存参与人")
|
||||||
@PostMapping("/participant/save")
|
@PostMapping("/participant/save")
|
||||||
public SingleResponse<EvalRiskParticipantCO> saveParticipant(@Validated @RequestBody EvalRiskParticipantSaveCmd cmd) {
|
public SingleResponse<Boolean> saveParticipant(@Validated @RequestBody List<EvalRiskParticipantSaveCmd> cmd) {
|
||||||
return evalRiskAnalysisApi.saveParticipant(cmd);
|
return evalRiskAnalysisApi.saveParticipant(cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,6 @@ import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||||
import org.qinan.safetyeval.client.dto.institution.EvalContractSaveCmd;
|
import org.qinan.safetyeval.client.dto.institution.EvalContractSaveCmd;
|
||||||
import org.qinan.safetyeval.domain.entity.EvalContractEntity;
|
import org.qinan.safetyeval.domain.entity.EvalContractEntity;
|
||||||
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
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.gateway.EvalContractGateway;
|
||||||
import org.qinan.safetyeval.domain.support.EvalNodeCodes;
|
import org.qinan.safetyeval.domain.support.EvalNodeCodes;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
@ -59,11 +57,10 @@ public class EvalContractExecutor implements EvalContractApi {
|
||||||
@Override
|
@Override
|
||||||
public SingleResponse<EvalContractCO> getByProject(String projectId) {
|
public SingleResponse<EvalContractCO> getByProject(String projectId) {
|
||||||
Long pid = Long.parseLong(projectId);
|
Long pid = Long.parseLong(projectId);
|
||||||
evalProjectNodeSupport.assertRead(pid);
|
|
||||||
EvalProjectEntity project = evalProjectNodeSupport.requireProject(pid);
|
EvalProjectEntity project = evalProjectNodeSupport.requireProject(pid);
|
||||||
EvalContractEntity entity = evalContractGateway.getByProjectId(pid, project.getOrgId());
|
EvalContractEntity entity = evalContractGateway.getByProjectId(pid, project.getOrgId());
|
||||||
if (entity == null) {
|
if (entity == null) {
|
||||||
throw new BizException(ErrorCode.EVAL_CONTRACT_NOT_FOUND);
|
return SingleResponse.success(null);
|
||||||
}
|
}
|
||||||
return SingleResponse.success(evalContractCmdConvertor.convertEToCO(entity));
|
return SingleResponse.success(evalContractCmdConvertor.convertEToCO(entity));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,11 @@
|
||||||
package org.qinan.safetyeval.app.executor.institution;
|
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.app.convertor.EvalProjectCmdConvertor;
|
||||||
import org.qinan.safetyeval.client.api.institution.EvalProjectApi;
|
import org.qinan.safetyeval.client.api.institution.EvalProjectApi;
|
||||||
import org.qinan.safetyeval.client.co.institution.CustomerEvalProjectCO;
|
import org.qinan.safetyeval.client.co.institution.CustomerEvalProjectCO;
|
||||||
import org.qinan.safetyeval.client.co.institution.EvalProjectCO;
|
import org.qinan.safetyeval.client.co.institution.*;
|
||||||
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.dto.PageResponse;
|
import org.qinan.safetyeval.client.dto.PageResponse;
|
||||||
import org.qinan.safetyeval.client.dto.SingleResponse;
|
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||||||
import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd;
|
import org.qinan.safetyeval.client.dto.institution.EvalProjectAddCmd;
|
||||||
|
|
@ -37,9 +34,6 @@ import java.time.LocalDate;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class EvalProjectExecutor implements EvalProjectApi {
|
public class EvalProjectExecutor implements EvalProjectApi {
|
||||||
|
|
||||||
|
|
@ -169,6 +163,17 @@ public class EvalProjectExecutor implements EvalProjectApi {
|
||||||
return co;
|
return co;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SingleResponse<EvalProjectStatisticsCO> projectStatistics() {
|
||||||
|
EvalProjectPageQuery evalProjectPageQuery = new EvalProjectPageQuery();
|
||||||
|
evalProjectPageQuery.setMyProject(true);
|
||||||
|
List<EvalProjectCO> 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;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据项目结束日期计算剩余天数、进度状态码、进度状态名称。
|
* 根据项目结束日期计算剩余天数、进度状态码、进度状态名称。
|
||||||
* 规则(参考原型页面):
|
* 规则(参考原型页面):
|
||||||
|
|
|
||||||
|
|
@ -65,11 +65,10 @@ public class EvalRiskAnalysisExecutor implements EvalRiskAnalysisApi {
|
||||||
@Override
|
@Override
|
||||||
public SingleResponse<EvalRiskAnalysisCO> getByProject(String projectId) {
|
public SingleResponse<EvalRiskAnalysisCO> getByProject(String projectId) {
|
||||||
Long pid = Long.parseLong(projectId);
|
Long pid = Long.parseLong(projectId);
|
||||||
evalProjectNodeSupport.assertRead(pid);
|
|
||||||
EvalProjectEntity project = evalProjectNodeSupport.requireProject(pid);
|
EvalProjectEntity project = evalProjectNodeSupport.requireProject(pid);
|
||||||
EvalRiskAnalysisEntity entity = evalRiskAnalysisGateway.getByProjectId(pid, project.getOrgId());
|
EvalRiskAnalysisEntity entity = evalRiskAnalysisGateway.getByProjectId(pid, project.getOrgId());
|
||||||
if (entity == null) {
|
if (entity == null) {
|
||||||
throw new BizException(ErrorCode.EVAL_RISK_NOT_FOUND);
|
return SingleResponse.success(null);
|
||||||
}
|
}
|
||||||
return SingleResponse.success(toDetailCO(entity));
|
return SingleResponse.success(toDetailCO(entity));
|
||||||
}
|
}
|
||||||
|
|
@ -80,29 +79,30 @@ public class EvalRiskAnalysisExecutor implements EvalRiskAnalysisApi {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SingleResponse<EvalRiskParticipantCO> saveParticipant(EvalRiskParticipantSaveCmd cmd) {
|
public SingleResponse<Boolean> saveParticipant(List<EvalRiskParticipantSaveCmd> cmdList) {
|
||||||
EvalRiskAnalysisEntity risk = requireRisk(cmd.getRiskId());
|
for (EvalRiskParticipantSaveCmd cmd : cmdList) {
|
||||||
evalProjectNodeSupport.assertWrite(risk.getProjectId(), EvalNodeCodes.NODE_01);
|
EvalRiskAnalysisEntity risk = requireRisk(cmd.getRiskId());
|
||||||
EvalRiskParticipantEntity entity = evalRiskAnalysisCmdConvertor.convertParticipantCmdToE(cmd);
|
// evalProjectNodeSupport.assertWrite(risk.getProjectId(), EvalNodeCodes.NODE_01);
|
||||||
entity.setRiskId(risk.getId());
|
EvalRiskParticipantEntity entity = evalRiskAnalysisCmdConvertor.convertParticipantCmdToE(cmd);
|
||||||
entity.setProjectId(risk.getProjectId());
|
entity.setRiskId(risk.getId());
|
||||||
if (entity.getSignStatusCode() == null) {
|
entity.setProjectId(risk.getProjectId());
|
||||||
entity.setSignStatusCode(1);
|
if (entity.getSignStatusCode() == null) {
|
||||||
}
|
entity.setSignStatusCode(1);
|
||||||
EvalRiskParticipantEntity result;
|
|
||||||
if (entity.getId() == null) {
|
|
||||||
if (entity.getSortOrder() == null) {
|
|
||||||
entity.setSortOrder(0);
|
|
||||||
}
|
}
|
||||||
result = evalRiskParticipantGateway.save(entity);
|
if (entity.getId() == null) {
|
||||||
} else {
|
if (entity.getSortOrder() == null) {
|
||||||
EvalRiskParticipantEntity existing = requireParticipant(entity.getId());
|
entity.setSortOrder(0);
|
||||||
if (!risk.getId().equals(existing.getRiskId())) {
|
}
|
||||||
throw new BizException(ErrorCode.EVAL_RISK_NOT_FOUND);
|
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
|
@Override
|
||||||
|
|
@ -117,7 +117,7 @@ public class EvalRiskAnalysisExecutor implements EvalRiskAnalysisApi {
|
||||||
@Override
|
@Override
|
||||||
public SingleResponse<List<EvalRiskParticipantCO>> listParticipants(String riskId) {
|
public SingleResponse<List<EvalRiskParticipantCO>> listParticipants(String riskId) {
|
||||||
EvalRiskAnalysisEntity risk = requireRisk(riskId);
|
EvalRiskAnalysisEntity risk = requireRisk(riskId);
|
||||||
evalProjectNodeSupport.assertRead(risk.getProjectId());
|
// evalProjectNodeSupport.assertRead(risk.getProjectId());
|
||||||
return SingleResponse.success(evalRiskAnalysisCmdConvertor.convertParticipantListToCOList(
|
return SingleResponse.success(evalRiskAnalysisCmdConvertor.convertParticipantListToCOList(
|
||||||
evalRiskParticipantGateway.listByRiskId(risk.getId())));
|
evalRiskParticipantGateway.listByRiskId(risk.getId())));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package org.qinan.safetyeval.client.api.institution;
|
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.CustomerEvalProjectCO;
|
||||||
import org.qinan.safetyeval.client.co.institution.EvalProjectCO;
|
import org.qinan.safetyeval.client.co.institution.EvalProjectCO;
|
||||||
import org.qinan.safetyeval.client.co.institution.EvalProjectEnumsCO;
|
import org.qinan.safetyeval.client.co.institution.EvalProjectEnumsCO;
|
||||||
|
|
@ -37,5 +38,8 @@ public interface EvalProjectApi {
|
||||||
|
|
||||||
PageResponse<RiskWarningCO> riskWarningPage(RiskWarningPageQuery query);
|
PageResponse<RiskWarningCO> riskWarningPage(RiskWarningPageQuery query);
|
||||||
|
|
||||||
|
SingleResponse<EvalProjectStatisticsCO> projectStatistics();
|
||||||
|
|
||||||
|
|
||||||
PageResponse<CustomerEvalProjectCO> customerPage(CustomerEvalProjectPageQuery query);
|
PageResponse<CustomerEvalProjectCO> customerPage(CustomerEvalProjectPageQuery query);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ public interface EvalRiskAnalysisApi {
|
||||||
|
|
||||||
SingleResponse<EvalRiskAnalysisEnumsCO> enums();
|
SingleResponse<EvalRiskAnalysisEnumsCO> enums();
|
||||||
|
|
||||||
SingleResponse<EvalRiskParticipantCO> saveParticipant(EvalRiskParticipantSaveCmd cmd);
|
SingleResponse<Boolean> saveParticipant(List<EvalRiskParticipantSaveCmd> cmd);
|
||||||
|
|
||||||
SingleResponse<Void> deleteParticipant(Long id);
|
SingleResponse<Void> deleteParticipant(Long id);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -18,5 +18,8 @@ public class EvalProjectPageQuery extends BasePageQuery {
|
||||||
@ApiModelProperty("客户负责人")
|
@ApiModelProperty("客户负责人")
|
||||||
private String customerContactName;
|
private String customerContactName;
|
||||||
|
|
||||||
|
@ApiModelProperty("是否查询我的项目")
|
||||||
|
private Boolean myProject = false;
|
||||||
|
|
||||||
private Long customerId;
|
private Long customerId;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,4 +29,7 @@ public class EvalProjectQuery {
|
||||||
|
|
||||||
@ApiModelProperty("项目进度状态:NORMAL正常 NEAR临期 DELAY延期")
|
@ApiModelProperty("项目进度状态:NORMAL正常 NEAR临期 DELAY延期")
|
||||||
private String progressStatus;
|
private String progressStatus;
|
||||||
|
|
||||||
|
@ApiModelProperty("是否查询我的项目")
|
||||||
|
private Boolean myProject = false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||||||
import org.qinan.safetyeval.domain.gateway.EvalProjectGateway;
|
import org.qinan.safetyeval.domain.gateway.EvalProjectGateway;
|
||||||
import org.qinan.safetyeval.domain.query.EvalProjectQuery;
|
import org.qinan.safetyeval.domain.query.EvalProjectQuery;
|
||||||
import org.qinan.safetyeval.domain.query.PageResult;
|
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.convertor.EvalProjectDoConvertor;
|
||||||
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO;
|
import org.qinan.safetyeval.infrastructure.dataobject.EvalProjectDO;
|
||||||
import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper;
|
import org.qinan.safetyeval.infrastructure.mapper.EvalProjectMapper;
|
||||||
|
|
@ -45,6 +46,7 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway {
|
||||||
dataObject.setArchiveFlag(0);
|
dataObject.setArchiveFlag(0);
|
||||||
}
|
}
|
||||||
InsertFieldDefaults.apply(dataObject);
|
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);
|
evalProjectMapper.insert(dataObject);
|
||||||
entity.setId(dataObject.getId());
|
entity.setId(dataObject.getId());
|
||||||
return entity;
|
return entity;
|
||||||
|
|
@ -157,6 +159,9 @@ public class EvalProjectGatewayImpl implements EvalProjectGateway {
|
||||||
if (!CollectionUtils.isEmpty(query.getProjectIds())) {
|
if (!CollectionUtils.isEmpty(query.getProjectIds())) {
|
||||||
wrapper.in(EvalProjectDO::getId, 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());
|
applyProgressStatusFilter(wrapper, query.getProgressStatus());
|
||||||
wrapper.orderByDesc(EvalProjectDO::getId);
|
wrapper.orderByDesc(EvalProjectDO::getId);
|
||||||
return wrapper;
|
return wrapper;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue