Przeglądaj źródła

状态机修改

tags/24080901
CMM 1 rok temu
rodzic
commit
d19306c71e
6 zmienionych plików z 169 dodań i 8 usunięć
  1. +1
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/common/constant/CommonConst.java
  2. +13
    -1
      pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/action/ProjectDeclareAction.java
  3. +3
    -3
      pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/builder/ProjectDeclareStateMachineBuilder.java
  4. +13
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/event/ProjectStatusChangeEvent.java
  5. +37
    -4
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/AnnualPlanLibManage.java
  6. +102
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/dto/AnnualLibExportDTO.java

+ 1
- 0
pmapi/src/main/java/com/ningdatech/pmapi/common/constant/CommonConst.java Wyświetl plik

@@ -32,6 +32,7 @@ public interface CommonConst {
String ARCHIVED = "归档";

String FILE_NAME = "name";
String BASIS_FILE_NAME = "fileName";

String NULL = "null";



+ 13
- 1
pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/action/ProjectDeclareAction.java Wyświetl plik

@@ -44,7 +44,7 @@ public class ProjectDeclareAction {
}

@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT")
public void UNDER_INTERNAL_RESUBMIT(Message<ProjectStatusChangeEvent> message) {
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) {
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE);
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode());
}
@@ -99,6 +99,12 @@ public class ProjectDeclareAction {
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode());
}

@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE")
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) {
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE);
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode());
}

@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE")
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) {
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE);
@@ -174,6 +180,12 @@ public class ProjectDeclareAction {
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode());
}

@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW")
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) {
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE);
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode());
}

@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED")
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) {
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE);


+ 3
- 3
pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/builder/ProjectDeclareStateMachineBuilder.java Wyświetl plik

@@ -86,7 +86,7 @@ public class ProjectDeclareStateMachineBuilder {
.withExternal()
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS)
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT)
.event(ProjectStatusChangeEvent.PROJECT_APPLICATION_SUBMIT).and()
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and()

// 待预审预审申报,从待预审到待预审选择
.withExternal()
@@ -145,7 +145,7 @@ public class ProjectDeclareStateMachineBuilder {
.withExternal()
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED)
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE)
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_DECLARE).and()
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and()
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态
.withChoice()
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE)
@@ -200,7 +200,7 @@ public class ProjectDeclareStateMachineBuilder {
.withExternal()
.source(ProjectStatusEnum.SCHEME_REVIEW_FAILED)
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW)
.event(ProjectStatusChangeEvent.DECLARE_PLAN).and()
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and()
// 待立项批复批复,从待立项批复到待采购
.withExternal()
.source(ProjectStatusEnum.TO_BE_APPROVED)


+ 13
- 0
pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/event/ProjectStatusChangeEvent.java Wyświetl plik

@@ -36,6 +36,11 @@ public enum ProjectStatusChangeEvent {
*/
UNDER_INTERNAL_PASS(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode(), null, null),
/**
* 单位内部审核不通过重新提交(项目状态进入:单位内部审核中)
*/
UNDER_INTERNAL_REJECT_RESUBMIT(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode(),null,null),

/**
* 预审申报(项目状态进入:待预审选择,有判断条件:市级项目且申报金额大于1000万项目状态变为:省级部门联审中;否则项目状态变为:预审中)
*/
PRELIMINARY_REVIEW_DECLARE(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode(), null, null),
@@ -57,6 +62,10 @@ public enum ProjectStatusChangeEvent {
*/
PRELIMINARY_REVIEW_REJECT(null, ProjectStatusEnum.PRE_APPLYING.getCode(), null),
/**
* 预审不通过重新提交(项目状态变为:待预审选择)
*/
PRELIMINARY_REVIEW_REJECT_RESUBMIT(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode(),null,null),
/**
* 预审通过(项目状态变为:部门联审中)
*/
PRELIMINARY_REVIEW_PASS(ProjectStatusEnum.PRE_APPLYING.getCode(), null, null),
@@ -85,6 +94,10 @@ public enum ProjectStatusChangeEvent {
*/
PLAN_REVIEW_REJECT(null, ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode(), null),
/**
* 方案评审不通过重新提交(项目状态变为:方案评审中)
*/
PLAN_REVIEW_REJECT_RESUBMIT(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode(),null,null),
/**
* 方案评审通过(项目状态变为:待立项批复)
*/
PLAN_REVIEW_PASS(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode(), null, null),


+ 37
- 4
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/AnnualPlanLibManage.java Wyświetl plik

@@ -6,6 +6,8 @@ import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -13,6 +15,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ningdatech.basic.exception.BizException;
import com.ningdatech.basic.model.PageVo;
import com.ningdatech.basic.util.CollUtils;
import com.ningdatech.basic.util.StrPool;
import com.ningdatech.pmapi.common.constant.CommonConst;
import com.ningdatech.pmapi.common.enumeration.CommonEnum;
import com.ningdatech.pmapi.common.helper.UserInfoHelper;
@@ -26,6 +29,7 @@ import com.ningdatech.pmapi.projectlib.enumeration.ProjectLibFlagEnum;
import com.ningdatech.pmapi.projectlib.enumeration.ProjectRenewalApprovalStatusEnum;
import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum;
import com.ningdatech.pmapi.projectlib.helper.ProjectHelper;
import com.ningdatech.pmapi.projectlib.model.dto.AnnualLibExportDTO;
import com.ningdatech.pmapi.projectlib.model.dto.AnnualLibImportDTO;
import com.ningdatech.pmapi.projectlib.model.dto.ProjectDTO;
import com.ningdatech.pmapi.projectlib.model.entity.Project;
@@ -39,6 +43,7 @@ import com.ningdatech.pmapi.projectlib.service.INdProjectStatusChangeService;
import com.ningdatech.pmapi.projectlib.service.IProjectRenewalFundDeclarationService;
import com.ningdatech.pmapi.projectlib.service.IProjectService;
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO;
import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails;
import com.ningdatech.pmapi.user.util.LoginUserUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -352,14 +357,36 @@ public class AnnualPlanLibManage {
isTemporaryAugment = 1;
fileName = "丽水市" + year + "年数字化项目年度计划增补库编辑表";
}
param.setIsTemporaryAugment(isTemporaryAugment);
param.setStatusList(CollUtils.fieldList(ANNUAL_PLAN_LIST_STATUS, ProjectStatusEnum::getCode));
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param);
query.eq(Project::getIsTemporaryAugment, isTemporaryAugment);
query.orderByDesc(Project::getAnnualPlanAddTime);
query.in(Project::getStatus, CollUtils.fieldList(ANNUAL_PLAN_LIST_STATUS, ProjectStatusEnum::getCode));
//数据权限
buildProjectLibPermission(query);
List<Project> projects = projectService.list(query);
List<AnnualLibImportDTO> list = projects.stream().map(p -> {
AnnualLibImportDTO dto = new AnnualLibImportDTO();
List<AnnualLibExportDTO> list = projects.stream().map(p -> {
AnnualLibExportDTO dto = new AnnualLibExportDTO();
BeanUtils.copyProperties(p, dto);
String buildCycle = p.getBuildCycle();
if (Objects.nonNull(buildCycle)) {
String cycle = buildCycle.replace(StrPool.TILDA, CommonConst.ZHI);
dto.setBuildCycle(cycle);
}
dto.setProjectId(p.getId());
dto.setDeclaredAmount(p.getDeclareAmount());
dto.setBuildUnitName(p.getBuildOrgName());
String buildBasis = p.getBuildBasis();
List<JSONObject> fileArray = JSON.parseArray(buildBasis, JSONObject.class);
List<String> nameList = CollUtils.fieldList(fileArray, w ->
w.getString(CommonConst.TITLE) + StrPool.LEFT_BRACKET +
w.getString(CommonConst.BASIS_FILE_NAME) + StrPool.RIGHT_BRACKET);
String basis = nameList.stream().collect(Collectors.joining(StrPool.COMMA));
dto.setBuildBasis(basis);
if (CommonEnum.YES.getCode().equals(p.getIsFirst())){
dto.setIsFirst(CommonConst.NEW_CONSTRUCTION);
}else if (CommonEnum.NO.getCode().equals(p.getIsFirst())){
dto.setIsFirst(CommonConst.CONTINUED_CONSTRUCTION);
}
dto.setFirstQuarter(p.getEngineeringSpeedOne());
dto.setSecondQuarter(p.getEngineeringSpeedTwo());
dto.setThirdQuarter(p.getEngineeringSpeedThree());
@@ -367,6 +394,12 @@ public class AnnualPlanLibManage {
return dto;
}).collect(Collectors.toList());

int count = 0;
for (AnnualLibExportDTO annualLibExportDTO : list) {
count++;
annualLibExportDTO.setSerialNumber(count);
}

// 获取本地目录的年度计划编辑表Excel模板
File directory = new File("");
String templateName = "丽水市" + year + "年数字化项目年度计划编辑表";


+ 102
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/model/dto/AnnualLibExportDTO.java Wyświetl plik

@@ -0,0 +1,102 @@
package com.ningdatech.pmapi.projectlib.model.dto;

import java.math.BigDecimal;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;

/**
* <p>
* AnnualLibImportDTO
* </p>
*
* @author WendyYang
* @since 13:46 2023/2/13
*/
@Data
public class AnnualLibExportDTO {

@NotNull(message = "年度投资额不能为空")
@Excel(name = "年度投资额",groupName = "2023年计划")
private BigDecimal annualPlanAmount;

@NotNull(message = "自由资金不能为空")
@Excel(name = "自有资金",groupName = "资金来源")
private BigDecimal declareHaveAmount;
@Excel(name = "政府投资-本级财政资金")
@NotNull(message = "政府投资-本级财政不能为空")
private BigDecimal declareGovOwnFinanceAmount;
@Excel(name = "政府投资-上级补助资金")
@NotNull(message = "政府投资-上级补助资金不能为空")
private BigDecimal declareGovSuperiorFinanceAmount;
@Excel(name = "银行贷款")
@NotNull(message = "银行贷款不能为空")
private BigDecimal declareBankLendingAmount;
@Excel(name = "其他")
@NotNull(message = "其他不能为空")
private BigDecimal declareOtherAmount;

@Excel(name = "一季度",groupName = "进度和支付计划")
@NotBlank(message = "一季度不能为空")
private String firstQuarter;
@Excel(name = "二季度")
@NotBlank(message = "二季度不能为空")
private String secondQuarter;
@Excel(name = "三季度")
@NotBlank(message = "三季度不能为空")
private String thirdQuarter;
@Excel(name = "四季度")
@NotBlank(message = "四季度不能为空")
private String fourthQuarter;

@NotNull(message = "序号不能为空")
@Excel(name = "序号")
private Integer serialNumber;

@Excel(name = "项目id")
@NotNull(message = "项目ID不能为空")
private Long projectId;

@Excel(name = "项目名称")
@NotBlank(message = "项目名称不能为空")
private String projectName;

@NotBlank(message = "建设内容不能为空")
@Excel(name = "建设内容")
private String projectIntroduction;

@NotBlank(message = "建设依据不能为空")
@Excel(name = "建设依据")
private String buildBasis;

@Excel(name = "建设性质")
@NotBlank(message = "建设性质不能为空")
private String isFirst;

@Excel(name = "建设起止年限(填写到月)")
@NotBlank(message = "建设起止年限不能为空")
private String buildCycle;

@NotBlank(message = "总投资不能为空")
@Excel(name = "总投资")
private BigDecimal declaredAmount;

@Excel(name = "建设单位")
@NotBlank(message = "建设单位不能为空")
private String buildUnitName;

@Excel(name = "项目联系人")
@NotBlank(message = "项目联系人不能为空")
private String contactName;

@Excel(name = "项目分管领导")
@NotBlank(message = "项目分管领导不能为空")
private String responsibleMan;

@Excel(name = "备注")
private String projectRemarks;

}

Ładowanie…
Anuluj
Zapisz