Browse Source

优化

tags/24080901
WendyYang 8 months ago
parent
commit
8f48941ca0
100 changed files with 508 additions and 896 deletions
  1. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/common/model/entity/MenuTreeEntity.java
  2. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/ProjectDeclareChoiceAction.java
  3. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/factory/ProjectDeclareGuardFactory.java
  4. +32
    -48
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/util/MachineBuilderFounder.java
  5. +24
    -31
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/util/StateMachineUtil.java
  6. +0
    -91
      hz-pm-api/src/main/java/com/hz/pm/api/common/util/JwtTokenUtil.java
  7. +3
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/common/util/MDCUtil.java
  8. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/common/util/TreeUtil.java
  9. +1
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/MeetingStatisticsManage.java
  10. +1
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/dashboard/model/vo/PerformanceStatisticsVO.java
  11. +3
    -5
      hz-pm-api/src/main/java/com/hz/pm/api/expert/assembler/ExpertAdminExpertManageAssembler.java
  12. +0
    -29
      hz-pm-api/src/main/java/com/hz/pm/api/expert/assembler/TagAssembler.java
  13. +0
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/expert/controller/ExpertController.java
  14. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/expert/manage/ExpertMetaApplyManage.java
  15. +2
    -6
      hz-pm-api/src/main/java/com/hz/pm/api/expert/service/impl/ExpertAdminManageServiceImpl.java
  16. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/external/controller/MhSyncController.java
  17. +0
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/external/model/dto/MhTechExpertDTO.java
  18. +1
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/filemanage/manage/ProjectFileManage.java
  19. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/filemanage/model/entity/ProjectApplyBorrow.java
  20. +0
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/filemanage/model/vo/ProjectFileVO.java
  21. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/gov/utils/ProjectConvertUtil.java
  22. +2
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/irs/controller/IrsController.java
  23. +4
    -5
      hz-pm-api/src/main/java/com/hz/pm/api/irs/controller/IrsProjectController.java
  24. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/irs/manage/AppIrsManage.java
  25. +1
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/irs/manage/IrsProjectManage.java
  26. +0
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/leave/manage/LeaveManage.java
  27. +0
    -129
      hz-pm-api/src/main/java/com/hz/pm/api/meeting/builder/YxtSmsContextBuilder.java
  28. +0
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/meeting/controller/MeetingExpertJudgeController.java
  29. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/domain/MeetingExpertJudge.java
  30. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/ExpertIdFilterDTO.java
  31. +0
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/vo/MeetingByManagerVO.java
  32. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/meeting/helper/MeetingManageHelper.java
  33. +4
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/meeting/helper/YxtCallOrSmsHelper.java
  34. +22
    -15
      hz-pm-api/src/main/java/com/hz/pm/api/meta/assembler/MetaTagAssembler.java
  35. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/meta/helper/basic/AbstractTagsCache.java
  36. +8
    -8
      hz-pm-api/src/main/java/com/hz/pm/api/meta/manage/MetaManage.java
  37. +3
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/meta/service/impl/MetaDictionaryServiceImpl.java
  38. +3
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/meta/service/impl/MetaTagServiceImpl.java
  39. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/organization/manage/OrganizationManage.java
  40. +0
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/organization/model/vo/OrganizationSynthesizeTreeVO.java
  41. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/organization/model/vo/OrganizationTreeVO.java
  42. +3
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/performance/convert/PerformanceAppraisalConveter.java
  43. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/OrgSelfAppraisalManage.java
  44. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/performance/mapper/PerformanceAppraisalMapper.java
  45. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/performance/mapper/PerformanceAppraisalProjectMapper.java
  46. +0
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/performance/model/dto/PerformanceAppraisalEditDTO.java
  47. +0
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/performance/model/dto/PerformanceAppraisalProjectGroupSaveDTO.java
  48. +3
    -10
      hz-pm-api/src/main/java/com/hz/pm/api/performance/model/dto/PerformanceIndicatorAppIndexSaveDTO.java
  49. +2
    -6
      hz-pm-api/src/main/java/com/hz/pm/api/performance/model/dto/PerformanceIndicatorProjectIndexSaveDTO.java
  50. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/performance/model/entity/PerformanceAppraisalProject.java
  51. +0
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/performance/model/entity/PerformanceIndicatorProjectTemplate.java
  52. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/performance/model/vo/ProjectIndexTemplateVO.java
  53. +4
    -7
      hz-pm-api/src/main/java/com/hz/pm/api/performance/model/vo/ProjectIndexVO.java
  54. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/performance/util/ContentTypeUtils.java
  55. +4
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java
  56. +6
    -6
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionPlanManage.java
  57. +27
    -22
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DelayedApplyManage.java
  58. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/OperationManage.java
  59. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PrequalificationDeclaredProjectManage.java
  60. +30
    -33
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ProjectAdjustmentManage.java
  61. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java
  62. +0
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/OperationDTO.java
  63. +0
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/PaymentPlanSupplementDTO.java
  64. +0
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/PreInsAcceptancePersonSaveDTO.java
  65. +0
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/PreInsSaveDTO.java
  66. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/ProjectDraftSaveDTO.java
  67. +3
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/PaymentPlan.java
  68. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/PreInsAcceptancePerson.java
  69. +0
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/PreInsAcceptancePersonVO.java
  70. +0
    -5
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/PreInsVO.java
  71. +0
    -58
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/utils/ReStartProcessMapUtil.java
  72. +51
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/utils/RestartProcessMapUtil.java
  73. +16
    -18
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/AnnualPlanHandle.java
  74. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProcessExecuteChainHandle.java
  75. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/AnnualPlanLibManage.java
  76. +37
    -43
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectLibManage.java
  77. +16
    -23
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectRenewalFundManage.java
  78. +0
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/po/ProjectRenewalFundDeclarationPO.java
  79. +0
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/req/ProjectRenewalAuditReq.java
  80. +4
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/INdProjectStatusChangeService.java
  81. +12
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/impl/NdProjectStatusChangeServiceImpl.java
  82. +0
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/provincial/model/res/OssApiData.java
  83. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/provincial/model/res/OssApiResponse.java
  84. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/ProcessEndListener.java
  85. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/ProcessStartListener.java
  86. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/CheckProvincialReviewResultTask.java
  87. +17
    -33
      hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/ProjectStatusFlowTask.java
  88. +16
    -13
      hz-pm-api/src/main/java/com/hz/pm/api/staging/utils/ProjectStatusFlowMapUtil.java
  89. +3
    -5
      hz-pm-api/src/main/java/com/hz/pm/api/staging/utils/WorkNoticeFlowMapUtil.java
  90. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/sys/mapper/NotifyMapper.java
  91. +5
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/sys/model/dto/MeetingReviewMsgExtraDTO.java
  92. +0
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/sys/model/dto/MenuSaveDTO.java
  93. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/sys/model/entity/Menu.java
  94. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/sys/model/vo/MenuRoleVO.java
  95. +2
    -11
      hz-pm-api/src/main/java/com/hz/pm/api/todocenter/enumeration/IsOrNotEnum.java
  96. +72
    -70
      hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java
  97. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/todocenter/service/ITodoService.java
  98. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/todocenter/service/impl/TodoServiceImpl.java
  99. +9
    -13
      hz-pm-api/src/main/java/com/hz/pm/api/todocenter/utils/PdfUtils.java
  100. +2
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/user/entity/MhUnit.java

+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/common/model/entity/MenuTreeEntity.java View File

@@ -29,7 +29,7 @@ import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;
@Setter @Setter
@Accessors(chain = true) @Accessors(chain = true)
@ToString(callSuper = true) @ToString(callSuper = true)
public class MenuTreeEntity<E, T extends Serializable> {
public class MenuTreeEntity<E> {


@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
protected Long id; protected Long id;


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/action/ProjectDeclareChoiceAction.java View File

@@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import com.hz.pm.api.common.model.constant.ProjectDeclareConst; import com.hz.pm.api.common.model.constant.ProjectDeclareConst;
import com.hz.pm.api.common.model.constant.StateMachineConst; import com.hz.pm.api.common.model.constant.StateMachineConst;
import com.hz.pm.api.common.enumeration.CommonEnum; import com.hz.pm.api.common.enumeration.CommonEnum;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent;
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
@@ -75,7 +75,7 @@ public class ProjectDeclareChoiceAction implements Action<ProjectStatusEnum, Pro
private void preDeclareChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { private void preDeclareChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) {
Project project = stateContext.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class); Project project = stateContext.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class);
log.info("预审申报事件之前,项目的状态为:{}"+project.getStatus()); log.info("预审申报事件之前,项目的状态为:{}"+project.getStatus());
if (StateMachineUtils.isCityProject(project) && StateMachineUtils.judgeDeclareAmount(project,
if (StateMachineUtil.isCityProject(project) && StateMachineUtil.judgeDeclareAmount(project,
ProjectDeclareConst.Number.DECLARE_AMOUNT_JUDGEMENT)){ ProjectDeclareConst.Number.DECLARE_AMOUNT_JUDGEMENT)){
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS.getCode()); project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS.getCode());
}else { }else {
@@ -86,7 +86,7 @@ public class ProjectDeclareChoiceAction implements Action<ProjectStatusEnum, Pro
private void preWithDrawChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { private void preWithDrawChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) {
Project project = stateContext.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class); Project project = stateContext.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class);
log.info("预审中撤回事件之前,项目的状态为:{}"+project.getStatus()); log.info("预审中撤回事件之前,项目的状态为:{}"+project.getStatus());
if (StateMachineUtils.isCityProject(project) && StateMachineUtils.judgeDeclareAmount(project,
if (StateMachineUtil.isCityProject(project) && StateMachineUtil.judgeDeclareAmount(project,
ProjectDeclareConst.Number.DECLARE_AMOUNT_JUDGEMENT)){ ProjectDeclareConst.Number.DECLARE_AMOUNT_JUDGEMENT)){
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode());
}else { }else {


+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/factory/ProjectDeclareGuardFactory.java View File

@@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import com.hz.pm.api.common.model.constant.ProjectDeclareConst; import com.hz.pm.api.common.model.constant.ProjectDeclareConst;
import com.hz.pm.api.common.model.constant.StateMachineConst; import com.hz.pm.api.common.model.constant.StateMachineConst;
import com.hz.pm.api.common.enumeration.CommonEnum; import com.hz.pm.api.common.enumeration.CommonEnum;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent;
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
@@ -31,7 +31,7 @@ public class ProjectDeclareGuardFactory {
public boolean evaluate(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> context) { public boolean evaluate(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> context) {
Project project = context.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class); Project project = context.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class);
// 判断申报项目是否是市级项目,且申报金额是否大于等于1000万元 // 判断申报项目是否是市级项目,且申报金额是否大于等于1000万元
if (StateMachineUtils.isCityProject(project) && StateMachineUtils.judgeDeclareAmount(project,
if (StateMachineUtil.isCityProject(project) && StateMachineUtil.judgeDeclareAmount(project,
ProjectDeclareConst.Number.DECLARE_AMOUNT_JUDGEMENT)){ ProjectDeclareConst.Number.DECLARE_AMOUNT_JUDGEMENT)){
return true; return true;
} }


+ 32
- 48
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/util/MachineBuilderFounder.java View File

@@ -1,13 +1,13 @@
package com.hz.pm.api.common.statemachine.util; package com.hz.pm.api.common.statemachine.util;


import com.google.common.collect.Maps;
import com.hz.pm.api.common.statemachine.builder.*; import com.hz.pm.api.common.statemachine.builder.*;
import com.hz.pm.api.common.statemachine.contant.RegionContant; import com.hz.pm.api.common.statemachine.contant.RegionContant;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;


import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import java.util.HashMap;
import java.util.Map; import java.util.Map;


/** /**
@@ -16,58 +16,42 @@ import java.util.Map;
* @author CMM * @author CMM
* @since 2023/02/07 15:56 * @since 2023/02/07 15:56
*/ */
@Component
@Slf4j @Slf4j
@Component
@RequiredArgsConstructor
public class MachineBuilderFounder { public class MachineBuilderFounder {


public final static Map<String,ProjectDeclareStateMachineBuilder> machineBuilderMap =
Maps.newConcurrentMap();

@Autowired
private ProjectDeclareStateMachineSBJBuilder projectDeclareStateMachineSBJBuilder;

@Autowired
private ProjectDeclareStateMachineLDBuilder projectDeclareStateMachineLDBuilder;

@Autowired
private ProjectDeclareStateMachineQTBuilder projectDeclareStateMachineQTBuilder;

@Autowired
private ProjectDeclareStateMachineJYBuilder projectDeclareStateMachineJYBuilder;

@Autowired
private ProjectDeclareStateMachineSCBuilder projectDeclareStateMachineSCBuilder;
private static final Map<String, ProjectDeclareStateMachineBuilder> MACHINE_BUILDER_MAP = new HashMap<>(16);


@Autowired
private ProjectDeclareStateMachineSYBuilder projectDeclareStateMachineSYBuilder;

@Autowired
private ProjectDeclareStateMachineYHBuilder projectDeclareStateMachineYHBuilder;

@Autowired
private ProjectDeclareStateMachineQYBuilder projectDeclareStateMachineQYBuilder;

@Autowired
private ProjectDeclareStateMachineJNBuilder projectDeclareStateMachineJNBuilder;

@Autowired
private ProjectDeclareStateMachineLQBuilder projectDeclareStateMachineLQBuilder;
public static ProjectDeclareStateMachineBuilder getByRegion(String regionCode) {
return MACHINE_BUILDER_MAP.get(regionCode);
}


@Autowired
private ProjectDeclareStateMachineKFQBuilder projectDeclareStateMachineKFQBuilder;
private final ProjectDeclareStateMachineSBJBuilder projectDeclareStateMachineSBJBuilder;
private final ProjectDeclareStateMachineLDBuilder projectDeclareStateMachineLDBuilder;
private final ProjectDeclareStateMachineQTBuilder projectDeclareStateMachineQTBuilder;
private final ProjectDeclareStateMachineJYBuilder projectDeclareStateMachineJYBuilder;
private final ProjectDeclareStateMachineSCBuilder projectDeclareStateMachineSCBuilder;
private final ProjectDeclareStateMachineSYBuilder projectDeclareStateMachineSYBuilder;
private final ProjectDeclareStateMachineYHBuilder projectDeclareStateMachineYHBuilder;
private final ProjectDeclareStateMachineQYBuilder projectDeclareStateMachineQYBuilder;
private final ProjectDeclareStateMachineJNBuilder projectDeclareStateMachineJNBuilder;
private final ProjectDeclareStateMachineLQBuilder projectDeclareStateMachineLQBuilder;
private final ProjectDeclareStateMachineKFQBuilder projectDeclareStateMachineKFQBuilder;


@PostConstruct @PostConstruct
public void MachineBuilderFounder(){
machineBuilderMap.put(RegionContant.LS_SBJ_CODE, projectDeclareStateMachineSBJBuilder);
machineBuilderMap.put(RegionContant.LS_LD_CODE, projectDeclareStateMachineLDBuilder);
machineBuilderMap.put(RegionContant.LS_QT_CODE, projectDeclareStateMachineQTBuilder);
machineBuilderMap.put(RegionContant.LS_JY_CODE, projectDeclareStateMachineJYBuilder);
machineBuilderMap.put(RegionContant.LS_SC_CODE, projectDeclareStateMachineSCBuilder);
machineBuilderMap.put(RegionContant.LS_SY_CODE, projectDeclareStateMachineSYBuilder);
machineBuilderMap.put(RegionContant.LS_YH_CODE, projectDeclareStateMachineYHBuilder);
machineBuilderMap.put(RegionContant.LS_QY_CODE, projectDeclareStateMachineQYBuilder);
machineBuilderMap.put(RegionContant.LS_JN_CODE, projectDeclareStateMachineJNBuilder);
machineBuilderMap.put(RegionContant.LS_LQ_CODE, projectDeclareStateMachineLQBuilder);
machineBuilderMap.put(RegionContant.LS_KFQ_CODE, projectDeclareStateMachineKFQBuilder);
public void machineBuilderFounder(){
MACHINE_BUILDER_MAP.put(RegionContant.LS_SBJ_CODE, projectDeclareStateMachineSBJBuilder);
MACHINE_BUILDER_MAP.put(RegionContant.LS_LD_CODE, projectDeclareStateMachineLDBuilder);
MACHINE_BUILDER_MAP.put(RegionContant.LS_QT_CODE, projectDeclareStateMachineQTBuilder);
MACHINE_BUILDER_MAP.put(RegionContant.LS_JY_CODE, projectDeclareStateMachineJYBuilder);
MACHINE_BUILDER_MAP.put(RegionContant.LS_SC_CODE, projectDeclareStateMachineSCBuilder);
MACHINE_BUILDER_MAP.put(RegionContant.LS_SY_CODE, projectDeclareStateMachineSYBuilder);
MACHINE_BUILDER_MAP.put(RegionContant.LS_YH_CODE, projectDeclareStateMachineYHBuilder);
MACHINE_BUILDER_MAP.put(RegionContant.LS_QY_CODE, projectDeclareStateMachineQYBuilder);
MACHINE_BUILDER_MAP.put(RegionContant.LS_JN_CODE, projectDeclareStateMachineJNBuilder);
MACHINE_BUILDER_MAP.put(RegionContant.LS_LQ_CODE, projectDeclareStateMachineLQBuilder);
MACHINE_BUILDER_MAP.put(RegionContant.LS_KFQ_CODE, projectDeclareStateMachineKFQBuilder);
} }

} }

hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/util/StateMachineUtils.java → hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/util/StateMachineUtil.java View File

@@ -33,7 +33,7 @@ import java.util.Objects;
@Slf4j @Slf4j
@Component @Component
@RequiredArgsConstructor @RequiredArgsConstructor
public class StateMachineUtils {
public class StateMachineUtil {


private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE;


@@ -45,51 +45,51 @@ public class StateMachineUtils {


//通过审核 //通过审核
public void pass(Project project) { public void pass(Project project) {
try{
execute(project,getProjectStatusPassEvent(project.getStatus()));
}catch (Exception e){
log.info("状态机 通过失败 :{}",e.getMessage());
try {
execute(project, getProjectStatusPassEvent(project.getStatus()));
} catch (Exception e) {
log.info("状态机 通过失败 :{}", e.getMessage());
throw new BusinessException("状态机 通过失败: " + e); throw new BusinessException("状态机 通过失败: " + e);
} }
} }


//拒绝 //拒绝
public void reject(Project project) { public void reject(Project project) {
try{
execute(project,getProjectStatusRejectEvent(project.getStatus()));
}catch (Exception e){
log.info("状态机 拒绝失败 :{}",e.getMessage());
try {
execute(project, getProjectStatusRejectEvent(project.getStatus()));
} catch (Exception e) {
log.info("状态机 拒绝失败 :{}", e.getMessage());
throw new BusinessException("状态机 拒绝失败: " + e); throw new BusinessException("状态机 拒绝失败: " + e);
} }
} }


//撤回 //撤回
public void withDraw(Project project) { public void withDraw(Project project) {
try{
execute(project,getProjectStatusWithdrawEvent(project.getStatus()));
}catch (Exception e){
log.info("状态机 撤回失败 :{}",e.getMessage());
try {
execute(project, getProjectStatusWithdrawEvent(project.getStatus()));
} catch (Exception e) {
log.info("状态机 撤回失败 :{}", e.getMessage());
throw new BusinessException("状态机 撤回失败: " + e); throw new BusinessException("状态机 撤回失败: " + e);
} }
} }


public void execute(Project project, ProjectStatusChangeEvent event) throws Exception { public void execute(Project project, ProjectStatusChangeEvent event) throws Exception {
log.info("调用状态机前的项目状态为>>>>>>>>>>{}" + project.getStatus());
log.info("调用状态机前的项目状态为:{}", project.getStatus());
// 将状态变更记录保存到项目状态变更表中 // 将状态变更记录保存到项目状态变更表中
ProjectStatusChange projectStatusChange = new ProjectStatusChange(); ProjectStatusChange projectStatusChange = new ProjectStatusChange();
projectStatusChange.setBeforeStatus(project.getStatus()); projectStatusChange.setBeforeStatus(project.getStatus());


ProjectDeclareStateMachineBuilder builder = MachineBuilderFounder.machineBuilderMap.get(project.getAreaCode());
ProjectDeclareStateMachineBuilder builder = MachineBuilderFounder.getByRegion(project.getAreaCode());


VUtils.isTrue(Objects.isNull(builder)).throwMessage("状态机初始化失败!"); VUtils.isTrue(Objects.isNull(builder)).throwMessage("状态机初始化失败!");
//获取TO状态机 //获取TO状态机
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = builder.build(); StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = builder.build();
Message message = MessageBuilder.withPayload(event)
Message<ProjectStatusChangeEvent> message = MessageBuilder.withPayload(event)
.setHeader(PROJECT_DECLARE, project) .setHeader(PROJECT_DECLARE, project)
.setHeader(APPLICATION_DECLARE,projectApplicationService.getApplicationsByProject(project))
.setHeader(APPLICATION_DECLARE, projectApplicationService.getApplicationsByProject(project))
.build(); .build();
//初始化状态机 //初始化状态机
StateMachinePersister projectDeclareStateMachinePersister = builder.getProjectPersister();
StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> projectDeclareStateMachinePersister = builder.getProjectPersister();
projectDeclareStateMachinePersister.restore(stateMachine, project); projectDeclareStateMachinePersister.restore(stateMachine, project);
stateMachine.sendEvent(message); stateMachine.sendEvent(message);
projectStatusChange.setProjectId(project.getId()); projectStatusChange.setProjectId(project.getId());
@@ -99,39 +99,31 @@ public class StateMachineUtils {
projectStatusChange.setProjectCode(project.getProjectCode()); projectStatusChange.setProjectCode(project.getProjectCode());
// 插入项目状态变更表中 // 插入项目状态变更表中
projectStatusChangeService.save(projectStatusChange); projectStatusChangeService.save(projectStatusChange);
log.info("调用状态机后的项目状态为>>>>>>>>>>{}" + project.getStatus());
log.info("调用状态机后的项目状态为:{}", project.getStatus());
} }


/** /**
* 判断项目申报金额是否大于1000万元 * 判断项目申报金额是否大于1000万元
* *
* @param project
* @param project \
* @return boolean * @return boolean
* @author CMM
* @since 2023/02/07 17:13 * @since 2023/02/07 17:13
*/ */
public static boolean judgeDeclareAmount(Project project, BigDecimal targetAmount) { public static boolean judgeDeclareAmount(Project project, BigDecimal targetAmount) {
int flag = project.getDeclareAmount().compareTo(targetAmount); int flag = project.getDeclareAmount().compareTo(targetAmount);
if (flag > 0 || flag == 0) {
return true;
}
return false;
return flag > 0 || flag == 0;
} }


/** /**
* 判断申报项目是否为市级项目 * 判断申报项目是否为市级项目
* *
* @param project
* @param project \
* @return boolean * @return boolean
* @author CMM
* @since 2023/02/07 17:05 * @since 2023/02/07 17:05
*/ */
public static boolean isCityProject(Project project) { public static boolean isCityProject(Project project) {
String areaCode = project.getAreaCode(); String areaCode = project.getAreaCode();
if (areaCode.equals(RegionConst.RC_HZ)) {
return true;
}
return false;
return areaCode.equals(RegionConst.RC_HZ);
} }


public ProjectStatusChangeEvent getProjectStatusPassEvent(Integer status) { public ProjectStatusChangeEvent getProjectStatusPassEvent(Integer status) {
@@ -157,4 +149,5 @@ public class StateMachineUtils {
} }
return event; return event;
} }

} }

+ 0
- 91
hz-pm-api/src/main/java/com/hz/pm/api/common/util/JwtTokenUtil.java View File

@@ -1,91 +0,0 @@
package com.hz.pm.api.common.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.hz.pm.api.common.model.ZwddTokenUser;
import org.apache.commons.lang3.StringUtils;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
* @author liuxinxin
* @date 2023/5/4 下午2:34
*/

public class JwtTokenUtil {

private static final String SECRET_KEY = "dbe1cc89019c4c7abd5085bf47a25fb0";

private static final String CLAIM_KEY = "content";

private static final Integer DEFAULT_EXPIRE_TIME = Integer.valueOf(86400);

public static String createToken(ZwddTokenUser dingTokenUser) {
return createToken(dingTokenUser, DEFAULT_EXPIRE_TIME);
}

public static String createToken(ZwddTokenUser dingTokenUser, Integer expireTime) {
if (dingTokenUser == null) {
throw new IllegalArgumentException("");
}
if (dingTokenUser.getTenantId() == null) {
throw new IllegalArgumentException("");
}
if (StringUtils.isEmpty(dingTokenUser.getEmployeeCode())) {
throw new IllegalArgumentException("");
}
if (dingTokenUser.getTenantId() == null) {
throw new IllegalArgumentException("");
}
return createToken(JSON.toJSONString(dingTokenUser), expireTime);
}

private static String createToken(String content, Integer expireTime) {
if (StringUtils.isEmpty(content)) {
throw new IllegalArgumentException("");
}
Map<String, Object> header = new HashMap<>(4);
header.put("alg", "HS256");
header.put("typ", "JWT");
Algorithm algorithm = Algorithm.HMAC256(SECRET_KEY);
return JWT.create()
.withHeader(header)
.withClaim("content", content)
.withIssuedAt(new Date())
.withExpiresAt(new Date(System.currentTimeMillis() + (expireTime.intValue() * 1000)))
.sign(algorithm);
}

public static boolean verifyToken(String token) {
if (StringUtils.isEmpty(token)) {
throw new IllegalArgumentException("token");
}
Algorithm algorithm = Algorithm.HMAC256(SECRET_KEY);
JWTVerifier verifier = JWT.require(algorithm).build();
verifier.verify(token);
return true;
}

private static String parseJwtString(String token) {
if (StringUtils.isEmpty(token)) {
throw new IllegalArgumentException("token");
}
Algorithm algorithm = Algorithm.HMAC256(SECRET_KEY);
JWTVerifier verifier = JWT.require(algorithm).build();
return verifier.verify(token).getClaim("content").asString();
}

public static ZwddTokenUser parseJwt(String token) {
String dingUserJson = parseJwtString(token);
if (StringUtils.isEmpty(dingUserJson)) {
return null;
}
ZwddTokenUser dingTokenUser = (ZwddTokenUser) JSONObject.parseObject(dingUserJson, ZwddTokenUser.class);
return dingTokenUser;
}
}

+ 3
- 0
hz-pm-api/src/main/java/com/hz/pm/api/common/util/MDCUtil.java View File

@@ -12,6 +12,9 @@ import org.slf4j.MDC;
**/ **/
public class MDCUtil { public class MDCUtil {


private MDCUtil() {
}

public static final String TRACE_ID = "traceId"; public static final String TRACE_ID = "traceId";
public static final String TRACE_ID_HEADER = "Trace-Id"; public static final String TRACE_ID_HEADER = "Trace-Id";




+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/common/util/TreeUtil.java View File

@@ -46,7 +46,7 @@ public final class TreeUtil {
* @param treeList 待转换的集合 * @param treeList 待转换的集合
* @return 树结构 * @return 树结构
*/ */
public static <E extends MenuTreeEntity<E, ? extends Serializable>> List<E> buildTree(List<E> treeList) {
public static <E extends MenuTreeEntity<E>> List<E> buildTree(List<E> treeList) {
if (CollUtil.isEmpty(treeList)) { if (CollUtil.isEmpty(treeList)) {
return treeList; return treeList;
} }
@@ -71,7 +71,7 @@ public final class TreeUtil {
return trees; return trees;
} }


private static <E extends MenuTreeEntity<E, ? extends Serializable>>
private static <E extends MenuTreeEntity<E>>
void foreachNodes(List<E> treeList, List<Serializable> selfIdEqSelfParent) { void foreachNodes(List<E> treeList, List<Serializable> selfIdEqSelfParent) {
nodeMap = Maps.newConcurrentMap(); nodeMap = Maps.newConcurrentMap();
for (E parent : treeList) { for (E parent : treeList) {
@@ -98,7 +98,7 @@ public final class TreeUtil {
} }
} }


private static <E extends MenuTreeEntity<E, ? extends Serializable>> void foreachNodesWithTopMenu(List<E> treeList) {
private static <E extends MenuTreeEntity<E>> void foreachNodesWithTopMenu(List<E> treeList) {
for (E parent : treeList) { for (E parent : treeList) {
Serializable id = parent.getId(); Serializable id = parent.getId();
for (E children : treeList) { for (E children : treeList) {


+ 1
- 4
hz-pm-api/src/main/java/com/hz/pm/api/dashboard/manage/MeetingStatisticsManage.java View File

@@ -136,10 +136,7 @@ public class MeetingStatisticsManage {
data.setCode(region.getRegionCode()); data.setCode(region.getRegionCode());
data.setName(region.getRegionName()); data.setName(region.getRegionName());
//先求出 此区域会议 //先求出 此区域会议
List<Long> regionMeetingIds = meetings.stream().filter(m -> {

return Boolean.FALSE;
}).map(Meeting::getId).collect(Collectors.toList());
List<Long> regionMeetingIds = meetings.stream().filter(m -> Boolean.FALSE).map(Meeting::getId).collect(Collectors.toList());


List<ExpertReview> regionReviews = expertReviews.stream().filter(r -> { List<ExpertReview> regionReviews = expertReviews.stream().filter(r -> {
if (Objects.nonNull(r.getMeetingId()) && if (Objects.nonNull(r.getMeetingId()) &&


+ 1
- 2
hz-pm-api/src/main/java/com/hz/pm/api/dashboard/model/vo/PerformanceStatisticsVO.java View File

@@ -6,11 +6,10 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List; import java.util.List;


@Data @Data
@ApiModel(value = "绩效统计", description = "")
@ApiModel(value = "绩效统计")
public class PerformanceStatisticsVO implements Serializable { public class PerformanceStatisticsVO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;




+ 3
- 5
hz-pm-api/src/main/java/com/hz/pm/api/expert/assembler/ExpertAdminExpertManageAssembler.java View File

@@ -2,19 +2,17 @@ package com.hz.pm.api.expert.assembler;


import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.hz.pm.api.common.helper.RegionCacheHelper;
import com.hz.pm.api.expert.model.DictFieldInfoDTO; import com.hz.pm.api.expert.model.DictFieldInfoDTO;
import com.hz.pm.api.expert.model.TagFieldInfo;
import com.hz.pm.api.expert.model.dto.ExpertAdminExpertListDTO; import com.hz.pm.api.expert.model.dto.ExpertAdminExpertListDTO;
import com.hz.pm.api.expert.model.vo.ExpertLibraryListItemVO; import com.hz.pm.api.expert.model.vo.ExpertLibraryListItemVO;
import com.hz.pm.api.meta.helper.DictionaryCache; import com.hz.pm.api.meta.helper.DictionaryCache;
import com.hz.pm.api.meta.helper.impl.TagsCacheImpl;
import com.hz.pm.api.meta.model.dto.DictionaryDTO; import com.hz.pm.api.meta.model.dto.DictionaryDTO;
import com.hz.pm.api.meta.model.dto.TagDTO;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;


import java.util.*;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;


/** /**


+ 0
- 29
hz-pm-api/src/main/java/com/hz/pm/api/expert/assembler/TagAssembler.java View File

@@ -1,29 +0,0 @@
package com.hz.pm.api.expert.assembler;

import cn.hutool.core.collection.CollectionUtil;
import com.hz.pm.api.expert.model.TagFieldInfo;
import com.hz.pm.api.meta.model.entity.ExpertTag;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
* @author liuxinxin
* @date 2022/7/25 下午4:30
*/

public class TagAssembler {

public static List<TagFieldInfo> toTagFieldInfoList(List<ExpertTag> expertTagList) {
if (CollectionUtil.isEmpty(expertTagList)) {
return new ArrayList<>();
}
return expertTagList.stream().map(r -> {
TagFieldInfo dictionaryFieldInfo = new TagFieldInfo();
dictionaryFieldInfo.setTagFieldName(r.getExpertInfoField());
dictionaryFieldInfo.setTagCode(r.getTagCode());
return dictionaryFieldInfo;
}).collect(Collectors.toList());
}
}

+ 0
- 3
hz-pm-api/src/main/java/com/hz/pm/api/expert/controller/ExpertController.java View File

@@ -16,12 +16,9 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;


import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.IOException;


/** /**
* <p> * <p>


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/expert/manage/ExpertMetaApplyManage.java View File

@@ -37,7 +37,6 @@ import com.hz.pm.api.meta.model.bo.RegionContainsBO;
import com.hz.pm.api.meta.model.dto.DictionaryDTO; import com.hz.pm.api.meta.model.dto.DictionaryDTO;
import com.hz.pm.api.meta.model.entity.ExpertDictionary; import com.hz.pm.api.meta.model.entity.ExpertDictionary;
import com.hz.pm.api.meta.service.IExpertDictionaryService; import com.hz.pm.api.meta.service.IExpertDictionaryService;
import com.hz.pm.api.sys.model.dto.RegionDTO;
import com.hz.pm.api.user.util.LoginUserUtil; import com.hz.pm.api.user.util.LoginUserUtil;
import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.model.PageVo;


+ 2
- 6
hz-pm-api/src/main/java/com/hz/pm/api/expert/service/impl/ExpertAdminManageServiceImpl.java View File

@@ -1,14 +1,11 @@
package com.hz.pm.api.expert.service.impl; package com.hz.pm.api.expert.service.impl;


import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.expert.entity.ExpertUserFullInfo;
import com.ningdatech.basic.util.CollUtils;
import com.hz.pm.api.common.model.CommonPage; import com.hz.pm.api.common.model.CommonPage;
import com.hz.pm.api.expert.assembler.ExpertUserInfoAssembler; import com.hz.pm.api.expert.assembler.ExpertUserInfoAssembler;
import com.hz.pm.api.expert.constant.ExpertAccountStatusEnum; import com.hz.pm.api.expert.constant.ExpertAccountStatusEnum;
import com.hz.pm.api.expert.entity.ExpertUserFullInfo;
import com.hz.pm.api.expert.mapper.ExpertAdminManageMapper; import com.hz.pm.api.expert.mapper.ExpertAdminManageMapper;
import com.hz.pm.api.expert.model.cmd.ExpertAdminExpertManageQueryCmd; import com.hz.pm.api.expert.model.cmd.ExpertAdminExpertManageQueryCmd;
import com.hz.pm.api.expert.model.dto.ExpertAdminExpertListDTO; import com.hz.pm.api.expert.model.dto.ExpertAdminExpertListDTO;
@@ -18,16 +15,15 @@ import com.hz.pm.api.expert.model.query.ListExpertQuery;
import com.hz.pm.api.expert.service.ExpertAdminManageService; import com.hz.pm.api.expert.service.ExpertAdminManageService;
import com.hz.pm.api.expert.service.IExpertUserFullInfoService; import com.hz.pm.api.expert.service.IExpertUserFullInfoService;
import com.hz.pm.api.meta.model.entity.ExpertDictionary; import com.hz.pm.api.meta.model.entity.ExpertDictionary;
import com.hz.pm.api.meta.model.entity.ExpertTag;
import com.hz.pm.api.meta.service.IExpertDictionaryService; import com.hz.pm.api.meta.service.IExpertDictionaryService;
import com.hz.pm.api.meta.service.IExpertTagService; import com.hz.pm.api.meta.service.IExpertTagService;
import com.ningdatech.basic.util.CollUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;


import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;


/** /**
* @author liuxinxin * @author liuxinxin


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/external/controller/MhSyncController.java View File

@@ -1,6 +1,5 @@
package com.hz.pm.api.external.controller; package com.hz.pm.api.external.controller;


import com.hz.pm.api.external.MhApiClient;
import com.hz.pm.api.user.manage.SyncMhUserOrgManage; import com.hz.pm.api.user.manage.SyncMhUserOrgManage;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;


+ 0
- 4
hz-pm-api/src/main/java/com/hz/pm/api/external/model/dto/MhTechExpertDTO.java View File

@@ -1,12 +1,8 @@
package com.hz.pm.api.external.model.dto; package com.hz.pm.api.external.model.dto;


import cn.hutool.core.collection.CollUtil;
import lombok.Data; import lombok.Data;


import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;


/** /**
* <p> * <p>


+ 1
- 2
hz-pm-api/src/main/java/com/hz/pm/api/filemanage/manage/ProjectFileManage.java View File

@@ -525,8 +525,7 @@ public class ProjectFileManage {


private List<Long> getFileIdList(String buildBasis) { private List<Long> getFileIdList(String buildBasis) {
List<JSONObject> prePlanFileArray = JSON.parseArray(buildBasis, JSONObject.class); List<JSONObject> prePlanFileArray = JSON.parseArray(buildBasis, JSONObject.class);
List<Long> prePlanFileIdList = CollUtils.fieldList(prePlanFileArray, w -> w.getLong(CommonConst.ID_STR));
return prePlanFileIdList;
return CollUtils.fieldList(prePlanFileArray, w -> w.getLong(CommonConst.ID_STR));
} }


/** /**


+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/filemanage/model/entity/ProjectApplyBorrow.java View File

@@ -19,7 +19,7 @@ import lombok.Data;
*/ */
@Data @Data
@TableName("nd_project_apply_borrow") @TableName("nd_project_apply_borrow")
@ApiModel(value = "NdProjectApplyBorrow对象", description = "")
@ApiModel(value = "NdProjectApplyBorrow对象")
public class ProjectApplyBorrow implements Serializable { public class ProjectApplyBorrow implements Serializable {


private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;


+ 0
- 2
hz-pm-api/src/main/java/com/hz/pm/api/filemanage/model/vo/ProjectFileVO.java View File

@@ -1,6 +1,5 @@
package com.hz.pm.api.filemanage.model.vo; package com.hz.pm.api.filemanage.model.vo;


import com.hz.pm.api.expert.model.vo.ExpertReviewDetailVO;
import com.hz.pm.api.expert.model.vo.ProjectReviewDetailVO; import com.hz.pm.api.expert.model.vo.ProjectReviewDetailVO;
import com.hz.pm.api.projectdeclared.model.vo.ContractVO; import com.hz.pm.api.projectdeclared.model.vo.ContractVO;
import com.hz.pm.api.projectdeclared.model.vo.FinalAcceptanceVO; import com.hz.pm.api.projectdeclared.model.vo.FinalAcceptanceVO;
@@ -12,7 +11,6 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import java.time.LocalDateTime;
import java.util.List; import java.util.List;


/** /**


+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/gov/utils/ProjectConvertUtil.java View File

@@ -240,7 +240,7 @@ public class ProjectConvertUtil {
if(CollUtil.isNotEmpty(purchases)){ if(CollUtil.isNotEmpty(purchases)){
purchases.stream().map(PurchaseVO::getTransactionAmount) purchases.stream().map(PurchaseVO::getTransactionAmount)
.filter(Objects::nonNull).reduce(BigDecimal::add) .filter(Objects::nonNull).reduce(BigDecimal::add)
.ifPresent(j -> approve.setReleaseYearMoney(j));
.ifPresent(approve::setReleaseYearMoney);


} }
return approve; return approve;


+ 2
- 3
hz-pm-api/src/main/java/com/hz/pm/api/irs/controller/IrsController.java View File

@@ -1,11 +1,10 @@
package com.hz.pm.api.irs.controller; package com.hz.pm.api.irs.controller;


import com.ningdatech.log.annotation.WebLog;
import com.hz.pm.api.irs.model.dto.ForwardDTO;
import com.hz.pm.api.projectdeclared.manage.IrsManage; import com.hz.pm.api.projectdeclared.manage.IrsManage;
import com.hz.pm.api.projectdeclared.model.vo.IrsApplicationVO; import com.hz.pm.api.projectdeclared.model.vo.IrsApplicationVO;
import com.hz.pm.api.projectdeclared.model.vo.PiotTasksVO; import com.hz.pm.api.projectdeclared.model.vo.PiotTasksVO;
import com.hz.pm.api.scheduler.task.SynProjectCoreBizTask; import com.hz.pm.api.scheduler.task.SynProjectCoreBizTask;
import com.ningdatech.log.annotation.WebLog;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -56,7 +55,7 @@ public class IrsController {


@ApiOperation(value = "获取企业社会信用编码", notes = "获取企业社会信用编码") @ApiOperation(value = "获取企业社会信用编码", notes = "获取企业社会信用编码")
@GetMapping("/get-credit-code") @GetMapping("/get-credit-code")
public String getCreditCode() throws NoSuchAlgorithmException, UnsupportedEncodingException {
public String getCreditCode() throws NoSuchAlgorithmException {
return irsManage.getCreditCode(); return irsManage.getCreditCode();
} }




+ 4
- 5
hz-pm-api/src/main/java/com/hz/pm/api/irs/controller/IrsProjectController.java View File

@@ -1,18 +1,17 @@
package com.hz.pm.api.irs.controller; package com.hz.pm.api.irs.controller;


import com.ningdatech.basic.model.PageVo;
import com.hz.pm.api.dashboard.model.vo.ProtraitProjectOutputVO;
import com.hz.pm.api.irs.manage.IrsProjectManage; import com.hz.pm.api.irs.manage.IrsProjectManage;
import com.hz.pm.api.projectlib.model.req.ProjectListReq; import com.hz.pm.api.projectlib.model.req.ProjectListReq;
import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO;
import com.ningdatech.basic.model.PageVo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


/** /**
* @Classname IrsController * @Classname IrsController


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/irs/manage/AppIrsManage.java View File

@@ -8,7 +8,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.common.model.constant.RegionConst; import com.hz.pm.api.common.model.constant.RegionConst;
import com.hz.pm.api.common.enumeration.CommonEnum; import com.hz.pm.api.common.enumeration.CommonEnum;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.common.util.CryptUtils; import com.hz.pm.api.common.util.CryptUtils;
import com.hz.pm.api.common.util.HttpUtil; import com.hz.pm.api.common.util.HttpUtil;
import com.hz.pm.api.irs.model.dto.ApiApplyDTO; import com.hz.pm.api.irs.model.dto.ApiApplyDTO;
@@ -54,7 +54,7 @@ public class AppIrsManage {


private final IProjectApplicationService applicationService; private final IProjectApplicationService applicationService;


private final StateMachineUtils stateMachineUtils;
private final StateMachineUtil stateMachineUtil;


@Value("${irs.push-app.appKey}") @Value("${irs.push-app.appKey}")
private String pushAppKey; private String pushAppKey;
@@ -172,7 +172,7 @@ public class AppIrsManage {


//如果筛选出来的 为空的话 就调用状态机 //如果筛选出来的 为空的话 就调用状态机
if (CollUtil.isEmpty(apps)) { if (CollUtil.isEmpty(apps)) {
stateMachineUtils.pass(project);
stateMachineUtil.pass(project);
project.setUpdateOn(LocalDateTime.now()); project.setUpdateOn(LocalDateTime.now());
projectService.updateById(project); projectService.updateById(project);
} }


+ 1
- 4
hz-pm-api/src/main/java/com/hz/pm/api/irs/manage/IrsProjectManage.java View File

@@ -66,10 +66,7 @@ public class IrsProjectManage {
if(CollUtil.isEmpty(page.getRecords())){ if(CollUtil.isEmpty(page.getRecords())){
return PageVo.empty(); return PageVo.empty();
} }
List<ProjectLibListItemVO> res = page.getRecords().stream().map(p -> {
ProjectLibListItemVO vo = BeanUtil.copyProperties(p,ProjectLibListItemVO.class);
return vo;
}).collect(Collectors.toList());
List<ProjectLibListItemVO> res = page.getRecords().stream().map(p -> BeanUtil.copyProperties(p,ProjectLibListItemVO.class)).collect(Collectors.toList());
return PageVo.of(res,page.getTotal()); return PageVo.of(res,page.getTotal());
} }




+ 0
- 3
hz-pm-api/src/main/java/com/hz/pm/api/leave/manage/LeaveManage.java View File

@@ -15,10 +15,8 @@ import com.hz.pm.api.common.util.StrUtils;
import com.hz.pm.api.expert.constant.ExpertApplyStatusEnum; import com.hz.pm.api.expert.constant.ExpertApplyStatusEnum;
import com.hz.pm.api.expert.constant.ExpertApplyTypeEnum; import com.hz.pm.api.expert.constant.ExpertApplyTypeEnum;
import com.hz.pm.api.expert.entity.ExpertMetaApply; import com.hz.pm.api.expert.entity.ExpertMetaApply;
import com.hz.pm.api.expert.entity.ExpertUserFullInfo;
import com.hz.pm.api.expert.model.dto.ModifyApplyExtraInfoDTO; import com.hz.pm.api.expert.model.dto.ModifyApplyExtraInfoDTO;
import com.hz.pm.api.expert.service.IExpertMetaApplyService; import com.hz.pm.api.expert.service.IExpertMetaApplyService;
import com.hz.pm.api.expert.service.IExpertUserFullInfoService;
import com.hz.pm.api.leave.entity.domain.ExpertLeave; import com.hz.pm.api.leave.entity.domain.ExpertLeave;
import com.hz.pm.api.leave.entity.domain.ExpertLeaveDetail; import com.hz.pm.api.leave.entity.domain.ExpertLeaveDetail;
import com.hz.pm.api.leave.entity.enumeration.LeaveStatusEnum; import com.hz.pm.api.leave.entity.enumeration.LeaveStatusEnum;
@@ -77,7 +75,6 @@ public class LeaveManage {
private final IExpertLeaveDetailService leaveDetailService; private final IExpertLeaveDetailService leaveDetailService;
private final IExpertMetaApplyService metaApplyService; private final IExpertMetaApplyService metaApplyService;
private final FileService fileService; private final FileService fileService;
private final IExpertUserFullInfoService userFullInfoService;
private final MeetingCallOrMsgHelper meetingCallOrMsgHelper; private final MeetingCallOrMsgHelper meetingCallOrMsgHelper;


private static final int HOURS_BEFORE_MEETING = 2; private static final int HOURS_BEFORE_MEETING = 2;


+ 0
- 129
hz-pm-api/src/main/java/com/hz/pm/api/meeting/builder/YxtSmsContextBuilder.java View File

@@ -1,129 +0,0 @@
//package com.hz.pm.api.meeting.builder;
//
//
//import com.hz.pm.api.meeting.entity.domain.Meeting;
//import com.hz.pm.api.meeting.entity.domain.MeetingExpert;
//import com.hz.pm.api.sms.utils.DateUtil;
//
//import java.time.format.DateTimeFormatter;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * <p>
// * YxtSmsContextBuilder
// * </p>
// *
// * @author WendyYang
// * @since 14:19 2022/11/17
// */
//public class YxtSmsContextBuilder {
//
// private YxtSmsContextBuilder() {
// }
//
// public static List<SendSmsContext> smsToExpertByCancelMeeting(Meeting meeting, List<MeetingExpert> experts, String meetingType) {
// String holdCompany = meeting.getHoldCompanyBracket();
// String meetingTime = meeting.getStartTime().format(DateUtil.DTF_YMD_HM);
// List<SendSmsContext> contexts = new ArrayList<>();
// for (MeetingExpert me : experts) {
// SendSmsContext context = new SendSmsContext();
// context.setContent(holdCompany + String.format(YxtSmsTemplateConst.MEETING_CANCEL,
// me.getExpertName(), meeting.getCancelRemark(), meetingTime, meetingType, meeting.getContact()));
// context.setReceiveNumber(me.getMobile());
// contexts.add(context);
// }
// return contexts;
// }
//
// public static List<SendSmsContext> smsToExpertBySendNotice(Meeting meeting, List<MeetingExpert> experts, String meetingType) {
// String holdCompany = meeting.getHoldCompanyBracket();
// String meetingTime = meeting.getStartTime().format(DateUtil.DTF_YMD_HM);
// List<SendSmsContext> contexts = new ArrayList<>();
// for (MeetingExpert me : experts) {
// SendSmsContext context = new SendSmsContext();
// context.setContent(holdCompany + String.format(YxtSmsTemplateConst.SEND_MEETING_NOTICE,
// me.getExpertName(), me.getUpdateOn().format(DateUtil.DTF_YMD_HM),
// meetingType, meetingTime, meeting.getRegionDetail(), meeting.getContact()));
// context.setReceiveNumber(me.getMobile());
// contexts.add(context);
// }
// return contexts;
// }
//
// public static SendSmsContext smsToExpertByReplace(Meeting meeting, MeetingExpert expert, String meetingType) {
// SendSmsContext context = new SendSmsContext();
// String holdCompany = meeting.getHoldCompanyBracket();
// context.setContent(holdCompany + String.format(YxtSmsTemplateConst.EXPERT_REPLACED,
// expert.getExpertName(),
// meeting.getStartTime().format(DateUtil.DTF_YMD_HM),
// meetingType,
// meeting.getContact()
// ));
// context.setReceiveNumber(expert.getMobile());
// return context;
// }
//
// public static List<SendSmsContext> smsToExpertByMeetingChange(Meeting old, Meeting curr, List<MeetingExpert> experts, String meetingType) {
// List<SendSmsContext> contexts = new ArrayList<>();
// String holdCompany = curr.getHoldCompanyBracket();
// String sTimeOld = old.getStartTime().format(DateUtil.DTF_YMD_HM);
// String sTimeNew = curr.getStartTime().format(DateUtil.DTF_YMD_HM);
// for (MeetingExpert me : experts) {
// SendSmsContext context = new SendSmsContext();
// String content = String.format(YxtSmsTemplateConst.MEETING_INGO_CHANGE, me.getExpertName(),
// sTimeOld, meetingType, sTimeNew, curr.getRegionDetail(), curr.getContact());
// context.setContent(holdCompany + content);
// context.setReceiveNumber(me.getMobile());
// contexts.add(context);
// }
// return contexts;
// }
//
// public static SendSmsContext smsToInvitorByExpertLeave(UserBasicInfo invitor, String meetingName, String expertName) {
// SendSmsContext context = new SendSmsContext();
// context.setReceiveNumber(invitor.getPhoneNo());
// context.setContent(String.format(YxtSmsTemplateConst.TEMP_LEAVE_APPLY, invitor.getNickName(),
// meetingName, expertName, WebProperties.webUrl));
// return context;
// }
//
// public static SendSmsContext smsToExpertByLeavePassed(ExpertLeave leave, String leaveUser, String mobile) {
// String smsContent = String.format(YxtSmsTemplateConst.LEAVE_APPLY_PASSED, leaveUser,
// leave.getStartTime().format(DateTimeFormatter.ofPattern(DatePattern.YMD_HMS)),
// leave.getEndTime().format(DateTimeFormatter.ofPattern(DatePattern.YMD_HMS)));
// SendSmsContext context = new SendSmsContext();
// context.setContent(smsContent);
// context.setReceiveNumber(mobile);
// return context;
// }
//
// public static SendSmsContext smsToExpertBtLeaveReject(String leaveUser, String mobile, String opinion) {
// String smsContent = String.format(YxtSmsTemplateConst.LEAVE_APPLY_REFUSED, leaveUser, opinion);
// SendSmsContext context = new SendSmsContext();
// context.setContent(smsContent);
// context.setReceiveNumber(mobile);
// return context;
// }
//
// public static SendSmsContext smsByRandomInviteStop(String inviterName, String meetingName, String mobile) {
// String smsContent = String.format(YxtSmsTemplateConst.RANDOM_INVITE_STOP,
// inviterName, meetingName, WebProperties.webUrl
// );
// SendSmsContext context = new SendSmsContext();
// context.setContent(smsContent);
// context.setReceiveNumber(mobile);
// return context;
// }
//
//
// public static SendSmsContext meetingInviteCompleteNotice(Meeting meeting) {
// String smsContent = String.format(YxtSmsTemplateConst.RANDOM_EXTRACTION_COMPLETED,
// meeting.getConnecter(), meeting.getName(), WebProperties.webUrl
// );
// SendSmsContext context = new SendSmsContext();
// context.setContent(smsContent);
// context.setReceiveNumber(meeting.getContact());
// return context;
// }
//}

+ 0
- 2
hz-pm-api/src/main/java/com/hz/pm/api/meeting/controller/MeetingExpertJudgeController.java View File

@@ -10,8 +10,6 @@ import lombok.AllArgsConstructor;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;


import javax.validation.Valid;

/** /**
* <p> * <p>
* 前端控制器 * 前端控制器


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/domain/MeetingExpertJudge.java View File

@@ -1,7 +1,6 @@
package com.hz.pm.api.meeting.entity.domain; package com.hz.pm.api.meeting.entity.domain;


import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/dto/ExpertIdFilterDTO.java View File

@@ -2,7 +2,6 @@ package com.hz.pm.api.meeting.entity.dto;


import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.RequiredArgsConstructor;


import java.util.List; import java.util.List;




+ 0
- 2
hz-pm-api/src/main/java/com/hz/pm/api/meeting/entity/vo/MeetingByManagerVO.java View File

@@ -3,9 +3,7 @@ package com.hz.pm.api.meeting.entity.vo;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.experimental.Tolerate;


import java.time.LocalDateTime; import java.time.LocalDateTime;




+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/meeting/helper/MeetingManageHelper.java View File

@@ -31,7 +31,6 @@ import com.hz.pm.api.meeting.service.IMeetingExpertService;
import com.hz.pm.api.meta.constant.ExpertDictTypeEnum; import com.hz.pm.api.meta.constant.ExpertDictTypeEnum;
import com.hz.pm.api.meta.helper.DictionaryCache; import com.hz.pm.api.meta.helper.DictionaryCache;
import com.hz.pm.api.meta.model.dto.DictionaryDTO; import com.hz.pm.api.meta.model.dto.DictionaryDTO;
import com.hz.pm.api.sys.model.dto.RegionDTO;
import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.CollUtils;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;


+ 4
- 4
hz-pm-api/src/main/java/com/hz/pm/api/meeting/helper/YxtCallOrSmsHelper.java View File

@@ -34,10 +34,10 @@ public class YxtCallOrSmsHelper {
} }


public void sendSms(List<SendSmsContext> smsList) { public void sendSms(List<SendSmsContext> smsList) {
yxtClient.submitSmsTask(new SendSmsCmd() {{
setContextList(smsList);
setSmsSignEnum(YxtSmsSignEnum.LS_BIG_DATA_BUREAU);
}});
SendSmsCmd cmd = new SendSmsCmd();
cmd.setContextList(smsList);
cmd.setSmsSignEnum(YxtSmsSignEnum.LS_BIG_DATA_BUREAU);
yxtClient.submitSmsTask(cmd);
} }


public void sendSms(SendSmsContext sms) { public void sendSms(SendSmsContext sms) {


+ 22
- 15
hz-pm-api/src/main/java/com/hz/pm/api/meta/assembler/MetaTagAssembler.java View File

@@ -7,34 +7,41 @@ import com.hz.pm.api.meta.model.vo.ResTagTreeVO;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;


import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;


/** /**
* @author liuxinxin
* @date 2022/7/22 上午9:57
* <p>
* MetaTagAssembler
* </p>
*
* @author WendyYang
* @since 17:06 2024/1/8
*/ */

public class MetaTagAssembler { public class MetaTagAssembler {


public static TagDTO toTagDTO(MetaTag metaTagManage) {
private MetaTagAssembler() {
}

public static TagDTO convert(MetaTag metaTag) {
TagDTO tagDTO = new TagDTO(); TagDTO tagDTO = new TagDTO();
tagDTO.setParentCode(metaTagManage.getParentCode());
tagDTO.setTagCode(metaTagManage.getTagCode());
tagDTO.setTagLevel(metaTagManage.getTagLevel());
tagDTO.setTagName(metaTagManage.getTagName());
tagDTO.setParentCode(metaTag.getParentCode());
tagDTO.setTagCode(metaTag.getTagCode());
tagDTO.setTagLevel(metaTag.getTagLevel());
tagDTO.setTagName(metaTag.getTagName());
return tagDTO; return tagDTO;
} }


public static List<TagTreeDTO> toTagTreeDTOList(List<TagDTO> tagDTOList) {
if (CollectionUtils.isEmpty(tagDTOList)) {
return new ArrayList<>();
public static List<TagTreeDTO> convert(List<TagDTO> tagList) {
if (CollectionUtils.isEmpty(tagList)) {
return Collections.emptyList();
} }
return tagDTOList.stream().map(MetaTagAssembler::toTagTreeDTO).collect(Collectors.toList());
return tagList.stream().map(MetaTagAssembler::convert).collect(Collectors.toList());


} }


public static TagTreeDTO toTagTreeDTO(TagDTO tagDTO) {
public static TagTreeDTO convert(TagDTO tagDTO) {
TagTreeDTO tagTreeDTO = new TagTreeDTO(); TagTreeDTO tagTreeDTO = new TagTreeDTO();
tagTreeDTO.setParentCode(tagDTO.getParentCode()); tagTreeDTO.setParentCode(tagDTO.getParentCode());
tagTreeDTO.setTagCode(tagDTO.getTagCode()); tagTreeDTO.setTagCode(tagDTO.getTagCode());
@@ -43,7 +50,7 @@ public class MetaTagAssembler {
return tagTreeDTO; return tagTreeDTO;
} }


public static List<ResTagTreeVO> toTagTreeVOList(List<TagTreeDTO> tagTreeDTOList) {
public static List<ResTagTreeVO> to(List<TagTreeDTO> tagTreeDTOList) {
List<ResTagTreeVO> resTagTreeVOList = new ArrayList<>(); List<ResTagTreeVO> resTagTreeVOList = new ArrayList<>();
for (TagTreeDTO tagTreeDTO : tagTreeDTOList) { for (TagTreeDTO tagTreeDTO : tagTreeDTOList) {
ResTagTreeVO resTagTreeVO = new ResTagTreeVO(); ResTagTreeVO resTagTreeVO = new ResTagTreeVO();
@@ -53,7 +60,7 @@ public class MetaTagAssembler {
resTagTreeVO.setTagCode(tagTreeDTO.getTagCode()); resTagTreeVO.setTagCode(tagTreeDTO.getTagCode());
resTagTreeVO.setUnionCode(tagTreeDTO.getTagName() + "##" + tagTreeDTO.getTagCode()); resTagTreeVO.setUnionCode(tagTreeDTO.getTagName() + "##" + tagTreeDTO.getTagCode());
if (CollectionUtils.isNotEmpty(tagTreeDTO.getChildren())) { if (CollectionUtils.isNotEmpty(tagTreeDTO.getChildren())) {
resTagTreeVO.setChildren(toTagTreeVOList(tagTreeDTO.getChildren()));
resTagTreeVO.setChildren(to(tagTreeDTO.getChildren()));
} }
resTagTreeVOList.add(resTagTreeVO); resTagTreeVOList.add(resTagTreeVO);
} }


+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/meta/helper/basic/AbstractTagsCache.java View File

@@ -51,7 +51,7 @@ public abstract class AbstractTagsCache implements InitializingBean, TagCache {
// 查询全部 // 查询全部
List<TagDTO> tags = metaTagService.queryLeLevel(Integer.parseInt(key)); List<TagDTO> tags = metaTagService.queryLeLevel(Integer.parseInt(key));
putToTagMap(tags); putToTagMap(tags);
return toTree(MetaTagAssembler.toTagTreeDTOList(tags));
return toTree(MetaTagAssembler.convert(tags));
} }


@Override @Override
@@ -75,7 +75,7 @@ public abstract class AbstractTagsCache implements InitializingBean, TagCache {
List<TagDTO> tagsByLevel = allTags.stream() List<TagDTO> tagsByLevel = allTags.stream()
.filter(w -> w.getTagLevel() <= currLevel) .filter(w -> w.getTagLevel() <= currLevel)
.collect(Collectors.toList()); .collect(Collectors.toList());
mapByKeys.put(String.valueOf(currLevel), toTree(MetaTagAssembler.toTagTreeDTOList(tagsByLevel)));
mapByKeys.put(String.valueOf(currLevel), toTree(MetaTagAssembler.convert(tagsByLevel)));
}); });
return mapByKeys; return mapByKeys;
} }


+ 8
- 8
hz-pm-api/src/main/java/com/hz/pm/api/meta/manage/MetaManage.java View File

@@ -119,24 +119,24 @@ public class MetaManage {
tagTreeDTOList.add(tagTreeDTO); tagTreeDTOList.add(tagTreeDTO);
} }
} }
return MetaTagAssembler.toTagTreeVOList(tagTreeDTOList);
return MetaTagAssembler.to(tagTreeDTOList);
} }




/** /**
* 专家管理员才能调用 * 专家管理员才能调用
* *
* @param reqAddDictionaryPO
* @param req \
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void addDictionary(ReqAddDictionaryPO reqAddDictionaryPO) {
String dictionaryType = reqAddDictionaryPO.getDictionaryType();
public void addDictionary(ReqAddDictionaryPO req) {
String dictionaryType = req.getDictionaryType();
boolean contains = ExpertDictTypeEnum.contains(dictionaryType); boolean contains = ExpertDictTypeEnum.contains(dictionaryType);
if (!contains) { if (!contains) {
throw BizException.wrap("无效的专家字典类型:%s", dictionaryType); throw BizException.wrap("无效的专家字典类型:%s", dictionaryType);
} }
String name = reqAddDictionaryPO.getName();
Integer sortValue = reqAddDictionaryPO.getSortValue();
String name = req.getName();
Integer sortValue = req.getSortValue();
LambdaQueryWrapper<MetaDictionary> eq = Wrappers.lambdaQuery(MetaDictionary.class).eq(MetaDictionary::getDictionaryType, dictionaryType); LambdaQueryWrapper<MetaDictionary> eq = Wrappers.lambdaQuery(MetaDictionary.class).eq(MetaDictionary::getDictionaryType, dictionaryType);
List<MetaDictionary> dictionaryManageList = metaDictionaryManageService.list(eq); List<MetaDictionary> dictionaryManageList = metaDictionaryManageService.list(eq);


@@ -232,8 +232,8 @@ public class MetaManage {
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }


public List<ResTagListVO> tagQuery(ReqTagQueryPO reqTagQueryPO) {
String parentCode = reqTagQueryPO.getParentCode();
public List<ResTagListVO> tagQuery(ReqTagQueryPO req) {
String parentCode = req.getParentCode();
if (StringUtils.isBlank(parentCode)) { if (StringUtils.isBlank(parentCode)) {
parentCode = TagConst.TAG_ROOT_PARENT_CODE; parentCode = TagConst.TAG_ROOT_PARENT_CODE;
} }


+ 3
- 4
hz-pm-api/src/main/java/com/hz/pm/api/meta/service/impl/MetaDictionaryServiceImpl.java View File

@@ -1,17 +1,16 @@
package com.hz.pm.api.meta.service.impl; package com.hz.pm.api.meta.service.impl;


import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hz.pm.api.meta.model.entity.MetaDictionary;
import com.hz.pm.api.meta.mapper.MetaDictionaryMapper;
import com.hz.pm.api.meta.service.IMetaDictionaryService;
import com.hz.pm.api.meta.assembler.MetaDictionaryAssembler; import com.hz.pm.api.meta.assembler.MetaDictionaryAssembler;
import com.hz.pm.api.meta.mapper.MetaDictionaryMapper;
import com.hz.pm.api.meta.model.dto.DictionaryDTO; import com.hz.pm.api.meta.model.dto.DictionaryDTO;
import com.hz.pm.api.meta.model.entity.MetaDictionary;
import com.hz.pm.api.meta.service.IMetaDictionaryService;
import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.CollUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;


import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;


/** /**
* <p> * <p>


+ 3
- 4
hz-pm-api/src/main/java/com/hz/pm/api/meta/service/impl/MetaTagServiceImpl.java View File

@@ -2,15 +2,14 @@ package com.hz.pm.api.meta.service.impl;


import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.hz.pm.api.meta.assembler.MetaTagAssembler; import com.hz.pm.api.meta.assembler.MetaTagAssembler;
import com.hz.pm.api.meta.model.entity.MetaTag;
import com.hz.pm.api.meta.mapper.MetaTagMapper; import com.hz.pm.api.meta.mapper.MetaTagMapper;
import com.hz.pm.api.meta.model.dto.TagDTO; import com.hz.pm.api.meta.model.dto.TagDTO;
import com.hz.pm.api.meta.model.entity.MetaTag;
import com.hz.pm.api.meta.service.IMetaTagService; import com.hz.pm.api.meta.service.IMetaTagService;
import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.CollUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;


import java.util.List; import java.util.List;
import java.util.stream.Collectors;


/** /**
* <p> * <p>
@@ -27,7 +26,7 @@ public class MetaTagServiceImpl extends ServiceImpl<MetaTagMapper, MetaTag> impl
@Override @Override
public List<TagDTO> queryAll() { public List<TagDTO> queryAll() {
List<MetaTag> allTags = this.lambdaQuery().ne(MetaTag::getId, -1).list(); List<MetaTag> allTags = this.lambdaQuery().ne(MetaTag::getId, -1).list();
return CollUtils.convert(allTags, MetaTagAssembler::toTagDTO);
return CollUtils.convert(allTags, MetaTagAssembler::convert);
} }


@Override @Override
@@ -36,7 +35,7 @@ public class MetaTagServiceImpl extends ServiceImpl<MetaTagMapper, MetaTag> impl
.ne(MetaTag::getId, -1) .ne(MetaTag::getId, -1)
.le(MetaTag::getTagLevel, level) .le(MetaTag::getTagLevel, level)
.list(); .list();
return CollUtils.convert(allTags, MetaTagAssembler::toTagDTO);
return CollUtils.convert(allTags, MetaTagAssembler::convert);
} }






+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/organization/manage/OrganizationManage.java View File

@@ -95,8 +95,8 @@ public class OrganizationManage {
} }


public List<OrganizationTreeVO> getChildOrganizationList(String parentCode, String orgName, Boolean onlyUnit) { public List<OrganizationTreeVO> getChildOrganizationList(String parentCode, String orgName, Boolean onlyUnit) {
List<String> parentCodeList = new ArrayList<>();
List<DingOrganization> dingOrganizationList = new ArrayList<>();
List<String> parentCodeList;
List<DingOrganization> dingOrganizationList;
if (StrUtils.isBlank(parentCode)) { if (StrUtils.isBlank(parentCode)) {
parentCodeList = dingOrganizationProperties.getDeptVisibleScopes(); parentCodeList = dingOrganizationProperties.getDeptVisibleScopes();
dingOrganizationList = iDingOrganizationService.list(Wrappers.lambdaQuery(DingOrganization.class) dingOrganizationList = iDingOrganizationService.list(Wrappers.lambdaQuery(DingOrganization.class)


+ 0
- 3
hz-pm-api/src/main/java/com/hz/pm/api/organization/model/vo/OrganizationSynthesizeTreeVO.java View File

@@ -24,9 +24,6 @@ public class OrganizationSynthesizeTreeVO {
@ApiModelProperty("名称") @ApiModelProperty("名称")
private String name; private String name;


// @ApiModelProperty("自己组织列表")
// private List<OrganizationSynthesizeTreeVO> childOrganizationList;

@ApiModelProperty("组织下成员列表") @ApiModelProperty("组织下成员列表")
private List<OrganizationMemberInfo> memberList; private List<OrganizationMemberInfo> memberList;




+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/organization/model/vo/OrganizationTreeVO.java View File

@@ -37,5 +37,5 @@ public class OrganizationTreeVO {
// private Boolean isLeaf; // private Boolean isLeaf;
// //
@ApiModelProperty(value = "社会同一信用代码") @ApiModelProperty(value = "社会同一信用代码")
private String unifiedSocialCreditCode;;
private String unifiedSocialCreditCode;
} }

+ 3
- 4
hz-pm-api/src/main/java/com/hz/pm/api/performance/convert/PerformanceAppraisalConveter.java View File

@@ -86,11 +86,10 @@ public class PerformanceAppraisalConveter {
*/ */
public static Boolean checkCanSelfAppraisal(PerformanceAppraisalProject appraisalProject) { public static Boolean checkCanSelfAppraisal(PerformanceAppraisalProject appraisalProject) {
if (Objects.nonNull(appraisalProject.getSelfAppraisalStart()) if (Objects.nonNull(appraisalProject.getSelfAppraisalStart())
&& Objects.nonNull(appraisalProject.getSelfAppraisalEnd())) {
if (LocalDateTime.now().compareTo(appraisalProject.getSelfAppraisalStart()) > 0 &&
LocalDateTime.now().compareTo(appraisalProject.getSelfAppraisalEnd()) < 0) {
&& Objects.nonNull(appraisalProject.getSelfAppraisalEnd()) && (LocalDateTime.now().isAfter(appraisalProject.getSelfAppraisalStart()) &&
LocalDateTime.now().isBefore(appraisalProject.getSelfAppraisalEnd()))) {
return Boolean.TRUE; return Boolean.TRUE;
}
} }
return Boolean.FALSE; return Boolean.FALSE;
} }


+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/performance/manage/OrgSelfAppraisalManage.java View File

@@ -502,7 +502,7 @@ public class OrgSelfAppraisalManage {
.sheet(fileName) .sheet(fileName)
.doWrite(exportDataList); .doWrite(exportDataList);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e);
throw new BizException(e);
} }


} }


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/performance/mapper/PerformanceAppraisalMapper.java View File

@@ -2,7 +2,6 @@ package com.hz.pm.api.performance.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hz.pm.api.performance.model.entity.PerformanceAppraisal; import com.hz.pm.api.performance.model.entity.PerformanceAppraisal;
import com.hz.pm.api.projectlib.model.entity.Project;


/** /**
* <p> * <p>


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/performance/mapper/PerformanceAppraisalProjectMapper.java View File

@@ -1,7 +1,6 @@
package com.hz.pm.api.performance.mapper; package com.hz.pm.api.performance.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hz.pm.api.performance.model.entity.PerformanceAppraisal;
import com.hz.pm.api.performance.model.entity.PerformanceAppraisalProject; import com.hz.pm.api.performance.model.entity.PerformanceAppraisalProject;


/** /**


+ 0
- 3
hz-pm-api/src/main/java/com/hz/pm/api/performance/model/dto/PerformanceAppraisalEditDTO.java View File

@@ -1,15 +1,12 @@
package com.hz.pm.api.performance.model.dto; package com.hz.pm.api.performance.model.dto;


import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.Range; import org.hibernate.validator.constraints.Range;


import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;


/** /**


+ 0
- 4
hz-pm-api/src/main/java/com/hz/pm/api/performance/model/dto/PerformanceAppraisalProjectGroupSaveDTO.java View File

@@ -1,14 +1,10 @@
package com.hz.pm.api.performance.model.dto; package com.hz.pm.api.performance.model.dto;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;


/** /**


+ 3
- 10
hz-pm-api/src/main/java/com/hz/pm/api/performance/model/dto/PerformanceIndicatorAppIndexSaveDTO.java View File

@@ -1,19 +1,12 @@
package com.hz.pm.api.performance.model.dto; package com.hz.pm.api.performance.model.dto;


import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

import javax.validation.constraints.Size;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import org.hibernate.validator.constraints.Range;

import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import java.io.Serializable;
import java.math.BigDecimal;

/** /**
* 绩效评级-应用指标库 新增指标保存 * 绩效评级-应用指标库 新增指标保存
* @return * @return


+ 2
- 6
hz-pm-api/src/main/java/com/hz/pm/api/performance/model/dto/PerformanceIndicatorProjectIndexSaveDTO.java View File

@@ -1,17 +1,13 @@
package com.hz.pm.api.performance.model.dto; package com.hz.pm.api.performance.model.dto;


import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.Range; import org.hibernate.validator.constraints.Range;


import javax.validation.constraints.Size; import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;


/** /**
* 绩效评级-项目指标库 新增指标保存 * 绩效评级-项目指标库 新增指标保存


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/performance/model/entity/PerformanceAppraisalProject.java View File

@@ -1,6 +1,5 @@
package com.hz.pm.api.performance.model.entity; package com.hz.pm.api.performance.model.entity;


import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;


+ 0
- 2
hz-pm-api/src/main/java/com/hz/pm/api/performance/model/entity/PerformanceIndicatorProjectTemplate.java View File

@@ -5,12 +5,10 @@ import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import liquibase.pro.packaged.I;
import lombok.Data; import lombok.Data;


import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;


/** /**
* @Classname PerformanceIndicatorTemplate * @Classname PerformanceIndicatorTemplate


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/performance/model/vo/ProjectIndexTemplateVO.java View File

@@ -1,6 +1,5 @@
package com.hz.pm.api.performance.model.vo; package com.hz.pm.api.performance.model.vo;


import com.hz.pm.api.performance.model.dto.ProjectTemplateDetailDTO;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


+ 4
- 7
hz-pm-api/src/main/java/com/hz/pm/api/performance/model/vo/ProjectIndexVO.java View File

@@ -1,16 +1,13 @@
package com.hz.pm.api.performance.model.vo; package com.hz.pm.api.performance.model.vo;


import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/** /**
* 绩效评价-项目指标库 * 绩效评价-项目指标库
* @return * @return


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/performance/util/ContentTypeUtils.java View File

@@ -7,7 +7,6 @@ package com.hz.pm.api.performance.util;


import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.CharsetUtil;
import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.exception.BizException;
import com.wflow.config.ResponseCode;


import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.net.URLEncoder; import java.net.URLEncoder;


+ 4
- 4
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java View File

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.common.util.ExcelDownUtil;
import com.hz.pm.api.common.util.ExcelExportStyle; import com.hz.pm.api.common.util.ExcelExportStyle;
import com.hz.pm.api.projectdeclared.model.dto.ContractSaveDTO; import com.hz.pm.api.projectdeclared.model.dto.ContractSaveDTO;
@@ -79,7 +79,7 @@ public class ConstructionManage {


private final IPreInsAcceptancePersonService acceptancePersonService; private final IPreInsAcceptancePersonService acceptancePersonService;


private final StateMachineUtils stateMachineUtils;
private final StateMachineUtil stateMachineUtil;


/** /**
* 待采购的-项目列表 * 待采购的-项目列表
@@ -349,7 +349,7 @@ public class ConstructionManage {
//判断下 如果和初验都完成了 才进入下一阶段 //判断下 如果和初验都完成了 才进入下一阶段
if (StringUtils.isNotBlank(project.getPreliminaryInspectionMaterials())) { if (StringUtils.isNotBlank(project.getPreliminaryInspectionMaterials())) {
//进入到下一状态 //进入到下一状态
stateMachineUtils.pass(project);
stateMachineUtil.pass(project);
} }
project.setUpdateOn(LocalDateTime.now()); project.setUpdateOn(LocalDateTime.now());
if (Objects.nonNull(dto.getDeliveryTime())) { if (Objects.nonNull(dto.getDeliveryTime())) {
@@ -540,7 +540,7 @@ public class ConstructionManage {
//判断下 如果和初验都完成了 才进入下一阶段 //判断下 如果和初验都完成了 才进入下一阶段
if (Objects.nonNull(project.getDeliveryTime())) { if (Objects.nonNull(project.getDeliveryTime())) {
//进入到下一状态 //进入到下一状态
stateMachineUtils.pass(project);
stateMachineUtil.pass(project);
} }
project.setUpdateOn(LocalDateTime.now()); project.setUpdateOn(LocalDateTime.now());
project.setPreliminaryInspectionMaterials(dto.getPreliminaryInspectionMaterials()); project.setPreliminaryInspectionMaterials(dto.getPreliminaryInspectionMaterials());


+ 6
- 6
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionPlanManage.java View File

@@ -12,7 +12,7 @@ import com.hz.pm.api.common.enumeration.CommonEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.helper.RegionCacheHelper; import com.hz.pm.api.common.helper.RegionCacheHelper;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.common.util.ExcelDownUtil;
import com.hz.pm.api.common.util.ExcelExportStyle; import com.hz.pm.api.common.util.ExcelExportStyle;
import com.hz.pm.api.projectdeclared.model.dto.ConstructionPlanExportDTO; import com.hz.pm.api.projectdeclared.model.dto.ConstructionPlanExportDTO;
@@ -79,7 +79,7 @@ public class ConstructionPlanManage {
private final IProjectService projectService; private final IProjectService projectService;
private final ProcessInstanceService processService; private final ProcessInstanceService processService;
private final ProcessModelService processModelService; private final ProcessModelService processModelService;
private final StateMachineUtils stateMachineUtils;
private final StateMachineUtil stateMachineUtil;
private final IProjectInstService projectInstService; private final IProjectInstService projectInstService;
private final ProjectLibManage projectLibManage; private final ProjectLibManage projectLibManage;
private final UserInfoHelper userInfoHelper; private final UserInfoHelper userInfoHelper;
@@ -159,8 +159,8 @@ public class ConstructionPlanManage {
//如果被禁用了的话 直接跳过 进入到下一个状态 //如果被禁用了的话 直接跳过 进入到下一个状态
if (Boolean.TRUE.equals(model.getIsStop())) { if (Boolean.TRUE.equals(model.getIsStop())) {
//被禁用了 调2次状态机 //被禁用了 调2次状态机
stateMachineUtils.pass(constructProject);
stateMachineUtils.pass(constructProject);
stateMachineUtil.pass(constructProject);
stateMachineUtil.pass(constructProject);
constructProject.setUpdateOn(LocalDateTime.now()); constructProject.setUpdateOn(LocalDateTime.now());
projectService.updateById(constructProject); projectService.updateById(constructProject);
return "因为建设方案流程被禁用了 直接跳过!"; return "因为建设方案流程被禁用了 直接跳过!";
@@ -194,7 +194,7 @@ public class ConstructionPlanManage {
} }


private Project contructionPlanModifyProject(Project project, String instanceId) { private Project contructionPlanModifyProject(Project project, String instanceId) {
stateMachineUtils.pass(project);
stateMachineUtil.pass(project);
project.setUpdateOn(LocalDateTime.now()); project.setUpdateOn(LocalDateTime.now());
project.setInstCode(instanceId); project.setInstCode(instanceId);
projectService.updateById(project); projectService.updateById(project);
@@ -249,7 +249,7 @@ public class ConstructionPlanManage {
project.setInstCode(instanceId); project.setInstCode(instanceId);
project.setConstructionPlanFile(constructionPlanFile); project.setConstructionPlanFile(constructionPlanFile);
//调用状态机 进入下一个通过状态 //调用状态机 进入下一个通过状态
stateMachineUtils.pass(project);
stateMachineUtil.pass(project);
projectService.updateById(project); projectService.updateById(project);


//保存项目和实例的关系 //保存项目和实例的关系


+ 27
- 22
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DelayedApplyManage.java View File

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.function.VUtils; import com.ningdatech.basic.function.VUtils;
import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.model.PageVo;
import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.CollUtils;
@@ -88,6 +89,7 @@ public class DelayedApplyManage {


/** /**
* 延期的-项目列表 * 延期的-项目列表
*
* @param req * @param req
* @return * @return
*/ */
@@ -97,11 +99,11 @@ public class DelayedApplyManage {
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req); LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
//待终验 并且已经过期 //待终验 并且已经过期
//只能看自己单位的 //只能看自己单位的
query.eq(Project::getBuildOrgCode,user.getEmpPosUnitCode());
query.eq(Project::getStatus,ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode());
query.eq(Project::getStage,ProjectStatusEnum.PROJECT_APPROVED.getCode());
query.eq(Project::getBuildOrgCode, user.getEmpPosUnitCode());
query.eq(Project::getStatus, ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode());
query.eq(Project::getStage, ProjectStatusEnum.PROJECT_APPROVED.getCode());
query.lt(Project::getPlanAcceptanceTime, LocalDateTime.now()); query.lt(Project::getPlanAcceptanceTime, LocalDateTime.now());
query.eq(Project::getNewest,Boolean.TRUE);
query.eq(Project::getNewest, Boolean.TRUE);
query.isNotNull(Project::getApprovalDate); query.isNotNull(Project::getApprovalDate);
query.isNotNull(Project::getBuildCycle); query.isNotNull(Project::getBuildCycle);
query.orderByAsc(Project::getApprovalDate); query.orderByAsc(Project::getApprovalDate);
@@ -167,18 +169,18 @@ public class DelayedApplyManage {
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param); LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
//待终验 //待终验
//只能看自己单位的 //只能看自己单位的
query.eq(Project::getBuildOrgCode,user.getEmpPosUnitCode());
query.eq(Project::getStatus,ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode());
query.eq(Project::getStage,ProjectStatusEnum.PROJECT_APPROVED.getCode());
query.eq(Project::getNewest,Boolean.TRUE);
query.eq(Project::getBuildOrgCode, user.getEmpPosUnitCode());
query.eq(Project::getStatus, ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode());
query.eq(Project::getStage, ProjectStatusEnum.PROJECT_APPROVED.getCode());
query.eq(Project::getNewest, Boolean.TRUE);
query.isNotNull(Project::getApprovalDate); query.isNotNull(Project::getApprovalDate);
query.isNotNull(Project::getBuildCycle); query.isNotNull(Project::getBuildCycle);
query.orderByAsc(Project::getApprovalDate); query.orderByAsc(Project::getApprovalDate);
List<Project> records = projectService.list(query); List<Project> records = projectService.list(query);


AtomicInteger serialNumber = new AtomicInteger(0);
List<DeclaredProjectExportDTO> collect = Lists.newArrayList(); List<DeclaredProjectExportDTO> collect = Lists.newArrayList();
if(CollUtil.isNotEmpty(records)){
if (CollUtil.isNotEmpty(records)) {
AtomicInteger rowNo = new AtomicInteger(0);
collect = records.stream().map(r -> { collect = records.stream().map(r -> {
DeclaredProjectExportDTO exportDTO = new DeclaredProjectExportDTO(); DeclaredProjectExportDTO exportDTO = new DeclaredProjectExportDTO();
BeanUtils.copyProperties(r, exportDTO); BeanUtils.copyProperties(r, exportDTO);
@@ -186,7 +188,7 @@ public class DelayedApplyManage {
exportDTO.setStatusName(ProjectStatusEnum.getDesc(r.getStatus())); exportDTO.setStatusName(ProjectStatusEnum.getDesc(r.getStatus()));
String createOnStr = NdDateUtils.format(r.getCreateOn(), "yyyy-MM-dd HH:mm"); String createOnStr = NdDateUtils.format(r.getCreateOn(), "yyyy-MM-dd HH:mm");
exportDTO.setCreateOn(createOnStr); exportDTO.setCreateOn(createOnStr);
exportDTO.setSerialNumber(serialNumber.incrementAndGet());
exportDTO.setSerialNumber(rowNo.incrementAndGet());
exportDTO.setPlanAcceptanceTime(Objects.nonNull(r.getPlanAcceptanceTime()) ? exportDTO.setPlanAcceptanceTime(Objects.nonNull(r.getPlanAcceptanceTime()) ?
NdDateUtils.format(r.getPlanAcceptanceTime(), "yyyy-MM-dd") : StringUtils.EMPTY); NdDateUtils.format(r.getPlanAcceptanceTime(), "yyyy-MM-dd") : StringUtils.EMPTY);
return exportDTO; return exportDTO;
@@ -194,7 +196,7 @@ public class DelayedApplyManage {
} }


String fileName = "待终验申请项目列表"; String fileName = "待终验申请项目列表";
ExcelDownUtil.setFileName(fileName,response);
ExcelDownUtil.setFileName(fileName, response);
//数据导出处理函数 //数据导出处理函数
try { try {
EasyExcel.write(response.getOutputStream(), DeclaredProjectExportDTO.class) EasyExcel.write(response.getOutputStream(), DeclaredProjectExportDTO.class)
@@ -203,14 +205,14 @@ public class DelayedApplyManage {
.sheet(fileName) .sheet(fileName)
.doWrite(collect); .doWrite(collect);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e);
} catch (Exception e) {
throw new RuntimeException(e);
log.error("待终验申请项目列表导出失败:{}", e.getMessage(), e);
throw BizException.wrap("导出失败");
} }
} }


/** /**
* 延期申请 * 延期申请
*
* @param dto * @param dto
* @return * @return
*/ */
@@ -229,7 +231,7 @@ public class DelayedApplyManage {
.throwMessage("提交失败 该项目不是 已立项|待终验"); .throwMessage("提交失败 该项目不是 已立项|待终验");


VUtils.isTrue(Objects.isNull(project.getPlanAcceptanceTime()) VUtils.isTrue(Objects.isNull(project.getPlanAcceptanceTime())
|| project.getPlanAcceptanceTime().compareTo(LocalDateTime.now()) <= 0)
|| !project.getPlanAcceptanceTime().isAfter(LocalDateTime.now()))
.throwMessage("当前项目还未过期验收"); .throwMessage("当前项目还未过期验收");


return "申请发起成功"; return "申请发起成功";
@@ -237,6 +239,7 @@ public class DelayedApplyManage {


/** /**
* 开启延期申请审批流程 * 开启延期申请审批流程
*
* @param dto * @param dto
* @return * @return
*/ */
@@ -256,7 +259,7 @@ public class DelayedApplyManage {
.throwMessage("提交失败 该项目不是 已立项|待终验"); .throwMessage("提交失败 该项目不是 已立项|待终验");


VUtils.isTrue(Objects.isNull(project.getPlanAcceptanceTime()) VUtils.isTrue(Objects.isNull(project.getPlanAcceptanceTime())
|| project.getPlanAcceptanceTime().compareTo(LocalDateTime.now()) > 0)
|| project.getPlanAcceptanceTime().isAfter(LocalDateTime.now()))
.throwMessage("当前项目还未过期验收"); .throwMessage("当前项目还未过期验收");


String regionCode = project.getAreaCode(); String regionCode = project.getAreaCode();
@@ -286,7 +289,7 @@ public class DelayedApplyManage {
projectLibManage.saveProjectByApplyDelay(dto, project, instanceId); projectLibManage.saveProjectByApplyDelay(dto, project, instanceId);


//发送给第一个审批人消息 //发送给第一个审批人消息
noticeManage.sendFirtUser(project,model.getFormName(),instanceId,
noticeManage.sendFirtUser(project, model.getFormName(), instanceId,
WorkNoticeConstant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); WorkNoticeConstant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW);


return instanceId; return instanceId;
@@ -294,6 +297,7 @@ public class DelayedApplyManage {


/** /**
* 查询延期 详情 * 查询延期 详情
*
* @param projectId * @param projectId
* @return * @return
*/ */
@@ -302,14 +306,15 @@ public class DelayedApplyManage {
.eq(ProjectDelayApply::getProjectId, projectId) .eq(ProjectDelayApply::getProjectId, projectId)
.orderByDesc(ProjectDelayApply::getCreateOn) .orderByDesc(ProjectDelayApply::getCreateOn)
.last(BizConst.LIMIT_1)); .last(BizConst.LIMIT_1));
if(Objects.isNull(delayApply)){
if (Objects.isNull(delayApply)) {
return null; return null;
} }
return BeanUtil.copyProperties(delayApply,DelayedApplyVO.class);
return BeanUtil.copyProperties(delayApply, DelayedApplyVO.class);
} }


/** /**
* 查看某个项目的 延期列表 * 查看某个项目的 延期列表
*
* @param projectId * @param projectId
* @return * @return
*/ */
@@ -319,11 +324,11 @@ public class DelayedApplyManage {
.in(ProjectDelayApply::getProjectId, allVersionProjectId) .in(ProjectDelayApply::getProjectId, allVersionProjectId)
.eq(ProjectDelayApply::getSuccess, Boolean.TRUE)); .eq(ProjectDelayApply::getSuccess, Boolean.TRUE));


if(CollUtil.isEmpty(delays)){
if (CollUtil.isEmpty(delays)) {
return Collections.emptyList(); return Collections.emptyList();
} }


return delays.stream().map(d -> BeanUtil.copyProperties(d,DelayedApplyVO.class))
return delays.stream().map(d -> BeanUtil.copyProperties(d, DelayedApplyVO.class))
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
} }

+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/OperationManage.java View File

@@ -4,7 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ningdatech.basic.function.VUtils; import com.ningdatech.basic.function.VUtils;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.projectdeclared.model.dto.OperationDTO; import com.hz.pm.api.projectdeclared.model.dto.OperationDTO;
import com.hz.pm.api.projectdeclared.model.entity.Operation; import com.hz.pm.api.projectdeclared.model.entity.Operation;
import com.hz.pm.api.projectdeclared.model.vo.OperationVO; import com.hz.pm.api.projectdeclared.model.vo.OperationVO;
@@ -36,7 +36,7 @@ public class OperationManage {


private final IProjectService projectService; private final IProjectService projectService;


private final StateMachineUtils stateMachineUtils;
private final StateMachineUtil stateMachineUtil;


/** /**
* 获取实施详情 * 获取实施详情
@@ -84,7 +84,7 @@ public class OperationManage {
//强制放入 计划终验时间 //强制放入 计划终验时间
entity.setFinalInspectionDate(project.getPlanAcceptanceTime()); entity.setFinalInspectionDate(project.getPlanAcceptanceTime());
if(operationService.saveOrUpdate(entity)){ if(operationService.saveOrUpdate(entity)){
stateMachineUtils.pass(project);
stateMachineUtil.pass(project);
project.setUpdateOn(LocalDateTime.now()); project.setUpdateOn(LocalDateTime.now());
projectService.updateById(project); projectService.updateById(project);
} }


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PrequalificationDeclaredProjectManage.java View File

@@ -8,7 +8,7 @@ import com.google.common.collect.Lists;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.common.util.ExcelDownUtil;
import com.hz.pm.api.common.util.ExcelExportStyle; import com.hz.pm.api.common.util.ExcelExportStyle;
import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO; import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO;
@@ -73,7 +73,7 @@ public class PrequalificationDeclaredProjectManage {


private final ProjectLibManage projectLibManage; private final ProjectLibManage projectLibManage;


private final StateMachineUtils stateMachineUtils;
private final StateMachineUtil stateMachineUtil;


private final IProjectStagingService projectStagingService; private final IProjectStagingService projectStagingService;


@@ -122,7 +122,7 @@ public class PrequalificationDeclaredProjectManage {
if (StringUtils.isNotBlank(projectDto.getHigherLineSuperOrgReviewComments())) { if (StringUtils.isNotBlank(projectDto.getHigherLineSuperOrgReviewComments())) {
projectInfo.setHigherLineSuperOrgReviewComments(projectDto.getHigherLineSuperOrgReviewComments()); projectInfo.setHigherLineSuperOrgReviewComments(projectDto.getHigherLineSuperOrgReviewComments());
} }
stateMachineUtils.pass(projectInfo);
stateMachineUtil.pass(projectInfo);
String instanceId = null; String instanceId = null;
//如果是省级部门 需要联审的(申报金额大于1000万 并且是市级项目) //如果是省级部门 需要联审的(申报金额大于1000万 并且是市级项目)
if (ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS if (ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS


+ 30
- 33
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ProjectAdjustmentManage.java View File

@@ -10,21 +10,21 @@ import com.hz.pm.api.common.util.ExcelExportStyle;
import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO; import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO;
import com.hz.pm.api.projectdeclared.model.dto.ProjectAdjustmentExportDTO; import com.hz.pm.api.projectdeclared.model.dto.ProjectAdjustmentExportDTO;
import com.hz.pm.api.projectdeclared.model.req.AdjustmentListReq; import com.hz.pm.api.projectdeclared.model.req.AdjustmentListReq;
import com.hz.pm.api.projectdeclared.utils.GenerateProjectCodeUtil;
import com.hz.pm.api.projectdeclared.utils.ReStartProcessMapUtil;
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum;
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum;
import com.hz.pm.api.projectdeclared.utils.RestartProcessMapUtil;
import com.hz.pm.api.projectlib.helper.ProjectHelper; import com.hz.pm.api.projectlib.helper.ProjectHelper;
import com.hz.pm.api.projectlib.manage.ProjectLibManage; import com.hz.pm.api.projectlib.manage.ProjectLibManage;
import com.hz.pm.api.projectlib.model.dto.ProjectDTO; import com.hz.pm.api.projectlib.model.dto.ProjectDTO;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.entity.ProjectApplication; import com.hz.pm.api.projectlib.model.entity.ProjectApplication;
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum;
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum;
import com.hz.pm.api.projectlib.model.req.ProjectListReq; import com.hz.pm.api.projectlib.model.req.ProjectListReq;
import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO; import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO;
import com.hz.pm.api.projectlib.service.IProjectApplicationService; import com.hz.pm.api.projectlib.service.IProjectApplicationService;
import com.hz.pm.api.projectlib.service.IProjectService; import com.hz.pm.api.projectlib.service.IProjectService;
import com.hz.pm.api.user.security.model.UserFullInfoDTO; import com.hz.pm.api.user.security.model.UserFullInfoDTO;
import com.hz.pm.api.user.util.LoginUserUtil; import com.hz.pm.api.user.util.LoginUserUtil;
import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.function.VUtils; import com.ningdatech.basic.function.VUtils;
import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.model.PageVo;
import com.ningdatech.basic.util.NdDateUtils; import com.ningdatech.basic.util.NdDateUtils;
@@ -40,6 +40,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
@@ -61,17 +62,17 @@ public class ProjectAdjustmentManage {


private final IProjectApplicationService projectApplicationService; private final IProjectApplicationService projectApplicationService;


private final ReStartProcessMapUtil reStartProcessMapUtil;
private final RestartProcessMapUtil reStartProcessMapUtil;


private final DefaultDeclaredProjectManage defaultDeclaredProjectManage; private final DefaultDeclaredProjectManage defaultDeclaredProjectManage;


private final ProjectLibManage projectLibManage; private final ProjectLibManage projectLibManage;


private final UserInfoHelper userInfoHelper; private final UserInfoHelper userInfoHelper;
private final GenerateProjectCodeUtil generateProjectCodeUtil;


/** /**
* 项目内容调整 * 项目内容调整
*
* @param dto * @param dto
* @return * @return
*/ */
@@ -83,25 +84,20 @@ public class ProjectAdjustmentManage {
VUtils.isTrue(Objects.isNull(projectInfo)).throwMessage("调整失败 此项目不存在!"); VUtils.isTrue(Objects.isNull(projectInfo)).throwMessage("调整失败 此项目不存在!");


//项目名称去重 //项目名称去重
if(StringUtils.isNotBlank(projectDto.getProjectName()) &&
!projectDto.getProjectName().equals(projectInfo.getProjectName())){
if (StringUtils.isNotBlank(projectDto.getProjectName()) &&
!projectDto.getProjectName().equals(projectInfo.getProjectName())) {
projectDto.setProjectCode(projectInfo.getProjectCode()); projectDto.setProjectCode(projectInfo.getProjectCode());
defaultDeclaredProjectManage.checkDuplication(projectDto); defaultDeclaredProjectManage.checkDuplication(projectDto);
} }


//金额check //金额check
if(Objects.nonNull(projectDto.getDeclareAmount())){
if (Objects.nonNull(projectDto.getDeclareAmount())) {
defaultDeclaredProjectManage.checkAmount(projectDto); defaultDeclaredProjectManage.checkAmount(projectDto);
} }


//修改项目内容
// if(!modifyProject(projectDto)){
// throw new BusinessException("调整项目失败!");
// }

//最后去重新 提交项目流程 不同的状态 提交到不同的工作流去 //最后去重新 提交项目流程 不同的状态 提交到不同的工作流去
Function<DefaultDeclaredDTO, String> declaredFunction = Function<DefaultDeclaredDTO, String> declaredFunction =
reStartProcessMapUtil.reStartProcessMap.get(projectInfo.getStatus());
RestartProcessMapUtil.getRestartFunction(projectInfo.getStatus());
VUtils.isTrue(Objects.isNull(declaredFunction)).throwMessage("状态不正常 没有找到对应申报函数!"); VUtils.isTrue(Objects.isNull(declaredFunction)).throwMessage("状态不正常 没有找到对应申报函数!");
return declaredFunction.apply(dto); return declaredFunction.apply(dto);
} }
@@ -109,16 +105,16 @@ public class ProjectAdjustmentManage {
private Boolean modifyProject(ProjectDTO projectDto) { private Boolean modifyProject(ProjectDTO projectDto) {
//先修改项目信息 //先修改项目信息
Project project = new Project(); Project project = new Project();
BeanUtils.copyProperties(projectDto,project);
BeanUtils.copyProperties(projectDto, project);
project.setUpdateOn(LocalDateTime.now()); project.setUpdateOn(LocalDateTime.now());
if(!projectService.updateById(project)){
if (!projectService.updateById(project)) {
throw new BusinessException("项目调整失败"); throw new BusinessException("项目调整失败");
} }
//再修改应用信息 //再修改应用信息
if(CollUtil.isNotEmpty(projectDto.getApplicationList())){
if (CollUtil.isNotEmpty(projectDto.getApplicationList())) {
//采取批量删除 批量添加的方式 //采取批量删除 批量添加的方式
projectApplicationService.remove(Wrappers.lambdaQuery(ProjectApplication.class) projectApplicationService.remove(Wrappers.lambdaQuery(ProjectApplication.class)
.eq(ProjectApplication::getProjectId,project.getId()));
.eq(ProjectApplication::getProjectId, project.getId()));
//批量添加 //批量添加
List<ProjectApplication> applications = projectDto.getApplicationList().stream().map(application -> { List<ProjectApplication> applications = projectDto.getApplicationList().stream().map(application -> {
ProjectApplication projectApplication = new ProjectApplication(); ProjectApplication projectApplication = new ProjectApplication();
@@ -133,22 +129,26 @@ public class ProjectAdjustmentManage {
return Boolean.TRUE; return Boolean.TRUE;
} }


private static final List<Integer> PROJECT_STATUS = Arrays.asList(
ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode(),
ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode(),
ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode(),
ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode());

/** /**
* 项目库 * 项目库
*
* @param preReq * @param preReq
* @return * @return
*/ */
public PageVo<ProjectLibListItemVO> projectLibList(AdjustmentListReq preReq) { public PageVo<ProjectLibListItemVO> projectLibList(AdjustmentListReq preReq) {
//限定参数 复制bean //限定参数 复制bean
ProjectListReq req = new ProjectListReq(); ProjectListReq req = new ProjectListReq();
BeanUtils.copyProperties(preReq,req);
BeanUtils.copyProperties(preReq, req);
//项目阶段 状态 已定 方案待申报 //项目阶段 状态 已定 方案待申报
req.setStageList(Arrays.asList(ProjectStatusEnum.NOT_APPROVED.getCode()));
req.setStageList(Collections.singletonList(ProjectStatusEnum.NOT_APPROVED.getCode()));
//只有 单位内部审核不通过 省级联审不通过 预审不通过 建设方案不通过 4种状态 //只有 单位内部审核不通过 省级联审不通过 预审不通过 建设方案不通过 4种状态
req.setStatusList(Arrays.asList(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode(),
ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode(),
ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode(),
ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()));
req.setStatusList(PROJECT_STATUS);
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!"); VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!");
//放入用户的单位 //放入用户的单位
@@ -159,14 +159,11 @@ public class ProjectAdjustmentManage {
public void exportList(HttpServletResponse response, AdjustmentListReq preReq) { public void exportList(HttpServletResponse response, AdjustmentListReq preReq) {
//限定参数 复制bean //限定参数 复制bean
ProjectListReq req = new ProjectListReq(); ProjectListReq req = new ProjectListReq();
BeanUtils.copyProperties(preReq,req);
BeanUtils.copyProperties(preReq, req);
//项目阶段 状态 已定 方案待申报 //项目阶段 状态 已定 方案待申报
req.setStageList(Arrays.asList(ProjectStatusEnum.NOT_APPROVED.getCode()));
req.setStageList(Collections.singletonList(ProjectStatusEnum.NOT_APPROVED.getCode()));
//只有 单位内部审核不通过 省级联审不通过 预审不通过 建设方案不通过 4种状态 //只有 单位内部审核不通过 省级联审不通过 预审不通过 建设方案不通过 4种状态
req.setStatusList(Arrays.asList(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode(),
ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode(),
ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode(),
ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()));
req.setStatusList(PROJECT_STATUS);
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId());
VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!"); VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!");
//放入用户的单位 //放入用户的单位
@@ -187,7 +184,7 @@ public class ProjectAdjustmentManage {
return exportDTO; return exportDTO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
String fileName = "项目内容调整列表"; String fileName = "项目内容调整列表";
ExcelDownUtil.setFileName(fileName,response);
ExcelDownUtil.setFileName(fileName, response);
//数据导出处理函数 //数据导出处理函数
try { try {
EasyExcel.write(response.getOutputStream(), ProjectAdjustmentExportDTO.class) EasyExcel.write(response.getOutputStream(), ProjectAdjustmentExportDTO.class)
@@ -196,7 +193,7 @@ public class ProjectAdjustmentManage {
.sheet(fileName) .sheet(fileName)
.doWrite(collect); .doWrite(collect);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e);
throw new BizException(e);
} }
} }
} }

+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java View File

@@ -12,7 +12,7 @@ import com.ningdatech.basic.model.PageVo;
import com.ningdatech.basic.util.CollUtils; import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.basic.util.NdDateUtils; import com.ningdatech.basic.util.NdDateUtils;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.common.util.ExcelDownUtil;
import com.hz.pm.api.common.util.ExcelExportStyle; import com.hz.pm.api.common.util.ExcelExportStyle;
import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO; import com.hz.pm.api.projectdeclared.model.dto.DeclaredProjectExportDTO;
@@ -61,7 +61,7 @@ public class PurchaseManage {


private final IPurchaseService purchaseService; private final IPurchaseService purchaseService;


private final StateMachineUtils stateMachineUtils;
private final StateMachineUtil stateMachineUtil;


/** /**
* 待采购的-项目列表 * 待采购的-项目列表
@@ -207,7 +207,7 @@ public class PurchaseManage {
// } // }
// } // }
//进入到下一状态 //进入到下一状态
stateMachineUtils.pass(project);
stateMachineUtil.pass(project);
project.setUpdateOn(LocalDateTime.now()); project.setUpdateOn(LocalDateTime.now());


// 获取总的成交时间及金额 // 获取总的成交时间及金额


+ 0
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/OperationDTO.java View File

@@ -1,8 +1,5 @@
package com.hz.pm.api.projectdeclared.model.dto; package com.hz.pm.api.projectdeclared.model.dto;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;


+ 0
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/PaymentPlanSupplementDTO.java View File

@@ -1,13 +1,11 @@
package com.hz.pm.api.projectdeclared.model.dto; package com.hz.pm.api.projectdeclared.model.dto;


import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;


/** /**
* @Classname PaymentPlan * @Classname PaymentPlan


+ 0
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/PreInsAcceptancePersonSaveDTO.java View File

@@ -4,9 +4,6 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;

/** /**
* @Classname PreInsAcceptancePerson * @Classname PreInsAcceptancePerson
* @Description 初验人员 * @Description 初验人员


+ 0
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/PreInsSaveDTO.java View File

@@ -1,14 +1,11 @@
package com.hz.pm.api.projectdeclared.model.dto; package com.hz.pm.api.projectdeclared.model.dto;


import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;


/** /**


+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/ProjectDraftSaveDTO.java View File

@@ -1,10 +1,10 @@
package com.hz.pm.api.projectdeclared.model.dto; package com.hz.pm.api.projectdeclared.model.dto;


import com.hz.pm.api.projectlib.model.dto.ProjectDTO; import com.hz.pm.api.projectlib.model.dto.ProjectDTO;
import com.wflow.workflow.bean.dto.ProcessInstanceUserDto;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.*; import lombok.*;

import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;




+ 3
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/PaymentPlan.java View File

@@ -1,12 +1,13 @@
package com.hz.pm.api.projectdeclared.model.entity; package com.hz.pm.api.projectdeclared.model.entity;


import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;


/** /**


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/PreInsAcceptancePerson.java View File

@@ -7,7 +7,6 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;


/** /**


+ 0
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/PreInsAcceptancePersonVO.java View File

@@ -1,8 +1,5 @@
package com.hz.pm.api.projectdeclared.model.vo; package com.hz.pm.api.projectdeclared.model.vo;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


+ 0
- 5
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/PreInsVO.java View File

@@ -1,14 +1,9 @@
package com.hz.pm.api.projectdeclared.model.vo; package com.hz.pm.api.projectdeclared.model.vo;


import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;


/** /**


+ 0
- 58
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/utils/ReStartProcessMapUtil.java View File

@@ -1,58 +0,0 @@
package com.hz.pm.api.projectdeclared.utils;

import com.google.common.collect.Maps;
import com.hz.pm.api.projectdeclared.manage.*;
import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO;
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.function.Function;

/**
* @Classname ReSubmitProcessMap
* @Description 项目调整 重新提交时的 事件函数MAP
* @Date 2023/2/15 11:19
* @Author PoffyZhang
*/
@Component
public class ReStartProcessMapUtil {
@Autowired
private DeclaredProjectManage declaredProjectManage;

@Autowired
private ConstructionPlanManage constructionPlanManage;

@Autowired
private PrequalificationDeclaredProjectManage prequalificationDeclaredProjectManage;

@Autowired
private ReviewByProvincialDeptManage provincialDeptManage;

@Autowired
private FinalAcceptanceManage finalAcceptanceManage;

public Map<Integer, Function<DefaultDeclaredDTO,String>> reStartProcessMap = Maps.newHashMap();
/**
* 初始化业务分派逻辑,代替了if-else部分
* key: 枚举 状态值
* value: lambda表达式,最终会获取发起实例的函数
*/
public ReStartProcessMapUtil(){
//重新项目申报
reStartProcessMap.put(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode(),
dto->declaredProjectManage.reStartTheProcess(dto));
//建设方案
reStartProcessMap.put(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode(),
dto->constructionPlanManage.restartTheProcess(dto));
//预审方案
reStartProcessMap.put(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode(),
dto->prequalificationDeclaredProjectManage.restartTheProcess(dto));
//省级联审
reStartProcessMap.put(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode(),
dto->provincialDeptManage.restartTheProcess(dto));
//终审
reStartProcessMap.put(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode(),
dto->finalAcceptanceManage.restartProcess(dto));
}
}

+ 51
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/utils/RestartProcessMapUtil.java View File

@@ -0,0 +1,51 @@
package com.hz.pm.api.projectdeclared.utils;

import com.google.common.collect.Maps;
import com.hz.pm.api.projectdeclared.manage.*;
import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO;
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum;
import org.springframework.stereotype.Component;

import java.util.Map;
import java.util.function.Function;

/**
* <p>
* RestartProcessMapUtil - 项目调整 重新提交时的 事件函数MAP
* </p>
*
* @author PoffyZhang
* @since 2023/2/15 11:19
*/
@Component
public class RestartProcessMapUtil {

private static final Map<Integer, Function<DefaultDeclaredDTO, String>> RESTART_PROCESS_MAP = Maps.newHashMap();

public RestartProcessMapUtil(DeclaredProjectManage declaredProjectManage,
ConstructionPlanManage constructionPlanManage,
PrequalificationDeclaredProjectManage prequalificationDeclaredProjectManage,
ReviewByProvincialDeptManage provincialDeptManage,
FinalAcceptanceManage finalAcceptanceManage) {
//重新项目申报
RESTART_PROCESS_MAP.put(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode(),
declaredProjectManage::reStartTheProcess);
//建设方案
RESTART_PROCESS_MAP.put(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode(),
constructionPlanManage::restartTheProcess);
//预审方案
RESTART_PROCESS_MAP.put(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode(),
prequalificationDeclaredProjectManage::restartTheProcess);
//省级联审
RESTART_PROCESS_MAP.put(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode(),
provincialDeptManage::restartTheProcess);
//终审
RESTART_PROCESS_MAP.put(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode(),
finalAcceptanceManage::restartProcess);
}

public static Function<DefaultDeclaredDTO, String> getRestartFunction(Integer status) {
return RESTART_PROCESS_MAP.get(status);
}

}

+ 16
- 18
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/AnnualPlanHandle.java View File

@@ -1,5 +1,6 @@
package com.hz.pm.api.projectlib.handle; package com.hz.pm.api.projectlib.handle;


import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.model.constant.CommonConst; import com.hz.pm.api.common.model.constant.CommonConst;
@@ -52,7 +53,7 @@ public class AnnualPlanHandle extends AbstractProcessBusinessHandle {
DEPARTMENT_JOINT_REVIEW_FAILED DEPARTMENT_JOINT_REVIEW_FAILED
); );


public AnnualPlanHandle(INdProjectStatusChangeService projectStatusChangeService, IProjectService projectService){
public AnnualPlanHandle(INdProjectStatusChangeService projectStatusChangeService, IProjectService projectService) {
this.projectStatusChangeService = projectStatusChangeService; this.projectStatusChangeService = projectStatusChangeService;
this.projectService = projectService; this.projectService = projectService;
} }
@@ -69,7 +70,7 @@ public class AnnualPlanHandle extends AbstractProcessBusinessHandle {
List<Long> allVersionProjectIds = projectService.getAllVersionProjectId(project); List<Long> allVersionProjectIds = projectService.getAllVersionProjectId(project);


// 项目状态为年度计划中之前的状态 // 项目状态为年度计划中之前的状态
if (fieldList.contains(status)){
if (fieldList.contains(status)) {
processDetailVO.setStepStatus(StepStatusEnum.NOT_START); processDetailVO.setStepStatus(StepStatusEnum.NOT_START);
processDetailVO.setProcessName(CommonConst.ANNUAL_PLAN); processDetailVO.setProcessName(CommonConst.ANNUAL_PLAN);
processSchedule.add(processDetailVO); processSchedule.add(processDetailVO);
@@ -77,33 +78,30 @@ public class AnnualPlanHandle extends AbstractProcessBusinessHandle {
} }


// 项目状态为年度计划中 // 项目状态为年度计划中
if (ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode().equals(status)){
LambdaQueryWrapper<ProjectStatusChange> pscQuery = Wrappers.lambdaQuery(ProjectStatusChange.class)
.in(ProjectStatusChange::getProjectId, allVersionProjectIds)
.last(BizConst.LIMIT_1);
if (ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode().equals(status)) {
// 根据部门联审通过的时间获取 // 根据部门联审通过的时间获取
ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(Wrappers.lambdaQuery(ProjectStatusChange.class)
.in(ProjectStatusChange::getProjectId, allVersionProjectIds)
.eq(ProjectStatusChange::getEvent, ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS.name())
.last(BizConst.LIMIT_1));
if(Objects.nonNull(projectStatusChange)){
pscQuery.eq(ProjectStatusChange::getEvent, ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS);
ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(pscQuery);
if (Objects.nonNull(projectStatusChange)) {
processDetailVO.setFinishTime(projectStatusChange.getCreateOn()); processDetailVO.setFinishTime(projectStatusChange.getCreateOn());
processDetailVO.setStepStatus(StepStatusEnum.ON_GOING); processDetailVO.setStepStatus(StepStatusEnum.ON_GOING);
} }
} else if (ProjectStatusEnum.BE_SUSPENDED.getCode().equals(status)) { } else if (ProjectStatusEnum.BE_SUSPENDED.getCode().equals(status)) {
// 根据年度计划暂缓的时间获取 // 根据年度计划暂缓的时间获取
ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(Wrappers.lambdaQuery(ProjectStatusChange.class)
.in(ProjectStatusChange::getProjectId, allVersionProjectIds)
.eq(ProjectStatusChange::getEvent, ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND.name())
.last(BizConst.LIMIT_1));
if(Objects.nonNull(projectStatusChange)){
pscQuery.eq(ProjectStatusChange::getEvent, ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND);
ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(pscQuery);
if (Objects.nonNull(projectStatusChange)) {
processDetailVO.setFinishTime(projectStatusChange.getCreateOn()); processDetailVO.setFinishTime(projectStatusChange.getCreateOn());
processDetailVO.setStepStatus(StepStatusEnum.REJECTED); processDetailVO.setStepStatus(StepStatusEnum.REJECTED);
} }
} else { } else {
// 根据开启方案申报的时间获取 // 根据开启方案申报的时间获取
ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(Wrappers.lambdaQuery(ProjectStatusChange.class)
.in(ProjectStatusChange::getProjectId, allVersionProjectIds)
.eq(ProjectStatusChange::getEvent, ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE.name())
.last(BizConst.LIMIT_1));
if(Objects.nonNull(projectStatusChange)){
pscQuery.eq(ProjectStatusChange::getEvent, ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE);
ProjectStatusChange projectStatusChange = projectStatusChangeService.getOne(pscQuery);
if (Objects.nonNull(projectStatusChange)) {
processDetailVO.setFinishTime(projectStatusChange.getCreateOn()); processDetailVO.setFinishTime(projectStatusChange.getCreateOn());
processDetailVO.setStepStatus(StepStatusEnum.COMPLETED); processDetailVO.setStepStatus(StepStatusEnum.COMPLETED);
} }


+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/ProcessExecuteChainHandle.java View File

@@ -6,7 +6,7 @@ import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.model.constant.ProjectDeclareConst; import com.hz.pm.api.common.model.constant.ProjectDeclareConst;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.statemachine.contant.RegionContant; import com.hz.pm.api.common.statemachine.contant.RegionContant;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.service.IProjectService; import com.hz.pm.api.projectlib.service.IProjectService;
import com.wflow.bean.entity.WflowModels; import com.wflow.bean.entity.WflowModels;
@@ -84,7 +84,7 @@ public class ProcessExecuteChainHandle {
} }
} else if (processBusinessHandle instanceof ProvinceUnitedReviewHandle) { } else if (processBusinessHandle instanceof ProvinceUnitedReviewHandle) {
//省级联审 //省级联审
if (StateMachineUtils.isCityProject(project) && StateMachineUtils.judgeDeclareAmount(project,
if (StateMachineUtil.isCityProject(project) && StateMachineUtil.judgeDeclareAmount(project,
ProjectDeclareConst.Number.DECLARE_AMOUNT_JUDGEMENT)) { ProjectDeclareConst.Number.DECLARE_AMOUNT_JUDGEMENT)) {
handles.add(processBusinessHandle); handles.add(processBusinessHandle);
} }


+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/AnnualPlanLibManage.java View File

@@ -16,7 +16,7 @@ import com.hz.pm.api.common.model.constant.CommonConst;
import com.hz.pm.api.common.enumeration.CommonEnum; import com.hz.pm.api.common.enumeration.CommonEnum;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.model.entity.ExcelExportWriter; import com.hz.pm.api.common.model.entity.ExcelExportWriter;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.common.util.BizUtils; import com.hz.pm.api.common.util.BizUtils;
import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.common.util.ExcelDownUtil;
import com.hz.pm.api.datascope.model.DataScopeDTO; import com.hz.pm.api.datascope.model.DataScopeDTO;
@@ -80,7 +80,7 @@ public class AnnualPlanLibManage {
private final IProjectService projectService; private final IProjectService projectService;


private final IProjectApplicationService applicationService; private final IProjectApplicationService applicationService;
private final StateMachineUtils stateMachine;
private final StateMachineUtil stateMachine;
private final UserInfoHelper userInfoHelper; private final UserInfoHelper userInfoHelper;
private final IProjectRenewalFundDeclarationService projectRenewalFundDeclarationService; private final IProjectRenewalFundDeclarationService projectRenewalFundDeclarationService;




+ 37
- 43
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectLibManage.java View File

@@ -25,7 +25,7 @@ import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.helper.RegionCacheHelper; import com.hz.pm.api.common.helper.RegionCacheHelper;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.model.entity.ExcelExportWriter; import com.hz.pm.api.common.model.entity.ExcelExportWriter;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.common.util.BizUtils; import com.hz.pm.api.common.util.BizUtils;
import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.common.util.ExcelDownUtil;
import com.hz.pm.api.dashboard.handle.ApplicationHandler; import com.hz.pm.api.dashboard.handle.ApplicationHandler;
@@ -93,6 +93,7 @@ import org.springframework.stereotype.Component;


import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -119,7 +120,7 @@ public class ProjectLibManage {
private final IProjectApplicationService projectApplicationService; private final IProjectApplicationService projectApplicationService;
private final GenerateProjectCodeUtil generateProjectCodeUtil; private final GenerateProjectCodeUtil generateProjectCodeUtil;
private final IProjectInstService projectInstService; private final IProjectInstService projectInstService;
private final StateMachineUtils stateMachineUtils;
private final StateMachineUtil stateMachineUtil;
private final INdProjectDelayApplyService projectDelayApplyService; private final INdProjectDelayApplyService projectDelayApplyService;
private final INdProjectApplyBorrowService projectApplyBorrowService; private final INdProjectApplyBorrowService projectApplyBorrowService;
private final IDingOrganizationService dingOrganizationService; private final IDingOrganizationService dingOrganizationService;
@@ -151,12 +152,11 @@ public class ProjectLibManage {
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req); LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
query.eq(Project::getNewest, Boolean.TRUE); query.eq(Project::getNewest, Boolean.TRUE);
Page<Project> page = projectService.page(req.page(), query); Page<Project> page = projectService.page(req.page(), query);
long total;
if (CollUtil.isEmpty(page.getRecords())) { if (CollUtil.isEmpty(page.getRecords())) {
return PageVo.empty(); return PageVo.empty();
} }


//
List<String> projectCodes = page.getRecords().stream() List<String> projectCodes = page.getRecords().stream()
.map(Project::getProjectCode).collect(Collectors.toList()); .map(Project::getProjectCode).collect(Collectors.toList());


@@ -208,7 +208,7 @@ public class ProjectLibManage {
//项目查最新 //项目查最新
query.eq(Project::getNewest, Boolean.TRUE); query.eq(Project::getNewest, Boolean.TRUE);
Page<Project> page = projectService.page(req.page(), query); Page<Project> page = projectService.page(req.page(), query);
long total;
if (CollUtil.isEmpty(page.getRecords())) { if (CollUtil.isEmpty(page.getRecords())) {
return PageVo.empty(); return PageVo.empty();
} }
@@ -387,11 +387,10 @@ public class ProjectLibManage {
public PageVo<ProjectLibListItemVO> projectAllListWithPermission(ProjectListReq req, UserFullInfoDTO user) { public PageVo<ProjectLibListItemVO> projectAllListWithPermission(ProjectListReq req, UserFullInfoDTO user) {
req = buildProjectLibPermission(req, user); req = buildProjectLibPermission(req, user);
Page<ProjectPO> page = projectService.pageAllWithPermission(req.page(), req); Page<ProjectPO> page = projectService.pageAllWithPermission(req.page(), req);
long total;
if (CollUtil.isEmpty(page.getRecords())) { if (CollUtil.isEmpty(page.getRecords())) {
return PageVo.empty(); return PageVo.empty();
} }
UserFullInfoDTO finalUser = user;


Set<String> projectCodes = page.getRecords().stream() Set<String> projectCodes = page.getRecords().stream()
.map(ProjectPO::getProjectCode).collect(Collectors.toSet()); .map(ProjectPO::getProjectCode).collect(Collectors.toSet());
@@ -443,10 +442,10 @@ public class ProjectLibManage {
item.setProcessStatus(w.getProcessStatus()); item.setProcessStatus(w.getProcessStatus());
item.setInstCode(w.getInstCode()); item.setInstCode(w.getInstCode());
item.setIsHigherSuperOrg(w.getIsHigherSuperOrg()); item.setIsHigherSuperOrg(w.getIsHigherSuperOrg());
if (finalUser.getIsOrgAdmin() &&
if (user.getIsOrgAdmin() &&
ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode().equals(item.getStatus()) ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode().equals(item.getStatus())
&& StringUtils.isNotBlank(w.getSuperOrgCode()) && StringUtils.isNotBlank(finalUser.getEmpPosUnitCode())
&& w.getSuperOrgCode().equals(finalUser.getEmpPosUnitCode())) {
&& StringUtils.isNotBlank(w.getSuperOrgCode()) && StringUtils.isNotBlank(user.getEmpPosUnitCode())
&& w.getSuperOrgCode().equals(user.getEmpPosUnitCode())) {
item.setCanPreDeclared(Boolean.TRUE); item.setCanPreDeclared(Boolean.TRUE);
} }
item.setApprovedAmount(w.getApprovalAmount()); item.setApprovedAmount(w.getApprovalAmount());
@@ -469,11 +468,10 @@ public class ProjectLibManage {
public PageVo<ProjectLibListItemVO> libListWithPermission(ProjectListReq req, UserFullInfoDTO user) { public PageVo<ProjectLibListItemVO> libListWithPermission(ProjectListReq req, UserFullInfoDTO user) {
req = buildProjectLibPermission(req, user); req = buildProjectLibPermission(req, user);
Page<ProjectPO> page = projectService.pagelibWithPermission(req.page(), req); Page<ProjectPO> page = projectService.pagelibWithPermission(req.page(), req);
long total;
if (CollUtil.isEmpty(page.getRecords())) { if (CollUtil.isEmpty(page.getRecords())) {
return PageVo.empty(); return PageVo.empty();
} }
UserFullInfoDTO finalUser = user;


Set<String> projectCodes = page.getRecords().stream() Set<String> projectCodes = page.getRecords().stream()
.map(ProjectPO::getProjectCode).collect(Collectors.toSet()); .map(ProjectPO::getProjectCode).collect(Collectors.toSet());
@@ -525,10 +523,10 @@ public class ProjectLibManage {
item.setProcessStatus(w.getProcessStatus()); item.setProcessStatus(w.getProcessStatus());
item.setInstCode(w.getInstCode()); item.setInstCode(w.getInstCode());
item.setIsHigherSuperOrg(w.getIsHigherSuperOrg()); item.setIsHigherSuperOrg(w.getIsHigherSuperOrg());
if (finalUser.getIsOrgAdmin() &&
if (user.getIsOrgAdmin() &&
ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode().equals(item.getStatus()) ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode().equals(item.getStatus())
&& StringUtils.isNotBlank(w.getSuperOrgCode()) && StringUtils.isNotBlank(finalUser.getEmpPosUnitCode())
&& w.getSuperOrgCode().equals(finalUser.getEmpPosUnitCode())) {
&& StringUtils.isNotBlank(w.getSuperOrgCode()) && StringUtils.isNotBlank(user.getEmpPosUnitCode())
&& w.getSuperOrgCode().equals(user.getEmpPosUnitCode())) {
item.setCanPreDeclared(Boolean.TRUE); item.setCanPreDeclared(Boolean.TRUE);
} }
item.setApprovedAmount(w.getApprovalAmount()); item.setApprovedAmount(w.getApprovalAmount());
@@ -552,15 +550,14 @@ public class ProjectLibManage {
UserFullInfoDTO user) { UserFullInfoDTO user) {
req = buildProjectLibPermission(req, user); req = buildProjectLibPermission(req, user);
Page<ProjectPO> page = projectService.pagelibWithPermission(req.page(), req); Page<ProjectPO> page = projectService.pagelibWithPermission(req.page(), req);
long total;
if (CollUtil.isEmpty(page.getRecords())) { if (CollUtil.isEmpty(page.getRecords())) {
return PageVo.empty(); return PageVo.empty();
} }
UserFullInfoDTO finalUser = user;


Set<String> instCodes = page.getRecords().stream() Set<String> instCodes = page.getRecords().stream()
.filter(p -> StringUtils.isNotBlank(p.getInstCode()))
.map(ProjectPO::getInstCode).collect(Collectors.toSet());
.map(ProjectPO::getInstCode)
.filter(StringUtils::isNotBlank).collect(Collectors.toSet());
List<Task> tasks = taskService.createTaskQuery() List<Task> tasks = taskService.createTaskQuery()
.processInstanceIdIn(instCodes) .processInstanceIdIn(instCodes)
.orderByTaskCreateTime() .orderByTaskCreateTime()
@@ -594,10 +591,10 @@ public class ProjectLibManage {
item.setInstCode(w.getInstCode()); item.setInstCode(w.getInstCode());
item.setIsHigherSuperOrg(w.getIsHigherSuperOrg()); item.setIsHigherSuperOrg(w.getIsHigherSuperOrg());
item.setApproveUsers(buildApproveUsers(w.getInstCode(), map, userMap)); item.setApproveUsers(buildApproveUsers(w.getInstCode(), map, userMap));
if (finalUser.getIsOrgAdmin() &&
if (user.getIsOrgAdmin() &&
ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode().equals(item.getStatus()) ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode().equals(item.getStatus())
&& StringUtils.isNotBlank(w.getSuperOrgCode()) && StringUtils.isNotBlank(finalUser.getEmpPosUnitCode())
&& w.getSuperOrgCode().equals(finalUser.getEmpPosUnitCode())) {
&& StringUtils.isNotBlank(w.getSuperOrgCode()) && StringUtils.isNotBlank(user.getEmpPosUnitCode())
&& w.getSuperOrgCode().equals(user.getEmpPosUnitCode())) {
item.setCanPreDeclared(Boolean.TRUE); item.setCanPreDeclared(Boolean.TRUE);
} }
item.setApprovedAmount(w.getApprovalAmount()); item.setApprovedAmount(w.getApprovalAmount());
@@ -809,13 +806,11 @@ public class ProjectLibManage {
.eq(ProjectRenewalFundDeclaration::getDeleted, Boolean.FALSE) .eq(ProjectRenewalFundDeclaration::getDeleted, Boolean.FALSE)
.orderByAsc(ProjectRenewalFundDeclaration::getProjectYear)); .orderByAsc(ProjectRenewalFundDeclaration::getProjectYear));
Optional.ofNullable(renewalDeclarations).ifPresent(declarations -> Optional.ofNullable(renewalDeclarations).ifPresent(declarations ->
declarations.forEach(declaration -> {
annualAmounts.add(AnnualAmountVO.builder()
.projectId(projectInfo.getId())
.projectYear(declaration.getProjectYear())
.annualAmount(declaration.getAnnualPaymentAmount())
.build());
})
declarations.forEach(declaration -> annualAmounts.add(AnnualAmountVO.builder()
.projectId(projectInfo.getId())
.projectYear(declaration.getProjectYear())
.annualAmount(declaration.getAnnualPaymentAmount())
.build()))
); );
vo.setAnnualAccumulateAmountList(annualAmounts); vo.setAnnualAccumulateAmountList(annualAmounts);
} }
@@ -1032,7 +1027,7 @@ public class ProjectLibManage {
project.setCreateOn(LocalDateTime.now()); project.setCreateOn(LocalDateTime.now());
project.setUpdateOn(LocalDateTime.now()); project.setUpdateOn(LocalDateTime.now());
project.setIsBackReject(Boolean.FALSE); project.setIsBackReject(Boolean.FALSE);
stateMachineUtils.pass(project);
stateMachineUtil.pass(project);
projectService.save(project); projectService.save(project);


oldProject.setIsBackReject(Boolean.TRUE); oldProject.setIsBackReject(Boolean.TRUE);
@@ -1156,7 +1151,7 @@ public class ProjectLibManage {
project.setIsBackReject(isBackReject); project.setIsBackReject(isBackReject);
//终验材料 //终验材料
project.setFinalAcceptanceMaterials(dto.getFinalAcceptanceMaterials()); project.setFinalAcceptanceMaterials(dto.getFinalAcceptanceMaterials());
stateMachineUtils.pass(project);
stateMachineUtil.pass(project);


oldProject.setIsBackReject(isBackReject); oldProject.setIsBackReject(isBackReject);
projectService.updateById(oldProject); projectService.updateById(oldProject);
@@ -1193,7 +1188,7 @@ public class ProjectLibManage {
project.setUpdateOn(LocalDateTime.now()); project.setUpdateOn(LocalDateTime.now());
// 标识保存的项目信息是否为建设方案申报项目 // 标识保存的项目信息是否为建设方案申报项目
project.setIsConstruct(Boolean.FALSE); project.setIsConstruct(Boolean.FALSE);
stateMachineUtils.pass(project);
stateMachineUtil.pass(project);


oldProject.setIsBackReject(Boolean.TRUE); oldProject.setIsBackReject(Boolean.TRUE);
projectService.updateById(oldProject); projectService.updateById(oldProject);
@@ -1218,7 +1213,7 @@ public class ProjectLibManage {
/** /**
* 获取项目初步方案详情 * 获取项目初步方案详情
* *
* @param projectId
* @param projectId \
* @return com.hz.pm.api.projectlib.model.vo.ProjectDetailVO * @return com.hz.pm.api.projectlib.model.vo.ProjectDetailVO
* @author CMM * @author CMM
* @since 2023/07/12 11:43 * @since 2023/07/12 11:43
@@ -1253,17 +1248,16 @@ public class ProjectLibManage {


private boolean checkCanRead(Set<String> subOrgSet, Project project) { private boolean checkCanRead(Set<String> subOrgSet, Project project) {
// 从申请借阅信息表中查出本单位及下属单位审批通过的项目 // 从申请借阅信息表中查出本单位及下属单位审批通过的项目
HashSet<Long> borrowProjectIdSet = new HashSet<>();
List<Long> applyBorrowProjectIdList = projectApplyBorrowService
.list(Wrappers.lambdaQuery(ProjectApplyBorrow.class)
.in(ProjectApplyBorrow::getApplyBorrowEmpPosUnitCode, subOrgSet)
.eq(ProjectApplyBorrow::getIsSuccess, Boolean.TRUE))
.stream().map(ProjectApplyBorrow::getProjectId).filter(borrowProjectIdSet::add).collect(Collectors.toList());
LambdaQueryWrapper<ProjectApplyBorrow> query = Wrappers.lambdaQuery(ProjectApplyBorrow.class)
.select(ProjectApplyBorrow::getProjectId)
.in(ProjectApplyBorrow::getApplyBorrowEmpPosUnitCode, subOrgSet)
.eq(ProjectApplyBorrow::getIsSuccess, Boolean.TRUE);
List<Long> applyBorrowProjectIdList = CollUtils.fieldList(projectApplyBorrowService.list(query), ProjectApplyBorrow::getProjectId);
return applyBorrowProjectIdList.contains(project.getId()); return applyBorrowProjectIdList.contains(project.getId());
} }


private Set<String> getSubOrgList(String empPosUnitCode) { private Set<String> getSubOrgList(String empPosUnitCode) {
HashSet<String> orgSet = new HashSet<>();
Set<String> orgSet = new HashSet<>();
// 先将自己加入子集 // 先将自己加入子集
orgSet.add(empPosUnitCode); orgSet.add(empPosUnitCode);
Set<String> subOrgList = dingOrganizationService Set<String> subOrgList = dingOrganizationService
@@ -1505,7 +1499,7 @@ public class ProjectLibManage {
PaymentPlanVO vo = BeanUtil.copyProperties(p, PaymentPlanVO.class); PaymentPlanVO vo = BeanUtil.copyProperties(p, PaymentPlanVO.class);
vo.setRatio((Objects.isNull(totalAmount) || totalAmount.compareTo(BigDecimal.ZERO) == 0) ? "0%" vo.setRatio((Objects.isNull(totalAmount) || totalAmount.compareTo(BigDecimal.ZERO) == 0) ? "0%"
: p.getPaymentAmount().multiply(BigDecimal.valueOf(100)) : p.getPaymentAmount().multiply(BigDecimal.valueOf(100))
.divide(totalAmount, BigDecimal.ROUND_CEILING, BigDecimal.ROUND_CEILING) + "%");
.divide(totalAmount, BigDecimal.ROUND_CEILING, RoundingMode.CEILING) + "%");
return vo; return vo;
}) })
.collect(Collectors.toList()); .collect(Collectors.toList());
@@ -1565,7 +1559,7 @@ public class ProjectLibManage {


//2.要判断 项目在当前状态 有没有被驳回和退回过 //2.要判断 项目在当前状态 有没有被驳回和退回过
//当前项目状态流程的 实例 看看是不是有2个以上 有2个说明 有退回 驳回 //当前项目状态流程的 实例 看看是不是有2个以上 有2个说明 有退回 驳回
Boolean isChangeRecord = todoService.isChangeRecord(projectId);
boolean isChangeRecord = todoService.isChangeRecord(projectId);
if (!isChangeRecord) { if (!isChangeRecord) {
return res; return res;
} }
@@ -1623,7 +1617,7 @@ public class ProjectLibManage {
private void saveApplication(ProjectDTO projectDto, Project project, Boolean isConstruct) { private void saveApplication(ProjectDTO projectDto, Project project, Boolean isConstruct) {
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
//保存项目应用 //保存项目应用
Boolean isApp = Objects.nonNull(projectDto.getIncludeApplication()) && CommonEnum.YES.getCode().equals(projectDto.getIncludeApplication())
boolean isApp = Objects.nonNull(projectDto.getIncludeApplication()) && CommonEnum.YES.getCode().equals(projectDto.getIncludeApplication())
? Boolean.TRUE : Boolean.FALSE; ? Boolean.TRUE : Boolean.FALSE;
//采取批量删除 批量添加的方式 //采取批量删除 批量添加的方式
Integer version = Objects.nonNull(project.getVersion()) ? project.getVersion() : 1; Integer version = Objects.nonNull(project.getVersion()) ? project.getVersion() : 1;


+ 16
- 23
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectRenewalFundManage.java View File

@@ -289,7 +289,6 @@ public class ProjectRenewalFundManage {
} }
vo.setProjectName(operationBaseinfo.getBaseProjName()); vo.setProjectName(operationBaseinfo.getBaseProjName());
vo.setProjectType(operationBaseinfo.getBaseProjType()); vo.setProjectType(operationBaseinfo.getBaseProjType());
// vo.setStage(project.getStage());
vo.setStatus(StringUtils.isNotBlank(operationBaseinfo.getBaseProjSetProg()) ? vo.setStatus(StringUtils.isNotBlank(operationBaseinfo.getBaseProjSetProg()) ?
Integer.parseInt(operationBaseinfo.getBaseProjSetProg()) : null); Integer.parseInt(operationBaseinfo.getBaseProjSetProg()) : null);
vo.setBuildOrgName(operationBaseinfo.getBaseBuildDeprt()); vo.setBuildOrgName(operationBaseinfo.getBaseBuildDeprt());
@@ -307,19 +306,17 @@ public class ProjectRenewalFundManage {
.eq(ProjectRenewalFundDeclaration::getDeleted,Boolean.FALSE) .eq(ProjectRenewalFundDeclaration::getDeleted,Boolean.FALSE)
.orderByAsc(ProjectRenewalFundDeclaration::getProjectYear)); .orderByAsc(ProjectRenewalFundDeclaration::getProjectYear));
Optional.ofNullable(renewalDeclarations).ifPresent(declarations -> Optional.ofNullable(renewalDeclarations).ifPresent(declarations ->
declarations.forEach(declaration -> {
annualAmounts.add(AnnualAmountVO.builder()
.projectId(operationBaseinfo.getId())
.projectCode(operationBaseinfo.getBaseProjId())
.projectYear(declaration.getProjectYear())
.annualAmount(declaration.getAnnualPaymentAmount())
.haveAmount(declaration.getHaveAmount())
.govOwnFinanceAmount(declaration.getGovOwnFinanceAmount())
.bankLendingAmount(declaration.getBankLendingAmount())
.govSuperiorFinanceAmount(declaration.getGovSuperiorFinanceAmount())
.otherAmount(declaration.getOtherAmount())
.build());
})
declarations.forEach(declaration -> annualAmounts.add(AnnualAmountVO.builder()
.projectId(operationBaseinfo.getId())
.projectCode(operationBaseinfo.getBaseProjId())
.projectYear(declaration.getProjectYear())
.annualAmount(declaration.getAnnualPaymentAmount())
.haveAmount(declaration.getHaveAmount())
.govOwnFinanceAmount(declaration.getGovOwnFinanceAmount())
.bankLendingAmount(declaration.getBankLendingAmount())
.govSuperiorFinanceAmount(declaration.getGovSuperiorFinanceAmount())
.otherAmount(declaration.getOtherAmount())
.build()))
); );
vo.setAnnualAccumulateAmountList(annualAmounts); vo.setAnnualAccumulateAmountList(annualAmounts);
} }
@@ -332,7 +329,6 @@ public class ProjectRenewalFundManage {
* @return * @return
*/ */
public Long declared(ProjectRenewalFundDeclarationDTO dto) { public Long declared(ProjectRenewalFundDeclarationDTO dto) {
Integer projectYear = dto.getProjectYear();
//要判断 项目id 是否 以及状态是 已验收 //要判断 项目id 是否 以及状态是 已验收
String projectCode = dto.getProjectCode(); String projectCode = dto.getProjectCode();
Project project = projectService.getProjectByCode(projectCode); Project project = projectService.getProjectByCode(projectCode);
@@ -388,9 +384,6 @@ public class ProjectRenewalFundManage {
.throwMessage("续建资金年度错误!"); .throwMessage("续建资金年度错误!");
} }


//判断金额
// checkPaymentAmount(projectCode,projectYear,dto.getAnnualPaymentAmount());

declaration.setApprovalStatus(ProjectRenewalApprovalStatusEnum.PENDING.name()); declaration.setApprovalStatus(ProjectRenewalApprovalStatusEnum.PENDING.name());
if(Objects.nonNull(project)){ if(Objects.nonNull(project)){
declaration.setRegionCode(project.getAreaCode()); declaration.setRegionCode(project.getAreaCode());
@@ -417,16 +410,16 @@ public class ProjectRenewalFundManage {
.eq(PaymentPlan::getProjectCode, projectCode) .eq(PaymentPlan::getProjectCode, projectCode)
.orderByAsc(PaymentPlan::getPaymentTime)); .orderByAsc(PaymentPlan::getPaymentTime));
VUtils.isTrue(CollUtil.isEmpty(paymentPlans)).throwMessage("未有所选年度的支付计划,无法提交"); VUtils.isTrue(CollUtil.isEmpty(paymentPlans)).throwMessage("未有所选年度的支付计划,无法提交");
Boolean hasYearPlan = Boolean.FALSE;
boolean hasYearPlan = Boolean.FALSE;


for(PaymentPlan plan : paymentPlans){ for(PaymentPlan plan : paymentPlans){
if(Objects.isNull(plan.getPaymentTime())){ if(Objects.isNull(plan.getPaymentTime())){
continue; continue;
} }
int year = plan.getPaymentTime().getYear(); int year = plan.getPaymentTime().getYear();
if(Objects.nonNull(year) && projectYear.equals(year)){
if(projectYear.equals(year)){
hasYearPlan = Boolean.TRUE; hasYearPlan = Boolean.TRUE;
}else if(Objects.nonNull(year) && projectYear.compareTo(year) > 0){
}else if(projectYear.compareTo(year) > 0){
//2 如果有 这一年前的实际支付金额有没有填 //2 如果有 这一年前的实际支付金额有没有填
VUtils.isTrue(Objects.isNull(plan.getActualPaymentAmount())) VUtils.isTrue(Objects.isNull(plan.getActualPaymentAmount()))
.throwMessage("有漏填写此年度之前年度的实际支付金额,请去合同备案补充"); .throwMessage("有漏填写此年度之前年度的实际支付金额,请去合同备案补充");
@@ -552,7 +545,7 @@ public class ProjectRenewalFundManage {
.sheet(fileName) .sheet(fileName)
.doWrite(collect); .doWrite(collect);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e);
throw new BizException(e);
} }
} }


@@ -593,7 +586,7 @@ public class ProjectRenewalFundManage {
.sheet(fileName) .sheet(fileName)
.doWrite(collect); .doWrite(collect);
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException(e);
throw new BizException(e);
} }
} }




+ 0
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/po/ProjectRenewalFundDeclarationPO.java View File

@@ -1,8 +1,5 @@
package com.hz.pm.api.projectlib.model.po; package com.hz.pm.api.projectlib.model.po;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


+ 0
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/req/ProjectRenewalAuditReq.java View File

@@ -5,9 +5,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.Length;


import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;


/** /**
* 续建项目审核请求实体 * 续建项目审核请求实体


+ 4
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/INdProjectStatusChangeService.java View File

@@ -4,6 +4,8 @@ import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent;
import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange; import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;


import java.util.Collection;

/** /**
* <p> * <p>
* 服务类 * 服务类
@@ -16,4 +18,6 @@ public interface INdProjectStatusChangeService extends IService<ProjectStatusCha


ProjectStatusChange getByProjectStatus(ProjectStatusChangeEvent event, Long projectId); ProjectStatusChange getByProjectStatus(ProjectStatusChangeEvent event, Long projectId);


ProjectStatusChange getByProjectStatus(ProjectStatusChangeEvent event, Collection<Long> projectIds);

} }

+ 12
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/impl/NdProjectStatusChangeServiceImpl.java View File

@@ -10,6 +10,10 @@ import com.hz.pm.api.projectlib.service.INdProjectStatusChangeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;


import java.util.Collection;

import static com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS;

/** /**
* <p> * <p>
* 服务实现类 * 服务实现类
@@ -31,4 +35,12 @@ public class NdProjectStatusChangeServiceImpl extends ServiceImpl<NdProjectStatu
return getOne(query); return getOne(query);
} }


@Override
public ProjectStatusChange getByProjectStatus(ProjectStatusChangeEvent event, Collection<Long> projectIds) {
LambdaQueryWrapper<ProjectStatusChange> query = Wrappers.lambdaQuery(ProjectStatusChange.class)
.in(ProjectStatusChange::getProjectId, projectIds)
.eq(ProjectStatusChange::getEvent, DEPARTMENT_UNITED_REVIEW_PASS)
.last(BizConst.LIMIT_1);
return getOne(query);
}
} }

+ 0
- 2
hz-pm-api/src/main/java/com/hz/pm/api/provincial/model/res/OssApiData.java View File

@@ -1,7 +1,5 @@
package com.hz.pm.api.provincial.model.res; package com.hz.pm.api.provincial.model.res;


import com.ningdatech.basic.enumeration.Status;
import com.ningdatech.basic.model.ApiStatus;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;




+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/provincial/model/res/OssApiResponse.java View File

@@ -65,7 +65,7 @@ public class OssApiResponse<T> implements Serializable {
* @return ApiResponse * @return ApiResponse
*/ */
public static <T> OssApiResponse<T> of(Integer respCode, String respMsg, T data) { public static <T> OssApiResponse<T> of(Integer respCode, String respMsg, T data) {
return new OssApiResponse<T>(respCode, respMsg, data);
return new OssApiResponse<>(respCode, respMsg, data);
} }


/** /**


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/ProcessEndListener.java View File

@@ -7,7 +7,7 @@ import com.ningdatech.basic.exception.BizException;
import com.ningdatech.file.service.FileService; import com.ningdatech.file.service.FileService;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.model.constant.ProjectDeclareConst; import com.hz.pm.api.common.model.constant.ProjectDeclareConst;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.projectdeclared.converter.ApplicationConverter; import com.hz.pm.api.projectdeclared.converter.ApplicationConverter;
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum;
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum;
@@ -211,8 +211,8 @@ public class ProcessEndListener {
// 当前项目状态是部门联审中 // 当前项目状态是部门联审中
case DEPARTMENT_JOINT_REVIEW: case DEPARTMENT_JOINT_REVIEW:
//如果是 区县 并且 500万及以上要推送省局重大项目 //如果是 区县 并且 500万及以上要推送省局重大项目
if (!StateMachineUtils.isCityProject(declaredProject) &&
StateMachineUtils.judgeDeclareAmount(declaredProject,
if (!StateMachineUtil.isCityProject(declaredProject) &&
StateMachineUtil.judgeDeclareAmount(declaredProject,
ProjectDeclareConst.Number.DECLARE_COUNTY_AMOUNT_JUDGEMENT)) { ProjectDeclareConst.Number.DECLARE_COUNTY_AMOUNT_JUDGEMENT)) {
try { try {
List<ProjectApplication> applications = projectApplicationService List<ProjectApplication> applications = projectApplicationService


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/listener/ProcessStartListener.java View File

@@ -3,7 +3,7 @@ package com.hz.pm.api.scheduler.listener;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.entity.ProjectInst; import com.hz.pm.api.projectlib.model.entity.ProjectInst;
import com.hz.pm.api.projectlib.service.IProjectInstService; import com.hz.pm.api.projectlib.service.IProjectInstService;
@@ -40,7 +40,7 @@ public class ProcessStartListener {


private final IProjectService projectService; private final IProjectService projectService;


private final StateMachineUtils stateMachineUtils;
private final StateMachineUtil stateMachineUtil;


@Async @Async
@EventListener @EventListener
@@ -82,7 +82,7 @@ public class ProcessStartListener {
//如果真的没有实时任务和历史任务 那么说明 该项目没有人审批 需要去调用状态机 //如果真的没有实时任务和历史任务 那么说明 该项目没有人审批 需要去调用状态机
Long projectId = projectInst.getProjectId(); Long projectId = projectInst.getProjectId();
Project project = projectService.getNewProject(projectId); Project project = projectService.getNewProject(projectId);
stateMachineUtils.pass(project);
stateMachineUtil.pass(project);
project.setUpdateOn(LocalDateTime.now()); project.setUpdateOn(LocalDateTime.now());
projectService.updateById(project); projectService.updateById(project);
} }


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/CheckProvincialReviewResultTask.java View File

@@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.model.constant.ProjectDeclareConst; import com.hz.pm.api.common.model.constant.ProjectDeclareConst;
import com.hz.pm.api.common.model.constant.RegionConst; import com.hz.pm.api.common.model.constant.RegionConst;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.service.IProjectService; import com.hz.pm.api.projectlib.service.IProjectService;
@@ -42,7 +42,7 @@ public class CheckProvincialReviewResultTask {
private final IJoinReviewProvincialBureauService reviewProvincialBureauService; private final IJoinReviewProvincialBureauService reviewProvincialBureauService;


private final IProjectService projectService; private final IProjectService projectService;
private final StateMachineUtils stateMachineUtils;
private final StateMachineUtil stateMachineUtil;


@Value("${hostname}") @Value("${hostname}")
private String HOST_NAME; private String HOST_NAME;
@@ -96,7 +96,7 @@ public class CheckProvincialReviewResultTask {
//在省级联审 才调状态机 否则 只改变 联审结果 //在省级联审 才调状态机 否则 只改变 联审结果
if(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS.getCode().equals( if(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS.getCode().equals(
project.getStatus())){ project.getStatus())){
stateMachineUtils.pass(project);
stateMachineUtil.pass(project);
} }
log.info("已经审批完成 进入下一状态"); log.info("已经审批完成 进入下一状态");
} }


+ 17
- 33
hz-pm-api/src/main/java/com/hz/pm/api/scheduler/task/ProjectStatusFlowTask.java View File

@@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.service.IProjectService; import com.hz.pm.api.projectlib.service.IProjectService;
import com.hz.pm.api.scheduler.contants.TaskContant;
import com.hz.pm.api.staging.contants.StagingContant; import com.hz.pm.api.staging.contants.StagingContant;
import com.hz.pm.api.staging.model.entity.ProjectStaging; import com.hz.pm.api.staging.model.entity.ProjectStaging;
import com.hz.pm.api.staging.service.IProjectStagingService; import com.hz.pm.api.staging.service.IProjectStagingService;
@@ -20,7 +19,6 @@ import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects; import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;


@@ -38,9 +36,7 @@ public class ProjectStatusFlowTask {
private final IProjectStagingService projectStagingService; private final IProjectStagingService projectStagingService;


private final IProjectService projectService; private final IProjectService projectService;

private final ProjectStatusFlowMapUtil projectStatusFlowMapUtil;

@Value("${hostname}") @Value("${hostname}")
private String HOST_NAME; private String HOST_NAME;


@@ -49,44 +45,39 @@ public class ProjectStatusFlowTask {
if (HOST_NAME.equals(InetAddress.getLocalHost().getHostName())) { if (HOST_NAME.equals(InetAddress.getLocalHost().getHostName())) {
//1. 定时取 项目暂存表的数据 去进行状态继续流转 //1. 定时取 项目暂存表的数据 去进行状态继续流转
List<ProjectStaging> stagingList = projectStagingService.list(Wrappers.lambdaQuery(ProjectStaging.class) List<ProjectStaging> stagingList = projectStagingService.list(Wrappers.lambdaQuery(ProjectStaging.class)
.eq(ProjectStaging::getDead,Boolean.FALSE)
.le(ProjectStaging::getNextTime, LocalDateTime.now())
.le(ProjectStaging::getRetryTimes, StagingContant.Retry.MAX_RETRY_TIMES)
.orderByAsc(ProjectStaging::getProjectId));
.eq(ProjectStaging::getDead, Boolean.FALSE)
.le(ProjectStaging::getNextTime, LocalDateTime.now())
.le(ProjectStaging::getRetryTimes, StagingContant.Retry.MAX_RETRY_TIMES)
.orderByAsc(ProjectStaging::getProjectId));


log.info("需要状态流转的项目 size:{} :{}",stagingList.size(), JSON.toJSONString(stagingList));
if(CollUtil.isEmpty(stagingList)){
log.info("需要状态流转的项目 size:{} :{}", stagingList.size(), JSON.toJSONString(stagingList));
if (CollUtil.isEmpty(stagingList)) {
log.info("没有需要状态流转的项目!"); log.info("没有需要状态流转的项目!");
return; return;
} }


//遍历 //遍历
for(ProjectStaging projectStaging : stagingList){
try{
for (ProjectStaging projectStaging : stagingList) {
try {
Project project = projectService.getById(projectStaging.getProjectId()); Project project = projectService.getById(projectStaging.getProjectId());
if(Objects.isNull(project)){
log.info("此项目 【{}】 不存在",projectStaging.getProjectId());
if (Objects.isNull(project)) {
log.info("此项目 【{}】 不存在", projectStaging.getProjectId());
continue; continue;
} }

//2. 用函数map 定位到 状态流转的函数 //2. 用函数map 定位到 状态流转的函数
Map<Integer, Function<Project, Boolean>> reStartProcessMap =
projectStatusFlowMapUtil.statusFlowFunctionMap;

if(!reStartProcessMap.containsKey(project.getStatus())){
log.info("此项目 【{}】 当前状态 【{}】,没有对应流转函数",projectStaging.getProjectId(),project.getStatus());
Function<Project, Boolean> flowFunction = ProjectStatusFlowMapUtil.getFlowFunction(project.getStatus());
if (flowFunction == null) {
log.info("此项目 【{}】 当前状态 【{}】,没有对应流转函数", projectStaging.getProjectId(), project.getStatus());
continue; continue;
} }

Function<Project, Boolean> functionMap = reStartProcessMap.get(project.getStatus());
//执行对应的函数 //执行对应的函数
if(functionMap.apply(project)){
if (flowFunction.apply(project)) {
//执行成功了 删除暂存的数据 //执行成功了 删除暂存的数据
projectStagingService.removeById(projectStaging); projectStagingService.removeById(projectStaging);
} }
}catch (Exception e){
} catch (Exception e) {
log.error("项目流转 异常 projectId:【" + projectStaging.getProjectId() + "】 异常内容:" + e.getMessage()); log.error("项目流转 异常 projectId:【" + projectStaging.getProjectId() + "】 异常内容:" + e.getMessage());
}finally {
} finally {
//增加重试的次数 和下次扫描时间 //增加重试的次数 和下次扫描时间
projectStagingService.addRetryTimes(projectStaging); projectStagingService.addRetryTimes(projectStaging);
} }
@@ -94,11 +85,4 @@ public class ProjectStatusFlowTask {
} }
} }


// @Scheduled(cron = "0 */1 * * * ?")
public void nonUserFinishFlowToNext() throws UnknownHostException {
//测试暂时用自己HOST
if (TaskContant.Host.HOST_ZPF.equals(InetAddress.getLocalHost().getHostName())) {

}
}
} }

+ 16
- 13
hz-pm-api/src/main/java/com/hz/pm/api/staging/utils/ProjectStatusFlowMapUtil.java View File

@@ -1,5 +1,6 @@
package com.hz.pm.api.staging.utils; package com.hz.pm.api.staging.utils;


import cn.hutool.core.lang.func.Func;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.hz.pm.api.projectdeclared.manage.ReviewByDeptJointManage; import com.hz.pm.api.projectdeclared.manage.ReviewByDeptJointManage;
import com.hz.pm.api.projectdeclared.manage.ReviewByProvincialDeptManage; import com.hz.pm.api.projectdeclared.manage.ReviewByProvincialDeptManage;
@@ -19,25 +20,27 @@ import java.util.function.Function;
*/ */
@Component @Component
public class ProjectStatusFlowMapUtil { public class ProjectStatusFlowMapUtil {
@Autowired
private ReviewByProvincialDeptManage provincialDeptManage;


@Autowired
private ReviewByDeptJointManage reviewByDeptJointManage;
private static final Map<Integer, Function<Project, Boolean>> STATUS_FLOW_FUNCTION_MAP = Maps.newHashMap();


public Map<Integer, Function<Project,Boolean>> statusFlowFunctionMap = Maps.newHashMap();

public static Function<Project, Boolean> getFlowFunction(Integer status){
return STATUS_FLOW_FUNCTION_MAP.get(status);
}


/** /**
* 初始化业务分派逻辑,代替了if-else部分
* key: 枚举 状态值
* value: lambda表达式,最终会获取发起实例的函数
* 初始化业务分派逻辑,代替了if-else部分
* key: 枚举 状态值
* value: lambda表达式,最终会获取发起实例的函数
*/ */
public ProjectStatusFlowMapUtil(){
public ProjectStatusFlowMapUtil(ReviewByProvincialDeptManage provincialDeptManage,
ReviewByDeptJointManage reviewByDeptJointManage) {
//省级部门联审 //省级部门联审
statusFlowFunctionMap.put(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS.getCode(),
project->provincialDeptManage.startTheProcess(project));
STATUS_FLOW_FUNCTION_MAP.put(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS.getCode(),
provincialDeptManage::startTheProcess);
//部门联审 //部门联审
statusFlowFunctionMap.put(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode(),
project->reviewByDeptJointManage.startTheProcess(project));
STATUS_FLOW_FUNCTION_MAP.put(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode(),
reviewByDeptJointManage::startTheProcess);
} }

} }

+ 3
- 5
hz-pm-api/src/main/java/com/hz/pm/api/staging/utils/WorkNoticeFlowMapUtil.java View File

@@ -1,12 +1,10 @@
package com.hz.pm.api.staging.utils; package com.hz.pm.api.staging.utils;


import java.util.Map;
import javax.annotation.PostConstruct;

import com.google.common.collect.Maps;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.google.common.collect.Maps;
import lombok.RequiredArgsConstructor;
import java.util.Map;


/** /**
* 工作通知流转 事件函数MAP * 工作通知流转 事件函数MAP


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/sys/mapper/NotifyMapper.java View File

@@ -1,7 +1,6 @@
package com.hz.pm.api.sys.mapper; package com.hz.pm.api.sys.mapper;


import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hz.pm.api.sys.model.entity.Notice;
import com.hz.pm.api.sys.model.entity.Notify; import com.hz.pm.api.sys.model.entity.Notify;


/** /**


+ 5
- 0
hz-pm-api/src/main/java/com/hz/pm/api/sys/model/dto/MeetingReviewMsgExtraDTO.java View File

@@ -1,5 +1,8 @@
package com.hz.pm.api.sys.model.dto; package com.hz.pm.api.sys.model.dto;


import lombok.Data;
import lombok.EqualsAndHashCode;

/** /**
* <p> * <p>
* MeetingReviewMsgExtraDTO * MeetingReviewMsgExtraDTO
@@ -8,6 +11,8 @@ package com.hz.pm.api.sys.model.dto;
* @author WendyYang * @author WendyYang
* @since 2023/4/12 * @since 2023/4/12
**/ **/
@Data
@EqualsAndHashCode(callSuper = true)
public class MeetingReviewMsgExtraDTO extends AbstractMsgExtraDTO { public class MeetingReviewMsgExtraDTO extends AbstractMsgExtraDTO {


private Long meetingId; private Long meetingId;


+ 0
- 1
hz-pm-api/src/main/java/com/hz/pm/api/sys/model/dto/MenuSaveDTO.java View File

@@ -6,7 +6,6 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.*; import lombok.*;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;


import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.Serializable; import java.io.Serializable;


+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/sys/model/entity/Menu.java View File

@@ -33,7 +33,7 @@ import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;
@TableName("nd_menu") @TableName("nd_menu")
@ApiModel(value = "Menu", description = "菜单") @ApiModel(value = "Menu", description = "菜单")
@AllArgsConstructor @AllArgsConstructor
public class Menu extends MenuTreeEntity<Menu, Long> {
public class Menu extends MenuTreeEntity<Menu> {


private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;




+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/sys/model/vo/MenuRoleVO.java View File

@@ -24,7 +24,7 @@ import lombok.experimental.Accessors;
@Accessors(chain = true) @Accessors(chain = true)
@ApiModel(value = "RoleMenuVO", description = "菜单") @ApiModel(value = "RoleMenuVO", description = "菜单")
@AllArgsConstructor @AllArgsConstructor
public class MenuRoleVO extends MenuTreeEntity<MenuRoleVO, Long> {
public class MenuRoleVO extends MenuTreeEntity<MenuRoleVO> {


private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;




+ 2
- 11
hz-pm-api/src/main/java/com/hz/pm/api/todocenter/enumeration/IsOrNotEnum.java View File

@@ -16,7 +16,6 @@ import lombok.NoArgsConstructor;
*/ */
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "IsOrNotEnum", description = "是否-枚举") @ApiModel(value = "IsOrNotEnum", description = "是否-枚举")
public enum IsOrNotEnum { public enum IsOrNotEnum {
/** /**
@@ -30,16 +29,8 @@ public enum IsOrNotEnum {
IS(1, "是"); IS(1, "是");




private Integer code;
private String desc;

public String getDesc() {
return desc;
}

public void setDesc(String desc) {
this.desc = desc;
}
private final Integer code;
private final String desc;


public static String getDescByCode(Integer code) { public static String getDescByCode(Integer code) {
if (Objects.isNull(code)) { if (Objects.isNull(code)) {


+ 72
- 70
hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java View File

@@ -38,7 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ningdatech.basic.exception.BizException; import com.ningdatech.basic.exception.BizException;
import com.hz.pm.api.common.statemachine.util.StateMachineUtils;
import com.hz.pm.api.common.statemachine.util.StateMachineUtil;
import com.hz.pm.api.projectdeclared.manage.DeclaredProjectManage; import com.hz.pm.api.projectdeclared.manage.DeclaredProjectManage;
import com.hz.pm.api.projectdeclared.model.dto.ProjectDraftSaveDTO; import com.hz.pm.api.projectdeclared.model.dto.ProjectDraftSaveDTO;
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum;
@@ -82,7 +82,7 @@ public class HandlerManage {
private final TaskService taskService; private final TaskService taskService;
private final HistoryService historyService; private final HistoryService historyService;
private final IProjectService projectService; private final IProjectService projectService;
private final StateMachineUtils stateMachineUtils;
private final StateMachineUtil stateMachineUtil;
private final ProcessInstanceService processInstanceService; private final ProcessInstanceService processInstanceService;
private final IProjectApplicationService projectApplicationService; private final IProjectApplicationService projectApplicationService;
private final IProjectStagingService projectStagingService; private final IProjectStagingService projectStagingService;
@@ -102,10 +102,11 @@ public class HandlerManage {


/** /**
* 审核通过后 所处理的逻辑 * 审核通过后 所处理的逻辑
*
* @param declaredProject * @param declaredProject
* @param instance * @param instance
*/ */
public void afterPassTodo(Project declaredProject, HistoricProcessInstance instance){
public void afterPassTodo(Project declaredProject, HistoricProcessInstance instance) {
Long userId = LoginUserUtil.getUserId(); Long userId = LoginUserUtil.getUserId();
// 获取流程通过后的流程实例 // 获取流程通过后的流程实例
HistoricProcessInstance newInstance = historyService.createHistoricProcessInstanceQuery() HistoricProcessInstance newInstance = historyService.createHistoricProcessInstanceQuery()
@@ -118,7 +119,7 @@ public class HandlerManage {
.last(BizConst.LIMIT_1)); .last(BizConst.LIMIT_1));
Integer instType = projectInst.getInstType(); Integer instType = projectInst.getInstType();
InstTypeEnum instTypeEnum = InstTypeEnum.getByCode(instType); InstTypeEnum instTypeEnum = InstTypeEnum.getByCode(instType);
if (Objects.isNull(instTypeEnum)){
if (Objects.isNull(instTypeEnum)) {
throw new BizException("当前审批流类型不存在,流程类型code:" + instType); throw new BizException("当前审批流类型不存在,流程类型code:" + instType);
} }


@@ -154,20 +155,20 @@ public class HandlerManage {
// 并向流程发起人发送浙政钉工作通知:【项目名称】已通过【流程名称】,请及时开始下一步操作。 // 并向流程发起人发送浙政钉工作通知:【项目名称】已通过【流程名称】,请及时开始下一步操作。
if (HisProInsEndActId.END.equals(newInstance.getEndActivityId())) { if (HisProInsEndActId.END.equals(newInstance.getEndActivityId())) {
// 如果是申请延期和申请借阅审批流程,不走状态机 // 如果是申请延期和申请借阅审批流程,不走状态机
if (InstTypeEnum.APPLY_DELAY.getCode().equals(instType) || InstTypeEnum.APPLY_BORROW.getCode().equals(instType)){
if (InstTypeEnum.APPLY_DELAY.getCode().equals(instType) || InstTypeEnum.APPLY_BORROW.getCode().equals(instType)) {
switch (instTypeEnum) { switch (instTypeEnum) {
case APPLY_DELAY: case APPLY_DELAY:
// 保存延期申请记录,更新项目建设周期和计划验收时间 // 保存延期申请记录,更新项目建设周期和计划验收时间
updateProjectDelayApplyInfo(declaredProject,instanceId);
updateProjectDelayApplyInfo(declaredProject, instanceId);
break; break;
case APPLY_BORROW: case APPLY_BORROW:
// 更新申请借阅状态为成功 // 更新申请借阅状态为成功
updateProjectApplyBorrowInfo(declaredProject,instanceId);
updateProjectApplyBorrowInfo(declaredProject, instanceId);
break; break;
default: default:
throw new BizException("传入实例类型错误: " + instTypeEnum); throw new BizException("传入实例类型错误: " + instTypeEnum);
} }
}else {
} else {
switch (Objects.requireNonNull(ProjectStatusEnum.match(declaredProject.getStatus()))) { switch (Objects.requireNonNull(ProjectStatusEnum.match(declaredProject.getStatus()))) {
// 当前项目状态是预审中 // 当前项目状态是预审中
case PRE_APPLYING: case PRE_APPLYING:
@@ -180,10 +181,10 @@ public class HandlerManage {
case DEPARTMENT_JOINT_REVIEW: case DEPARTMENT_JOINT_REVIEW:
log.info("部门联审成功后 要判断是否是 区县重大项目"); log.info("部门联审成功后 要判断是否是 区县重大项目");


Boolean isImport = !StateMachineUtils.isCityProject(declaredProject) &&
StateMachineUtils.judgeDeclareAmount(declaredProject,
Boolean isImport = !StateMachineUtil.isCityProject(declaredProject) &&
StateMachineUtil.judgeDeclareAmount(declaredProject,
ProjectDeclareConst.Number.DECLARE_COUNTY_AMOUNT_JUDGEMENT); ProjectDeclareConst.Number.DECLARE_COUNTY_AMOUNT_JUDGEMENT);
log.info("isImport :{}",isImport);
log.info("isImport :{}", isImport);
//如果是 区县 并且 500万及以上要推送省局重大项目 //如果是 区县 并且 500万及以上要推送省局重大项目
if (isImport) { if (isImport) {
try { try {
@@ -191,7 +192,7 @@ public class HandlerManage {
.list(Wrappers.lambdaQuery(ProjectApplication.class) .list(Wrappers.lambdaQuery(ProjectApplication.class)
.eq(ProjectApplication::getProjectCode, declaredProject.getProjectCode())); .eq(ProjectApplication::getProjectCode, declaredProject.getProjectCode()));
joinReviewProvincialBureauService.pushImportProject( joinReviewProvincialBureauService.pushImportProject(
ApplicationConverter.convertProject(declaredProject, applications, fileService,active));
ApplicationConverter.convertProject(declaredProject, applications, fileService, active));
updatePassProjectStatus(userId, declaredProject); updatePassProjectStatus(userId, declaredProject);
break; break;
} catch (Exception e) { } catch (Exception e) {
@@ -210,15 +211,15 @@ public class HandlerManage {
// 当前项目状态是终验审核中 // 当前项目状态是终验审核中
updatePassProjectStatus(userId, declaredProject); updatePassProjectStatus(userId, declaredProject);
// 判断是否 保存建设建议信息 // 判断是否 保存建设建议信息
saveContructionSuggestionInfo(instance.getId(),declaredProject);
saveContructionSuggestionInfo(instance.getId(), declaredProject);
break; break;
default: default:
throw new BizException("传入项目状态错误: " + declaredProject.getStatus()); throw new BizException("传入项目状态错误: " + declaredProject.getStatus());
} }
} }
//发送消息 //发送消息
noticeManage.sendNotice(instance.getStartUserId(),userId,declaredProject,instance.getProcessDefinitionName(),
PASS_MSG_TEMPLATE2,MsgTypeEnum.PROJECT_REVIEW_PASS);
noticeManage.sendNotice(instance.getStartUserId(), userId, declaredProject, instance.getProcessDefinitionName(),
PASS_MSG_TEMPLATE2, MsgTypeEnum.PROJECT_REVIEW_PASS);
} else { } else {
// 若有下一个审核人(当前节点的用户),会签/或签会有多个 // 若有下一个审核人(当前节点的用户),会签/或签会有多个
// 向其发送浙政钉工作通知:标题:审核任务 内容:【单位名称】的【项目名称】需要您审核。 // 向其发送浙政钉工作通知:标题:审核任务 内容:【单位名称】的【项目名称】需要您审核。
@@ -228,14 +229,15 @@ public class HandlerManage {
throw new BizException("审核人信息不存在!"); throw new BizException("审核人信息不存在!");
} }
//发送消息 //发送消息
noticeManage.sendNotice(currentEmployeeCode,userId,declaredProject,instance.getProcessDefinitionName(),
PASS_MSG_TEMPLATE,MsgTypeEnum.PROJECT_REVIEW);
noticeManage.sendNotice(currentEmployeeCode, userId, declaredProject, instance.getProcessDefinitionName(),
PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW);
} }
} }
} }


/** /**
* 去保存 建设建议信息 * 去保存 建设建议信息
*
* @param instanceId * @param instanceId
* @param project * @param project
*/ */
@@ -244,7 +246,7 @@ public class HandlerManage {
.eq(ProjectConstructionSuggestions::getProjectCode, project.getProjectCode()) .eq(ProjectConstructionSuggestions::getProjectCode, project.getProjectCode())
.eq(ProjectConstructionSuggestions::getInstanceId, instanceId) .eq(ProjectConstructionSuggestions::getInstanceId, instanceId)
.last(BizConst.LIMIT_1)); .last(BizConst.LIMIT_1));
if(Objects.isNull(pcs)){
if (Objects.isNull(pcs)) {
log.info("没有该流程的 建设 建议信息"); log.info("没有该流程的 建设 建议信息");
return; return;
} }
@@ -257,7 +259,7 @@ public class HandlerManage {


public void updateProjectApplyBorrowInfo(Project declaredProject, String instanceId) { public void updateProjectApplyBorrowInfo(Project declaredProject, String instanceId) {
// 获取申请借阅信息 // 获取申请借阅信息
ProjectApplyBorrow projectApplyBorrow = projectApplyBorrowService.getOne(Wrappers.lambdaQuery(ProjectApplyBorrow.class)
ProjectApplyBorrow projectApplyBorrow = projectApplyBorrowService.getOne(Wrappers.lambdaQuery(ProjectApplyBorrow.class)
.eq(ProjectApplyBorrow::getProjectId, declaredProject.getId()) .eq(ProjectApplyBorrow::getProjectId, declaredProject.getId())
.eq(ProjectApplyBorrow::getInstanceId, instanceId)); .eq(ProjectApplyBorrow::getInstanceId, instanceId));
// 更新项目借阅信息为成功 // 更新项目借阅信息为成功
@@ -297,6 +299,7 @@ public class HandlerManage {


/** /**
* 驳回后 所处理的逻辑 * 驳回后 所处理的逻辑
*
* @param declaredProject * @param declaredProject
* @param instance * @param instance
*/ */
@@ -313,8 +316,8 @@ public class HandlerManage {
updateRejectProjectStatus(userId, declaredProject, instType); updateRejectProjectStatus(userId, declaredProject, instType);
} }
//发送消息 //发送消息
noticeManage.sendNotice(instance.getStartUserId(),userId,declaredProject,instance.getProcessDefinitionName(),
REJECT_MSG_TEMPLATE,MsgTypeEnum.PROJECT_REVIEW_REJECT);
noticeManage.sendNotice(instance.getStartUserId(), userId, declaredProject, instance.getProcessDefinitionName(),
REJECT_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW_REJECT);
} }


/** /**
@@ -352,7 +355,7 @@ public class HandlerManage {
private void saveToDraft(Project declaredProject) { private void saveToDraft(Project declaredProject) {
ProjectDraftSaveDTO draftSaveDto = new ProjectDraftSaveDTO(); ProjectDraftSaveDTO draftSaveDto = new ProjectDraftSaveDTO();
ProjectDTO projectInfo = new ProjectDTO(); ProjectDTO projectInfo = new ProjectDTO();
BeanUtils.copyProperties(declaredProject,projectInfo);
BeanUtils.copyProperties(declaredProject, projectInfo);
// 查询出项目关联的应用信息 // 查询出项目关联的应用信息
List<ProjectApplication> applicationList = projectApplicationService.list(Wrappers.lambdaQuery(ProjectApplication.class) List<ProjectApplication> applicationList = projectApplicationService.list(Wrappers.lambdaQuery(ProjectApplication.class)
.eq(ProjectApplication::getProjectId, declaredProject.getId())); .eq(ProjectApplication::getProjectId, declaredProject.getId()));
@@ -362,7 +365,7 @@ public class HandlerManage {
return applicationDTO; return applicationDTO;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
projectInfo.setApplicationList(applicationDTOList); projectInfo.setApplicationList(applicationDTOList);
HashMap<String,Object> dynamicMap = JSON.parseObject(declaredProject.getDynamicForm(), HashMap.class);
HashMap<String, Object> dynamicMap = JSON.parseObject(declaredProject.getDynamicForm(), HashMap.class);
projectInfo.setDynamicForm(dynamicMap); projectInfo.setDynamicForm(dynamicMap);
draftSaveDto.setProjectInfo(projectInfo); draftSaveDto.setProjectInfo(projectInfo);
declaredProjectManage.saveToDraft(draftSaveDto); declaredProjectManage.saveToDraft(draftSaveDto);
@@ -370,6 +373,7 @@ public class HandlerManage {


/** /**
* 删除项目的所有信息 * 删除项目的所有信息
*
* @param declaredProject * @param declaredProject
*/ */
public void deleteProjectRelated(Project declaredProject) { public void deleteProjectRelated(Project declaredProject) {
@@ -377,11 +381,12 @@ public class HandlerManage {
projectService.removeById(declaredProject); projectService.removeById(declaredProject);
//删除app信息 //删除app信息
projectApplicationService.remove(Wrappers.lambdaQuery(ProjectApplication.class) projectApplicationService.remove(Wrappers.lambdaQuery(ProjectApplication.class)
.eq(ProjectApplication::getProjectId,declaredProject.getId()));
.eq(ProjectApplication::getProjectId, declaredProject.getId()));
} }


/** /**
* 退回审核后 所处理的逻辑 * 退回审核后 所处理的逻辑
*
* @param declaredProject * @param declaredProject
* @param instance * @param instance
*/ */
@@ -394,21 +399,21 @@ public class HandlerManage {
Integer instType = projectInst.getInstType(); Integer instType = projectInst.getInstType();
LambdaUpdateWrapper<Project> updateWrapper = Wrappers.lambdaUpdate(); LambdaUpdateWrapper<Project> updateWrapper = Wrappers.lambdaUpdate();
// 如果是预审审批或建设方案退回,需要重新盖章,原来盖过章的文件要清空 // 如果是预审审批或建设方案退回,需要重新盖章,原来盖过章的文件要清空
if (InstTypeEnum.PRELIMINARY_PREVIEW.getCode().equals(instType)){
updateWrapper.set(Project::getPretrialFileId,null)
.set(Project::getPretrialFileName,null)
.eq(Project::getId,declaredProject.getId());
if (InstTypeEnum.PRELIMINARY_PREVIEW.getCode().equals(instType)) {
updateWrapper.set(Project::getPretrialFileId, null)
.set(Project::getPretrialFileName, null)
.eq(Project::getId, declaredProject.getId());
projectService.update(updateWrapper); projectService.update(updateWrapper);
} else if (InstTypeEnum.CONSTRUCTION_PLAN_REVIEW.getCode().equals(instType)) { } else if (InstTypeEnum.CONSTRUCTION_PLAN_REVIEW.getCode().equals(instType)) {
updateWrapper.set(Project::getConstructFileId,null)
.set(Project::getConstructFileName,null)
.eq(Project::getId,declaredProject.getId());
updateWrapper.set(Project::getConstructFileId, null)
.set(Project::getConstructFileName, null)
.eq(Project::getId, declaredProject.getId());
projectService.update(updateWrapper); projectService.update(updateWrapper);
} }
// 给项目创建人、流程发起人发送浙政钉工作通知:【项目名称】的【流程名称】被退回,请及时处理。 // 给项目创建人、流程发起人发送浙政钉工作通知:【项目名称】的【流程名称】被退回,请及时处理。
//发送消息 //发送消息
noticeManage.sendNotice(instance.getStartUserId(),userId,declaredProject,instance.getProcessDefinitionName(),
BACK_MSG_TEMPLATE,MsgTypeEnum.PROJECT_REVIEW_BACK);
noticeManage.sendNotice(instance.getStartUserId(), userId, declaredProject, instance.getProcessDefinitionName(),
BACK_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW_BACK);
} }




@@ -423,12 +428,12 @@ public class HandlerManage {
*/ */
public void updatePassProjectStatus(Long userId, Project declaredProject) { public void updatePassProjectStatus(Long userId, Project declaredProject) {
try { try {
stateMachineUtils.pass(declaredProject);
stateMachineUtil.pass(declaredProject);
declaredProject.setUpdateOn(LocalDateTime.now()); declaredProject.setUpdateOn(LocalDateTime.now());
declaredProject.setUpdateBy(userId); declaredProject.setUpdateBy(userId);
projectService.updateById(declaredProject); projectService.updateById(declaredProject);
} catch (Exception e) { } catch (Exception e) {
log.error("状态机执行失败",e);
log.error("状态机执行失败", e);
throw new BizException("状态机执行失败!"); throw new BizException("状态机执行失败!");
} }
} }
@@ -444,21 +449,21 @@ public class HandlerManage {
* @since 2023/02/08 * @since 2023/02/08
*/ */
private void updateRejectProjectStatus(Long userId, Project declaredProject, Integer instType) { private void updateRejectProjectStatus(Long userId, Project declaredProject, Integer instType) {
stateMachineUtils.reject(declaredProject);
stateMachineUtil.reject(declaredProject);
LambdaUpdateWrapper<Project> updateWrapper = Wrappers.lambdaUpdate(); LambdaUpdateWrapper<Project> updateWrapper = Wrappers.lambdaUpdate();
declaredProject.setUpdateOn(LocalDateTime.now()); declaredProject.setUpdateOn(LocalDateTime.now());
declaredProject.setUpdateBy(userId); declaredProject.setUpdateBy(userId);
projectService.updateById(declaredProject); projectService.updateById(declaredProject);
// 如果是预审审批驳回,需要重新盖章,原来盖过章的文件要清空 // 如果是预审审批驳回,需要重新盖章,原来盖过章的文件要清空
if (InstTypeEnum.PRELIMINARY_PREVIEW.getCode().equals(instType)){
updateWrapper.set(Project::getPretrialFileId,null)
.set(Project::getPretrialFileName,null)
.eq(Project::getId,declaredProject.getId());
if (InstTypeEnum.PRELIMINARY_PREVIEW.getCode().equals(instType)) {
updateWrapper.set(Project::getPretrialFileId, null)
.set(Project::getPretrialFileName, null)
.eq(Project::getId, declaredProject.getId());
projectService.update(updateWrapper); projectService.update(updateWrapper);
}else if (InstTypeEnum.CONSTRUCTION_PLAN_REVIEW.getCode().equals(instType)) {
updateWrapper.set(Project::getConstructFileId,null)
.set(Project::getConstructFileName,null)
.eq(Project::getId,declaredProject.getId());
} else if (InstTypeEnum.CONSTRUCTION_PLAN_REVIEW.getCode().equals(instType)) {
updateWrapper.set(Project::getConstructFileId, null)
.set(Project::getConstructFileName, null)
.eq(Project::getId, declaredProject.getId());
projectService.update(updateWrapper); projectService.update(updateWrapper);
} }
} }
@@ -476,12 +481,12 @@ public class HandlerManage {
public void updateWithdrawProjectStatus(Long userId, Project declaredProject) { public void updateWithdrawProjectStatus(Long userId, Project declaredProject) {
// 删除关联表信息 // 删除关联表信息
projectInstService.remove(Wrappers.lambdaQuery(ProjectInst.class) projectInstService.remove(Wrappers.lambdaQuery(ProjectInst.class)
.eq(ProjectInst::getProjectId,declaredProject.getId())
.eq(ProjectInst::getInstCode,declaredProject.getInstCode()));
.eq(ProjectInst::getProjectId, declaredProject.getId())
.eq(ProjectInst::getInstCode, declaredProject.getInstCode()));
//删除项目的实例信息 //删除项目的实例信息
historyService.deleteHistoricProcessInstance(declaredProject.getInstCode()); historyService.deleteHistoricProcessInstance(declaredProject.getInstCode());


stateMachineUtils.withDraw(declaredProject);
stateMachineUtil.withDraw(declaredProject);
declaredProject.setUpdateOn(LocalDateTime.now()); declaredProject.setUpdateOn(LocalDateTime.now());
declaredProject.setUpdateBy(userId); declaredProject.setUpdateBy(userId);
declaredProject.setInstCode(TodoCenterConstant.Declared.NULL_INST_CODE); declaredProject.setInstCode(TodoCenterConstant.Declared.NULL_INST_CODE);
@@ -489,22 +494,21 @@ public class HandlerManage {
} }


public void deleteBackComments(List<HistoricVariableInstance> approves) { public void deleteBackComments(List<HistoricVariableInstance> approves) {
if(CollUtil.isNotEmpty(approves)){
for(HistoricVariableInstance approve : approves){
if(approve.getValue() instanceof ProcessHandlerEnum){
if(ProcessHandlerEnum.BACK.equals(ProcessHandlerEnum.getEnumByName(String.valueOf(approve.getValue())))){
runtimeService.removeVariable(approve.getProcessInstanceId(),approve.getVariableName());
if (CollUtil.isNotEmpty(approves)) {
for (HistoricVariableInstance approve : approves) {
if (approve.getValue() instanceof ProcessHandlerEnum) {
if (ProcessHandlerEnum.BACK.equals(ProcessHandlerEnum.getEnumByName(String.valueOf(approve.getValue())))) {
runtimeService.removeVariable(approve.getProcessInstanceId(), approve.getVariableName());


Comment comment; Comment comment;
Optional<Comment> first = taskService.getProcessInstanceComments(approve.getProcessInstanceId()) Optional<Comment> first = taskService.getProcessInstanceComments(approve.getProcessInstanceId())
.stream() .stream()
.filter(c -> c.getTaskId().equals(approve.getVariableName().replace("approve_", StringUtils.EMPTY))) .filter(c -> c.getTaskId().equals(approve.getVariableName().replace("approve_", StringUtils.EMPTY)))
.findFirst(); .findFirst();
if (first.isPresent()){
if (first.isPresent()) {
comment = first.get(); comment = first.get();
taskService.deleteComment(comment.getId()); taskService.deleteComment(comment.getId());
} }

break; break;
} }
} }
@@ -514,27 +518,25 @@ public class HandlerManage {


/** /**
* 判断是否包含 此任务 * 判断是否包含 此任务
* @param progressNodes
* @param taskId
* @return
*
* @param progressNodes \
* @param taskId \
* @return \
*/ */
public static Boolean checkIsContainsTask(List<ProgressNode> progressNodes, String taskId) {
if(CollUtil.isEmpty(progressNodes)){
public static boolean checkIsContainsTask(List<ProgressNode> progressNodes, String taskId) {
if (CollUtil.isEmpty(progressNodes)) {
return Boolean.FALSE; return Boolean.FALSE;
} }


final Boolean[] res = {Boolean.FALSE};
progressNodes.forEach(p -> {
if(p.getTaskId().equals(taskId)){
res[0] = Boolean.TRUE;
return;
for (ProgressNode node : progressNodes) {
if (node.getTaskId().equals(taskId)) {
return Boolean.TRUE;
} }
if(CollUtil.isNotEmpty(p.getChildren()) &&
(checkIsContainsTask(p.getChildren(),taskId))){
res[0] = Boolean.TRUE;
return;
if (CollUtil.isNotEmpty(node.getChildren()) &&
(checkIsContainsTask(node.getChildren(), taskId))) {
return Boolean.TRUE;
} }
});
return res[0];
}
return Boolean.FALSE;
} }
} }

+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/todocenter/service/ITodoService.java View File

@@ -17,5 +17,5 @@ public interface ITodoService {
*/ */
ProcessProgressDetailVO getProcessDetail(ProcessDetailReq request) ; ProcessProgressDetailVO getProcessDetail(ProcessDetailReq request) ;


Boolean isChangeRecord(Long projectId) ;
boolean isChangeRecord(Long projectId) ;
} }

+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/todocenter/service/impl/TodoServiceImpl.java View File

@@ -98,7 +98,7 @@ public class TodoServiceImpl implements ITodoService {
* @param user * @param user
* @return * @return
*/ */
private Boolean checkHighLine(List<ProgressNode> progressInfo, String taskId, UserInfoDetails user) {
private boolean checkHighLine(List<ProgressNode> progressInfo, String taskId, UserInfoDetails user) {
if(CollUtil.isEmpty(progressInfo)){ if(CollUtil.isEmpty(progressInfo)){
return Boolean.FALSE; return Boolean.FALSE;
} }
@@ -122,7 +122,7 @@ public class TodoServiceImpl implements ITodoService {
.equals(userFullInfoDTO.getEmpPosUnitCode())){ .equals(userFullInfoDTO.getEmpPosUnitCode())){
//说明是此单位的人 //说明是此单位的人
//那么要去看 taskId 是不是 在这个单位内的任务 //那么要去看 taskId 是不是 在这个单位内的任务
Boolean isContainsTask = HandlerManage.checkIsContainsTask(children,taskId);
boolean isContainsTask = HandlerManage.checkIsContainsTask(children,taskId);
if(isContainsTask){ if(isContainsTask){
res[0] = Boolean.TRUE; res[0] = Boolean.TRUE;
return; return;
@@ -139,7 +139,7 @@ public class TodoServiceImpl implements ITodoService {
* @return * @return
*/ */
@Override @Override
public Boolean isChangeRecord(Long projectId) {
public boolean isChangeRecord(Long projectId) {
//1.先判断下 项目存不存在 //1.先判断下 项目存不存在
Project project = projectService.getById(projectId); Project project = projectService.getById(projectId);
if(Objects.isNull(project)){ if(Objects.isNull(project)){


+ 9
- 13
hz-pm-api/src/main/java/com/hz/pm/api/todocenter/utils/PdfUtils.java View File

@@ -1,25 +1,22 @@
package com.hz.pm.api.todocenter.utils; package com.hz.pm.api.todocenter.utils;




import cn.hutool.core.io.IoUtil;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.BaseFont;
import com.ningdatech.basic.exception.BizException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;

import java.io.*; import java.io.*;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.Iterator;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;


import cn.hutool.core.io.IoUtil;
import org.springframework.stereotype.Component;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;

import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.BaseFont;
import com.ningdatech.basic.exception.BizException;

import lombok.extern.slf4j.Slf4j;

/** /**
* pdf生成工具类 * pdf生成工具类
* *
@@ -50,7 +47,6 @@ public class PdfUtils {
new File(filePath).mkdir(); new File(filePath).mkdir();
} }
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
;
String line; String line;
while ((line = bufferedReader.readLine()) != null) { while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line); stringBuilder.append(line);


+ 2
- 4
hz-pm-api/src/main/java/com/hz/pm/api/user/entity/MhUnit.java View File

@@ -3,14 +3,12 @@ package com.hz.pm.api.user.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;


import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

/** /**
* <p> * <p>
* 组织表 * 组织表


Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save