@@ -0,0 +1,22 @@ | |||
package com.ningdatech.pmapi.common.enumeration; | |||
import lombok.AllArgsConstructor; | |||
import lombok.Getter; | |||
/** | |||
* @author zpf | |||
* @date 2023/3/12 上午9:21 | |||
*/ | |||
@AllArgsConstructor | |||
@Getter | |||
public enum CommonEnum { | |||
/** | |||
* 公共的一些枚举 | |||
*/ | |||
YES(1,"是"), | |||
NO(0,"否"); | |||
private Integer code; | |||
private String desc; | |||
} |
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||
import com.ningdatech.basic.function.VUtils; | |||
import com.ningdatech.basic.model.PageVo; | |||
import com.ningdatech.pmapi.common.constant.RegionConst; | |||
import com.ningdatech.pmapi.common.enumeration.CommonEnum; | |||
import com.ningdatech.pmapi.common.enumeration.ProjectProcessStageEnum; | |||
import com.ningdatech.pmapi.common.helper.RegionCacheHelper; | |||
import com.ningdatech.pmapi.common.helper.UserInfoHelper; | |||
@@ -103,6 +104,12 @@ public class DeclaredProjectManage { | |||
projectInfo.setBuildOrgCode(userInfoDetails.getOrganizationCode()); | |||
projectInfo.setBuildOrgName(userInfoDetails.getOrganizationName()); | |||
//如果主管单位没有 那么主管单位就是自己 | |||
if(CommonEnum.NO.getCode().equals(projectInfo.getIsSuperOrg())){ | |||
projectInfo.setSuperOrgCode(userInfoDetails.getOrganizationCode()); | |||
projectInfo.setSuperOrg(userInfoDetails.getOrganizationName()); | |||
} | |||
//如果是重新提交的话 判断下 项目是否存在 | |||
if(Objects.nonNull(projectInfo.getId())){ | |||
Project oldProject = projectService.getById(projectInfo.getId()); | |||
@@ -22,6 +22,7 @@ import com.ningdatech.pmapi.projectlib.service.IProjectInstService; | |||
import com.ningdatech.pmapi.projectlib.service.IProjectService; | |||
import com.ningdatech.pmapi.staging.service.IProjectStagingService; | |||
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 com.wflow.bean.entity.WflowModels; | |||
import com.wflow.exception.BusinessException; | |||
@@ -79,7 +80,8 @@ public class PrequalificationDeclaredProjectManage { | |||
*/ | |||
@Transactional(rollbackFor = Exception.class) | |||
public String startTheProcess(DefaultDeclaredDTO dto) { | |||
Long userId = LoginUserUtil.getUserId(); | |||
UserInfoDetails userInfoDetails = LoginUserUtil.loginUserDetail(); | |||
Long userId = userInfoDetails.getUserId(); | |||
VUtils.isTrue(Objects.isNull(userId)).throwMessage("获取登录用户失败!"); | |||
ProjectDTO projectDto = dto.getProjectInfo(); | |||
@@ -87,17 +89,9 @@ public class PrequalificationDeclaredProjectManage { | |||
Project projectInfo = projectService.getById(projectDto.getId()); | |||
VUtils.isTrue(Objects.isNull(projectInfo)).throwMessage("提交失败 此项目不存在!"); | |||
String regionCode = projectInfo.getAreaCode(); | |||
WflowModels model = processModelService.getOne(Wrappers.lambdaQuery(WflowModels.class) | |||
.eq(WflowModels::getRegionCode, regionCode) | |||
.eq(WflowModels::getProcessType, ProjectProcessStageEnum.PROJECT_PREQUALIFICATION_APPROVAL_PROCESS.getCode()) | |||
.last("limit 1")); | |||
if (Objects.isNull(model)) { | |||
log.error("此 【{}】区域找不到 预审流程配置", regionCode); | |||
throw new BusinessException(String.format("此 【%s】区域找不到 预审流程配置", regionCode)); | |||
} | |||
//要判断 当前操作人 是不是项目主管单位的人 | |||
VUtils.isTrue(!userInfoDetails.getOrganizationCode().equals(projectInfo.getSuperOrgCode())) | |||
.throwMessage(String.format("只有主管单位 【%s】的人 才能够提交",projectInfo.getSuperOrg())); | |||
//首先要判断 项目当前状态 是不是 待预审 | |||
VUtils.isTrue(!ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode().equals(projectInfo.getStatus()) || | |||
@@ -121,26 +115,7 @@ public class PrequalificationDeclaredProjectManage { | |||
}else if(ProjectStatusEnum.PRE_APPLYING | |||
.getCode().equals(projectInfo.getStatus())){ | |||
//如果是非省级联审的项目 直接提交 预审 | |||
ProcessStartParamsVo params = new ProcessStartParamsVo(); | |||
params.setUser(declaredProjectManage.buildUser(userId)); | |||
params.setProcessUsers(Collections.emptyMap()); | |||
//放入条件判断的项目字段 | |||
ProjectConditionDTO conditionDto = new ProjectConditionDTO(); | |||
BeanUtils.copyProperties(projectInfo, conditionDto); | |||
dto.getFormData().putAll( | |||
JSON.parseObject(JSON.toJSONString(conditionDto), new TypeReference<Map<String, Object>>() { | |||
}) | |||
); | |||
params.setFormData(dto.getFormData()); | |||
// 获取发起单位、发起单位主管单位、发起单位上级主管条线单位信息 | |||
Map<String, OrgInfoDTO> orgModelMap = defaultDeclaredProjectManage.getOrgModelInfo(userId,projectInfo); | |||
instanceId = processService.newStartProcess(model.getProcessDefId(),model.getFormId(), params,orgModelMap); | |||
log.info("提交预审项目成功 【{}】", instanceId); | |||
//保存预审项目 | |||
modifyProject(projectInfo, instanceId); | |||
instanceId = directStartProcess(projectInfo); | |||
}else{ | |||
throw new BusinessException("项目状态 错误 project :" + JSON.toJSONString(projectInfo)); | |||
} | |||
@@ -148,6 +123,43 @@ public class PrequalificationDeclaredProjectManage { | |||
return "提交预审成功【" + instanceId + "】"; | |||
} | |||
//直接提交方法 提取 在省级联审通过的时候 也可以用 | |||
public String directStartProcess(Project projectInfo){ | |||
UserInfoDetails userInfoDetails = LoginUserUtil.loginUserDetail(); | |||
Long userId = userInfoDetails.getUserId(); | |||
ProcessStartParamsVo params = new ProcessStartParamsVo(); | |||
params.setUser(declaredProjectManage.buildUser(userId)); | |||
params.setProcessUsers(Collections.emptyMap()); | |||
//放入条件判断的项目字段 | |||
ProjectConditionDTO conditionDto = new ProjectConditionDTO(); | |||
BeanUtils.copyProperties(projectInfo, conditionDto); | |||
params.setFormData(JSON.parseObject(JSON.toJSONString(conditionDto), new TypeReference<Map<String, Object>>() { | |||
})); | |||
String regionCode = projectInfo.getAreaCode(); | |||
WflowModels model = processModelService.getOne(Wrappers.lambdaQuery(WflowModels.class) | |||
.eq(WflowModels::getRegionCode, regionCode) | |||
.eq(WflowModels::getProcessType, ProjectProcessStageEnum.PROJECT_PREQUALIFICATION_APPROVAL_PROCESS.getCode()) | |||
.last("limit 1")); | |||
if (Objects.isNull(model)) { | |||
log.error("此 【{}】区域找不到 预审流程配置", regionCode); | |||
throw new BusinessException(String.format("此 【%s】区域找不到 预审流程配置", regionCode)); | |||
} | |||
// 获取发起单位、发起单位主管单位、发起单位上级主管条线单位信息 | |||
Map<String, OrgInfoDTO> orgModelMap = defaultDeclaredProjectManage.getOrgModelInfo(userId,projectInfo); | |||
String instanceId = processService.newStartProcess(model.getProcessDefId(),model.getFormId(), params,orgModelMap); | |||
log.info("提交预审项目成功 【{}】", instanceId); | |||
//保存预审项目 | |||
modifyProject(projectInfo, instanceId); | |||
return instanceId; | |||
} | |||
/** | |||
* 提交预审项目 时 更新信息 | |||
* | |||
@@ -192,8 +204,8 @@ public class PrequalificationDeclaredProjectManage { | |||
Long userId = LoginUserUtil.getUserId(); | |||
VUtils.isTrue(Objects.isNull(userId)).throwMessage("获取登录用户失败!"); | |||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | |||
//放入用户的单位 | |||
req.setBuildOrgCode(userFullInfo.getOrganizationCode()); | |||
//放入用户的主管单位 | |||
req.setSuperOrgCode(userFullInfo.getOrganizationCode()); | |||
return projectLibManage.projectLibList(req); | |||
} | |||
} |
@@ -1,11 +1,15 @@ | |||
package com.ningdatech.pmapi.projectdeclared.manage; | |||
import com.ningdatech.basic.function.VUtils; | |||
import com.ningdatech.pmapi.common.statemachine.util.StateMachineUtils; | |||
import com.ningdatech.pmapi.projectdeclared.model.dto.DefaultDeclaredDTO; | |||
import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; | |||
import com.ningdatech.pmapi.projectlib.model.dto.ProjectDTO; | |||
import com.ningdatech.pmapi.projectlib.model.entity.Project; | |||
import com.ningdatech.pmapi.projectlib.service.IProjectService; | |||
import lombok.RequiredArgsConstructor; | |||
import lombok.extern.slf4j.Slf4j; | |||
import org.apache.commons.lang3.StringUtils; | |||
import org.springframework.stereotype.Component; | |||
import org.springframework.transaction.annotation.Transactional; | |||
import java.util.Objects; | |||
@@ -23,6 +27,10 @@ public class ReviewByProvincialDeptManage { | |||
private final IProjectService projectService; | |||
private final StateMachineUtils stateMachineUtils; | |||
private final PrequalificationDeclaredProjectManage prequalificationDeclaredProjectManage; | |||
/** | |||
* 省级部门联审 | |||
* @param project | |||
@@ -40,10 +48,15 @@ public class ReviewByProvincialDeptManage { | |||
!ProjectStatusEnum.NOT_APPROVED.getCode().equals(projectInfo.getStage())) | |||
.throwMessage("提交失败 该项目不是 省级部门联审状态状态或者未立项阶段"); | |||
// TODO 对接省级联审的接口 | |||
Boolean sucessProvince = Boolean.FALSE; | |||
Boolean sucessProvince = Boolean.TRUE; | |||
if(sucessProvince){ | |||
//成功了后 | |||
//测试先成功 | |||
stateMachineUtils.pass(project); | |||
projectService.updateById(project); | |||
//直接去预审 | |||
if(StringUtils.isNotBlank(prequalificationDeclaredProjectManage.directStartProcess(project))){ | |||
return Boolean.TRUE; | |||
} | |||
} | |||
return Boolean.FALSE; | |||
@@ -45,6 +45,7 @@ public class ProjectHelper { | |||
.like(req.getBuildOrg() != null, Project::getBuildOrgName, req.getBuildOrg()) | |||
.eq(req.getBuildOrgCode() != null, Project::getBuildOrgCode, req.getBuildOrgCode()) | |||
.eq(req.getSuperOrgCode() != null, Project::getSuperOrgCode, req.getSuperOrgCode()) | |||
.eq(req.getIsTemporaryAugment() != null, Project::getIsTemporaryAugment, req.getIsTemporaryAugment()) | |||
//状态 阶段 list | |||
.in(CollUtil.isNotEmpty(req.getStageList()),Project::getStage,req.getStageList()) | |||
@@ -221,15 +221,14 @@ public class AnnualPlanLibManage { | |||
public void exportList(ProjectListReq param, HttpServletResponse response) { | |||
param.setPageNumber(CommonConst.EXPORT_PAGE_NUMBER); | |||
param.setPageSize(CommonConst.EXPORT_PAGE_SIZE); | |||
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param); | |||
Integer isTemporaryAugment = param.getIsTemporaryAugment(); | |||
if (Objects.isNull(isTemporaryAugment)){ | |||
throw new BizException("请传入是否临时增补标志!"); | |||
} | |||
query.eq(Project::getIsTemporaryAugment, isTemporaryAugment); | |||
query.eq(Project::getIsTemporaryAugment, 0); | |||
param.setIsTemporaryAugment(isTemporaryAugment); | |||
param.setStatusList(CollUtils.fieldList(ANNUAL_PLAN_LIST_STATUS, ProjectStatusEnum::getCode)); | |||
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(param); | |||
query.orderByDesc(Project::getAnnualPlanAddTime); | |||
query.in(Project::getStatus, CollUtils.fieldList(ANNUAL_PLAN_LIST_STATUS, ProjectStatusEnum::getCode)); | |||
List<Project> projects = projectService.list(query); | |||
ExcelExportWriter excelExportWriter = new ExcelExportWriter(); | |||
@@ -39,6 +39,9 @@ public class ProjectListReq extends PagePo { | |||
@ApiModelProperty("申报单位code") | |||
private String buildOrgCode; | |||
@ApiModelProperty("主管单位code") | |||
private String superOrgCode; | |||
@ApiModelProperty("项目类型") | |||
private Integer projectType; | |||
@@ -7,6 +7,6 @@ | |||
set retry_times = #{retryTimes}, | |||
next_time = #{nextRetryTime}, | |||
dead = #{dead} | |||
where id = #{id} and retry_times = #{retryTimes - 1} | |||
where id = #{id} and retry_times = #{retryTimes} - 1 | |||
</update> | |||
</mapper> |
@@ -7,6 +7,6 @@ | |||
set retry_times = #{retryTimes}, | |||
next_time = #{nextRetryTime}, | |||
dead = #{dead} | |||
where id = #{id} and retry_times = #{retryTimes - 1} | |||
where id = #{id} and retry_times = #{retryTimes} - 1 | |||
</update> | |||
</mapper> |
@@ -1,5 +1,6 @@ | |||
package com.ningdatech.pmapi.user.model.vo; | |||
import com.ningdatech.pmapi.common.constant.RegionConst; | |||
import io.swagger.annotations.ApiModel; | |||
import io.swagger.annotations.ApiModelProperty; | |||
import lombok.Data; | |||
@@ -48,4 +49,13 @@ public class ResUserDetailVO { | |||
@ApiModelProperty("更新时间") | |||
private LocalDateTime updateTime; | |||
//是否是市级单位 | |||
public Boolean getIsMunicipalOrg(){ | |||
//如果是丽水市本级的code 就是 | |||
if(RegionConst.RC_LS.equals(this.regionCode)){ | |||
return Boolean.TRUE; | |||
} | |||
return Boolean.FALSE; | |||
} | |||
} |