diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java index a4f9bbb..507000a 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java @@ -9,7 +9,10 @@ import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.util.NdDateUtils; import com.ningdatech.pmapi.common.constant.BizConst; import com.ningdatech.pmapi.common.constant.CommonConst; +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; import com.ningdatech.pmapi.common.statemachine.util.StateMachineUtils; import com.ningdatech.pmapi.common.util.ExcelDownUtil; @@ -68,23 +71,16 @@ import java.util.stream.Collectors; public class ConstructionPlanManage { private final IProjectService projectService; - private final ProcessInstanceService processService; - private final ProcessModelService processModelService; - private final StateMachineUtils stateMachineUtils; - private final IProjectInstService projectInstService; - private final ProjectLibManage projectLibManage; - private final UserInfoHelper userInfoHelper; - private final DefaultDeclaredProjectManage declaredProjectManage; private final DefaultDeclaredProjectManage defaultDeclaredProjectManage; - private final NoticeManage noticeManage; + private final RegionCacheHelper regionCacheHelper; /** * 建设方案 @@ -99,16 +95,37 @@ public class ConstructionPlanManage { VUtils.isTrue(Objects.isNull(user) || Objects.isNull(employeeCode)) .throwMessage("获取登录用户失败!"); - ProjectDTO projectDto = dto.getProjectInfo(); - VUtils.isTrue(Objects.isNull(projectDto.getId())).throwMessage("提交失败 缺少项目ID!"); - Project projectInfo = projectService.getNewProject(projectDto.getId()); - VUtils.isTrue(Objects.isNull(projectInfo)).throwMessage("提交失败 此项目不存在!"); - VUtils.isTrue(StringUtils.isBlank(projectDto.getConstructionPlanFile())).throwMessage("提交失败 请提交建设方案!"); + ProjectDTO projectInfo = dto.getProjectInfo(); + + if(StringUtils.isNotBlank(user.getRegionCode())){ + projectInfo.setAreaCode(user.getRegionCode()); + projectInfo.setArea(regionCacheHelper.getRegionName(user.getRegionCode(), RegionConst.RL_COUNTY)); + } + + projectInfo.setBuildOrgCode(user.getEmpPosUnitCode()); + projectInfo.setBuildOrgName(user.getEmpPosUnitName()); + + // 项目名称去重 + defaultDeclaredProjectManage.checkDuplication(projectInfo); + //判断申报金额 是否等于总的 判断年度支付金额 是否等于总金额 + defaultDeclaredProjectManage.checkAmount(projectInfo); - String regionCode = projectInfo.getAreaCode(); + //如果主管单位没有 那么主管单位就是自己 + if(CommonEnum.NO.getCode().equals(projectInfo.getIsSuperOrg())){ + projectInfo.setSuperOrgCode(user.getEmpPosUnitCode()); + projectInfo.setSuperOrg(user.getEmpPosUnitName()); + } + + //如果是重新提交的话 判断下 项目是否存在 + if(Objects.nonNull(projectInfo.getId())){ + //新申报的项目不允许带项目id + projectInfo.setId(null); + } - //放入文件 - projectInfo.setConstructionPlanFile(projectDto.getConstructionPlanFile()); + Project constructProject = new Project(); + BeanUtils.copyProperties(projectInfo,constructProject); + + String regionCode = user.getRegionCode(); WflowModels model = processModelService.getOne(Wrappers.lambdaQuery(WflowModels.class) .eq(WflowModels::getRegionCode, regionCode) @@ -123,16 +140,16 @@ public class ConstructionPlanManage { //如果被禁用了的话 直接跳过 进入到下一个状态 if(model.getIsStop()){ //被禁用了 调2次状态机 - stateMachineUtils.pass(projectInfo); - stateMachineUtils.pass(projectInfo); - projectInfo.setUpdateOn(LocalDateTime.now()); - projectService.updateById(projectInfo); + stateMachineUtils.pass(constructProject); + stateMachineUtils.pass(constructProject); + constructProject.setUpdateOn(LocalDateTime.now()); + projectService.updateById(constructProject); return "因为建设方案流程被禁用了 直接跳过!"; } - //首先要判断 项目当前状态 是不是 方案待申报 - VUtils.isTrue(!ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode().equals(projectInfo.getStatus()) || - !ProjectStatusEnum.NOT_APPROVED.getCode().equals(projectInfo.getStage())) + // 判断 项目当前状态 是不是 方案待申报 + VUtils.isTrue(!ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode().equals(constructProject.getStatus()) || + !ProjectStatusEnum.NOT_APPROVED.getCode().equals(constructProject.getStage())) .throwMessage("提交失败 该项目不是 方案待申报状态或者未立项阶段"); ProcessStartParamsVo params = new ProcessStartParamsVo(); @@ -142,20 +159,15 @@ public class ConstructionPlanManage { //把条件值给放入工作流 defaultDeclaredProjectManage.buildCondition(params, dto); // 获取发起单位、发起单位主管单位、发起单位上级条线主管单位信息 - Map orgModelMap = defaultDeclaredProjectManage.buildOrgModelMap(employeeCode, projectInfo); + Map orgModelMap = defaultDeclaredProjectManage.buildOrgModelMap(employeeCode, constructProject); String instanceId = processService.newStartProcess(model.getProcessDefId(), model.getFormId(), params, orgModelMap); log.info("建设方案项目申报成功 【{}】", instanceId); - //保存建设项目 - if(dto.getRestart()){ - modifyProject(projectInfo, instanceId, projectInfo.getConstructionPlanFile()); - }else{ - //生成新版本 并且进入下一状态 - projectInfo = projectLibManage.saveProjectWithVersionAndPass(projectInfo,instanceId,InstTypeEnum.CONSTRUCTION_PLAN_REVIEW.getCode()); - } + // 保存建设项目相关 + Project buildProject = projectLibManage.saveConstructProjectInDeclared(projectInfo,instanceId,employeeCode); //发送给第一个审批人消息 - noticeManage.sendFirtUser(projectInfo,model.getFormName(),instanceId, + noticeManage.sendFirtUser(buildProject,model.getFormName(),instanceId, WorkNoticeConstant.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); return instanceId; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java index 27b4b88..6fc6f63 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java @@ -201,6 +201,28 @@ public class ProjectLibManage { return project; } + + /** + * 建设方案申报项目时 保存项目信息和其它相关联的信息 + * @param projectDto + * @param instanceId + * @param employeeCode + * @return + */ + public Project saveConstructProjectInDeclared(ProjectDTO projectDto, String instanceId, + String employeeCode) { + Project project = saveConstructProjectNewVersion(projectDto,instanceId,employeeCode); + //保存项目和实例的关系 + ProjectInst projectInst = new ProjectInst(); + projectInst.setProjectId(project.getId()); + projectInst.setInstCode(instanceId); + projectInst.setCreatOn(LocalDateTime.now()); + projectInst.setUpdateOn(LocalDateTime.now()); + projectInst.setInstType(ProjectProcessStageEnum.CONSTRUCTION_PROJECT_APPROVAL_PROCESS.getCode()); + projectInstService.save(projectInst); + return project; + } + /** * 申报新项目时 保存项目信息和其它相关联的信息 * @param projectDto @@ -265,6 +287,72 @@ public class ProjectLibManage { } /** + * 建设方案申报项目时 保存项目信息和其它相关联的信息 + * @param projectDto + * @param instanceId + * @param employeeCode + * @return + */ + public Project saveConstructProjectNewVersion(ProjectDTO projectDto, String instanceId, + String employeeCode) { + //流程启动之后 入库项目 重要业务信息 用于列表查询 展示 + try { + Project project = new Project(); + //为空 代表是新申报的 + if(Objects.isNull(projectDto.getId())){ + BeanUtils.copyProperties(projectDto, project); + project.setCreateOn(LocalDateTime.now()); + project.setUpdateOn(LocalDateTime.now()); + project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); + project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); + project.setInstCode(instanceId); + project.setSponsor(employeeCode); + String projectCode = generateProjectCodeUtil.generateProjectCode(projectDto); + project.setProjectCode(projectCode); + // 标记为建设方案申报 + project.setIsConstruct(Boolean.TRUE); + projectService.save(project); + }else{ + //否则是重新提交的 新生成一个新版本的项目 + project = newProjectWithVersion(projectDto); + if(Objects.nonNull(project)){ + project.setInstCode(instanceId); + project.setSponsor(employeeCode); + projectService.updateById(project); + } + } + + //保存项目应用 + Boolean isApp = Objects.nonNull(projectDto.getIncludeApplication()) && CommonEnum.YES.getCode().equals(projectDto.getIncludeApplication()) + ? Boolean.TRUE : Boolean.FALSE; + //采取批量删除 批量添加的方式 + projectApplicationService.remove(Wrappers.lambdaQuery(ProjectApplication.class) + .eq(ProjectApplication::getProjectId,project.getId())); + projectApplicationService.remove(Wrappers.lambdaQuery(ProjectApplication.class) + .eq(ProjectApplication::getProjectCode,project.getProjectCode())); + if (isApp && CollUtil.isNotEmpty(projectDto.getApplicationList())) { + Project finalProject = project; + List applications = projectDto.getApplicationList().stream().map(application -> { + ProjectApplication projectApplication = new ProjectApplication(); + BeanUtils.copyProperties(application, projectApplication); + projectApplication.setId(null); + projectApplication.setProjectId(finalProject.getId()); + projectApplication.setProjectCode(finalProject.getProjectCode()); + projectApplication.setBuildOrgCode(finalProject.getBuildOrgCode()); + projectApplication.setBuildOrgName(finalProject.getBuildOrgName()); + return projectApplication; + }).collect(Collectors.toList()); + projectApplicationService.saveOrUpdateBatch(applications); + } + return project; + } catch (Exception e) { + log.error("项目信息入库错误 " + e); + throw new BusinessException("项目信息入库错误 :" + e); + } + } + + + /** * 在其它项目阶段 保存项目信息和其它相关联的信息 * @param projectDto * @return @@ -501,6 +589,40 @@ public class ProjectLibManage { return project; } + public Project saveConstructProjectWithVersionAndPass(Project oldProject,String instanceId,Integer instType){ + Project project = new Project(); + VUtils.isTrue(Objects.isNull(oldProject)) + .throwMessage("项目不存在!"); + BeanUtil.copyProperties(oldProject,project, CopyOptions.create() + .setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE)); + project.setVersion(oldProject.getVersion() + 1); + project.setId(null); + project.setInstCode(instanceId); + project.setCreateOn(LocalDateTime.now()); + project.setUpdateOn(LocalDateTime.now()); + // 标识保存的项目信息是否为建设方案申报项目 + project.setIsConstruct(Boolean.TRUE); + stateMachineUtils.pass(project); + + if(projectService.save(project)){ + //保存项目和实例的关系 + ProjectInst projectInst = new ProjectInst(); + projectInst.setProjectId(project.getId()); + projectInst.setInstCode(instanceId); + projectInst.setCreatOn(LocalDateTime.now()); + projectInst.setUpdateOn(LocalDateTime.now()); + projectInst.setInstType(instType); + projectInstService.save(projectInst); + + projectService.update(Wrappers.lambdaUpdate(Project.class) + .set(Project::getNewest,Boolean.FALSE) + .ne(Project::getId,project.getId()) + .eq(Project::getProjectCode,project.getProjectCode())); + } + + return project; + } + /** * @param projectId 项目详情 * @return com.ningdatech.pmapi.projectlib.model.entity.vo.ProjectDetailVO diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java index 66456da..4a22769 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java @@ -15,6 +15,7 @@ import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import com.ningdatech.basic.exception.BizException; import com.ningdatech.pmapi.common.constant.RegionConst; +import com.ningdatech.pmapi.common.enumeration.CommonEnum; import com.ningdatech.pmapi.projectlib.enumeration.*; import com.ningdatech.pmapi.sys.model.entity.Region; import com.ningdatech.pmapi.sys.service.IRegionService; @@ -24,6 +25,7 @@ import com.ningdatech.pmapi.todocenter.handle.WithDrawHandle; import com.ningdatech.pmapi.todocenter.model.dto.*; import com.ningdatech.pmapi.todocenter.model.vo.TodoNumVO; import com.wflow.contants.HisProInsEndActId; +import com.wflow.workflow.bean.process.ProcessComment; import com.wflow.workflow.utils.ProcessTaskUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; @@ -36,6 +38,7 @@ import org.flowable.engine.HistoryService; import org.flowable.engine.RepositoryService; import org.flowable.engine.TaskService; import org.flowable.engine.history.HistoricProcessInstance; +import org.flowable.engine.task.Comment; import org.flowable.task.api.Task; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.variable.api.history.HistoricVariableInstance; @@ -1285,8 +1288,14 @@ public class TodoCenterManage { } public Long getSealedPdf(SealInfoDTO req) { + UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); + String empPosUnitCode = user.getEmpPosUnitCode(); Long projectId = req.getProjectId(); + // 盖章审核意见 + String auditOpinion = req.getAuditOpinion(); + String auditDate = NdDateUtils.format(LocalDateTime.now(), NdDateUtils.DEFAULT_DATE_TIME_FORMAT); Project declaredProject = projectService.getById(projectId); + String buildOrgCode = declaredProject.getBuildOrgCode(); String instanceId = declaredProject.getInstCode(); ProjectInst projectInst = projectInstService.getOne(Wrappers.lambdaQuery(ProjectInst.class) .eq(ProjectInst::getInstCode, instanceId)); @@ -1301,26 +1310,60 @@ public class TodoCenterManage { throw new BizException("项目所属区域不存在!"); } Integer regionLevel = region.getRegionLevel(); + // 获取项目申报时是否选择了主管单位和上级条线主管单位 + // 主管单位信息 + Integer isSuperOrg = declaredProject.getIsSuperOrg(); + String superOrgCode = declaredProject.getSuperOrgCode(); + // 上级条线主管单位信息 + Integer isHigherSuperOrg = declaredProject.getIsHigherSuperOrg(); + String higherSuperOrgCode = declaredProject.getHigherSuperOrgCode(); 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); + // 盖章审核为主管单位审核 + if (CommonEnum.YES.getCode().equals(isSuperOrg)){ + // 有主管单位信息且登录用户所在单位是主管单位 + if (superOrgCode.equals(empPosUnitCode)){ + cityParamsMap.put("superOrgOpinion",auditOpinion); + cityParamsMap.put("superOrgAuditDate",auditDate); + } + } else if (CommonEnum.NO.getCode().equals(isSuperOrg)) { + // 没有选主管单位,默认为项目建设单位且登录用户所在单位为项目建设单位 + if (buildOrgCode.equals(empPosUnitCode)) { + cityParamsMap.put("superOrgOpinion", auditOpinion); + cityParamsMap.put("superOrgAuditDate", auditDate); + } + } 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); + + // 判断当前盖章用户所在单位是本级主管单位还是上级主管单位 + if (CommonEnum.YES.getCode().equals(isSuperOrg)){ + // 有主管单位信息且登录用户所在单位是主管单位 + if (superOrgCode.equals(empPosUnitCode)){ + countryParamsMap.put("superOrgOpinion",auditOpinion); + countryParamsMap.put("superOrgAuditDate",auditDate); + } + } else if (CommonEnum.NO.getCode().equals(isSuperOrg)) { + // 没有选主管单位,默认为项目建设单位且登录用户所在单位为项目建设单位 + if (buildOrgCode.equals(empPosUnitCode)) { + countryParamsMap.put("superOrgOpinion", auditOpinion); + countryParamsMap.put("superOrgAuditDate", auditDate); + } + } else if (CommonEnum.YES.getCode().equals(isHigherSuperOrg)) { + // 有上级条线主管单位信息且登录用户所在单位是上级条线主管单位 + if (higherSuperOrgCode.equals(empPosUnitCode)){ + countryParamsMap.put("higherOrgOpinion",auditOpinion); + countryParamsMap.put("higherOrgAuditDate",auditDate); + } + } return getSealedPdf(req, declaredProject,countryTemplateName, countryParamsMap); default: throw new IllegalStateException("Unexpected value: " + regionLevel); @@ -1331,9 +1374,10 @@ public class TodoCenterManage { // 设置pdf模板参数 String constructTemplateName = TodoCenterConstant.SealTemplate.CONSTRUCT_TEMPLATE; JSONObject constructParamsMap = assemblyPdfParams(declaredProject, constructTemplateName); - // 本级主管单位意见、上级主管单位意见 - constructParamsMap.put("bigDataBureauOpinion",null); - constructParamsMap.put("bigDataBureauAuditDate",null); + // 审核为指定大数据局盖章 + // 获取流程配置的指定单位信息 + constructParamsMap.put("bigDataBureauOpinion",auditOpinion); + constructParamsMap.put("bigDataBureauAuditDate",auditDate); return getSealedPdf(req, declaredProject,constructTemplateName, constructParamsMap); } return null; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/SealInfoDTO.java b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/SealInfoDTO.java index 0cde7b7..185cc7d 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/SealInfoDTO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/SealInfoDTO.java @@ -34,4 +34,8 @@ public class SealInfoDTO { */ private Integer signType; + /** + * 盖章审核意见 + */ + private String auditOpinion; } diff --git a/pmapi/src/main/resources/template/区县-预审申请单.html b/pmapi/src/main/resources/template/区县-预审申请单.html index a28aafa..b1a07b7 100644 --- a/pmapi/src/main/resources/template/区县-预审申请单.html +++ b/pmapi/src/main/resources/template/区县-预审申请单.html @@ -9,7 +9,7 @@ Document @@ -110,61 +120,61 @@ 项目基本信息 - + 项目名称 #projectName# - + 是否临时增补 #isTemporaryAugment# 是否一地创新全省共享项目 #isInnovateWholeProvinceShare# - + 项目负责人 #responsibleMan# 负责人手机号 #responsibleManMobile# - + 项目联系人 #contactName# 项目联系人手机号 #contactPhone# - + 建设单位 #buildOrgName# 建设单位统一社会信用代码 #orgCreditCode# - + 项目类型 #projectType# 是否首次新建 #isFirst# - + 预算年度 #projectYear# 建设起止时间 #beginAndEndTime# - + 四大体系 #fourSystems# - + 是否数字化改革项目 #isDigitalReform# 综合业务领域 #bizDomain# - + 立项依据 #buildBasisList# - + 是否上云 #isCloud# 云类型 @@ -172,68 +182,70 @@ 项目简介 - #projectIntroduction# + +

#projectIntroduction#

+ 资金申报情况 - + 申报金额 #declareAmount# - + 自有资金 #declareHaveAmount# 政府投资-本级财政资金 #declareGovOwnFinanceAmount# - + 政府投资-上级补助资金 #declareGovSuperiorFinanceAmount# 银行贷款 #declareBankLendingAmount# - + 其他资金 #declareOtherAmount# - + 本年计划投资(万元) #yearPlanInvest# 资金分配情况 - + 软件开发 #softwareDevelopmentAmount# 云资源、硬件购置 #cloudHardwarePurchaseAmount# - + 第三方服务 #thirdPartyAmount# 年度支付计划 - + 年度支付金额 #annualPlanAmount# - + 自有资金 #annualPlanHaveAmount# 政府投资-本级财政资金 #annualPlanGovOwnFinanceAmount# - + 政府投资-上级补助资金 #annualPlanGovSuperiorFinanceAmount# 银行贷款 #annualPlanBankLendingAmount# - + 其他资金 #annualPlanOtherAmount# @@ -242,7 +254,7 @@ 备注 - #projectRemarks# +

#projectRemarks#

单位意见 diff --git a/pmapi/src/main/resources/template/市级-预审申请单.html b/pmapi/src/main/resources/template/市级-预审申请单.html index 38b34d5..39548e9 100644 --- a/pmapi/src/main/resources/template/市级-预审申请单.html +++ b/pmapi/src/main/resources/template/市级-预审申请单.html @@ -20,11 +20,12 @@ text-align: center; } .title { - padding: 0 0 40px 0; + padding: 0 0 20px 0; font-size: 34px; - margin: 40px 0 0 0; + margin: 0; font-family: SimSun; word-break: break-all; + height: 80px; } .tit { word-break: break-all; @@ -74,10 +75,7 @@ text-align: right; } .content { - height: 150px; - } - .text { - min-height: 150px; + height: 210px; } .textDiv{ display: flex; @@ -90,6 +88,18 @@ bottom: 4px; right: 4px; } + .h-80{ + height: 80px; + } + .h-100{ + height: 100px; + } + .h-800{ + height: 800px; + } + .h-1460{ + height: 1460px; + } @@ -110,130 +120,132 @@ 项目基本信息 - + 项目名称 #projectName# - + 是否临时增补 #isTemporaryAugment# 是否一地创新全省共享项目 #isInnovateWholeProvinceShare# - + 项目负责人 #responsibleMan# 负责人手机号 #responsibleManMobile# - + 项目联系人 #contactName# 项目联系人手机号 #contactPhone# - + 建设单位 #buildOrgName# 建设单位统一社会信用代码 #orgCreditCode# - + 项目类型 #projectType# 是否首次新建 #isFirst# - + 预算年度 #projectYear# 建设起止时间 #beginAndEndTime# - + 四大体系 #fourSystems# - + 是否数字化改革项目 #isDigitalReform# 综合业务领域 #bizDomain# - + 立项依据 #buildBasisList# - + 是否上云 #isCloud# 云类型 #cloudType# - - 项目简介 - #projectIntroduction# - + + 项目简介 + +

#projectIntroduction#

+ + 资金申报情况 - + 申报金额 #declareAmount# - + 自有资金 #declareHaveAmount# 政府投资-本级财政资金 #declareGovOwnFinanceAmount# - + 政府投资-上级补助资金 #declareGovSuperiorFinanceAmount# 银行贷款 #declareBankLendingAmount# - + 其他资金 #declareOtherAmount# - + 本年计划投资(万元) #yearPlanInvest# 资金分配情况 - + 软件开发 #softwareDevelopmentAmount# 云资源、硬件购置 #cloudHardwarePurchaseAmount# - + 第三方服务 #thirdPartyAmount# 年度支付计划 - + 年度支付金额 #annualPlanAmount# - + 自有资金 #annualPlanHaveAmount# 政府投资-本级财政资金 #annualPlanGovOwnFinanceAmount# - + 政府投资-上级补助资金 #annualPlanGovSuperiorFinanceAmount# 银行贷款 #annualPlanBankLendingAmount# - + 其他资金 #annualPlanOtherAmount# @@ -242,7 +254,7 @@ 备注 - #projectRemarks# +

#projectRemarks#

单位意见 @@ -251,12 +263,12 @@ 本级主管单位意见(盖章)
-
- #superOrgOpinion# -
-
- #superOrgAuditDate# -
+
+ #superOrgOpinion# +
+
+ #superOrgAuditDate# +
diff --git a/pmapi/src/main/resources/template/建设方案申请单.html b/pmapi/src/main/resources/template/建设方案申请单.html index 067476f..e5f5985 100644 --- a/pmapi/src/main/resources/template/建设方案申请单.html +++ b/pmapi/src/main/resources/template/建设方案申请单.html @@ -9,7 +9,7 @@ Document @@ -107,146 +117,148 @@

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
项目基本信息
项目名称#projectName#
是否临时增补#isTemporaryAugment#是否一地创新全省共享项目#isInnovateWholeProvinceShare#
项目负责人#responsibleMan#负责人手机号#responsibleManMobile#
项目联系人#contactName#项目联系人手机号#contactPhone#
建设单位#buildOrgName#建设单位统一社会信用代码#orgCreditCode#
项目类型#projectType#是否首次新建#isFirst#
预算年度#projectYear#建设起止时间#beginAndEndTime#
四大体系#fourSystems#
是否数字化改革项目#isDigitalReform#综合业务领域#bizDomain#
立项依据#buildBasisList#
是否上云#isCloud#云类型#cloudType#
项目简介#projectIntroduction#
资金申报情况
申报金额#declareAmount#
自有资金#declareHaveAmount#政府投资-本级财政资金#declareGovOwnFinanceAmount#
政府投资-上级补助资金#declareGovSuperiorFinanceAmount#银行贷款#declareBankLendingAmount#
其他资金#declareOtherAmount#
本年计划投资(万元)#yearPlanInvest#
资金分配情况
软件开发#softwareDevelopmentAmount#云资源、硬件购置#cloudHardwarePurchaseAmount#
第三方服务#thirdPartyAmount#
年度支付计划
年度支付金额#annualPlanAmount#
自有资金#annualPlanHaveAmount#政府投资-本级财政资金#annualPlanGovOwnFinanceAmount#
政府投资-上级补助资金#annualPlanGovSuperiorFinanceAmount#银行贷款#annualPlanBankLendingAmount#
其他资金#annualPlanOtherAmount#
备注
备注#projectRemarks#
单位意见
项目基本信息
项目名称#projectName#
是否临时增补#isTemporaryAugment#是否一地创新全省共享项目#isInnovateWholeProvinceShare#
项目负责人#responsibleMan#负责人手机号#responsibleManMobile#
项目联系人#contactName#项目联系人手机号#contactPhone#
建设单位#buildOrgName#建设单位统一社会信用代码#orgCreditCode#
项目类型#projectType#是否首次新建#isFirst#
预算年度#projectYear#建设起止时间#beginAndEndTime#
四大体系#fourSystems#
是否数字化改革项目#isDigitalReform#综合业务领域#bizDomain#
立项依据#buildBasisList#
是否上云#isCloud#云类型#cloudType#
项目简介 +

#projectIntroduction#

+
资金申报情况
申报金额#declareAmount#
自有资金#declareHaveAmount#政府投资-本级财政资金#declareGovOwnFinanceAmount#
政府投资-上级补助资金#declareGovSuperiorFinanceAmount#银行贷款#declareBankLendingAmount#
其他资金#declareOtherAmount#
本年计划投资(万元)#yearPlanInvest#
资金分配情况
软件开发#softwareDevelopmentAmount#云资源、硬件购置#cloudHardwarePurchaseAmount#
第三方服务#thirdPartyAmount#
年度支付计划
年度支付金额#annualPlanAmount#
自有资金#annualPlanHaveAmount#政府投资-本级财政资金#annualPlanGovOwnFinanceAmount#
政府投资-上级补助资金#annualPlanGovSuperiorFinanceAmount#银行贷款#annualPlanBankLendingAmount#
其他资金#annualPlanOtherAmount#
备注
备注

#projectRemarks#

单位意见
大数据局主管单位意见(盖章)