@@ -47,7 +47,6 @@ import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; | |||||
import com.ningdatech.pmapi.projectlib.manage.ProjectLibManage; | import com.ningdatech.pmapi.projectlib.manage.ProjectLibManage; | ||||
import com.ningdatech.pmapi.projectlib.model.entity.Project; | import com.ningdatech.pmapi.projectlib.model.entity.Project; | ||||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectApplication; | import com.ningdatech.pmapi.projectlib.model.entity.ProjectApplication; | ||||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectDelayApply; | |||||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectInst; | import com.ningdatech.pmapi.projectlib.model.entity.ProjectInst; | ||||
import com.ningdatech.pmapi.projectlib.model.vo.ProjectDetailVO; | import com.ningdatech.pmapi.projectlib.model.vo.ProjectDetailVO; | ||||
import com.ningdatech.pmapi.projectlib.service.IProjectApplicationService; | import com.ningdatech.pmapi.projectlib.service.IProjectApplicationService; | ||||
@@ -55,7 +54,7 @@ import com.ningdatech.pmapi.projectlib.service.IProjectInstService; | |||||
import com.ningdatech.pmapi.projectlib.service.IProjectService; | import com.ningdatech.pmapi.projectlib.service.IProjectService; | ||||
import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | ||||
import com.ningdatech.pmapi.sys.manage.NoticeManage; | import com.ningdatech.pmapi.sys.manage.NoticeManage; | ||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant; | |||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant; | |||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | ||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | import com.ningdatech.pmapi.user.util.LoginUserUtil; | ||||
import com.wflow.bean.entity.WflowModels; | import com.wflow.bean.entity.WflowModels; | ||||
@@ -285,7 +284,7 @@ public class ProjectFileManage { | |||||
projectLibManage.saveProjectByApplyBorrow(project, user, instanceId); | projectLibManage.saveProjectByApplyBorrow(project, user, instanceId); | ||||
// 发送给第一个审批人消息 | // 发送给第一个审批人消息 | ||||
noticeManage.sendFirtUser(project, model.getFormName(), instanceId, WorkNoticeContant.PASS_MSG_TEMPLATE, | |||||
noticeManage.sendFirtUser(project, model.getFormName(), instanceId, WorkNoticeConstant.PASS_MSG_TEMPLATE, | |||||
MsgTypeEnum.PROJECT_REVIEW); | MsgTypeEnum.PROJECT_REVIEW); | ||||
return instanceId; | return instanceId; | ||||
@@ -46,6 +46,8 @@ public class ConstructionPlanController { | |||||
return "建设方案申报 【" + instanceId + "】 成功"; | return "建设方案申报 【" + instanceId + "】 成功"; | ||||
} | } | ||||
@GetMapping("/export") | @GetMapping("/export") | ||||
@ApiOperation("可申报建设方案项目列表导出") | @ApiOperation("可申报建设方案项目列表导出") | ||||
@WebLog("可申报建设方案项目列表导出") | @WebLog("可申报建设方案项目列表导出") | ||||
@@ -31,7 +31,7 @@ import com.ningdatech.pmapi.projectlib.service.IProjectInstService; | |||||
import com.ningdatech.pmapi.projectlib.service.IProjectService; | import com.ningdatech.pmapi.projectlib.service.IProjectService; | ||||
import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | ||||
import com.ningdatech.pmapi.sys.manage.NoticeManage; | import com.ningdatech.pmapi.sys.manage.NoticeManage; | ||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant; | |||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant; | |||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | ||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | import com.ningdatech.pmapi.user.util.LoginUserUtil; | ||||
import com.wflow.bean.entity.WflowModels; | import com.wflow.bean.entity.WflowModels; | ||||
@@ -156,7 +156,7 @@ public class ConstructionPlanManage { | |||||
//发送给第一个审批人消息 | //发送给第一个审批人消息 | ||||
noticeManage.sendFirtUser(projectInfo,model.getFormName(),instanceId, | noticeManage.sendFirtUser(projectInfo,model.getFormName(),instanceId, | ||||
WorkNoticeContant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
WorkNoticeConstant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
return instanceId; | return instanceId; | ||||
} | } | ||||
@@ -23,7 +23,6 @@ import com.ningdatech.pmapi.projectdeclared.model.dto.*; | |||||
import com.ningdatech.pmapi.projectdeclared.model.entity.ProjectDraft; | import com.ningdatech.pmapi.projectdeclared.model.entity.ProjectDraft; | ||||
import com.ningdatech.pmapi.projectdeclared.model.vo.ProjectDraftVO; | import com.ningdatech.pmapi.projectdeclared.model.vo.ProjectDraftVO; | ||||
import com.ningdatech.pmapi.projectdeclared.service.IProjectDraftService; | import com.ningdatech.pmapi.projectdeclared.service.IProjectDraftService; | ||||
import com.ningdatech.pmapi.projectdeclared.utils.GenerateProjectCodeUtil; | |||||
import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; | import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; | ||||
import com.ningdatech.pmapi.projectlib.enumeration.ProjectTypeEnum; | import com.ningdatech.pmapi.projectlib.enumeration.ProjectTypeEnum; | ||||
import com.ningdatech.pmapi.projectlib.helper.ProjectHelper; | import com.ningdatech.pmapi.projectlib.helper.ProjectHelper; | ||||
@@ -31,15 +30,12 @@ import com.ningdatech.pmapi.projectlib.manage.ProjectLibManage; | |||||
import com.ningdatech.pmapi.projectlib.model.dto.ProjectDTO; | import com.ningdatech.pmapi.projectlib.model.dto.ProjectDTO; | ||||
import com.ningdatech.pmapi.projectlib.model.entity.Project; | import com.ningdatech.pmapi.projectlib.model.entity.Project; | ||||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectApplication; | import com.ningdatech.pmapi.projectlib.model.entity.ProjectApplication; | ||||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectInst; | |||||
import com.ningdatech.pmapi.projectlib.model.req.ProjectListReq; | import com.ningdatech.pmapi.projectlib.model.req.ProjectListReq; | ||||
import com.ningdatech.pmapi.projectlib.model.vo.ProjectLibListItemVO; | import com.ningdatech.pmapi.projectlib.model.vo.ProjectLibListItemVO; | ||||
import com.ningdatech.pmapi.projectlib.service.IProjectApplicationService; | |||||
import com.ningdatech.pmapi.projectlib.service.IProjectInstService; | |||||
import com.ningdatech.pmapi.projectlib.service.IProjectService; | import com.ningdatech.pmapi.projectlib.service.IProjectService; | ||||
import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | ||||
import com.ningdatech.pmapi.sys.manage.NoticeManage; | import com.ningdatech.pmapi.sys.manage.NoticeManage; | ||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant; | |||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant; | |||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | ||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | import com.ningdatech.pmapi.user.util.LoginUserUtil; | ||||
import com.wflow.bean.entity.WflowModels; | import com.wflow.bean.entity.WflowModels; | ||||
@@ -171,7 +167,7 @@ public class DeclaredProjectManage { | |||||
//发送给第一个审批人消息 | //发送给第一个审批人消息 | ||||
noticeManage.sendFirtUser(buildProject,model.getFormName(),instanceId, | noticeManage.sendFirtUser(buildProject,model.getFormName(),instanceId, | ||||
WorkNoticeContant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
WorkNoticeConstant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
return instanceId; | return instanceId; | ||||
} | } | ||||
@@ -252,7 +248,7 @@ public class DeclaredProjectManage { | |||||
//发送给第一个审批人消息 | //发送给第一个审批人消息 | ||||
noticeManage.sendFirtUser(buildProject,model.getFormName(),instanceId, | noticeManage.sendFirtUser(buildProject,model.getFormName(),instanceId, | ||||
WorkNoticeContant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
WorkNoticeConstant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
return instanceId; | return instanceId; | ||||
} | } | ||||
@@ -2,10 +2,7 @@ package com.ningdatech.pmapi.projectdeclared.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.date.DatePattern; | |||||
import com.alibaba.excel.EasyExcel; | import com.alibaba.excel.EasyExcel; | ||||
import com.alibaba.fastjson.JSON; | |||||
import com.alibaba.fastjson.TypeReference; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
@@ -17,22 +14,16 @@ import com.ningdatech.basic.util.NdDateUtils; | |||||
import com.ningdatech.pmapi.common.constant.BizConst; | import com.ningdatech.pmapi.common.constant.BizConst; | ||||
import com.ningdatech.pmapi.common.enumeration.ProjectProcessStageEnum; | import com.ningdatech.pmapi.common.enumeration.ProjectProcessStageEnum; | ||||
import com.ningdatech.pmapi.common.helper.UserInfoHelper; | import com.ningdatech.pmapi.common.helper.UserInfoHelper; | ||||
import com.ningdatech.pmapi.common.statemachine.util.StateMachineUtils; | |||||
import com.ningdatech.pmapi.common.util.ExcelDownUtil; | import com.ningdatech.pmapi.common.util.ExcelDownUtil; | ||||
import com.ningdatech.pmapi.common.util.ExcelExportStyle; | import com.ningdatech.pmapi.common.util.ExcelExportStyle; | ||||
import com.ningdatech.pmapi.projectdeclared.model.dto.DeclaredProjectExportDTO; | import com.ningdatech.pmapi.projectdeclared.model.dto.DeclaredProjectExportDTO; | ||||
import com.ningdatech.pmapi.projectdeclared.model.dto.DelayedApplyDTO; | import com.ningdatech.pmapi.projectdeclared.model.dto.DelayedApplyDTO; | ||||
import com.ningdatech.pmapi.projectdeclared.model.dto.ProjectConditionDTO; | |||||
import com.ningdatech.pmapi.projectdeclared.model.entity.Contract; | |||||
import com.ningdatech.pmapi.projectdeclared.model.entity.PaymentPlan; | |||||
import com.ningdatech.pmapi.projectdeclared.model.entity.Purchase; | |||||
import com.ningdatech.pmapi.projectdeclared.model.vo.DelayedApplyVO; | import com.ningdatech.pmapi.projectdeclared.model.vo.DelayedApplyVO; | ||||
import com.ningdatech.pmapi.projectlib.enumeration.InstTypeEnum; | import com.ningdatech.pmapi.projectlib.enumeration.InstTypeEnum; | ||||
import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; | import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; | ||||
import com.ningdatech.pmapi.projectlib.enumeration.ProjectTypeEnum; | import com.ningdatech.pmapi.projectlib.enumeration.ProjectTypeEnum; | ||||
import com.ningdatech.pmapi.projectlib.helper.ProjectHelper; | import com.ningdatech.pmapi.projectlib.helper.ProjectHelper; | ||||
import com.ningdatech.pmapi.projectlib.manage.ProjectLibManage; | import com.ningdatech.pmapi.projectlib.manage.ProjectLibManage; | ||||
import com.ningdatech.pmapi.projectlib.model.dto.ProjectDTO; | |||||
import com.ningdatech.pmapi.projectlib.model.entity.Project; | import com.ningdatech.pmapi.projectlib.model.entity.Project; | ||||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectDelayApply; | import com.ningdatech.pmapi.projectlib.model.entity.ProjectDelayApply; | ||||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectInst; | import com.ningdatech.pmapi.projectlib.model.entity.ProjectInst; | ||||
@@ -43,7 +34,7 @@ import com.ningdatech.pmapi.projectlib.service.IProjectInstService; | |||||
import com.ningdatech.pmapi.projectlib.service.IProjectService; | import com.ningdatech.pmapi.projectlib.service.IProjectService; | ||||
import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | ||||
import com.ningdatech.pmapi.sys.manage.NoticeManage; | import com.ningdatech.pmapi.sys.manage.NoticeManage; | ||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant; | |||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant; | |||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | ||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | import com.ningdatech.pmapi.user.util.LoginUserUtil; | ||||
import com.wflow.bean.entity.WflowModels; | import com.wflow.bean.entity.WflowModels; | ||||
@@ -292,7 +283,7 @@ public class DelayedApplyManage { | |||||
//发送给第一个审批人消息 | //发送给第一个审批人消息 | ||||
noticeManage.sendFirtUser(project,model.getFormName(),instanceId, | noticeManage.sendFirtUser(project,model.getFormName(),instanceId, | ||||
WorkNoticeContant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
WorkNoticeConstant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
return instanceId; | return instanceId; | ||||
} | } | ||||
@@ -30,7 +30,7 @@ import com.ningdatech.pmapi.projectlib.model.vo.ProjectLibListItemVO; | |||||
import com.ningdatech.pmapi.projectlib.service.IProjectService; | import com.ningdatech.pmapi.projectlib.service.IProjectService; | ||||
import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | ||||
import com.ningdatech.pmapi.sys.manage.NoticeManage; | import com.ningdatech.pmapi.sys.manage.NoticeManage; | ||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant; | |||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant; | |||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | ||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | import com.ningdatech.pmapi.user.util.LoginUserUtil; | ||||
import com.wflow.bean.entity.WflowModels; | import com.wflow.bean.entity.WflowModels; | ||||
@@ -242,7 +242,7 @@ public class FinalAcceptanceManage { | |||||
//发送给第一个审批人消息 | //发送给第一个审批人消息 | ||||
noticeManage.sendFirtUser(projectInfo,model.getFormName(),instanceId, | noticeManage.sendFirtUser(projectInfo,model.getFormName(),instanceId, | ||||
WorkNoticeContant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
WorkNoticeConstant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
return instanceId; | return instanceId; | ||||
} | } | ||||
@@ -302,7 +302,7 @@ public class FinalAcceptanceManage { | |||||
//发送给第一个审批人消息 | //发送给第一个审批人消息 | ||||
noticeManage.sendFirtUser(projectInfo,model.getFormName(),instanceId, | noticeManage.sendFirtUser(projectInfo,model.getFormName(),instanceId, | ||||
WorkNoticeContant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
WorkNoticeConstant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
return instanceId; | return instanceId; | ||||
} | } | ||||
@@ -32,8 +32,8 @@ import com.ningdatech.pmapi.projectlib.service.IProjectService; | |||||
import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | ||||
import com.ningdatech.pmapi.staging.service.IProjectStagingService; | import com.ningdatech.pmapi.staging.service.IProjectStagingService; | ||||
import com.ningdatech.pmapi.sys.manage.NoticeManage; | import com.ningdatech.pmapi.sys.manage.NoticeManage; | ||||
import com.ningdatech.pmapi.todocenter.constant.TodoCenterContant; | |||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant; | |||||
import com.ningdatech.pmapi.todocenter.constant.TodoCenterConstant; | |||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant; | |||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | ||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | import com.ningdatech.pmapi.user.util.LoginUserUtil; | ||||
import com.wflow.bean.entity.WflowModels; | import com.wflow.bean.entity.WflowModels; | ||||
@@ -127,7 +127,7 @@ public class PrequalificationDeclaredProjectManage { | |||||
//保存一下 当前的主管单位发起人 | //保存一下 当前的主管单位发起人 | ||||
projectInfo.setPreStartUserId(employeeCode); | projectInfo.setPreStartUserId(employeeCode); | ||||
//当前实例置为空 | //当前实例置为空 | ||||
projectInfo.setInstCode(TodoCenterContant.Declared.NULL_INST_CODE); | |||||
projectInfo.setInstCode(TodoCenterConstant.Declared.NULL_INST_CODE); | |||||
if(projectStagingService.addByProject(projectInfo,"省级部门联审") | if(projectStagingService.addByProject(projectInfo,"省级部门联审") | ||||
&& projectService.updateById(projectInfo)){ | && projectService.updateById(projectInfo)){ | ||||
return "提交省级部门联审成功"; | return "提交省级部门联审成功"; | ||||
@@ -208,7 +208,7 @@ public class PrequalificationDeclaredProjectManage { | |||||
//发送给第一个审批人消息 | //发送给第一个审批人消息 | ||||
noticeManage.sendFirtUser(projectInfo,model.getFormName(),instanceId, | noticeManage.sendFirtUser(projectInfo,model.getFormName(),instanceId, | ||||
WorkNoticeContant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
WorkNoticeConstant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
return instanceId; | return instanceId; | ||||
} | } | ||||
@@ -12,7 +12,7 @@ import com.ningdatech.pmapi.projectlib.service.IProjectInstService; | |||||
import com.ningdatech.pmapi.projectlib.service.IProjectService; | import com.ningdatech.pmapi.projectlib.service.IProjectService; | ||||
import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | ||||
import com.ningdatech.pmapi.sys.manage.NoticeManage; | import com.ningdatech.pmapi.sys.manage.NoticeManage; | ||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant; | |||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant; | |||||
import com.wflow.bean.entity.WflowModels; | import com.wflow.bean.entity.WflowModels; | ||||
import com.wflow.exception.BusinessException; | import com.wflow.exception.BusinessException; | ||||
import com.wflow.workflow.bean.dto.OrgInfoDTO; | import com.wflow.workflow.bean.dto.OrgInfoDTO; | ||||
@@ -108,7 +108,7 @@ public class ReviewByDeptJointManage { | |||||
//发送给第一个审批人消息 | //发送给第一个审批人消息 | ||||
noticeManage.sendFirtUser(projectInfo,model.getFormName(),instanceId, | noticeManage.sendFirtUser(projectInfo,model.getFormName(),instanceId, | ||||
WorkNoticeContant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
WorkNoticeConstant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); | |||||
return Boolean.TRUE; | return Boolean.TRUE; | ||||
} | } | ||||
@@ -14,7 +14,7 @@ import com.ningdatech.pmapi.projectlib.service.IProjectApplicationService; | |||||
import com.ningdatech.pmapi.projectlib.service.IProjectService; | import com.ningdatech.pmapi.projectlib.service.IProjectService; | ||||
import com.ningdatech.pmapi.provincial.service.IJoinReviewProvincialBureauService; | import com.ningdatech.pmapi.provincial.service.IJoinReviewProvincialBureauService; | ||||
import com.ningdatech.pmapi.staging.service.IProjectStagingService; | import com.ningdatech.pmapi.staging.service.IProjectStagingService; | ||||
import com.ningdatech.pmapi.todocenter.constant.TodoCenterContant; | |||||
import com.ningdatech.pmapi.todocenter.constant.TodoCenterConstant; | |||||
import com.wflow.exception.BusinessException; | import com.wflow.exception.BusinessException; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
@@ -106,7 +106,7 @@ public class ReviewByProvincialDeptManage { | |||||
//保存一下 当前的主管单位发起人 | //保存一下 当前的主管单位发起人 | ||||
p.setPreStartUserId(p.getSponsor()); | p.setPreStartUserId(p.getSponsor()); | ||||
//当前实例置为空 | //当前实例置为空 | ||||
p.setInstCode(TodoCenterContant.Declared.NULL_INST_CODE); | |||||
p.setInstCode(TodoCenterConstant.Declared.NULL_INST_CODE); | |||||
declaringDTO.getProjectInfo().setId(p.getId()); | declaringDTO.getProjectInfo().setId(p.getId()); | ||||
projectService.updateById(p); | projectService.updateById(p); | ||||
if(!joinReviewProvincialBureauService.pushImportProject( | if(!joinReviewProvincialBureauService.pushImportProject( | ||||
@@ -58,6 +58,12 @@ public class ProjectLibController { | |||||
return projectLibManage.applicationList(req); | return projectLibManage.applicationList(req); | ||||
} | } | ||||
@GetMapping("/construct/{id}") | |||||
@ApiOperation("获取项目建设方案详情") | |||||
public ProjectDetailVO constructDetail (@PathVariable Long id){ | |||||
return projectLibManage.getConstructProjectDetail(id); | |||||
} | |||||
@GetMapping("/{id}") | @GetMapping("/{id}") | ||||
@ApiOperation("获取项目详情") | @ApiOperation("获取项目详情") | ||||
public ProjectDetailVO detail (@PathVariable Long id){ | public ProjectDetailVO detail (@PathVariable Long id){ | ||||
@@ -74,6 +74,8 @@ import java.time.LocalDateTime; | |||||
import java.util.*; | import java.util.*; | ||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
import static com.ningdatech.pmapi.irs.config.IrsSealPlatformProperties.projectId; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
* ProjectLibManage | * ProjectLibManage | ||||
@@ -474,6 +476,8 @@ public class ProjectLibManage { | |||||
project.setInstCode(instanceId); | project.setInstCode(instanceId); | ||||
project.setCreateOn(LocalDateTime.now()); | project.setCreateOn(LocalDateTime.now()); | ||||
project.setUpdateOn(LocalDateTime.now()); | project.setUpdateOn(LocalDateTime.now()); | ||||
// 标识保存的项目信息是否为建设方案申报项目 | |||||
project.setIsConstruct(Boolean.TRUE); | |||||
stateMachineUtils.pass(project); | stateMachineUtils.pass(project); | ||||
if(projectService.save(project)){ | if(projectService.save(project)){ | ||||
@@ -519,7 +523,7 @@ public class ProjectLibManage { | |||||
* @since 2023/02/11 11:15 | * @since 2023/02/11 11:15 | ||||
*/ | */ | ||||
public ProjectDetailVO getProjectDetail(Long projectId) { | public ProjectDetailVO getProjectDetail(Long projectId) { | ||||
// 查询项目申报信息 | |||||
// 查询建设方案申报前最新的项目申报信息 | |||||
Project projectInfo = projectService.getNewProject(projectId); | Project projectInfo = projectService.getNewProject(projectId); | ||||
if (Objects.isNull(projectInfo)) { | if (Objects.isNull(projectInfo)) { | ||||
return null; | return null; | ||||
@@ -599,6 +603,32 @@ public class ProjectLibManage { | |||||
return vo; | return vo; | ||||
} | } | ||||
/** | |||||
* 获取建设方案申报项目详情 | |||||
* @param projectId | |||||
* @return com.ningdatech.pmapi.projectlib.model.vo.ProjectDetailVO | |||||
* @author CMM | |||||
* @since 2023/07/12 11:43 | |||||
*/ | |||||
public ProjectDetailVO getConstructProjectDetail(Long projectId) { | |||||
// 查询建设方案申报前最新的项目申报信息 | |||||
Project projectInfo = projectService.getNewConstructProject(projectId); | |||||
if (Objects.isNull(projectInfo)) { | |||||
return null; | |||||
} | |||||
ProjectDetailVO vo = new ProjectDetailVO(); | |||||
BeanUtils.copyProperties(projectInfo, vo); | |||||
vo.buildDynamicForm(projectInfo.getDynamicForm()); | |||||
// 查询应用 | |||||
List<ProjectApplication> applications = applicationService.list(Wrappers.lambdaQuery(ProjectApplication.class) | |||||
.eq(ProjectApplication::getProjectId, vo.getId())); | |||||
Optional.ofNullable(applications).ifPresent(apps -> | |||||
vo.setProjectApplications(CollUtils.convert(apps, | |||||
ProjectHelper::convertVO) | |||||
)); | |||||
return vo; | |||||
} | |||||
public List<ProcessDetailVO> processScheduleDetail(Long projectId) { | public List<ProcessDetailVO> processScheduleDetail(Long projectId) { | ||||
List<ProcessDetailVO> processDetailVOS = new ArrayList<>(); | List<ProcessDetailVO> processDetailVOS = new ArrayList<>(); | ||||
return processExecuteHandle.handle(projectId, processDetailVOS); | return processExecuteHandle.handle(projectId, processDetailVOS); | ||||
@@ -311,12 +311,17 @@ public class Project implements Serializable { | |||||
private Long updateBy; | private Long updateBy; | ||||
@ApiModelProperty("项目预审申请单文件ID") | @ApiModelProperty("项目预审申请单文件ID") | ||||
private Long pretrialFileId; | private Long pretrialFileId; | ||||
@ApiModelProperty("项目预审申请单文件名") | @ApiModelProperty("项目预审申请单文件名") | ||||
private String pretrialFileName; | private String pretrialFileName; | ||||
@ApiModelProperty("项目建设方案申请单文件ID") | |||||
private Long constructFileId; | |||||
@ApiModelProperty("项目建设方案申请单文件名") | |||||
private String constructFileName; | |||||
@ApiModelProperty("21位项目编号") | @ApiModelProperty("21位项目编号") | ||||
private String projectCode; | private String projectCode; | ||||
@@ -358,4 +363,7 @@ public class Project implements Serializable { | |||||
@ApiModelProperty("申请延期理由") | @ApiModelProperty("申请延期理由") | ||||
private String applyDelayReason; | private String applyDelayReason; | ||||
@ApiModelProperty("是否为建设方案申报") | |||||
private Boolean isConstruct; | |||||
} | } |
@@ -312,7 +312,6 @@ public class ProjectDetailVO { | |||||
@ApiModelProperty("上级条线单位审核意见") | @ApiModelProperty("上级条线单位审核意见") | ||||
private String higherLineSuperOrgReviewComments; | private String higherLineSuperOrgReviewComments; | ||||
private String projectTypeName; | private String projectTypeName; | ||||
@ApiModelProperty("项目预审申请单文件ID") | @ApiModelProperty("项目预审申请单文件ID") | ||||
@@ -321,6 +320,12 @@ public class ProjectDetailVO { | |||||
@ApiModelProperty("项目预审申请单文件名") | @ApiModelProperty("项目预审申请单文件名") | ||||
private String pretrialFileName; | private String pretrialFileName; | ||||
@ApiModelProperty("项目建设方案申请单文件ID") | |||||
private Long constructFileId; | |||||
@ApiModelProperty("项目建设方案申请单文件名") | |||||
private String constructFileName; | |||||
@ApiModelProperty("21位项目编号") | @ApiModelProperty("21位项目编号") | ||||
private String projectCode; | private String projectCode; | ||||
@@ -21,5 +21,7 @@ public interface IProjectService extends IService<Project> { | |||||
Project getNewProject(Long projectId); | Project getNewProject(Long projectId); | ||||
Project getNewConstructProject(Long projectId); | |||||
Project getProjectByCode(String projectCode); | Project getProjectByCode(String projectCode); | ||||
} | } |
@@ -65,6 +65,27 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl | |||||
LambdaQueryWrapper<Project> last = Wrappers.lambdaQuery(Project.class) | LambdaQueryWrapper<Project> last = Wrappers.lambdaQuery(Project.class) | ||||
.eq(Project::getNewest, Boolean.TRUE) | .eq(Project::getNewest, Boolean.TRUE) | ||||
.eq(Project::getProjectCode, projectCode) | .eq(Project::getProjectCode, projectCode) | ||||
.eq(Project::getIsConstruct, Boolean.FALSE) | |||||
.last(BizConst.LIMIT_1); | |||||
Project newest = getOne(last); | |||||
return newest; | |||||
} | |||||
@Override | |||||
public Project getNewConstructProject(Long projectId) { | |||||
Project project = getById(projectId); | |||||
if(Objects.isNull(project)){ | |||||
return null; | |||||
} | |||||
String projectCode = project.getProjectCode(); | |||||
LambdaQueryWrapper<Project> last = Wrappers.lambdaQuery(Project.class) | |||||
.eq(Project::getNewest, Boolean.TRUE) | |||||
.eq(Project::getProjectCode, projectCode) | |||||
.eq(Project::getIsConstruct, Boolean.TRUE) | |||||
.last(BizConst.LIMIT_1); | .last(BizConst.LIMIT_1); | ||||
Project newest = getOne(last); | Project newest = getOne(last); | ||||
@@ -26,7 +26,7 @@ import org.springframework.stereotype.Component; | |||||
import java.time.Duration; | import java.time.Duration; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Objects; | import java.util.Objects; | ||||
import static com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant.CC_MSG_TEMPLATE; | |||||
import static com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant.CC_MSG_TEMPLATE; | |||||
/** | /** | ||||
* 抄送事件 事件监听 | * 抄送事件 事件监听 | ||||
@@ -42,8 +42,8 @@ import java.util.List; | |||||
import java.util.Objects; | import java.util.Objects; | ||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
import static com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant.PASS_MSG_TEMPLATE; | |||||
import static com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant.PASS_MSG_TEMPLATE2; | |||||
import static com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant.PASS_MSG_TEMPLATE; | |||||
import static com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant.PASS_MSG_TEMPLATE2; | |||||
/** | /** | ||||
* 工作流开始 结束监听 自动审批的话 会漏掉 调用状态机 | * 工作流开始 结束监听 自动审批的话 会漏掉 调用状态机 | ||||
@@ -50,7 +50,7 @@ import java.util.Map; | |||||
import java.util.Objects; | import java.util.Objects; | ||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
import static com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant.AUDIT_WORK_TITLE; | |||||
import static com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant.AUDIT_WORK_TITLE; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
@@ -12,7 +12,7 @@ import com.ningdatech.pmapi.sys.model.entity.Notify; | |||||
import com.ningdatech.pmapi.sys.model.req.NotifyListReq; | import com.ningdatech.pmapi.sys.model.req.NotifyListReq; | ||||
import com.ningdatech.pmapi.sys.model.vo.NotifyVO; | import com.ningdatech.pmapi.sys.model.vo.NotifyVO; | ||||
import com.ningdatech.pmapi.sys.service.INotifyService; | import com.ningdatech.pmapi.sys.service.INotifyService; | ||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant; | |||||
import com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant; | |||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | import com.ningdatech.pmapi.user.util.LoginUserUtil; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
@@ -56,9 +56,9 @@ public class NotifyManage { | |||||
String extraInfo = n.getExtraInfo(); | String extraInfo = n.getExtraInfo(); | ||||
if (StringUtils.isNotBlank(extraInfo)) { | if (StringUtils.isNotBlank(extraInfo)) { | ||||
JSONObject jsonObject = JSON.parseObject(extraInfo); | JSONObject jsonObject = JSON.parseObject(extraInfo); | ||||
Long projectId = jsonObject.getLong(WorkNoticeContant.PROJECT_ID); | |||||
String instanceId = jsonObject.getString(WorkNoticeContant.INSTANCE_ID); | |||||
Long meetingId = jsonObject.getLong(WorkNoticeContant.MEETING_ID); | |||||
Long projectId = jsonObject.getLong(WorkNoticeConstant.PROJECT_ID); | |||||
String instanceId = jsonObject.getString(WorkNoticeConstant.INSTANCE_ID); | |||||
Long meetingId = jsonObject.getLong(WorkNoticeConstant.MEETING_ID); | |||||
notifyVo.setProjectId(projectId); | notifyVo.setProjectId(projectId); | ||||
notifyVo.setInstanceId(instanceId); | notifyVo.setInstanceId(instanceId); | ||||
notifyVo.setMeetingId(meetingId); | notifyVo.setMeetingId(meetingId); | ||||
@@ -3,9 +3,9 @@ package com.ningdatech.pmapi.todocenter.constant; | |||||
* @author ZPF | * @author ZPF | ||||
* @since 2023/04/02 14:56 | * @since 2023/04/02 14:56 | ||||
*/ | */ | ||||
public interface TodoCenterContant { | |||||
public interface TodoCenterConstant { | |||||
public class Handler { | |||||
class Handler { | |||||
public static final String ACTIVITY_APPROVAL = "userTask"; | public static final String ACTIVITY_APPROVAL = "userTask"; | ||||
@@ -14,9 +14,15 @@ public interface TodoCenterContant { | |||||
public static final String TASKID_ERROR = "TASKID_ERROR"; | public static final String TASKID_ERROR = "TASKID_ERROR"; | ||||
} | } | ||||
public class Declared { | |||||
class Declared { | |||||
public static final String NULL_INST_CODE = "EMPTY"; | public static final String NULL_INST_CODE = "EMPTY"; | ||||
} | } | ||||
class SealTemplate{ | |||||
public static final String CITY_TEMPLATE = "市级-预审申请单"; | |||||
public static final String COUNTRY_TEMPLATE = "区县-预审申请单"; | |||||
public static final String CONSTRUCT_TEMPLATE = "建设方案申请单"; | |||||
} | |||||
} | } |
@@ -4,7 +4,7 @@ package com.ningdatech.pmapi.todocenter.constant; | |||||
* @author CMM | * @author CMM | ||||
* @since 2023/02/01 14:56 | * @since 2023/02/01 14:56 | ||||
*/ | */ | ||||
public interface WorkNoticeContant { | |||||
public interface WorkNoticeConstant { | |||||
public final String PASS_MSG_TEMPLATE = "【%s】的【%s】需要您审核。"; | public final String PASS_MSG_TEMPLATE = "【%s】的【%s】需要您审核。"; | ||||
public final String PASS_MSG_TEMPLATE2 = "【%s】已通过【%s】,请及时开始下一步操作。"; | public final String PASS_MSG_TEMPLATE2 = "【%s】已通过【%s】,请及时开始下一步操作。"; | ||||
public final String BACK_MSG_TEMPLATE = "【%s】的【%s】被退回,请及时处理。"; | public final String BACK_MSG_TEMPLATE = "【%s】的【%s】被退回,请及时处理。"; |
@@ -2,12 +2,11 @@ package com.ningdatech.pmapi.todocenter.handle; | |||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.pmapi.common.helper.UserInfoHelper; | import com.ningdatech.pmapi.common.helper.UserInfoHelper; | ||||
import com.ningdatech.pmapi.projectlib.enumeration.InstTypeEnum; | import com.ningdatech.pmapi.projectlib.enumeration.InstTypeEnum; | ||||
import com.ningdatech.pmapi.projectlib.model.entity.ProjectInst; | import com.ningdatech.pmapi.projectlib.model.entity.ProjectInst; | ||||
import com.ningdatech.pmapi.projectlib.service.IProjectInstService; | import com.ningdatech.pmapi.projectlib.service.IProjectInstService; | ||||
import com.ningdatech.pmapi.todocenter.constant.TodoCenterContant; | |||||
import com.ningdatech.pmapi.todocenter.constant.TodoCenterConstant; | |||||
import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | import com.ningdatech.pmapi.user.security.auth.model.UserFullInfoDTO; | ||||
import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; | import com.ningdatech.pmapi.user.security.auth.model.UserInfoDetails; | ||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | import com.ningdatech.pmapi.user.util.LoginUserUtil; | ||||
@@ -171,7 +170,7 @@ public class WithDrawHandle { | |||||
if(!isAndOr && CollUtil.isNotEmpty(beforeAndOr)) { | if(!isAndOr && CollUtil.isNotEmpty(beforeAndOr)) { | ||||
for (ProgressNode n : beforeAndOr) { | for (ProgressNode n : beforeAndOr) { | ||||
if (n.getUserId().equals(user.getEmployeeCode()) | if (n.getUserId().equals(user.getEmployeeCode()) | ||||
&& !TodoCenterContant.Handler.OR_SIGN_FLAG.equals(n.getWithdrawFlag())) { | |||||
&& !TodoCenterConstant.Handler.OR_SIGN_FLAG.equals(n.getWithdrawFlag())) { | |||||
beforeProgressNode = n; | beforeProgressNode = n; | ||||
//说明当前操作人 在上个会签或者或签节点 | //说明当前操作人 在上个会签或者或签节点 | ||||
isAndOr = Boolean.TRUE; | isAndOr = Boolean.TRUE; | ||||
@@ -329,7 +328,7 @@ public class WithDrawHandle { | |||||
List<HistoricActivityInstance> finished = historyService.createHistoricActivityInstanceQuery() | List<HistoricActivityInstance> finished = historyService.createHistoricActivityInstanceQuery() | ||||
.processInstanceId(instance.getId()).finished() | .processInstanceId(instance.getId()).finished() | ||||
.activityType(TodoCenterContant.Handler.ACTIVITY_APPROVAL) | |||||
.activityType(TodoCenterConstant.Handler.ACTIVITY_APPROVAL) | |||||
.orderByHistoricActivityInstanceEndTime().asc().list(); | .orderByHistoricActivityInstanceEndTime().asc().list(); | ||||
List<HistoricActivityInstance> instances = finished.stream() | List<HistoricActivityInstance> instances = finished.stream() | ||||
.filter(a -> !HisProInsEndActId.WITHDRAW.equals(a.getDeleteReason())) | .filter(a -> !HisProInsEndActId.WITHDRAW.equals(a.getDeleteReason())) | ||||
@@ -1,6 +1,6 @@ | |||||
package com.ningdatech.pmapi.todocenter.manage; | package com.ningdatech.pmapi.todocenter.manage; | ||||
import static com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant.*; | |||||
import static com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant.*; | |||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
import java.time.format.DateTimeFormatter; | import java.time.format.DateTimeFormatter; | ||||
@@ -50,7 +50,7 @@ import com.ningdatech.pmapi.projectlib.service.IProjectService; | |||||
import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | import com.ningdatech.pmapi.staging.enums.MsgTypeEnum; | ||||
import com.ningdatech.pmapi.staging.service.IProjectStagingService; | import com.ningdatech.pmapi.staging.service.IProjectStagingService; | ||||
import com.ningdatech.pmapi.sys.manage.NoticeManage; | import com.ningdatech.pmapi.sys.manage.NoticeManage; | ||||
import com.ningdatech.pmapi.todocenter.constant.TodoCenterContant; | |||||
import com.ningdatech.pmapi.todocenter.constant.TodoCenterConstant; | |||||
import com.ningdatech.pmapi.user.util.LoginUserUtil; | import com.ningdatech.pmapi.user.util.LoginUserUtil; | ||||
import com.wflow.contants.HisProInsEndActId; | import com.wflow.contants.HisProInsEndActId; | ||||
import com.wflow.workflow.bean.process.ProgressNode; | import com.wflow.workflow.bean.process.ProgressNode; | ||||
@@ -430,7 +430,7 @@ public class HandlerManage { | |||||
stateMachineUtils.withDraw(declaredProject); | stateMachineUtils.withDraw(declaredProject); | ||||
declaredProject.setUpdateOn(LocalDateTime.now()); | declaredProject.setUpdateOn(LocalDateTime.now()); | ||||
declaredProject.setUpdateBy(userId); | declaredProject.setUpdateBy(userId); | ||||
declaredProject.setInstCode(TodoCenterContant.Declared.NULL_INST_CODE); | |||||
declaredProject.setInstCode(TodoCenterConstant.Declared.NULL_INST_CODE); | |||||
projectService.updateById(declaredProject); | projectService.updateById(declaredProject); | ||||
} | } | ||||
@@ -14,13 +14,16 @@ import javax.servlet.http.HttpServletResponse; | |||||
import cn.hutool.core.map.MapUtil; | import cn.hutool.core.map.MapUtil; | ||||
import cn.hutool.core.util.ObjectUtil; | import cn.hutool.core.util.ObjectUtil; | ||||
import com.ningdatech.basic.exception.BizException; | import com.ningdatech.basic.exception.BizException; | ||||
import com.ningdatech.pmapi.common.constant.RegionConst; | |||||
import com.ningdatech.pmapi.projectlib.enumeration.*; | import com.ningdatech.pmapi.projectlib.enumeration.*; | ||||
import com.ningdatech.pmapi.todocenter.constant.TodoCenterContant; | |||||
import com.ningdatech.pmapi.sys.model.entity.Region; | |||||
import com.ningdatech.pmapi.sys.service.IRegionService; | |||||
import com.ningdatech.pmapi.todocenter.constant.TodoCenterConstant; | |||||
import com.ningdatech.pmapi.todocenter.handle.PassHandle; | import com.ningdatech.pmapi.todocenter.handle.PassHandle; | ||||
import com.ningdatech.pmapi.todocenter.handle.WithDrawHandle; | import com.ningdatech.pmapi.todocenter.handle.WithDrawHandle; | ||||
import com.ningdatech.pmapi.todocenter.model.dto.*; | |||||
import com.ningdatech.pmapi.todocenter.model.vo.TodoNumVO; | import com.ningdatech.pmapi.todocenter.model.vo.TodoNumVO; | ||||
import com.wflow.contants.HisProInsEndActId; | import com.wflow.contants.HisProInsEndActId; | ||||
import com.wflow.workflow.enums.ProcessStatusEnum; | |||||
import com.wflow.workflow.utils.ProcessTaskUtils; | import com.wflow.workflow.utils.ProcessTaskUtils; | ||||
import org.apache.commons.io.FileUtils; | import org.apache.commons.io.FileUtils; | ||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
@@ -31,7 +34,6 @@ import org.flowable.bpmn.model.FlowElementsContainer; | |||||
import org.flowable.bpmn.model.SubProcess; | import org.flowable.bpmn.model.SubProcess; | ||||
import org.flowable.engine.HistoryService; | import org.flowable.engine.HistoryService; | ||||
import org.flowable.engine.RepositoryService; | import org.flowable.engine.RepositoryService; | ||||
import org.flowable.engine.RuntimeService; | |||||
import org.flowable.engine.TaskService; | import org.flowable.engine.TaskService; | ||||
import org.flowable.engine.history.HistoricProcessInstance; | import org.flowable.engine.history.HistoricProcessInstance; | ||||
import org.flowable.task.api.Task; | import org.flowable.task.api.Task; | ||||
@@ -74,10 +76,6 @@ import com.ningdatech.pmapi.signature.entity.CompanySignature; | |||||
import com.ningdatech.pmapi.signature.service.ICompanySignatureService; | import com.ningdatech.pmapi.signature.service.ICompanySignatureService; | ||||
import com.ningdatech.pmapi.todocenter.enumeration.IsAppendProjectEnum; | import com.ningdatech.pmapi.todocenter.enumeration.IsAppendProjectEnum; | ||||
import com.ningdatech.pmapi.todocenter.enumeration.IsOrNotEnum; | import com.ningdatech.pmapi.todocenter.enumeration.IsOrNotEnum; | ||||
import com.ningdatech.pmapi.todocenter.model.dto.AdjustHandleDTO; | |||||
import com.ningdatech.pmapi.todocenter.model.dto.PdfGenerateDTO; | |||||
import com.ningdatech.pmapi.todocenter.model.dto.SealInfoDTO; | |||||
import com.ningdatech.pmapi.todocenter.model.dto.SignReqDTO; | |||||
import com.ningdatech.pmapi.todocenter.model.po.TodoCenterStatisticsPO; | import com.ningdatech.pmapi.todocenter.model.po.TodoCenterStatisticsPO; | ||||
import com.ningdatech.pmapi.todocenter.model.req.ProcessDetailReq; | import com.ningdatech.pmapi.todocenter.model.req.ProcessDetailReq; | ||||
import com.ningdatech.pmapi.todocenter.model.req.ToBeProcessedExportReq; | import com.ningdatech.pmapi.todocenter.model.req.ToBeProcessedExportReq; | ||||
@@ -131,14 +129,11 @@ public class TodoCenterManage { | |||||
private final FileService fileService; | private final FileService fileService; | ||||
private final ICompanySignatureService companySignatureService; | private final ICompanySignatureService companySignatureService; | ||||
private final StatisticsService statisticsService; | private final StatisticsService statisticsService; | ||||
private final HandlerManage handlerManage; | private final HandlerManage handlerManage; | ||||
private final WithDrawHandle withDrawHandle; | private final WithDrawHandle withDrawHandle; | ||||
private final PassHandle passHandle; | private final PassHandle passHandle; | ||||
private final RepositoryService repositoryService; | private final RepositoryService repositoryService; | ||||
private final IRegionService regionService; | |||||
/** | /** | ||||
* 待办中心待我处理项目列表查询 | * 待办中心待我处理项目列表查询 | ||||
@@ -370,7 +365,7 @@ public class TodoCenterManage { | |||||
//前置判断前端传的taskId是否存在不存在的情况 有可能是 或签被别人审批掉了 | //前置判断前端传的taskId是否存在不存在的情况 有可能是 或签被别人审批掉了 | ||||
Task task = taskService.createTaskQuery().taskId(param.getTaskId()).active().singleResult(); | Task task = taskService.createTaskQuery().taskId(param.getTaskId()).active().singleResult(); | ||||
if (ObjectUtil.isNull(task)) { | if (ObjectUtil.isNull(task)) { | ||||
return TodoCenterContant.Handler.TASKID_ERROR; | |||||
return TodoCenterConstant.Handler.TASKID_ERROR; | |||||
} | } | ||||
String nodeId = task.getTaskDefinitionKey(); | String nodeId = task.getTaskDefinitionKey(); | ||||
// 通过该任务,流程到下一审核人处 | // 通过该任务,流程到下一审核人处 | ||||
@@ -384,7 +379,7 @@ public class TodoCenterManage { | |||||
//前置判断前端传的taskId是否存在不存在的情况 有可能是 或签被别人审批掉了 | //前置判断前端传的taskId是否存在不存在的情况 有可能是 或签被别人审批掉了 | ||||
task = taskService.createTaskQuery().taskId(param.getTaskId()).active().singleResult(); | task = taskService.createTaskQuery().taskId(param.getTaskId()).active().singleResult(); | ||||
if (ObjectUtil.isNull(task)) { | if (ObjectUtil.isNull(task)) { | ||||
return TodoCenterContant.Handler.TASKID_ERROR; | |||||
return TodoCenterConstant.Handler.TASKID_ERROR; | |||||
} | } | ||||
nodeId = task.getTaskDefinitionKey(); | nodeId = task.getTaskDefinitionKey(); | ||||
// 驳回该任务,中止流程并使项目进入对应状态,给项目创建人、流程发起人发送浙政钉工作通知: | // 驳回该任务,中止流程并使项目进入对应状态,给项目创建人、流程发起人发送浙政钉工作通知: | ||||
@@ -398,7 +393,7 @@ public class TodoCenterManage { | |||||
//前置判断前端传的taskId是否存在不存在的情况 有可能是 或签被别人审批掉了 | //前置判断前端传的taskId是否存在不存在的情况 有可能是 或签被别人审批掉了 | ||||
task = taskService.createTaskQuery().taskId(param.getTaskId()).active().singleResult(); | task = taskService.createTaskQuery().taskId(param.getTaskId()).active().singleResult(); | ||||
if (ObjectUtil.isNull(task)) { | if (ObjectUtil.isNull(task)) { | ||||
return TodoCenterContant.Handler.TASKID_ERROR; | |||||
return TodoCenterConstant.Handler.TASKID_ERROR; | |||||
} | } | ||||
nodeId = task.getTaskDefinitionKey(); | nodeId = task.getTaskDefinitionKey(); | ||||
// 退回该任务 | // 退回该任务 | ||||
@@ -427,7 +422,7 @@ public class TodoCenterManage { | |||||
//前置判断前端传的taskId是否存在不存在的情况 有可能是 或签被别人审批掉了 | //前置判断前端传的taskId是否存在不存在的情况 有可能是 或签被别人审批掉了 | ||||
HistoricTaskInstance taskInst = historyService.createHistoricTaskInstanceQuery().taskId(param.getTaskId()).finished().singleResult(); | HistoricTaskInstance taskInst = historyService.createHistoricTaskInstanceQuery().taskId(param.getTaskId()).finished().singleResult(); | ||||
if (ObjectUtil.isNull(taskInst)) { | if (ObjectUtil.isNull(taskInst)) { | ||||
return TodoCenterContant.Handler.TASKID_ERROR; | |||||
return TodoCenterConstant.Handler.TASKID_ERROR; | |||||
} | } | ||||
nodeId = taskInst.getTaskDefinitionKey(); | nodeId = taskInst.getTaskDefinitionKey(); | ||||
@@ -451,25 +446,19 @@ public class TodoCenterManage { | |||||
/** | /** | ||||
* 调用IRS接口,获取盖章后的pdf文件,上传到OSS,并保存文件ID到项目库中 | * 调用IRS接口,获取盖章后的pdf文件,上传到OSS,并保存文件ID到项目库中 | ||||
* | |||||
* @param req | * @param req | ||||
* @param declaredProject | * @param declaredProject | ||||
* @param templateName | |||||
* @param paramsMap | |||||
* @return void | * @return void | ||||
* @author CMM | * @author CMM | ||||
* @since 2023/03/16 21:34 | * @since 2023/03/16 21:34 | ||||
*/ | */ | ||||
private Long getSealedPdf(SealInfoDTO req, Project declaredProject) { | |||||
private Long getSealedPdf(SealInfoDTO req, Project declaredProject, String templateName, JSONObject paramsMap) { | |||||
Long projectId = req.getProjectId(); | Long projectId = req.getProjectId(); | ||||
// 设置pdf模板参数 | |||||
JSONObject paramsMap = assemblyPdfParams(declaredProject); | |||||
// TODO 根据当前盖章单位设置对应的盖章意见与盖章日期 | |||||
paramsMap.put("superOrgOpinion",null); | |||||
paramsMap.put("superOrgAuditDate",null); | |||||
paramsMap.put("higherOrgOpinion",null); | |||||
paramsMap.put("higherOrgAuditDate",null); | |||||
paramsMap.put("bigDataBureauOpinion",null); | |||||
paramsMap.put("bigDataBureauAuditDate",null); | |||||
// 再次获取装配了盖章意见和盖章日期参数的未盖章pdf文件 | // 再次获取装配了盖章意见和盖章日期参数的未盖章pdf文件 | ||||
Long pretrialFileId = generateNotSealedPdf(projectId,paramsMap); | |||||
Long pretrialFileId = generateNotSealedPdf(projectId, templateName, paramsMap); | |||||
// 获取预审申请单文件,并转换为Base64 | // 获取预审申请单文件,并转换为Base64 | ||||
File pdfFile = fileService.getById(pretrialFileId); | File pdfFile = fileService.getById(pretrialFileId); | ||||
InputStream fileInputStream = fileService.getFileInputStream(pdfFile); | InputStream fileInputStream = fileService.getFileInputStream(pdfFile); | ||||
@@ -523,9 +512,17 @@ public class TodoCenterManage { | |||||
// 上传OSS | // 上传OSS | ||||
FileResultVO resultVo = fileService.upload(multipartFile, "default"); | FileResultVO resultVo = fileService.upload(multipartFile, "default"); | ||||
// 将返回的文件ID更新到项目库中对应的项目下 | // 将返回的文件ID更新到项目库中对应的项目下 | ||||
declaredProject.setPretrialFileId(resultVo.getId()); | |||||
declaredProject.setPretrialFileName(resultVo.getOriginalFileName()); | |||||
declaredProject.setUpdateOn(LocalDateTime.now()); | |||||
// 根据模版名称判断是预审申请单还是建设方案申请单 | |||||
if (TodoCenterConstant.SealTemplate.CITY_TEMPLATE.equals(templateName) || | |||||
TodoCenterConstant.SealTemplate.COUNTRY_TEMPLATE.equals(templateName)) { | |||||
declaredProject.setPretrialFileId(resultVo.getId()); | |||||
declaredProject.setPretrialFileName(resultVo.getOriginalFileName()); | |||||
declaredProject.setUpdateOn(LocalDateTime.now()); | |||||
} else if (TodoCenterConstant.SealTemplate.CONSTRUCT_TEMPLATE.equals(templateName)) { | |||||
declaredProject.setConstructFileId(resultVo.getId()); | |||||
declaredProject.setConstructFileName(resultVo.getOriginalFileName()); | |||||
declaredProject.setUpdateOn(LocalDateTime.now()); | |||||
} | |||||
projectService.updateById(declaredProject); | projectService.updateById(declaredProject); | ||||
return resultVo.getId(); | return resultVo.getId(); | ||||
} | } | ||||
@@ -1045,35 +1042,88 @@ public class TodoCenterManage { | |||||
} | } | ||||
/** | /** | ||||
* 获取未盖章的预审申请单pdf文件 | |||||
* 获取未盖章的预审申请单/建设方案申请单pdf文件 | |||||
* @param projectId | * @param projectId | ||||
* @return java.lang.Long | * @return java.lang.Long | ||||
* @author CMM | * @author CMM | ||||
* @since 2023/03/16 22:46 | * @since 2023/03/16 22:46 | ||||
*/ | */ | ||||
public Long getNotSealedPdf(Long projectId) { | public Long getNotSealedPdf(Long projectId) { | ||||
// 判断项目盖章审批类型 | |||||
Project project = projectService.getById(projectId); | Project project = projectService.getById(projectId); | ||||
Long pretrialFileId = project.getPretrialFileId(); | |||||
// 如果项目关联的预审文件ID不为空,说明已经进行过盖章审核,直接返回盖章后的预审申请单文件ID | |||||
if (Objects.nonNull(pretrialFileId)){ | |||||
return pretrialFileId; | |||||
String instanceId = project.getInstCode(); | |||||
ProjectInst projectInst = projectInstService.getOne(Wrappers.lambdaQuery(ProjectInst.class) | |||||
.eq(ProjectInst::getInstCode, instanceId)); | |||||
Integer instType = projectInst.getInstType(); | |||||
// 如果为预审申报审批 | |||||
if (InstTypeEnum.PRELIMINARY_PREVIEW.getCode().equals(instType)) { | |||||
// 再根据项目所属区域判断是市级预审还是区县预审 | |||||
String areaCode = project.getAreaCode(); | |||||
Long pretrialFileId = project.getPretrialFileId(); | |||||
// 如果项目关联的预审文件ID不为空,说明已经进行过盖章审核,直接返回盖章后的预审申请单文件ID | |||||
if (Objects.nonNull(pretrialFileId)){ | |||||
return pretrialFileId; | |||||
} | |||||
Region region = regionService.getOne(Wrappers.lambdaQuery(Region.class) | |||||
.eq(Region::getRegionCode, areaCode)); | |||||
if (Objects.isNull(region)){ | |||||
throw new BizException("项目所属区域不存在!"); | |||||
} | |||||
Integer regionLevel = region.getRegionLevel(); | |||||
switch (regionLevel) { | |||||
// 市级预审 | |||||
case RegionConst.RL_CITY: | |||||
String cityTemplateName = TodoCenterConstant.SealTemplate.CITY_TEMPLATE; | |||||
// 设置pdf模板参数 | |||||
JSONObject cityParamsMap = assemblyPdfParams(project,cityTemplateName); | |||||
// 本级主管单位意见 | |||||
cityParamsMap.put("superOrgOpinion",null); | |||||
cityParamsMap.put("superOrgAuditDate",null); | |||||
return generateNotSealedPdf(projectId,cityTemplateName, cityParamsMap); | |||||
// 区县预审 | |||||
case RegionConst.RL_COUNTY: | |||||
String countryTemplateName = TodoCenterConstant.SealTemplate.COUNTRY_TEMPLATE; | |||||
// 设置pdf模板参数 | |||||
JSONObject countryParamsMap = assemblyPdfParams(project, countryTemplateName); | |||||
// 本级主管单位意见、上级主管单位意见 | |||||
countryParamsMap.put("superOrgOpinion",null); | |||||
countryParamsMap.put("superOrgAuditDate",null); | |||||
countryParamsMap.put("higherOrgOpinion",null); | |||||
countryParamsMap.put("higherOrgAuditDate",null); | |||||
return generateNotSealedPdf(projectId,countryTemplateName, countryParamsMap); | |||||
default: | |||||
throw new IllegalStateException("Unexpected value: " + regionLevel); | |||||
} | |||||
} | |||||
// 如果为建设方案申报审批 | |||||
else if (InstTypeEnum.CONSTRUCTION_PLAN_REVIEW.getCode().equals(instType)){ | |||||
Long constructFileId = project.getConstructFileId(); | |||||
// 如果项目关联的建设方案文件ID不为空,说明已经进行过盖章审核,直接返回盖章后的建设方案申请单文件ID | |||||
if (Objects.nonNull(constructFileId)){ | |||||
return constructFileId; | |||||
} | |||||
// 设置pdf模板参数 | |||||
String constructTemplateName = TodoCenterConstant.SealTemplate.CONSTRUCT_TEMPLATE; | |||||
JSONObject countryParamsMap = assemblyPdfParams(project, constructTemplateName); | |||||
// 本级主管单位意见、上级主管单位意见 | |||||
countryParamsMap.put("bigDataBureauOpinion",null); | |||||
countryParamsMap.put("bigDataBureauAuditDate",null); | |||||
return generateNotSealedPdf(projectId,constructTemplateName, countryParamsMap); | |||||
} | } | ||||
// 设置pdf模板参数 | |||||
JSONObject paramsMap = assemblyPdfParams(project); | |||||
paramsMap.put("superOrgOpinion",null); | |||||
paramsMap.put("superOrgAuditDate",null); | |||||
paramsMap.put("higherOrgOpinion",null); | |||||
paramsMap.put("higherOrgAuditDate",null); | |||||
paramsMap.put("bigDataBureauOpinion",null); | |||||
paramsMap.put("bigDataBureauAuditDate",null); | |||||
return generateNotSealedPdf(projectId, paramsMap); | |||||
return null; | |||||
} | } | ||||
private Long generateNotSealedPdf(Long projectId, JSONObject paramsMap) { | |||||
private Long generateNotSealedPdf(Long projectId, String templateName, JSONObject paramsMap) { | |||||
// 获取本地目录的pdf模板 | // 获取本地目录的pdf模板 | ||||
String fileName = "预审申请单"; | |||||
String fileName; | |||||
if (templateName.contains(StrPool.DASH)){ | |||||
int index = templateName.indexOf(StrPool.DASH); | |||||
fileName = templateName.substring(index + 1); | |||||
}else { | |||||
fileName = templateName; | |||||
} | |||||
InputStream htmlInputStream = | InputStream htmlInputStream = | ||||
this.getClass().getClassLoader().getResourceAsStream("template" + java.io.File.separator + fileName + ".html"); | |||||
this.getClass().getClassLoader().getResourceAsStream("template" + java.io.File.separator + templateName + ".html"); | |||||
// 生成pdf字节数组 | // 生成pdf字节数组 | ||||
byte[] pdf = pdfUtils.generatePdf(htmlInputStream, paramsMap); | byte[] pdf = pdfUtils.generatePdf(htmlInputStream, paramsMap); | ||||
@@ -1110,14 +1160,22 @@ public class TodoCenterManage { | |||||
/** | /** | ||||
* 装配pdf模板参数 | * 装配pdf模板参数 | ||||
* @param project 申报项目ID | |||||
* | |||||
* @param project | |||||
* @param templateName | |||||
* @return com.alibaba.fastjson.JSONObject | * @return com.alibaba.fastjson.JSONObject | ||||
* @author CMM | * @author CMM | ||||
* @since 2023/03/16 22:28 | * @since 2023/03/16 22:28 | ||||
*/ | */ | ||||
private JSONObject assemblyPdfParams(Project project) { | |||||
private JSONObject assemblyPdfParams(Project project, String templateName) { | |||||
// 获取本地目录的pdf模板 | // 获取本地目录的pdf模板 | ||||
String fileName = "预审申请单"; | |||||
String fileName; | |||||
if (templateName.contains(StrPool.DASH)){ | |||||
int index = templateName.indexOf(StrPool.DASH); | |||||
fileName = templateName.substring(index + 1); | |||||
}else { | |||||
fileName = templateName; | |||||
} | |||||
Long projectId = project.getId(); | Long projectId = project.getId(); | ||||
// 获取表单数据 | // 获取表单数据 | ||||
PdfGenerateDTO pdfGenerateDTO = new PdfGenerateDTO(); | PdfGenerateDTO pdfGenerateDTO = new PdfGenerateDTO(); | ||||
@@ -1229,7 +1287,56 @@ public class TodoCenterManage { | |||||
public Long getSealedPdf(SealInfoDTO req) { | public Long getSealedPdf(SealInfoDTO req) { | ||||
Long projectId = req.getProjectId(); | Long projectId = req.getProjectId(); | ||||
Project declaredProject = projectService.getById(projectId); | Project declaredProject = projectService.getById(projectId); | ||||
return getSealedPdf(req, declaredProject); | |||||
String instanceId = declaredProject.getInstCode(); | |||||
ProjectInst projectInst = projectInstService.getOne(Wrappers.lambdaQuery(ProjectInst.class) | |||||
.eq(ProjectInst::getInstCode, instanceId)); | |||||
Integer instType = projectInst.getInstType(); | |||||
// 如果为预审申报审批 | |||||
if (InstTypeEnum.PRELIMINARY_PREVIEW.getCode().equals(instType)) { | |||||
// 再根据项目所属区域判断是市级预审还是区县预审 | |||||
String areaCode = declaredProject.getAreaCode(); | |||||
Region region = regionService.getOne(Wrappers.lambdaQuery(Region.class) | |||||
.eq(Region::getRegionCode, areaCode)); | |||||
if (Objects.isNull(region)){ | |||||
throw new BizException("项目所属区域不存在!"); | |||||
} | |||||
Integer regionLevel = region.getRegionLevel(); | |||||
switch (regionLevel) { | |||||
// 市级预审 | |||||
case RegionConst.RL_CITY: | |||||
String cityTemplateName = TodoCenterConstant.SealTemplate.CITY_TEMPLATE; | |||||
// 设置pdf模板参数 | |||||
JSONObject cityParamsMap = assemblyPdfParams(declaredProject, cityTemplateName); | |||||
// TODO 根据当前盖章单位设置对应的盖章意见与盖章日期 | |||||
cityParamsMap.put("superOrgOpinion",null); | |||||
cityParamsMap.put("superOrgAuditDate",null); | |||||
return getSealedPdf(req, declaredProject,cityTemplateName,cityParamsMap); | |||||
// 区县预审 | |||||
case RegionConst.RL_COUNTY: | |||||
String countryTemplateName = TodoCenterConstant.SealTemplate.COUNTRY_TEMPLATE; | |||||
// 设置pdf模板参数 | |||||
JSONObject countryParamsMap = assemblyPdfParams(declaredProject, countryTemplateName); | |||||
// TODO 根据当前盖章单位设置对应的盖章意见与盖章日期 | |||||
countryParamsMap.put("superOrgOpinion",null); | |||||
countryParamsMap.put("superOrgAuditDate",null); | |||||
countryParamsMap.put("higherOrgOpinion",null); | |||||
countryParamsMap.put("higherOrgAuditDate",null); | |||||
return getSealedPdf(req, declaredProject,countryTemplateName, countryParamsMap); | |||||
default: | |||||
throw new IllegalStateException("Unexpected value: " + regionLevel); | |||||
} | |||||
} | |||||
// 如果为建设方案申报审批 | |||||
else if (InstTypeEnum.CONSTRUCTION_PLAN_REVIEW.getCode().equals(instType)){ | |||||
// 设置pdf模板参数 | |||||
String constructTemplateName = TodoCenterConstant.SealTemplate.CONSTRUCT_TEMPLATE; | |||||
JSONObject constructParamsMap = assemblyPdfParams(declaredProject, constructTemplateName); | |||||
// 本级主管单位意见、上级主管单位意见 | |||||
constructParamsMap.put("bigDataBureauOpinion",null); | |||||
constructParamsMap.put("bigDataBureauAuditDate",null); | |||||
return getSealedPdf(req, declaredProject,constructTemplateName, constructParamsMap); | |||||
} | |||||
return null; | |||||
} | } | ||||
//获取当前登录人的 待办中心统计数据 | //获取当前登录人的 待办中心统计数据 | ||||
@@ -79,9 +79,16 @@ | |||||
.text { | .text { | ||||
min-height: 150px; | min-height: 150px; | ||||
} | } | ||||
.content > .right { | |||||
float: right; | |||||
margin-right: 10px; | |||||
.textDiv{ | |||||
display: flex; | |||||
align-items: center; | |||||
height: 100%; | |||||
position: relative; | |||||
} | |||||
.textDiv > .right { | |||||
position: absolute; | |||||
bottom: 4px; | |||||
right: 4px; | |||||
} | } | ||||
</style> | </style> | ||||
</head> | </head> | ||||
@@ -243,42 +250,26 @@ | |||||
<tr> | <tr> | ||||
<td class="label">本级主管单位意见(盖章)</td> | <td class="label">本级主管单位意见(盖章)</td> | ||||
<td colspan="3" class="text content"> | <td colspan="3" class="text content"> | ||||
<div class="textDiv"> | |||||
<div class="left"> | |||||
<span>#superOrgOpinion#</span> | |||||
</div> | |||||
<div class="right"> | <div class="right"> | ||||
<p> | |||||
<span>#superOrgOpinion#</span> | |||||
</p> | |||||
<p> | |||||
<span>#superOrgAuditDate#</span> | |||||
</p> | |||||
<span>#superOrgAuditDate#</span> | |||||
</div> | |||||
</div> | </div> | ||||
</td> | </td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td class="label">上级主管单位意见(盖章)</td> | <td class="label">上级主管单位意见(盖章)</td> | ||||
<td colspan="3" class="text content"> | <td colspan="3" class="text content"> | ||||
<div class="right"> | |||||
<p> | |||||
<span>#higherOrgOpinion#</span> | |||||
</p> | |||||
<p> | |||||
<span>#higherOrgAuditDate#</span> | |||||
</p> | |||||
<div class="textDiv"> | |||||
<div class="left"> | |||||
<span>#higherOrgOpinion#</span> | |||||
</div> | </div> | ||||
</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label"> | |||||
<span>#bigDataBureauName#</span> | |||||
意见(盖章) | |||||
</td> | |||||
<td colspan="3" class="text content"> | |||||
<div class="right"> | <div class="right"> | ||||
<p> | |||||
<span>#bigDataBureauOpinion#</span> | |||||
</p> | |||||
<p> | |||||
<span>#bigDataBureauAuditDate#</span> | |||||
</p> | |||||
<span>#higherOrgAuditDate#</span> | |||||
</div> | |||||
</div> | </div> | ||||
</td> | </td> | ||||
</tr> | </tr> |
@@ -0,0 +1,268 @@ | |||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||||
<html | |||||
xmlns="http://www.w3.org/1999/xhtml" | |||||
xmlns:font-family="http://www.w3.org/1999/xhtml" | |||||
> | |||||
<head> | |||||
<meta charset="UTF-8" /> | |||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||||
<title>Document</title> | |||||
<style> | |||||
html, | |||||
body { | |||||
padding: 0; | |||||
margin: 0; | |||||
font-family: SimSun; | |||||
} | |||||
.pdf { | |||||
margin: 0 auto; | |||||
padding: 10px 0 30px; | |||||
text-align: center; | |||||
} | |||||
.title { | |||||
padding: 0 0 40px 0; | |||||
font-size: 34px; | |||||
margin: 40px 0 0 0; | |||||
font-family: SimSun; | |||||
word-break: break-all; | |||||
} | |||||
.tit { | |||||
word-break: break-all; | |||||
} | |||||
.tab { | |||||
padding: 0 20px; | |||||
} | |||||
.projectId { | |||||
color: #999999; | |||||
text-align: left; | |||||
margin-bottom: 8px; | |||||
} | |||||
.projectId > .time { | |||||
float: right; | |||||
} | |||||
table { | |||||
width: 100%; | |||||
border-collapse: collapse; | |||||
font-size: 16px; | |||||
table-layout: fixed; | |||||
word-break: break-all; | |||||
word-wrap: break-word; | |||||
text-align: left; | |||||
} | |||||
td { | |||||
padding: 15px 8px; | |||||
border: 1px solid; | |||||
} | |||||
.tabTit { | |||||
background-color: #eee; | |||||
} | |||||
.label { | |||||
width: 150px; | |||||
} | |||||
.sealTd { | |||||
height: 200px; | |||||
position: relative; | |||||
} | |||||
.seal { | |||||
position: absolute; | |||||
right: 20px; | |||||
bottom: 30px; | |||||
width: 150px; | |||||
} | |||||
.seal > .time { | |||||
text-align: right; | |||||
} | |||||
.content { | |||||
height: 150px; | |||||
} | |||||
.text { | |||||
min-height: 150px; | |||||
} | |||||
.textDiv{ | |||||
display: flex; | |||||
align-items: center; | |||||
height: 100%; | |||||
position: relative; | |||||
} | |||||
.textDiv > .right { | |||||
position: absolute; | |||||
bottom: 4px; | |||||
right: 4px; | |||||
} | |||||
</style> | |||||
</head> | |||||
<body> | |||||
<div class="pdf"> | |||||
<p class="title"> | |||||
<span class="tit">#title#</span> | |||||
</p> | |||||
<div class="tab"> | |||||
<p class="projectId"> | |||||
<span> | |||||
项目编号: | |||||
<span>#projectCode#</span> | |||||
</span> | |||||
<span class="time">#time#</span> | |||||
</p> | |||||
<table> | |||||
<tbody> | |||||
<tr> | |||||
<td class="tabTit" colspan="4">项目基本信息</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">项目名称</td> | |||||
<td colspan="3" align="center">#projectName#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">是否临时增补</td> | |||||
<td align="center">#isTemporaryAugment#</td> | |||||
<td class="label">是否一地创新全省共享项目</td> | |||||
<td align="center">#isInnovateWholeProvinceShare#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">项目负责人</td> | |||||
<td align="center">#responsibleMan#</td> | |||||
<td class="label">负责人手机号</td> | |||||
<td align="center">#responsibleManMobile#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">项目联系人</td> | |||||
<td align="center">#contactName#</td> | |||||
<td class="label">项目联系人手机号</td> | |||||
<td align="center">#contactPhone#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">建设单位</td> | |||||
<td align="center">#buildOrgName#</td> | |||||
<td class="label">建设单位统一社会信用代码</td> | |||||
<td align="center">#orgCreditCode#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">项目类型</td> | |||||
<td align="center">#projectType#</td> | |||||
<td class="label">是否首次新建</td> | |||||
<td align="center">#isFirst#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">预算年度</td> | |||||
<td align="center">#projectYear#</td> | |||||
<td class="label">建设起止时间</td> | |||||
<td align="center">#beginAndEndTime#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">四大体系</td> | |||||
<td colspan="3" align="center">#fourSystems#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">是否数字化改革项目</td> | |||||
<td align="center">#isDigitalReform#</td> | |||||
<td class="label">综合业务领域</td> | |||||
<td align="center">#bizDomain#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">立项依据</td> | |||||
<td colspan="3" align="center">#buildBasisList#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">是否上云</td> | |||||
<td align="center">#isCloud#</td> | |||||
<td class="label">云类型</td> | |||||
<td align="center">#cloudType#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">项目简介</td> | |||||
<td colspan="3" align="center">#projectIntroduction#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="tabTit" colspan="4">资金申报情况</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">申报金额</td> | |||||
<td colspan="3" align="center">#declareAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">自有资金</td> | |||||
<td align="center">#declareHaveAmount#</td> | |||||
<td class="label">政府投资-本级财政资金</td> | |||||
<td align="center">#declareGovOwnFinanceAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">政府投资-上级补助资金</td> | |||||
<td align="center">#declareGovSuperiorFinanceAmount#</td> | |||||
<td class="label">银行贷款</td> | |||||
<td align="center">#declareBankLendingAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">其他资金</td> | |||||
<td colspan="3" align="center">#declareOtherAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">本年计划投资(万元)</td> | |||||
<td colspan="3" align="center">#yearPlanInvest#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="tabTit" colspan="4">资金分配情况</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">软件开发</td> | |||||
<td align="center">#softwareDevelopmentAmount#</td> | |||||
<td class="label">云资源、硬件购置</td> | |||||
<td align="center">#cloudHardwarePurchaseAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">第三方服务</td> | |||||
<td colspan="3" align="center">#thirdPartyAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="tabTit" colspan="4">年度支付计划</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">年度支付金额</td> | |||||
<td colspan="3" align="center">#annualPlanAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">自有资金</td> | |||||
<td align="center">#annualPlanHaveAmount#</td> | |||||
<td class="label">政府投资-本级财政资金</td> | |||||
<td align="center">#annualPlanGovOwnFinanceAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">政府投资-上级补助资金</td> | |||||
<td align="center">#annualPlanGovSuperiorFinanceAmount#</td> | |||||
<td class="label">银行贷款</td> | |||||
<td align="center">#annualPlanBankLendingAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">其他资金</td> | |||||
<td colspan="3" align="center">#annualPlanOtherAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="tabTit" colspan="4">备注</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">备注</td> | |||||
<td colspan="3" align="center">#projectRemarks#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="tabTit" colspan="4">单位意见</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">本级主管单位意见(盖章)</td> | |||||
<td colspan="3" class="text content"> | |||||
<div class="textDiv"> | |||||
<div class="left"> | |||||
<span>#superOrgOpinion#</span> | |||||
</div> | |||||
<div class="right"> | |||||
<span>#superOrgAuditDate#</span> | |||||
</div> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
</div> | |||||
</body> | |||||
</html> |
@@ -0,0 +1,268 @@ | |||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |||||
<html | |||||
xmlns="http://www.w3.org/1999/xhtml" | |||||
xmlns:font-family="http://www.w3.org/1999/xhtml" | |||||
> | |||||
<head> | |||||
<meta charset="UTF-8" /> | |||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |||||
<title>Document</title> | |||||
<style> | |||||
html, | |||||
body { | |||||
padding: 0; | |||||
margin: 0; | |||||
font-family: SimSun; | |||||
} | |||||
.pdf { | |||||
margin: 0 auto; | |||||
padding: 10px 0 30px; | |||||
text-align: center; | |||||
} | |||||
.title { | |||||
padding: 0 0 40px 0; | |||||
font-size: 34px; | |||||
margin: 40px 0 0 0; | |||||
font-family: SimSun; | |||||
word-break: break-all; | |||||
} | |||||
.tit { | |||||
word-break: break-all; | |||||
} | |||||
.tab { | |||||
padding: 0 20px; | |||||
} | |||||
.projectId { | |||||
color: #999999; | |||||
text-align: left; | |||||
margin-bottom: 8px; | |||||
} | |||||
.projectId > .time { | |||||
float: right; | |||||
} | |||||
table { | |||||
width: 100%; | |||||
border-collapse: collapse; | |||||
font-size: 16px; | |||||
table-layout: fixed; | |||||
word-break: break-all; | |||||
word-wrap: break-word; | |||||
text-align: left; | |||||
} | |||||
td { | |||||
padding: 15px 8px; | |||||
border: 1px solid; | |||||
} | |||||
.tabTit { | |||||
background-color: #eee; | |||||
} | |||||
.label { | |||||
width: 150px; | |||||
} | |||||
.sealTd { | |||||
height: 200px; | |||||
position: relative; | |||||
} | |||||
.seal { | |||||
position: absolute; | |||||
right: 20px; | |||||
bottom: 30px; | |||||
width: 150px; | |||||
} | |||||
.seal > .time { | |||||
text-align: right; | |||||
} | |||||
.content { | |||||
height: 150px; | |||||
} | |||||
.text { | |||||
min-height: 150px; | |||||
} | |||||
.textDiv{ | |||||
display: flex; | |||||
align-items: center; | |||||
height: 100%; | |||||
position: relative; | |||||
} | |||||
.textDiv > .right { | |||||
position: absolute; | |||||
bottom: 4px; | |||||
right: 4px; | |||||
} | |||||
</style> | |||||
</head> | |||||
<body> | |||||
<div class="pdf"> | |||||
<p class="title"> | |||||
<span class="tit">#title#</span> | |||||
</p> | |||||
<div class="tab"> | |||||
<p class="projectId"> | |||||
<span> | |||||
项目编号: | |||||
<span>#projectCode#</span> | |||||
</span> | |||||
<span class="time">#time#</span> | |||||
</p> | |||||
<table> | |||||
<tbody> | |||||
<tr> | |||||
<td class="tabTit" colspan="4">项目基本信息</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">项目名称</td> | |||||
<td colspan="3" align="center">#projectName#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">是否临时增补</td> | |||||
<td align="center">#isTemporaryAugment#</td> | |||||
<td class="label">是否一地创新全省共享项目</td> | |||||
<td align="center">#isInnovateWholeProvinceShare#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">项目负责人</td> | |||||
<td align="center">#responsibleMan#</td> | |||||
<td class="label">负责人手机号</td> | |||||
<td align="center">#responsibleManMobile#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">项目联系人</td> | |||||
<td align="center">#contactName#</td> | |||||
<td class="label">项目联系人手机号</td> | |||||
<td align="center">#contactPhone#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">建设单位</td> | |||||
<td align="center">#buildOrgName#</td> | |||||
<td class="label">建设单位统一社会信用代码</td> | |||||
<td align="center">#orgCreditCode#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">项目类型</td> | |||||
<td align="center">#projectType#</td> | |||||
<td class="label">是否首次新建</td> | |||||
<td align="center">#isFirst#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">预算年度</td> | |||||
<td align="center">#projectYear#</td> | |||||
<td class="label">建设起止时间</td> | |||||
<td align="center">#beginAndEndTime#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">四大体系</td> | |||||
<td colspan="3" align="center">#fourSystems#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">是否数字化改革项目</td> | |||||
<td align="center">#isDigitalReform#</td> | |||||
<td class="label">综合业务领域</td> | |||||
<td align="center">#bizDomain#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">立项依据</td> | |||||
<td colspan="3" align="center">#buildBasisList#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">是否上云</td> | |||||
<td align="center">#isCloud#</td> | |||||
<td class="label">云类型</td> | |||||
<td align="center">#cloudType#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">项目简介</td> | |||||
<td colspan="3" align="center">#projectIntroduction#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="tabTit" colspan="4">资金申报情况</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">申报金额</td> | |||||
<td colspan="3" align="center">#declareAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">自有资金</td> | |||||
<td align="center">#declareHaveAmount#</td> | |||||
<td class="label">政府投资-本级财政资金</td> | |||||
<td align="center">#declareGovOwnFinanceAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">政府投资-上级补助资金</td> | |||||
<td align="center">#declareGovSuperiorFinanceAmount#</td> | |||||
<td class="label">银行贷款</td> | |||||
<td align="center">#declareBankLendingAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">其他资金</td> | |||||
<td colspan="3" align="center">#declareOtherAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">本年计划投资(万元)</td> | |||||
<td colspan="3" align="center">#yearPlanInvest#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="tabTit" colspan="4">资金分配情况</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">软件开发</td> | |||||
<td align="center">#softwareDevelopmentAmount#</td> | |||||
<td class="label">云资源、硬件购置</td> | |||||
<td align="center">#cloudHardwarePurchaseAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">第三方服务</td> | |||||
<td colspan="3" align="center">#thirdPartyAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="tabTit" colspan="4">年度支付计划</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">年度支付金额</td> | |||||
<td colspan="3" align="center">#annualPlanAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">自有资金</td> | |||||
<td align="center">#annualPlanHaveAmount#</td> | |||||
<td class="label">政府投资-本级财政资金</td> | |||||
<td align="center">#annualPlanGovOwnFinanceAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">政府投资-上级补助资金</td> | |||||
<td align="center">#annualPlanGovSuperiorFinanceAmount#</td> | |||||
<td class="label">银行贷款</td> | |||||
<td align="center">#annualPlanBankLendingAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">其他资金</td> | |||||
<td colspan="3" align="center">#annualPlanOtherAmount#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="tabTit" colspan="4">备注</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">备注</td> | |||||
<td colspan="3" align="center">#projectRemarks#</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="tabTit" colspan="4">单位意见</td> | |||||
</tr> | |||||
<tr> | |||||
<td class="label">大数据局主管单位意见(盖章)</td> | |||||
<td colspan="3" class="text content"> | |||||
<div class="textDiv"> | |||||
<div class="left"> | |||||
<span>#bigDataBureauOpinion#</span> | |||||
</div> | |||||
<div class="right"> | |||||
<span>#bigDataBureauAuditDate#</span> | |||||
</div> | |||||
</div> | |||||
</td> | |||||
</tr> | |||||
</tbody> | |||||
</table> | |||||
</div> | |||||
</div> | |||||
</body> | |||||
</html> |
@@ -1,6 +1,5 @@ | |||||
package com.ningdatech.pmapi.provincial; | package com.ningdatech.pmapi.provincial; | ||||
import cn.hutool.core.collection.CollUtil; | |||||
import cn.hutool.crypto.SecureUtil; | import cn.hutool.crypto.SecureUtil; | ||||
import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
@@ -19,15 +18,11 @@ import com.ningdatech.pmapi.provincial.service.IJoinReviewProvincialBureauServic | |||||
import com.ningdatech.pmapi.staging.contants.StagingContant; | import com.ningdatech.pmapi.staging.contants.StagingContant; | ||||
import com.ningdatech.pmapi.staging.model.entity.ProjectStaging; | import com.ningdatech.pmapi.staging.model.entity.ProjectStaging; | ||||
import com.ningdatech.pmapi.staging.service.IProjectStagingService; | import com.ningdatech.pmapi.staging.service.IProjectStagingService; | ||||
import com.ningdatech.pmapi.todocenter.constant.TodoCenterContant; | |||||
import com.wflow.exception.BusinessException; | import com.wflow.exception.BusinessException; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.apache.commons.codec.binary.Base64; | |||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
import javax.crypto.Mac; | |||||
import javax.crypto.spec.SecretKeySpec; | |||||
import java.io.UnsupportedEncodingException; | import java.io.UnsupportedEncodingException; | ||||
import java.security.InvalidKeyException; | import java.security.InvalidKeyException; | ||||
import java.security.NoSuchAlgorithmException; | import java.security.NoSuchAlgorithmException; | ||||
@@ -15,7 +15,6 @@ import com.ningdatech.pmapi.projectlib.service.IProjectService; | |||||
import com.ningdatech.pmapi.staging.service.INdWorkNoticeStagingService; | import com.ningdatech.pmapi.staging.service.INdWorkNoticeStagingService; | ||||
import com.ningdatech.pmapi.sys.manage.NoticeManage; | import com.ningdatech.pmapi.sys.manage.NoticeManage; | ||||
import com.ningdatech.pmapi.todocenter.bean.entity.WorkNoticeInfo; | import com.ningdatech.pmapi.todocenter.bean.entity.WorkNoticeInfo; | ||||
import com.ningdatech.pmapi.todocenter.manage.HandlerManage; | |||||
import com.ningdatech.pmapi.todocenter.manage.TodoCenterManage; | import com.ningdatech.pmapi.todocenter.manage.TodoCenterManage; | ||||
import com.ningdatech.pmapi.todocenter.model.dto.PdfGenerateDTO; | import com.ningdatech.pmapi.todocenter.model.dto.PdfGenerateDTO; | ||||
import com.ningdatech.pmapi.todocenter.utils.PdfUtils; | import com.ningdatech.pmapi.todocenter.utils.PdfUtils; | ||||
@@ -39,7 +38,7 @@ import java.io.InputStream; | |||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.concurrent.*; | import java.util.concurrent.*; | ||||
import static com.ningdatech.pmapi.todocenter.constant.WorkNoticeContant.PASS_MSG_TEMPLATE; | |||||
import static com.ningdatech.pmapi.todocenter.constant.WorkNoticeConstant.PASS_MSG_TEMPLATE; | |||||
/** | /** | ||||
* 待办中心测试 | * 待办中心测试 | ||||