@@ -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") | ||||
@@ -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) { | ||||
@@ -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)); | ||||
@@ -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; | ||||
@@ -26,4 +26,7 @@ public class DeclaredProgressStatisticsVO { | |||||
@ApiModelProperty("未通过") | @ApiModelProperty("未通过") | ||||
private Long failedCount; | private Long failedCount; | ||||
@ApiModelProperty("待申报") | |||||
private Long todoCount; | |||||
} | } |
@@ -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) | ||||
@@ -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") | ||||
@@ -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); | ||||
@@ -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) { | ||||
@@ -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; | ||||
@@ -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) { | ||||
@@ -392,4 +392,7 @@ public class ProjectDTO implements Serializable { | |||||
@ApiModelProperty("评审金额") | @ApiModelProperty("评审金额") | ||||
private BigDecimal reviewAmount; | private BigDecimal reviewAmount; | ||||
@ApiModelProperty("历史项目编码") | |||||
private String hisProjectCode; | |||||
} | } |
@@ -506,4 +506,6 @@ public class Project implements Serializable { | |||||
@ApiModelProperty("迭代升级内容") | @ApiModelProperty("迭代升级内容") | ||||
private String iterativeUpgradeContent; | private String iterativeUpgradeContent; | ||||
private String hisProjectCode; | |||||
} | } |
@@ -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), | |||||
/** | /** | ||||
* 项目阶段:已归档 | * 项目阶段:已归档 | ||||
@@ -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, "项目终止"); | ||||
@@ -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; | ||||
@@ -598,4 +598,7 @@ public class ProjectDetailVO { | |||||
@ApiModelProperty("资金下达情况") | @ApiModelProperty("资金下达情况") | ||||
private List<ProjectApprovalAmountDTO> approvalAmounts; | private List<ProjectApprovalAmountDTO> approvalAmounts; | ||||
@ApiModelProperty("历史项目编码") | |||||
private String hisProjectCode; | |||||
} | } |
@@ -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: | ||||