Pārlūkot izejas kodu

modify:

1. 全流程提醒;
tags/24102401
WendyYang pirms 6 mēnešiem
vecāks
revīzija
0abd972e44
18 mainītis faili ar 250 papildinājumiem un 24 dzēšanām
  1. +7
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/PurchaseController.java
  2. +2
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectHelper.java
  3. +1
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java
  4. +80
    -4
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java
  5. +3
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/DeclaredProgressStatisticsVO.java
  6. +6
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IPurchaseService.java
  7. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/controller/ProjectStoppedChangeController.java
  8. +10
    -6
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/stage/ComplianceReviewHandle.java
  9. +76
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/helper/ProjectChangeStopHelper.java
  10. +44
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectChangeManage.java
  11. +1
    -7
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectLibManage.java
  12. +3
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ProjectDTO.java
  13. +2
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/Project.java
  14. +1
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/ProjectStatus.java
  15. +1
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/TenderMainStatus.java
  16. +3
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/req/SubmitProjectChangeApplyReq.java
  17. +3
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/ProjectDetailVO.java
  18. +6
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java

+ 7
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/PurchaseController.java Parādīt failu

@@ -79,6 +79,13 @@ public class PurchaseController {
purchaseManage.submitPurchaseNotice(req); purchaseManage.submitPurchaseNotice(req);
} }


@ApiOperation("新增采购公告")
@WebLog("新增采购公告")
@PostMapping("/notice/append")
public void appendPurchaseNotice(@RequestBody SubmitPurchaseNoticeReq req) {
purchaseManage.appendPurchaseNotice(req);
}

@ApiOperation("采购&合同信息备案") @ApiOperation("采购&合同信息备案")
@WebLog("采购&合同信息备案") @WebLog("采购&合同信息备案")
@PostMapping("/record/submit") @PostMapping("/record/submit")


+ 2
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectHelper.java Parādīt failu

@@ -17,6 +17,7 @@ import com.hz.pm.api.projectdeclared.model.dto.ProjectConditionDTO;
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.dto.ProjectPaymentPlanDTO; import com.hz.pm.api.projectlib.model.dto.ProjectPaymentPlanDTO;
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.enumeration.status.ProjectStatus;
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.security.model.UserInfoDetails; import com.hz.pm.api.user.security.model.UserInfoDetails;
@@ -63,6 +64,7 @@ public class DeclaredProjectHelper {
LambdaQueryWrapper<Project> query = Wrappers.lambdaQuery(Project.class) LambdaQueryWrapper<Project> query = Wrappers.lambdaQuery(Project.class)
.eq(Project::getProjectName, project.getProjectName()) .eq(Project::getProjectName, project.getProjectName())
.eq(Project::getNewest, Boolean.TRUE) .eq(Project::getNewest, Boolean.TRUE)
.ne(Project::getStatus, ProjectStatus.CHANGE_APPLY_PASSED.getCode())
.ne(Objects.nonNull(projectCode), Project::getProjectCode, projectCode) .ne(Objects.nonNull(projectCode), Project::getProjectCode, projectCode)
.last(BizConst.LIMIT_1); .last(BizConst.LIMIT_1);
if (projectService.count(query) > 0) { if (projectService.count(query) > 0) {


+ 1
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java Parādīt failu

@@ -371,6 +371,7 @@ public class DeclaredProjectManage {
}); });
DeclaredProgressStatisticsVO stat = new DeclaredProgressStatisticsVO(); DeclaredProgressStatisticsVO stat = new DeclaredProgressStatisticsVO();
stat.setTotalCount(projects.size()); stat.setTotalCount(projects.size());
stat.setTodoCount(countMap.getOrDefault(ProjectStatus.TO_BE_DECLARED, 0L));
stat.setAuditCount(countMap.getOrDefault(ProjectStatus.ON_COMPLIANCE_REVIEW, 0L)); stat.setAuditCount(countMap.getOrDefault(ProjectStatus.ON_COMPLIANCE_REVIEW, 0L));
stat.setFailedCount(countMap.getOrDefault(ProjectStatus.COMPLIANCE_REVIEW_FAILED, 0L)); stat.setFailedCount(countMap.getOrDefault(ProjectStatus.COMPLIANCE_REVIEW_FAILED, 0L));
stat.setPassedCount(countMap.getOrDefault(ProjectStatus.COMPLIANCE_REVIEW_PASSED, 0L)); stat.setPassedCount(countMap.getOrDefault(ProjectStatus.COMPLIANCE_REVIEW_PASSED, 0L));


+ 80
- 4
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/PurchaseManage.java Parādīt failu

@@ -17,6 +17,7 @@ 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.hz.pm.api.common.enumeration.ProjectProcessType; import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.exception.ReturnException;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.model.constant.ExistsSqlConst; import com.hz.pm.api.common.model.constant.ExistsSqlConst;
import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent; import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent;
@@ -47,15 +48,13 @@ import com.hz.pm.api.projectlib.entity.PurchaseStatusChange;
import com.hz.pm.api.projectlib.helper.ProjectManageUtil; import com.hz.pm.api.projectlib.helper.ProjectManageUtil;
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.model.entity.ProjectStatusChange;
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum;
import com.hz.pm.api.projectlib.model.enumeration.status.*; import com.hz.pm.api.projectlib.model.enumeration.status.*;
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.model.vo.TenderListInfoVO; import com.hz.pm.api.projectlib.model.vo.TenderListInfoVO;
import com.hz.pm.api.projectlib.service.IProjectGovSystemReplaceInfosService;
import com.hz.pm.api.projectlib.service.IProjectInstService;
import com.hz.pm.api.projectlib.service.IProjectService;
import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService;
import com.hz.pm.api.projectlib.service.*;
import com.hz.pm.api.scheduler.listener.event.MhTodoHandedEvent; import com.hz.pm.api.scheduler.listener.event.MhTodoHandedEvent;
import com.hz.pm.api.scheduler.listener.event.MhTodoSendEvent; import com.hz.pm.api.scheduler.listener.event.MhTodoSendEvent;
import com.hz.pm.api.sys.manage.ProcessModelManage; import com.hz.pm.api.sys.manage.ProcessModelManage;
@@ -134,6 +133,7 @@ public class PurchaseManage {
private final IPurchaseStatusChangeService purchaseStatusChangeService; private final IPurchaseStatusChangeService purchaseStatusChangeService;
private final MhUnitQueryAuthHelper mhUnitQueryAuthHelper; private final MhUnitQueryAuthHelper mhUnitQueryAuthHelper;
private final IProjectGovSystemReplaceInfosService projectGovSystemReplaceInfosService; private final IProjectGovSystemReplaceInfosService projectGovSystemReplaceInfosService;
private final IProjectStatusChangeService projectStatusChangeService;


public PurchaseProgressStatVO purchaseProgressStatistics(ProjectListReq req) { public PurchaseProgressStatVO purchaseProgressStatistics(ProjectListReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
@@ -472,6 +472,82 @@ public class PurchaseManage {
} }
} }


@Transactional(rollbackFor = Exception.class)
public synchronized void appendPurchaseNotice(SubmitPurchaseNoticeReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();
Long projectId = req.getProjectId();
long purchaseCount = purchaseService.countByProjectId(projectId);
if (purchaseCount == 0) {
throw ReturnException.wrap("请先发布采购公告");
}
req.getTenders().removeIf(w -> w.getBidId() != null);
Project project = projectService.getNewestNoNull(projectId);
List<MhPurchaseNoticeDTO> notices = new ArrayList<>();
List<Purchase> purchases = req.getTenders().stream().map(w -> {
Purchase purchase = new Purchase();
purchase.setPurchaseMethod(w.getPurchaseMethod());
purchase.setBidAddress(w.getBidAddress());
purchase.setBidName(w.getBidName());
purchase.setBidBudget(w.getBidBudget());
purchase.setBidDoc(w.getBidDoc());
purchase.setBidStartTime(w.getBidStartTime());
purchase.setBidEndTime(w.getBidEndTime());
purchase.setProjectId(projectId);
purchase.setPurchaseConnectAddress(w.getPurchaseConnectAddress());
purchase.setPurchasePhone(w.getPurchasePhone());
purchase.setPurchaseRemark(w.getPurchaseRemark());
purchase.setPurchaseScope(w.getPurchaseScope());
purchase.setPurchaseUnit(w.getPurchaseUnit());
purchase.setPurchaseUnitId(w.getPurchaseUnitId());
purchase.setPurchaseContact(w.getPurchaseContact());
purchase.setBidType(w.getBidType());
purchase.setPurchaseDate(w.getPurchaseDate());
purchase.setBidPayAmount(w.getBidPayAmount());
purchase.setPublishMhNotice(w.getPublishMhNotice());
purchase.setCreateBy(user.getUserIdStr());
purchase.setStatus(TenderMainStatus.TO_BE_SUBMIT_PURCHASE_CONSTRUCTION_INFO.getCode());
purchase.setXcfhxApplyStatus(TenderXcfhxApplyStatus.TO_BE_SUBMIT_XCFHX_APPLY.getCode());
if (Boolean.TRUE.equals(mhPurchaseNoticeOpen) && Boolean.TRUE.equals(w.getPublishMhNotice())) {
notices.add(buildPurchaseNotice(w, user));
}
return purchase;
}).collect(Collectors.toList());
purchaseService.saveBatch(purchases);
List<ProjectGovSystemReplaceInfos> projectGovSystemReplaceInfos = new ArrayList<>();
for (int i = 0; i < req.getTenders().size(); i++) {
List<Long> systemReplaceInfoIds = req.getTenders().get(i).getSystemReplaceInfoIds();
if (CollUtil.isNotEmpty(systemReplaceInfoIds)) {
Long bidId = purchases.get(i).getId();
for (Long systemReplaceInfoId : systemReplaceInfoIds) {
ProjectGovSystemReplaceInfos replaceInfos = new ProjectGovSystemReplaceInfos();
replaceInfos.setId(systemReplaceInfoId);
replaceInfos.setBidId(bidId);
projectGovSystemReplaceInfos.add(replaceInfos);
}
}
}
projectGovSystemReplaceInfosService.updateBatchById(projectGovSystemReplaceInfos);
project.setStatus(ProjectStatus.ON_PURCHASING.getCode());
project.setStage(ProjectStatus.ON_PURCHASING.getStage());
projectService.updateById(project);
Wrapper<ProjectStatusChange> query = Wrappers.lambdaQuery(ProjectStatusChange.class)
.eq(ProjectStatusChange::getProjectId, project.getProjectCode())
.in(ProjectStatusChange::getEvent,
ProjectStateChangeEvent.SUBMIT_PURCHASE_CONTRACT_RECORD,
ProjectStateChangeEvent.SUBMIT_PURCHASE_ORG_CONFIRM,
ProjectStateChangeEvent.SUBMIT_FIRST_INSPECTED_FILES,
ProjectStateChangeEvent.FINAL_ACCEPTANCE_APPLICATION,
ProjectStateChangeEvent.FINAL_ACCEPTANCE_PASS);
projectStatusChangeService.remove(query);
for (Purchase purchase : purchases) {
SpringUtil.publishEvent(MhTodoSendEvent.of(MHTodoTypeEnum.WITHOUT_PURCHASE_CONTRACT, project, purchase));
}
// 发布采购公告
if (!notices.isEmpty()) {
mhApiClient.publishPurchaseNotice(notices);
}
}

private MhPurchaseNoticeDTO buildPurchaseNotice(PurchaseNoticeTenderDTO w, UserInfoDetails user) { private MhPurchaseNoticeDTO buildPurchaseNotice(PurchaseNoticeTenderDTO w, UserInfoDetails user) {
if (environmentUtil.isDevEnv()) { if (environmentUtil.isDevEnv()) {
return null; return null;


+ 3
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/DeclaredProgressStatisticsVO.java Parādīt failu

@@ -26,4 +26,7 @@ public class DeclaredProgressStatisticsVO {
@ApiModelProperty("未通过") @ApiModelProperty("未通过")
private Long failedCount; private Long failedCount;


@ApiModelProperty("待申报")
private Long todoCount;

} }

+ 6
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IPurchaseService.java Parādīt failu

@@ -30,6 +30,12 @@ public interface IPurchaseService extends IService<Purchase> {
.orderByAsc(Purchase::getId)); .orderByAsc(Purchase::getId));
} }


default long countByProjectId(Long projectId) {
return count(Wrappers.lambdaQuery(Purchase.class)
.eq(Purchase::getProjectId, projectId)
.orderByAsc(Purchase::getId));
}

default List<Purchase> listByProjectIds(Collection<Long> projectIds) { default List<Purchase> listByProjectIds(Collection<Long> projectIds) {
return list(Wrappers.lambdaQuery(Purchase.class) return list(Wrappers.lambdaQuery(Purchase.class)
.in(Purchase::getProjectId, projectIds) .in(Purchase::getProjectId, projectIds)


+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/controller/ProjectStoppedChangeController.java Parādīt failu

@@ -54,7 +54,7 @@ public class ProjectStoppedChangeController {
@ApiOperation("提交项目变更申请") @ApiOperation("提交项目变更申请")
@WebLog("提交项目变更申请") @WebLog("提交项目变更申请")
public void submitChangeApply(@RequestBody @Valid SubmitProjectChangeApplyReq req) { public void submitChangeApply(@RequestBody @Valid SubmitProjectChangeApplyReq req) {
projectChangeManage.submitProjectChangeApply(req);
projectChangeManage.submitProjectChangeApplyNew(req);
} }


@GetMapping("/stopped/page") @GetMapping("/stopped/page")


+ 10
- 6
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/handle/stage/ComplianceReviewHandle.java Parādīt failu

@@ -9,6 +9,7 @@ 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.model.entity.ProjectStatusChange; import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange;
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.status.ProjectStatus;
import com.hz.pm.api.projectlib.service.IProjectInstService; import com.hz.pm.api.projectlib.service.IProjectInstService;
import com.hz.pm.api.projectlib.service.IProjectStatusChangeService; import com.hz.pm.api.projectlib.service.IProjectStatusChangeService;
import com.wflow.workflow.bean.vo.ProcessDetailVO; import com.wflow.workflow.bean.vo.ProcessDetailVO;
@@ -18,10 +19,7 @@ import com.wflow.workflow.service.ProcessInstanceService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;


import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.*;


import static com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent.*; import static com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent.*;


@@ -47,18 +45,24 @@ public class ComplianceReviewHandle extends AbstractProcessHandle {
@Override @Override
public void handle(HandleParamContext ctx) { public void handle(HandleParamContext ctx) {
Project project = ctx.getProject(); Project project = ctx.getProject();
boolean notDeclared = ProjectStatus.TO_BE_DECLARED.eq(project.getStatus());
// 项目申报节点 // 项目申报节点
ProcessDetailVO startNode = new ProcessDetailVO(); ProcessDetailVO startNode = new ProcessDetailVO();
startNode.setProcessName(ProcessNode.PROJECT_DECLARED.getName()); startNode.setProcessName(ProcessNode.PROJECT_DECLARED.getName());
startNode.setFinishTime(project.getCreateOn()); startNode.setFinishTime(project.getCreateOn());
startNode.setStepStatus(StepStatusEnum.COMPLETED);
startNode.setStepStatus(notDeclared ? StepStatusEnum.NOT_START : StepStatusEnum.COMPLETED);
ctx.getProcessDetails().add(startNode); ctx.getProcessDetails().add(startNode);
// 合规性审查 // 合规性审查
ProcessDetailVO detail = new ProcessDetailVO(); ProcessDetailVO detail = new ProcessDetailVO();
detail.setProcessName(getProcessNode().getName()); detail.setProcessName(getProcessNode().getName());
ctx.getProcessDetails().add(detail); ctx.getProcessDetails().add(detail);
// 项目状态为待立项批复之前的状态 // 项目状态为待立项批复之前的状态
Map<ProjectStateChangeEvent, ProjectStatusChange> eventMap = projectStatusChangeService.listLastEventMap(project.getProjectCode());
Map<ProjectStateChangeEvent, ProjectStatusChange> eventMap;
if (notDeclared) {
eventMap = Collections.emptyMap();
} else {
eventMap = projectStatusChangeService.listLastEventMap(project.getProjectCode());
}
ctx.setProjectStatusChanges(eventMap); ctx.setProjectStatusChanges(eventMap);
if (!eventMap.containsKey(PROJECT_APPLICATION_SUBMIT)) { if (!eventMap.containsKey(PROJECT_APPLICATION_SUBMIT)) {
detail.setStepStatus(StepStatusEnum.NOT_START); detail.setStepStatus(StepStatusEnum.NOT_START);


+ 76
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/helper/ProjectChangeStopHelper.java Parādīt failu

@@ -1,9 +1,9 @@
package com.hz.pm.api.projectlib.helper; package com.hz.pm.api.projectlib.helper;


import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ClassUtil; import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -16,11 +16,15 @@ import com.hz.pm.api.projectdeclared.model.dto.*;
import com.hz.pm.api.projectdeclared.model.entity.*; import com.hz.pm.api.projectdeclared.model.entity.*;
import com.hz.pm.api.projectdeclared.model.vo.PreInsAcceptancePersonVO; import com.hz.pm.api.projectdeclared.model.vo.PreInsAcceptancePersonVO;
import com.hz.pm.api.projectdeclared.service.*; import com.hz.pm.api.projectdeclared.service.*;
import com.hz.pm.api.projectdeclared.utils.ProjectCodeGenUtil;
import com.hz.pm.api.projectdeclared.utils.ProjectDetailDiffUtil.FieldDiff; import com.hz.pm.api.projectdeclared.utils.ProjectDetailDiffUtil.FieldDiff;
import com.hz.pm.api.projectlib.entity.ProjectGovSystemReplaceInfos;
import com.hz.pm.api.projectlib.entity.PurchaseStatusChange; import com.hz.pm.api.projectlib.entity.PurchaseStatusChange;
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.ProjectStatusChange; import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange;
import com.hz.pm.api.projectlib.model.enumeration.status.*; import com.hz.pm.api.projectlib.model.enumeration.status.*;
import com.hz.pm.api.projectlib.service.IProjectGovSystemReplaceInfosService;
import com.hz.pm.api.projectlib.service.IProjectService; import com.hz.pm.api.projectlib.service.IProjectService;
import com.hz.pm.api.projectlib.service.IProjectStatusChangeService; import com.hz.pm.api.projectlib.service.IProjectStatusChangeService;
import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService; import com.hz.pm.api.projectlib.service.IPurchaseStatusChangeService;
@@ -31,6 +35,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;


import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;


@@ -55,6 +60,8 @@ public class ProjectChangeStopHelper {
private final IContractService contractService; private final IContractService contractService;
private final IProjectService projectService; private final IProjectService projectService;
private final ProjectSaveHelper projectSaveHelper; private final ProjectSaveHelper projectSaveHelper;
private final ProjectCodeGenUtil projectCodeGenUtil;
private final IProjectGovSystemReplaceInfosService systemReplaceInfosService;


/** /**
* 根据状态变更记录重置项目、标段状态 * 根据状态变更记录重置项目、标段状态
@@ -143,8 +150,10 @@ public class ProjectChangeStopHelper {
history.setStatus(buildBizStatus(projEvent).getCode()); history.setStatus(buildBizStatus(projEvent).getCode());
projectChangeHistoryService.updateById(history); projectChangeHistoryService.updateById(history);
if (projEvent.equals(ProjectStateChangeEvent.CHANGE_APPLY_PASS)) { if (projEvent.equals(ProjectStateChangeEvent.CHANGE_APPLY_PASS)) {
EditProjectDetailDTO editProjectDetail = JSONUtil.toBean(history.getChangeContent(), EditProjectDetailDTO.class);
projectEditRewrite(projectCode, editProjectDetail);
// EditProjectDetailDTO editProjectDetail = JSONUtil.toBean(history.getChangeContent(), EditProjectDetailDTO.class);
// projectEditRewrite(projectCode, editProjectDetail);
changeApplyPassHandle(projectId, projectCode, projEvent);
return;
} }
} }
ProjectStatusChange change = projectStatusChangeService.getLastOne(projBeforeEvent, projectId); ProjectStatusChange change = projectStatusChangeService.getLastOne(projBeforeEvent, projectId);
@@ -187,6 +196,70 @@ public class ProjectChangeStopHelper {
} }
} }


private void changeApplyPassHandle(Long projectId, String projectCode, ProjectStateChangeEvent projEvent) {
Project project = projectService.getNewProject(projectId);
projectStatusChangeService.save(ProjectStatusChange.builder()
.projectId(projectId)
.event(projEvent.name())
.projectCode(projectCode)
.beforeStatus(ProjectStatus.ON_CHANGE_APPLY.getCode())
.afterStatus(ProjectStatus.CHANGE_APPLY_PASSED.getCode())
.build());
project.setStatus(ProjectStatus.CHANGE_APPLY_PASSED.getCode());
projectService.updateById(project);
List<Purchase> purchases = purchaseService.listByProjectId(projectId);
if (CollUtil.isEmpty(purchases)) {
List<PurchaseStatusChange> purchaseStatusChanges = new ArrayList<>();
for (Purchase purchase : purchases) {
PurchaseStatusChange purchaseStatusChange = PurchaseStatusChange.builder()
.bidId(purchase.getId())
.projectId(purchase.getProjectId())
.projectCode(projectCode)
.event(TenderStateChangeEvent.CHANGE_APPLY_PASS.name())
.beforeStatus(TenderMainStatus.ON_CHANGE_APPLY.getCode())
.afterStatus(TenderMainStatus.CHANGE_APPLY_PASSED.getCode())
.build();
purchaseStatusChanges.add(purchaseStatusChange);
}
purchaseService.updateBatchById(purchases);
purchaseStatusChangeService.saveBatch(purchaseStatusChanges);
}
Project newProj = new Project();
newProj.setNewest(Boolean.TRUE);
newProj.setHisProjectCode(projectCode);
newProj.setProjectName(project.getProjectName());
newProj.setProjectType(project.getProjectType());
newProj.setProjectCode(projectCodeGenUtil.generateProjectCode(BeanUtil.copyProperties(newProj, ProjectDTO.class)));
newProj.setUnitStrip(project.getUnitStrip());
newProj.setCreateOn(LocalDateTime.now());
newProj.setUpdateOn(newProj.getCreateOn());
newProj.setStage(ProjectStatus.NOT_APPROVED.getCode());
newProj.setStatus(ProjectStatus.TO_BE_DECLARED.getCode());
newProj.setProjectYear(project.getProjectYear());
newProj.setBeginTime(project.getBeginTime());
newProj.setEndTime(project.getEndTime());
newProj.setBuildOrgName(project.getBuildOrgName());
newProj.setBuildOrgCode(project.getBuildOrgCode());
newProj.setContactName(project.getContactName());
newProj.setContactPhone(project.getContactPhone());
newProj.setDeclareAmount(project.getDeclareAmount());
newProj.setDeclareGovSuperiorFinanceAmount(project.getDeclareGovSuperiorFinanceAmount());
newProj.setConstructionPlanFile(project.getConstructionPlanFile());
newProj.setSponsor(project.getSponsor());
projectService.save(newProj);
List<ProjectGovSystemReplaceInfos> replaceInfos = systemReplaceInfosService.listByProjectCode(projectCode);
if (CollUtil.isNotEmpty(replaceInfos)) {
replaceInfos.forEach(w -> {
w.setId(null);
w.setBidId(null);
w.setCreateOn(null);
w.setProjectId(newProj.getId());
w.setProjectCode(newProj.getProjectCode());
});
systemReplaceInfosService.saveBatch(replaceInfos);
}
}

private IStatus<Integer, String> buildBizStatus(ProjectStateChangeEvent event) { private IStatus<Integer, String> buildBizStatus(ProjectStateChangeEvent event) {
IStatus<Integer, String> bizStatus; IStatus<Integer, String> bizStatus;
switch (event) { switch (event) {


+ 44
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectChangeManage.java Parādīt failu

@@ -2,6 +2,7 @@ package com.hz.pm.api.projectlib.manage;


import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
@@ -10,6 +11,7 @@ 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.hz.pm.api.common.enumeration.ProjectProcessType; import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.exception.ReturnException; import com.hz.pm.api.common.exception.ReturnException;
import com.hz.pm.api.common.util.BizUtils;
import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum; import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum;
import com.hz.pm.api.projectdeclared.model.entity.ProjectChangeHistory; import com.hz.pm.api.projectdeclared.model.entity.ProjectChangeHistory;
import com.hz.pm.api.projectdeclared.manage.DeclaredProjectHelper; import com.hz.pm.api.projectdeclared.manage.DeclaredProjectHelper;
@@ -80,6 +82,45 @@ public class ProjectChangeManage {
private final IProjectChangeHistoryService projectChangeHistoryService; private final IProjectChangeHistoryService projectChangeHistoryService;


@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public synchronized void submitProjectChangeApplyNew(SubmitProjectChangeApplyReq req) {
Project project = projectService.getNewProject(req.getProjectId());
if (ProjectStatus.ON_CHANGE_APPLY.eq(project.getStatus()) ||
ProjectStatus.STOPPED_PASSED.eq(project.getStatus())) {
throw ReturnException.wrap("暂无法提交变更申请");
}
// 采购信息变更比较
UserInfoDetails userDetail = LoginUserUtil.loginUserDetail();

WflowModels wflowModels = processModelManage.getWflowModelsNoNull(ProjectProcessType.PROJECT_CHANGE, userDetail.getMhUnitId());

ProcessStartParamsVo params = new ProcessStartParamsVo();
params.setUser(declaredProjectHelper.buildUser(userDetail));
params.setProcessUsers(Collections.emptyMap());
params.setFormData(Collections.emptyMap());

// 获取发起单位、发起单位主管单位、发起单位上级主管条线单位信息
Map<String, OrgInfoDTO> orgModelMap = declaredProjectHelper.buildOrgModelMap(userDetail, project);
String instCode = processInstanceService.startProcessLs(wflowModels, params, orgModelMap);
ProjectInst projectInst = new ProjectInst();
projectInst.setInstCode(instCode);
projectInst.setProjectId(project.getId());
projectInst.setInstType(ProjectProcessType.PROJECT_CHANGE);
projectInstService.save(projectInst);
projectChangeStopHelper.changeProjectPurchaseStatus(project, CHANGE_APPLY_SUBMIT);
// 保存变更历史
ProjectChangeHistory projectChangeHistory = new ProjectChangeHistory();
projectChangeHistory.setChangeContent(StrUtil.EMPTY);
projectChangeHistory.setChangeReason(req.getChangeReason());
projectChangeHistory.setProjectId(project.getId());
projectChangeHistory.setProjectCode(project.getProjectCode());
projectChangeHistory.setStatus(ProjectChangeStatus.ON_CHANGE_APPLY.getCode());
projectChangeHistory.setCanResubmit(Boolean.TRUE);
projectChangeHistory.setInstCode(instCode);
projectChangeHistory.setId(req.getId());
projectChangeHistoryService.saveOrUpdate(projectChangeHistory);
}

@Transactional(rollbackFor = Exception.class)
public synchronized void submitProjectChangeApply(SubmitProjectChangeApplyReq req) { public synchronized void submitProjectChangeApply(SubmitProjectChangeApplyReq req) {
JSONObject projectEditDetail = req.getProjectEditDetail(); JSONObject projectEditDetail = req.getProjectEditDetail();
JSONObject projJsonObj = projectEditDetail.getJSONObject(EditProjectDetailDTO.FIELD_PROJECT); JSONObject projJsonObj = projectEditDetail.getJSONObject(EditProjectDetailDTO.FIELD_PROJECT);
@@ -224,7 +265,9 @@ public class ProjectChangeManage {
return null; return null;
} }
ProjectChangeDetailVO result = new ProjectChangeDetailVO(); ProjectChangeDetailVO result = new ProjectChangeDetailVO();
result.setProjectEditDetail(JSONUtil.toBean(changeHistory.getChangeContent(), EditProjectDetailDTO.class));
if (StrUtil.isNotBlank(changeHistory.getChangeContent())) {
result.setProjectEditDetail(JSONUtil.toBean(changeHistory.getChangeContent(), EditProjectDetailDTO.class));
}
result.setChangeReason(changeHistory.getChangeReason()); result.setChangeReason(changeHistory.getChangeReason());
result.setCreateOn(changeHistory.getCreateOn()); result.setCreateOn(changeHistory.getCreateOn());
return result; return result;


+ 1
- 7
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectLibManage.java Parādīt failu

@@ -44,7 +44,6 @@ import com.hz.pm.api.portrait.model.vo.TagVO;
import com.hz.pm.api.portrait.service.IProjectTagService; import com.hz.pm.api.portrait.service.IProjectTagService;
import com.hz.pm.api.portrait.service.ITagService; import com.hz.pm.api.portrait.service.ITagService;
import com.hz.pm.api.projectdeclared.manage.ConstructionManage; import com.hz.pm.api.projectdeclared.manage.ConstructionManage;
import com.hz.pm.api.projectdeclared.manage.ProjectReviewManage;
import com.hz.pm.api.projectdeclared.model.dto.DelayedApplyDTO; import com.hz.pm.api.projectdeclared.model.dto.DelayedApplyDTO;
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.entity.PreInsAcceptancePerson; import com.hz.pm.api.projectdeclared.model.entity.PreInsAcceptancePerson;
@@ -55,19 +54,16 @@ import com.hz.pm.api.projectdeclared.service.IPreInsAcceptancePersonService;
import com.hz.pm.api.projectdeclared.service.IPurchaseService; import com.hz.pm.api.projectdeclared.service.IPurchaseService;
import com.hz.pm.api.projectdeclared.utils.ProjectCodeGenUtil; import com.hz.pm.api.projectdeclared.utils.ProjectCodeGenUtil;
import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil; import com.hz.pm.api.projectdeclared.utils.ProjectIdCodeCacheUtil;
import com.hz.pm.api.projectlib.entity.ProjectApprovalAmount;
import com.hz.pm.api.projectlib.entity.ProjectGovSystemReplaceInfos; import com.hz.pm.api.projectlib.entity.ProjectGovSystemReplaceInfos;
import com.hz.pm.api.projectlib.handle.ProcessProgressHelper; import com.hz.pm.api.projectlib.handle.ProcessProgressHelper;
import com.hz.pm.api.projectlib.helper.ProjectManageUtil; import com.hz.pm.api.projectlib.helper.ProjectManageUtil;
import com.hz.pm.api.projectlib.helper.ProjectSaveHelper; import com.hz.pm.api.projectlib.helper.ProjectSaveHelper;
import com.hz.pm.api.projectlib.model.constant.ProjectConstant; import com.hz.pm.api.projectlib.model.constant.ProjectConstant;
import com.hz.pm.api.projectlib.model.dto.GovSystemReplaceInfoUpgradeContentDTO;
import com.hz.pm.api.projectlib.model.dto.GovSystemReplaceInfoDTO; import com.hz.pm.api.projectlib.model.dto.GovSystemReplaceInfoDTO;
import com.hz.pm.api.projectlib.model.dto.ProjectApprovalAmountDTO;
import com.hz.pm.api.projectlib.model.dto.GovSystemReplaceInfoUpgradeContentDTO;
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.dto.ProjectPaymentPlanDTO; import com.hz.pm.api.projectlib.model.dto.ProjectPaymentPlanDTO;
import com.hz.pm.api.projectlib.model.entity.*; import com.hz.pm.api.projectlib.model.entity.*;
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum;
import com.hz.pm.api.projectlib.model.enumeration.ProjectRenewalApprovalStatusEnum; import com.hz.pm.api.projectlib.model.enumeration.ProjectRenewalApprovalStatusEnum;
import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus; import com.hz.pm.api.projectlib.model.enumeration.status.ProjectStatus;
import com.hz.pm.api.projectlib.model.enumeration.status.TenderMainStatus; import com.hz.pm.api.projectlib.model.enumeration.status.TenderMainStatus;
@@ -147,9 +143,7 @@ public class ProjectLibManage {
private final MhUnitCache mhUnitCache; private final MhUnitCache mhUnitCache;
private final IMhProjectSchemaTargetDataService projectSchemaTargetDataService; private final IMhProjectSchemaTargetDataService projectSchemaTargetDataService;
private final IMhProjectService mhProjectService; private final IMhProjectService mhProjectService;
private final ProjectReviewManage projectReviewManage;
private final IMeetingInnerProjectService meetingInnerProjectService; private final IMeetingInnerProjectService meetingInnerProjectService;
private final IProjectApprovalAmountService projectApprovalAmountService;
private final AmountApprovalManage amountApprovalManage; private final AmountApprovalManage amountApprovalManage;


public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) { public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) {


+ 3
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ProjectDTO.java Parādīt failu

@@ -392,4 +392,7 @@ public class ProjectDTO implements Serializable {
@ApiModelProperty("评审金额") @ApiModelProperty("评审金额")
private BigDecimal reviewAmount; private BigDecimal reviewAmount;


@ApiModelProperty("历史项目编码")
private String hisProjectCode;

} }

+ 2
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/Project.java Parādīt failu

@@ -506,4 +506,6 @@ public class Project implements Serializable {
@ApiModelProperty("迭代升级内容") @ApiModelProperty("迭代升级内容")
private String iterativeUpgradeContent; private String iterativeUpgradeContent;


private String hisProjectCode;

} }

+ 1
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/ProjectStatus.java Parādīt failu

@@ -86,6 +86,7 @@ public enum ProjectStatus implements IStatus<Integer, String> {
*/ */
CHANGE(50000, "项目变更", 50000), CHANGE(50000, "项目变更", 50000),
ON_CHANGE_APPLY(50001, "项目变更中", 50000), ON_CHANGE_APPLY(50001, "项目变更中", 50000),
CHANGE_APPLY_PASSED(50002, "已变更", 50000),


/** /**
* 项目阶段:已归档 * 项目阶段:已归档


+ 1
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/enumeration/status/TenderMainStatus.java Parādīt failu

@@ -37,6 +37,7 @@ public enum TenderMainStatus implements ITenderStatus {
FINALLY_INSPECTED_FAILED(ProjectStatus.ON_FINALLY_INSPECTED, 502, "终验申报不通过"), FINALLY_INSPECTED_FAILED(ProjectStatus.ON_FINALLY_INSPECTED, 502, "终验申报不通过"),
FINALLY_INSPECTED_PASSED(ProjectStatus.ACCEPTED, 601, "终验完成"), FINALLY_INSPECTED_PASSED(ProjectStatus.ACCEPTED, 601, "终验完成"),
ON_CHANGE_APPLY(ProjectStatus.ON_CHANGE_APPLY, 701, "项目变更中"), ON_CHANGE_APPLY(ProjectStatus.ON_CHANGE_APPLY, 701, "项目变更中"),
CHANGE_APPLY_PASSED(ProjectStatus.ON_CHANGE_APPLY, 702, "已变更"),
ON_STOPPED_APPLY(ProjectStatus.ON_STOPPED_APPLY, 901, "项目终止审核中"), ON_STOPPED_APPLY(ProjectStatus.ON_STOPPED_APPLY, 901, "项目终止审核中"),
STOPPED_PASSED(ProjectStatus.STOPPED, 902, "项目终止"); STOPPED_PASSED(ProjectStatus.STOPPED, 902, "项目终止");




+ 3
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/req/SubmitProjectChangeApplyReq.java Parādīt failu

@@ -21,6 +21,9 @@ public class SubmitProjectChangeApplyReq {
@ApiModelProperty("变更ID") @ApiModelProperty("变更ID")
private Long id; private Long id;


@ApiModelProperty("项目id")
private Long projectId;

@ApiModelProperty("变更原因") @ApiModelProperty("变更原因")
private String changeReason; private String changeReason;




+ 3
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/ProjectDetailVO.java Parādīt failu

@@ -598,4 +598,7 @@ public class ProjectDetailVO {
@ApiModelProperty("资金下达情况") @ApiModelProperty("资金下达情况")
private List<ProjectApprovalAmountDTO> approvalAmounts; private List<ProjectApprovalAmountDTO> approvalAmounts;


@ApiModelProperty("历史项目编码")
private String hisProjectCode;

} }

+ 6
- 2
hz-pm-api/src/main/java/com/hz/pm/api/workbench/manage/WorkbenchManage.java Parādīt failu

@@ -214,6 +214,7 @@ public class WorkbenchManage {
Project::getApprovalGovOwnFinanceAmount, Project::getApprovalGovSuperiorFinanceAmount) Project::getApprovalGovOwnFinanceAmount, Project::getApprovalGovSuperiorFinanceAmount)
.eq(Project::getProjectYear, req.getProjectYear()) .eq(Project::getProjectYear, req.getProjectYear())
.eq(req.getUnitStrip() != null, Project::getUnitStrip, req.getUnitStrip()) .eq(req.getUnitStrip() != null, Project::getUnitStrip, req.getUnitStrip())
.ne(Project::getStatus, ProjectStatus.CHANGE_APPLY_PASSED.getCode())
.eq(Project::getNewest, Boolean.TRUE); .eq(Project::getNewest, Boolean.TRUE);
List<Long> viewUnitIds = mhUnitCache.getViewChildIdsRecursion(req.getUnitId()); List<Long> viewUnitIds = mhUnitCache.getViewChildIdsRecursion(req.getUnitId());
projectQuery.in(Project::getBuildOrgCode, CollUtils.convert(viewUnitIds, String::valueOf)); projectQuery.in(Project::getBuildOrgCode, CollUtils.convert(viewUnitIds, String::valueOf));
@@ -356,6 +357,7 @@ public class WorkbenchManage {
.eq(Project::getProjectYear, req.getProjectYear()) .eq(Project::getProjectYear, req.getProjectYear())
.eq(req.getUnitStrip() != null, Project::getUnitStrip, req.getUnitStrip()) .eq(req.getUnitStrip() != null, Project::getUnitStrip, req.getUnitStrip())
.eq(Project::getNewest, Boolean.TRUE) .eq(Project::getNewest, Boolean.TRUE)
.ne(Project::getStatus, ProjectStatus.CHANGE_APPLY_PASSED.getCode())
.exists(ExistsSqlConst.PROJECT_EXISTS_STATUS_CHANGE + " and npsc.event = {0}", .exists(ExistsSqlConst.PROJECT_EXISTS_STATUS_CHANGE + " and npsc.event = {0}",
ProjectStateChangeEvent.PROJECT_APPLICATION_SUBMIT) ProjectStateChangeEvent.PROJECT_APPLICATION_SUBMIT)
.in(Project::getBuildOrgCode, CollUtils.convert(viewUnitIds, String::valueOf)); .in(Project::getBuildOrgCode, CollUtils.convert(viewUnitIds, String::valueOf));
@@ -586,6 +588,7 @@ public class WorkbenchManage {
return PageVo.empty(); return PageVo.empty();
} }
ProjectManageUtil.projectBaseQuery(query); ProjectManageUtil.projectBaseQuery(query);
query.ne(Project::getStatus, ProjectStatus.CHANGE_APPLY_PASSED.getCode());
projectQueryByProjectStatusChange(query, ProjectStateChangeEvent.PROJECT_APPLICATION_SUBMIT); projectQueryByProjectStatusChange(query, ProjectStateChangeEvent.PROJECT_APPLICATION_SUBMIT);
switch (req.getProcessNode()) { switch (req.getProcessNode()) {
case PROJECT_DECLARED: case PROJECT_DECLARED:
@@ -664,8 +667,9 @@ public class WorkbenchManage {
if (query == null) { if (query == null) {
return null; return null;
} }
query.select(Project::getProjectCode, Project::getProjectName,
Project::getBuildOrgCode, Project::getBuildOrgName);
query.ne(Project::getStatus, ProjectStatus.CHANGE_APPLY_PASSED.getCode())
.select(Project::getProjectCode, Project::getProjectName,
Project::getBuildOrgCode, Project::getBuildOrgName);
projectQueryByProjectStatusChange(query, ProjectStateChangeEvent.PROJECT_APPLICATION_SUBMIT); projectQueryByProjectStatusChange(query, ProjectStateChangeEvent.PROJECT_APPLICATION_SUBMIT);
switch (req.getProcessNode()) { switch (req.getProcessNode()) {
case PROJECT_DECLARED: case PROJECT_DECLARED:


Notiek ielāde…
Atcelt
Saglabāt