Browse Source

Merge remote-tracking branch 'origin/master'

tags/24080901
PoffyZhang 1 year ago
parent
commit
0fdbc8e697
7 changed files with 478 additions and 260 deletions
  1. +44
    -32
      pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java
  2. +122
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java
  3. +55
    -11
      pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java
  4. +4
    -0
      pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/SealInfoDTO.java
  5. +43
    -31
      pmapi/src/main/resources/template/区县-预审申请单.html
  6. +51
    -39
      pmapi/src/main/resources/template/市级-预审申请单.html
  7. +159
    -147
      pmapi/src/main/resources/template/建设方案申请单.html

+ 44
- 32
pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java View File

@@ -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<String, OrgInfoDTO> orgModelMap = defaultDeclaredProjectManage.buildOrgModelMap(employeeCode, projectInfo);
Map<String, OrgInfoDTO> 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;


+ 122
- 0
pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectLibManage.java View File

@@ -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<ProjectApplication> 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


+ 55
- 11
pmapi/src/main/java/com/ningdatech/pmapi/todocenter/manage/TodoCenterManage.java View File

@@ -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;


+ 4
- 0
pmapi/src/main/java/com/ningdatech/pmapi/todocenter/model/dto/SealInfoDTO.java View File

@@ -34,4 +34,8 @@ public class SealInfoDTO {
*/
private Integer signType;

/**
* 盖章审核意见
*/
private String auditOpinion;
}

+ 43
- 31
pmapi/src/main/resources/template/区县-预审申请单.html View File

@@ -9,7 +9,7 @@
<title>Document</title>
<style>
html,
body {
body,p {
padding: 0;
margin: 0;
font-family: SimSun;
@@ -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;
}
</style>
</head>
<body>
@@ -110,61 +120,61 @@
<tr>
<td class="tabTit" colspan="4">项目基本信息</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">项目名称</td>
<td colspan="3" align="center">#projectName#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">是否临时增补</td>
<td align="center">#isTemporaryAugment#</td>
<td class="label">是否一地创新全省共享项目</td>
<td align="center">#isInnovateWholeProvinceShare#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">项目负责人</td>
<td align="center">#responsibleMan#</td>
<td class="label">负责人手机号</td>
<td align="center">#responsibleManMobile#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">项目联系人</td>
<td align="center">#contactName#</td>
<td class="label">项目联系人手机号</td>
<td align="center">#contactPhone#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">建设单位</td>
<td align="center">#buildOrgName#</td>
<td class="label">建设单位统一社会信用代码</td>
<td align="center">#orgCreditCode#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">项目类型</td>
<td align="center">#projectType#</td>
<td class="label">是否首次新建</td>
<td align="center">#isFirst#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">预算年度</td>
<td align="center">#projectYear#</td>
<td class="label">建设起止时间</td>
<td align="center">#beginAndEndTime#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">四大体系</td>
<td colspan="3" align="center">#fourSystems#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">是否数字化改革项目</td>
<td align="center">#isDigitalReform#</td>
<td class="label">综合业务领域</td>
<td align="center">#bizDomain#</td>
</tr>
<tr>
<tr class="h-800">
<td class="label">立项依据</td>
<td colspan="3" align="center">#buildBasisList#</td>
</tr>
<tr>
<tr class="h-100">
<td class="label">是否上云</td>
<td align="center">#isCloud#</td>
<td class="label">云类型</td>
@@ -172,68 +182,70 @@
</tr>
<tr>
<td class="label">项目简介</td>
<td colspan="3" align="center">#projectIntroduction#</td>
<td colspan="3" align="center">
<p class="h-1460">#projectIntroduction#</p>
</td>
</tr>
<tr>
<td class="tabTit" colspan="4">资金申报情况</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">申报金额</td>
<td colspan="3" align="center">#declareAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">自有资金</td>
<td align="center">#declareHaveAmount#</td>
<td class="label">政府投资-本级财政资金</td>
<td align="center">#declareGovOwnFinanceAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">政府投资-上级补助资金</td>
<td align="center">#declareGovSuperiorFinanceAmount#</td>
<td class="label">银行贷款</td>
<td align="center">#declareBankLendingAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">其他资金</td>
<td colspan="3" align="center">#declareOtherAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">本年计划投资(万元)</td>
<td colspan="3" align="center">#yearPlanInvest#</td>
</tr>
<tr>
<td class="tabTit" colspan="4">资金分配情况</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">软件开发</td>
<td align="center">#softwareDevelopmentAmount#</td>
<td class="label">云资源、硬件购置</td>
<td align="center">#cloudHardwarePurchaseAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">第三方服务</td>
<td colspan="3" align="center">#thirdPartyAmount#</td>
</tr>
<tr>
<td class="tabTit" colspan="4">年度支付计划</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">年度支付金额</td>
<td colspan="3" align="center">#annualPlanAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">自有资金</td>
<td align="center">#annualPlanHaveAmount#</td>
<td class="label">政府投资-本级财政资金</td>
<td align="center">#annualPlanGovOwnFinanceAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">政府投资-上级补助资金</td>
<td align="center">#annualPlanGovSuperiorFinanceAmount#</td>
<td class="label">银行贷款</td>
<td align="center">#annualPlanBankLendingAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">其他资金</td>
<td colspan="3" align="center">#annualPlanOtherAmount#</td>
</tr>
@@ -242,7 +254,7 @@
</tr>
<tr>
<td class="label">备注</td>
<td colspan="3" align="center">#projectRemarks#</td>
<td colspan="3" align="center"><p class="h-1460">#projectRemarks#</p></td>
</tr>
<tr>
<td class="tabTit" colspan="4">单位意见</td>


+ 51
- 39
pmapi/src/main/resources/template/市级-预审申请单.html View File

@@ -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;
}
</style>
</head>
<body>
@@ -110,130 +120,132 @@
<tr>
<td class="tabTit" colspan="4">项目基本信息</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">项目名称</td>
<td colspan="3" align="center">#projectName#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">是否临时增补</td>
<td align="center">#isTemporaryAugment#</td>
<td class="label">是否一地创新全省共享项目</td>
<td align="center">#isInnovateWholeProvinceShare#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">项目负责人</td>
<td align="center">#responsibleMan#</td>
<td class="label">负责人手机号</td>
<td align="center">#responsibleManMobile#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">项目联系人</td>
<td align="center">#contactName#</td>
<td class="label">项目联系人手机号</td>
<td align="center">#contactPhone#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">建设单位</td>
<td align="center">#buildOrgName#</td>
<td class="label">建设单位统一社会信用代码</td>
<td align="center">#orgCreditCode#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">项目类型</td>
<td align="center">#projectType#</td>
<td class="label">是否首次新建</td>
<td align="center">#isFirst#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">预算年度</td>
<td align="center">#projectYear#</td>
<td class="label">建设起止时间</td>
<td align="center">#beginAndEndTime#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">四大体系</td>
<td colspan="3" align="center">#fourSystems#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">是否数字化改革项目</td>
<td align="center">#isDigitalReform#</td>
<td class="label">综合业务领域</td>
<td align="center">#bizDomain#</td>
</tr>
<tr>
<tr class="h-800">
<td class="label">立项依据</td>
<td colspan="3" align="center">#buildBasisList#</td>
</tr>
<tr>
<tr class="h-100">
<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="label">项目简介</td>
<td colspan="3" align="center">
<p class="h-1460">#projectIntroduction#</p>
</td>
</tr>
<tr>
<td class="tabTit" colspan="4">资金申报情况</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">申报金额</td>
<td colspan="3" align="center">#declareAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">自有资金</td>
<td align="center">#declareHaveAmount#</td>
<td class="label">政府投资-本级财政资金</td>
<td align="center">#declareGovOwnFinanceAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">政府投资-上级补助资金</td>
<td align="center">#declareGovSuperiorFinanceAmount#</td>
<td class="label">银行贷款</td>
<td align="center">#declareBankLendingAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">其他资金</td>
<td colspan="3" align="center">#declareOtherAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">本年计划投资(万元)</td>
<td colspan="3" align="center">#yearPlanInvest#</td>
</tr>
<tr>
<td class="tabTit" colspan="4">资金分配情况</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">软件开发</td>
<td align="center">#softwareDevelopmentAmount#</td>
<td class="label">云资源、硬件购置</td>
<td align="center">#cloudHardwarePurchaseAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">第三方服务</td>
<td colspan="3" align="center">#thirdPartyAmount#</td>
</tr>
<tr>
<td class="tabTit" colspan="4">年度支付计划</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">年度支付金额</td>
<td colspan="3" align="center">#annualPlanAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">自有资金</td>
<td align="center">#annualPlanHaveAmount#</td>
<td class="label">政府投资-本级财政资金</td>
<td align="center">#annualPlanGovOwnFinanceAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">政府投资-上级补助资金</td>
<td align="center">#annualPlanGovSuperiorFinanceAmount#</td>
<td class="label">银行贷款</td>
<td align="center">#annualPlanBankLendingAmount#</td>
</tr>
<tr>
<tr class="h-80">
<td class="label">其他资金</td>
<td colspan="3" align="center">#annualPlanOtherAmount#</td>
</tr>
@@ -242,7 +254,7 @@
</tr>
<tr>
<td class="label">备注</td>
<td colspan="3" align="center">#projectRemarks#</td>
<td colspan="3" align="center"><p class="h-1460">#projectRemarks#</p></td>
</tr>
<tr>
<td class="tabTit" colspan="4">单位意见</td>
@@ -251,12 +263,12 @@
<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 class="left">
<span>#superOrgOpinion#</span>
</div>
<div class="right">
<span>#superOrgAuditDate#</span>
</div>
</div>
</td>
</tr>


+ 159
- 147
pmapi/src/main/resources/template/建设方案申请单.html View File

@@ -9,7 +9,7 @@
<title>Document</title>
<style>
html,
body {
body,p {
padding: 0;
margin: 0;
font-family: SimSun;
@@ -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;
}
</style>
</head>
<body>
@@ -107,146 +117,148 @@
</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="tabTit" colspan="4">项目基本信息</td>
</tr>
<tr class="h-80">
<td class="label">项目名称</td>
<td colspan="3" align="center">#projectName#</td>
</tr>
<tr class="h-80">
<td class="label">是否临时增补</td>
<td align="center">#isTemporaryAugment#</td>
<td class="label">是否一地创新全省共享项目</td>
<td align="center">#isInnovateWholeProvinceShare#</td>
</tr>
<tr class="h-80">
<td class="label">项目负责人</td>
<td align="center">#responsibleMan#</td>
<td class="label">负责人手机号</td>
<td align="center">#responsibleManMobile#</td>
</tr>
<tr class="h-80">
<td class="label">项目联系人</td>
<td align="center">#contactName#</td>
<td class="label">项目联系人手机号</td>
<td align="center">#contactPhone#</td>
</tr>
<tr class="h-80">
<td class="label">建设单位</td>
<td align="center">#buildOrgName#</td>
<td class="label">建设单位统一社会信用代码</td>
<td align="center">#orgCreditCode#</td>
</tr>
<tr class="h-80">
<td class="label">项目类型</td>
<td align="center">#projectType#</td>
<td class="label">是否首次新建</td>
<td align="center">#isFirst#</td>
</tr>
<tr class="h-80">
<td class="label">预算年度</td>
<td align="center">#projectYear#</td>
<td class="label">建设起止时间</td>
<td align="center">#beginAndEndTime#</td>
</tr>
<tr class="h-80">
<td class="label">四大体系</td>
<td colspan="3" align="center">#fourSystems#</td>
</tr>
<tr class="h-80">
<td class="label">是否数字化改革项目</td>
<td align="center">#isDigitalReform#</td>
<td class="label">综合业务领域</td>
<td align="center">#bizDomain#</td>
</tr>
<tr class="h-800">
<td class="label">立项依据</td>
<td colspan="3" align="center">#buildBasisList#</td>
</tr>
<tr class="h-100">
<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">
<p class="h-1460">#projectIntroduction#</p>
</td>
</tr>
<tr>
<td class="tabTit" colspan="4">资金申报情况</td>
</tr>
<tr class="h-80">
<td class="label">申报金额</td>
<td colspan="3" align="center">#declareAmount#</td>
</tr>
<tr class="h-80">
<td class="label">自有资金</td>
<td align="center">#declareHaveAmount#</td>
<td class="label">政府投资-本级财政资金</td>
<td align="center">#declareGovOwnFinanceAmount#</td>
</tr>
<tr class="h-80">
<td class="label">政府投资-上级补助资金</td>
<td align="center">#declareGovSuperiorFinanceAmount#</td>
<td class="label">银行贷款</td>
<td align="center">#declareBankLendingAmount#</td>
</tr>
<tr class="h-80">
<td class="label">其他资金</td>
<td colspan="3" align="center">#declareOtherAmount#</td>
</tr>
<tr class="h-80">
<td class="label">本年计划投资(万元)</td>
<td colspan="3" align="center">#yearPlanInvest#</td>
</tr>
<tr>
<td class="tabTit" colspan="4">资金分配情况</td>
</tr>
<tr class="h-80">
<td class="label">软件开发</td>
<td align="center">#softwareDevelopmentAmount#</td>
<td class="label">云资源、硬件购置</td>
<td align="center">#cloudHardwarePurchaseAmount#</td>
</tr>
<tr class="h-80">
<td class="label">第三方服务</td>
<td colspan="3" align="center">#thirdPartyAmount#</td>
</tr>
<tr>
<td class="tabTit" colspan="4">年度支付计划</td>
</tr>
<tr class="h-80">
<td class="label">年度支付金额</td>
<td colspan="3" align="center">#annualPlanAmount#</td>
</tr>
<tr class="h-80">
<td class="label">自有资金</td>
<td align="center">#annualPlanHaveAmount#</td>
<td class="label">政府投资-本级财政资金</td>
<td align="center">#annualPlanGovOwnFinanceAmount#</td>
</tr>
<tr class="h-80">
<td class="label">政府投资-上级补助资金</td>
<td align="center">#annualPlanGovSuperiorFinanceAmount#</td>
<td class="label">银行贷款</td>
<td align="center">#annualPlanBankLendingAmount#</td>
</tr>
<tr class="h-80">
<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"><p class="h-1460">#projectRemarks#</p></td>
</tr>
<tr>
<td class="tabTit" colspan="4">单位意见</td>
</tr>
<tr>
<td class="label">大数据局主管单位意见(盖章)</td>
<td colspan="3" class="text content">


Loading…
Cancel
Save