Quellcode durchsuchen

项目表增加申报单位领域

tags/24080901
WendyYang vor 6 Monaten
Ursprung
Commit
8bbb9a07fc
14 geänderte Dateien mit 130 neuen und 43 gelöschten Zeilen
  1. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/builder/impl/ProjectDeclareStateMachineBuilderImpl.java
  2. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/ProjectStatusChangeEvent.java
  3. +21
    -15
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java
  4. +4
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/DeclaredProjectListParamDTO.java
  5. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/DefaultDeclaredDTO.java
  6. +6
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/ProjectDraft.java
  7. +6
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/ProjectDraftVO.java
  8. +54
    -20
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java
  9. +6
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ProjectDTO.java
  10. +3
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/Project.java
  11. +3
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/DeclaredProjectListVO.java
  12. +7
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/MhProjectBaseInfoVO.java
  13. +12
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectService.java
  14. +5
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java

+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/builder/impl/ProjectDeclareStateMachineBuilderImpl.java Datei anzeigen

@@ -218,7 +218,7 @@ public class ProjectDeclareStateMachineBuilderImpl implements ProjectDeclareStat
.event(ProjectStatusChangeEvent.DECLARED_RECORD_PASS).and() .event(ProjectStatusChangeEvent.DECLARED_RECORD_PASS).and()
.withExternal() .withExternal()
.source(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING) .source(ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING)
.source(ProjectStatusEnum.DECLARED_APPROVED_RECORD_FAILED)
.target(ProjectStatusEnum.DECLARED_APPROVED_RECORD_FAILED)
.event(ProjectStatusChangeEvent.DECLARED_RECORD_FAILED).and() .event(ProjectStatusChangeEvent.DECLARED_RECORD_FAILED).and()
// 待立项批复批复,从待立项批复到待采购 // 待立项批复批复,从待立项批复到待采购
.withExternal() .withExternal()


+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/ProjectStatusChangeEvent.java Datei anzeigen

@@ -122,7 +122,7 @@ public enum ProjectStatusChangeEvent {
/** /**
* 立项备案不通过 * 立项备案不通过
*/ */
DECLARED_RECORD_FAILED(null, ProjectStatusEnum.DECLARED_APPROVED_RECORD_FAILED.getCode(), null),
DECLARED_RECORD_FAILED(null, ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING.getCode(), null),


//================================================================================================================== //==================================================================================================================




+ 21
- 15
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java Datei anzeigen

@@ -16,11 +16,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.hz.pm.api.common.enumeration.CommonEnum; import com.hz.pm.api.common.enumeration.CommonEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.helper.RegionCacheHelper;
import com.hz.pm.api.common.helper.UserInfoHelper; import com.hz.pm.api.common.helper.UserInfoHelper;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.util.ExcelDownUtil; import com.hz.pm.api.common.util.ExcelDownUtil;
import com.hz.pm.api.common.util.ExcelExportStyle; import com.hz.pm.api.common.util.ExcelExportStyle;
import com.hz.pm.api.external.model.enumeration.MhUnitTypeEnum;
import com.hz.pm.api.gov.manage.GovProjectCollectionManage; import com.hz.pm.api.gov.manage.GovProjectCollectionManage;
import com.hz.pm.api.irs.manage.ProjectIrsManage; import com.hz.pm.api.irs.manage.ProjectIrsManage;
import com.hz.pm.api.projectdeclared.contants.DeclaredProjectConst; import com.hz.pm.api.projectdeclared.contants.DeclaredProjectConst;
@@ -44,6 +44,8 @@ import com.hz.pm.api.projectlib.service.IProjectService;
import com.hz.pm.api.staging.enums.MsgTypeEnum; import com.hz.pm.api.staging.enums.MsgTypeEnum;
import com.hz.pm.api.sys.manage.NoticeManage; import com.hz.pm.api.sys.manage.NoticeManage;
import com.hz.pm.api.todocenter.constant.WorkNoticeConst; import com.hz.pm.api.todocenter.constant.WorkNoticeConst;
import com.hz.pm.api.user.helper.MhUnitCache;
import com.hz.pm.api.user.model.dto.UnitDTO;
import com.hz.pm.api.user.security.model.UserFullInfoDTO; import com.hz.pm.api.user.security.model.UserFullInfoDTO;
import com.hz.pm.api.user.security.model.UserInfoDetails; import com.hz.pm.api.user.security.model.UserInfoDetails;
import com.hz.pm.api.user.util.LoginUserUtil; import com.hz.pm.api.user.util.LoginUserUtil;
@@ -101,7 +103,7 @@ public class DeclaredProjectManage {


private final UserInfoHelper userInfoHelper; private final UserInfoHelper userInfoHelper;


private final RegionCacheHelper regionCacheHelper;
private final MhUnitCache mhUnitCache;


private final ProjectIrsManage projectIrsManage; private final ProjectIrsManage projectIrsManage;


@@ -264,28 +266,29 @@ public class DeclaredProjectManage {
return instanceId; return instanceId;
} }


public PageVo<ProjectDraftVO> pageDraft(DeclaredProjectListParamDTO params, Integer draftType) {
public PageVo<ProjectDraftVO> pageDraft(DeclaredProjectListParamDTO req, Integer draftType) {
Long userId = LoginUserUtil.getUserId(); Long userId = LoginUserUtil.getUserId();
Page<ProjectDraft> page = params.page();
Page<ProjectDraft> page = req.page();
LambdaQueryWrapper<ProjectDraft> wrapper = Wrappers.lambdaQuery(ProjectDraft.class) LambdaQueryWrapper<ProjectDraft> wrapper = Wrappers.lambdaQuery(ProjectDraft.class)
.eq(ProjectDraft::getUserId, userId) .eq(ProjectDraft::getUserId, userId)
.eq(ProjectDraft::getDraftType, draftType) .eq(ProjectDraft::getDraftType, draftType)
.ge(Objects.nonNull(params.getStartTime()), ProjectDraft::getCreateOn, params.getStartTime())
.le(Objects.nonNull(params.getEndTime()), ProjectDraft::getCreateOn, params.getEndTime())
.eq(Objects.nonNull(params.getProjectType()), ProjectDraft::getProjectType, params.getProjectType())
.eq(Objects.nonNull(params.getProjectYear()), ProjectDraft::getProjectYear, params.getProjectYear())
.eq(Objects.nonNull(params.getProjectStage()), ProjectDraft::getStage, params.getProjectStage())
.eq(Objects.nonNull(params.getProjectStatus()), ProjectDraft::getStatus, params.getProjectStatus())
.like(StringUtils.isNotBlank(params.getProjectName()), ProjectDraft::getProjectName, params.getProjectName())
.ge(Objects.nonNull(req.getStartTime()), ProjectDraft::getCreateOn, req.getStartTime())
.le(Objects.nonNull(req.getEndTime()), ProjectDraft::getCreateOn, req.getEndTime())
.eq(Objects.nonNull(req.getProjectType()), ProjectDraft::getProjectType, req.getProjectType())
.eq(Objects.nonNull(req.getProjectYear()), ProjectDraft::getProjectYear, req.getProjectYear())
.eq(Objects.nonNull(req.getProjectStage()), ProjectDraft::getStage, req.getProjectStage())
.eq(Objects.nonNull(req.getProjectStatus()), ProjectDraft::getStatus, req.getProjectStatus())
.eq(req.getUnitStrip() != null, ProjectDraft::getUnitStrip, req.getUnitStrip())
.like(StringUtils.isNotBlank(req.getProjectName()), ProjectDraft::getProjectName, req.getProjectName())
.orderByDesc(ProjectDraft::getUpdateOn); .orderByDesc(ProjectDraft::getUpdateOn);
projectDraftService.page(page, wrapper); projectDraftService.page(page, wrapper);
if (CollUtil.isEmpty(page.getRecords())) { if (CollUtil.isEmpty(page.getRecords())) {
return PageVo.empty(); return PageVo.empty();
} }
List<ProjectDraftVO> res = page.getRecords().stream().map(record -> {
List<ProjectDraftVO> res = page.getRecords().stream().map(draft -> {
ProjectDraftVO vo = new ProjectDraftVO(); ProjectDraftVO vo = new ProjectDraftVO();
BeanUtils.copyProperties(record, vo);
vo.setBizDomain(Objects.nonNull(record.getBizDomain()) ? String.valueOf(record.getBizDomain()) : StringUtils.EMPTY);
BeanUtils.copyProperties(draft, vo);
vo.setBizDomain(Objects.nonNull(draft.getBizDomain()) ? String.valueOf(draft.getBizDomain()) : StringUtils.EMPTY);
return vo; return vo;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
return PageVo.of(res, page.getTotal()); return PageVo.of(res, page.getTotal());
@@ -330,7 +333,10 @@ public class DeclaredProjectManage {
draft.setUserId(user.getUserIdStr()); draft.setUserId(user.getUserIdStr());
draft.setBuildOrgCode(user.getMhUnitIdStr()); draft.setBuildOrgCode(user.getMhUnitIdStr());
draft.setBuildOrgName(user.getMhUnitName()); draft.setBuildOrgName(user.getMhUnitName());

UnitDTO unit = mhUnitCache.getById(user.getMhUnitId());
Assert.notNull(unit, "申报单位不存在");
MhUnitTypeEnum unitType = Objects.requireNonNull(unit.getType(), "申报单位类型错误");
draft.setUnitStrip(unitType.getStrip().getCode());
if (CollUtil.isNotEmpty(projectInfo.getDynamicForm())) { if (CollUtil.isNotEmpty(projectInfo.getDynamicForm())) {
draft.setDynamicForm(JSON.toJSONString(projectInfo.getDynamicForm())); draft.setDynamicForm(JSON.toJSONString(projectInfo.getDynamicForm()));
} }


+ 4
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/DeclaredProjectListParamDTO.java Datei anzeigen

@@ -41,4 +41,8 @@ public class DeclaredProjectListParamDTO extends PagePo {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("结束时间") @ApiModelProperty("结束时间")
private String endTime; private String endTime;

@ApiModelProperty("申报单位")
private Integer unitStrip;

} }

+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/DefaultDeclaredDTO.java Datei anzeigen

@@ -21,7 +21,7 @@ import java.util.Map;
@Data @Data
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class DefaultDeclaredDTO implements Serializable {
public class DefaultDeclaredDTO {


@NotNull @NotNull
@ApiModelProperty("项目信息") @ApiModelProperty("项目信息")


+ 6
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/ProjectDraft.java Datei anzeigen

@@ -361,4 +361,10 @@ public class ProjectDraft implements Serializable {


private String govSystemReplaceInfos; private String govSystemReplaceInfos;


@ApiModelProperty("信产项目ID")
private Long mhProjectId;

@ApiModelProperty("申报单位领域")
private Integer unitStrip;

} }

+ 6
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/vo/ProjectDraftVO.java Datei anzeigen

@@ -384,4 +384,10 @@ public class ProjectDraftVO {
@ApiModelProperty("政务系统改造情况") @ApiModelProperty("政务系统改造情况")
private List<GovSystemReplaceInfoDTO> systemReplaceInfos; private List<GovSystemReplaceInfoDTO> systemReplaceInfos;


@ApiModelProperty("信产项目ID")
private Long mhProjectId;

@ApiModelProperty("申报单位领域")
private Integer unitStrip;

} }

+ 54
- 20
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/DeclaredRecordManage.java Datei anzeigen

@@ -5,12 +5,15 @@ import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference; 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.conditions.update.LambdaUpdateWrapper;
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;
import com.hz.pm.api.common.enumeration.CommonEnum; import com.hz.pm.api.common.enumeration.CommonEnum;
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum;
import com.hz.pm.api.common.model.constant.BizConst; import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent;
import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum; import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum;
import com.hz.pm.api.external.model.enumeration.MhUnitTypeEnum;
import com.hz.pm.api.projectdeclared.manage.DefaultDeclaredProjectManage; import com.hz.pm.api.projectdeclared.manage.DefaultDeclaredProjectManage;
import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO; import com.hz.pm.api.projectdeclared.model.dto.DefaultDeclaredDTO;
import com.hz.pm.api.projectdeclared.model.dto.ProjectConditionDTO; import com.hz.pm.api.projectdeclared.model.dto.ProjectConditionDTO;
@@ -19,12 +22,14 @@ import com.hz.pm.api.projectlib.model.dto.ProjectDTO;
import com.hz.pm.api.projectlib.model.entity.MhProject; import com.hz.pm.api.projectlib.model.entity.MhProject;
import com.hz.pm.api.projectlib.model.entity.MhProjectSchemaTargetData; import com.hz.pm.api.projectlib.model.entity.MhProjectSchemaTargetData;
import com.hz.pm.api.projectlib.model.entity.Project; import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange;
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum;
import com.hz.pm.api.projectlib.model.req.DeclaredProjectListReq; import com.hz.pm.api.projectlib.model.req.DeclaredProjectListReq;
import com.hz.pm.api.projectlib.model.vo.DeclaredProjectListVO; import com.hz.pm.api.projectlib.model.vo.DeclaredProjectListVO;
import com.hz.pm.api.projectlib.model.vo.MhProjectBaseInfoVO; import com.hz.pm.api.projectlib.model.vo.MhProjectBaseInfoVO;
import com.hz.pm.api.projectlib.service.IMhProjectSchemaTargetDataService; import com.hz.pm.api.projectlib.service.IMhProjectSchemaTargetDataService;
import com.hz.pm.api.projectlib.service.IMhProjectService; import com.hz.pm.api.projectlib.service.IMhProjectService;
import com.hz.pm.api.projectlib.service.INdProjectStatusChangeService;
import com.hz.pm.api.projectlib.service.IProjectService; import com.hz.pm.api.projectlib.service.IProjectService;
import com.hz.pm.api.staging.enums.MsgTypeEnum; import com.hz.pm.api.staging.enums.MsgTypeEnum;
import com.hz.pm.api.sys.manage.NoticeManage; import com.hz.pm.api.sys.manage.NoticeManage;
@@ -48,10 +53,8 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;


import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;


/** /**
@@ -68,7 +71,7 @@ import java.util.stream.Collectors;
public class DeclaredRecordManage { public class DeclaredRecordManage {


private final IMhProjectService mhProjectService; private final IMhProjectService mhProjectService;
private final IMhProjectSchemaTargetDataService mhProjectSchemaTargetDataService;
private final IMhProjectSchemaTargetDataService schemaTargetDataService;
private final IProjectService projectService; private final IProjectService projectService;
private final MhUnitCache mhUnitCache; private final MhUnitCache mhUnitCache;
private final NoticeManage noticeManage; private final NoticeManage noticeManage;
@@ -77,6 +80,7 @@ public class DeclaredRecordManage {
private final DefaultDeclaredProjectManage defaultDeclaredProjectManage; private final DefaultDeclaredProjectManage defaultDeclaredProjectManage;
private final ProcessInstanceService processInstanceService; private final ProcessInstanceService processInstanceService;
private final ProjectLibManage projectLibManage; private final ProjectLibManage projectLibManage;
private final INdProjectStatusChangeService projectStatusChangeService;


private LambdaQueryWrapper<MhProject> buildQuery(DeclaredProjectListReq req) { private LambdaQueryWrapper<MhProject> buildQuery(DeclaredProjectListReq req) {
LambdaQueryWrapper<MhProject> query = Wrappers.lambdaQuery(MhProject.class) LambdaQueryWrapper<MhProject> query = Wrappers.lambdaQuery(MhProject.class)
@@ -118,11 +122,12 @@ public class DeclaredRecordManage {
item.setMhProjectId(w.getId()); item.setMhProjectId(w.getId());
Project project = projectMap.get(w.getProjectCode()); Project project = projectMap.get(w.getProjectCode());
if (project == null) { if (project == null) {
item.setStatus(null);
item.setStage(null);
item.setStatus(ProjectStatusEnum.DECLARED_APPROVED_TO_BE_RECORD.getCode());
item.setStage(ProjectStatusEnum.TO_BE_APPROVED.getCode());
} else { } else {
item.setStatus(project.getStatus()); item.setStatus(project.getStatus());
item.setStage(project.getStage()); item.setStage(project.getStage());
item.setProjectId(project.getId());
} }
item.setUnitStrip(w.getUnitStrip()); item.setUnitStrip(w.getUnitStrip());
item.setUnitStripName(MhUnitStripEnum.getVal(w.getUnitStrip())); item.setUnitStripName(MhUnitStripEnum.getVal(w.getUnitStrip()));
@@ -148,7 +153,12 @@ public class DeclaredRecordManage {
detail.setDeclaredUnitId(mhProject.getUnitId()); detail.setDeclaredUnitId(mhProject.getUnitId());
detail.setTotalInvestAmount(mhProject.getTotalMoney()); detail.setTotalInvestAmount(mhProject.getTotalMoney());
detail.setReviewInvestAmount(mhProject.getMoney()); detail.setReviewInvestAmount(mhProject.getMoney());
MhProjectSchemaTargetData schemaTargetData = mhProjectSchemaTargetDataService.getByMhProjectId(mhProjectId);
detail.setProjectCode(mhProject.getProjectCode());
if (StrUtil.isNotBlank(detail.getProjectCode())) {
Optional<Long> projectId = projectService.getNewProjectId(detail.getProjectCode());
projectId.ifPresent(detail::setProjectId);
}
MhProjectSchemaTargetData schemaTargetData = schemaTargetDataService.getByMhProjectId(mhProjectId);
if (schemaTargetData != null) { if (schemaTargetData != null) {
detail.setTotalInvestBudgetAmount(schemaTargetData.getMoney()); detail.setTotalInvestBudgetAmount(schemaTargetData.getMoney());
} }
@@ -160,9 +170,10 @@ public class DeclaredRecordManage {
} }


@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void startDeclaredRecord(DefaultDeclaredDTO req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();
public synchronized void startDeclaredRecord(DefaultDeclaredDTO req) {
ProjectDTO projectInfo = req.getProjectInfo(); ProjectDTO projectInfo = req.getProjectInfo();
Assert.notNull(projectInfo.getMhProjectId(), "信产项目ID不能为空");
UserInfoDetails user = LoginUserUtil.loginUserDetail();


projectInfo.setBuildOrgCode(user.getMhUnitIdStr()); projectInfo.setBuildOrgCode(user.getMhUnitIdStr());
projectInfo.setBuildOrgName(user.getMhUnitName()); projectInfo.setBuildOrgName(user.getMhUnitName());
@@ -211,25 +222,32 @@ public class DeclaredRecordManage {
BeanUtils.copyProperties(projectInfo, project); BeanUtils.copyProperties(projectInfo, project);
Map<String, OrgInfoDTO> orgModelMap = defaultDeclaredProjectManage.buildOrgModelMap(user.getUserId(), project); Map<String, OrgInfoDTO> orgModelMap = defaultDeclaredProjectManage.buildOrgModelMap(user.getUserId(), project);
String instanceId = processInstanceService.startProcessLs(model, params, orgModelMap); String instanceId = processInstanceService.startProcessLs(model, params, orgModelMap);
log.info("申报项目成功 【{}】", instanceId);
log.info("立项备案成功 【{}】", instanceId);


//如果是重新提交的话 判断下 项目是否存在
//保存项目相关
Project buildProject = projectLibManage.saveProjectInDeclared(projectInfo, instanceId, user.getUserId(),
// 如果是重新提交的话 判断下 项目是否存在
// 保存项目相关
Project newProj = projectLibManage.saveProjectInDeclared(projectInfo, instanceId, user.getUserId(),
ProjectStatusEnum.NOT_APPROVED, ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING, ProjectStatusEnum.NOT_APPROVED, ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING,
ProjectProcessStageEnum.PROJECT_RECORD_APPROVAL_PROCESS); ProjectProcessStageEnum.PROJECT_RECORD_APPROVAL_PROCESS);
// 保存状态变更
saveProjectStatusChangeLog(ProjectStatusEnum.DECLARED_APPROVED_TO_BE_RECORD,
newProj, ProjectStatusChangeEvent.DECLARED_RECORD_SUBMIT);
if (Objects.nonNull(projectInfo.getDraftId())) { if (Objects.nonNull(projectInfo.getDraftId())) {
//如果是草稿箱提交 删除对应的草稿箱 //如果是草稿箱提交 删除对应的草稿箱
projectDraftService.removeById(projectInfo.getDraftId()); projectDraftService.removeById(projectInfo.getDraftId());
} }

// 申报项目完成后 保存项目编码
LambdaUpdateWrapper<MhProject> update = Wrappers.lambdaUpdate(MhProject.class)
.set(MhProject::getProjectCode, newProj.getProjectCode())
.eq(MhProject::getId, projectInfo.getMhProjectId());
mhProjectService.update(update);
//发送给第一个审批人消息 //发送给第一个审批人消息
noticeManage.sendFirstUser(buildProject, model.getFormName(), instanceId,
noticeManage.sendFirstUser(newProj, model.getFormName(), instanceId,
WorkNoticeConst.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); WorkNoticeConst.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW);
} }


@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public String restartDeclaredRecord(DefaultDeclaredDTO req) {
public synchronized String restartDeclaredRecord(DefaultDeclaredDTO req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail(); UserInfoDetails user = LoginUserUtil.loginUserDetail();
ProjectDTO reqProj = req.getProjectInfo(); ProjectDTO reqProj = req.getProjectInfo();
Assert.notNull(reqProj.getId(), "提交失败,缺少项目ID!"); Assert.notNull(reqProj.getId(), "提交失败,缺少项目ID!");
@@ -245,7 +263,10 @@ public class DeclaredRecordManage {
reqProj.setProjectCode(oldProj.getProjectCode()); reqProj.setProjectCode(oldProj.getProjectCode());
defaultDeclaredProjectManage.checkDuplication(reqProj); defaultDeclaredProjectManage.checkDuplication(reqProj);
} }

UnitDTO unit = mhUnitCache.getById(user.getMhUnitId());
Assert.notNull(unit, "申报单位不存在");
MhUnitTypeEnum unitType = Objects.requireNonNull(unit.getType(), "申报单位类型错误");
reqProj.setUnitStrip(unitType.getStrip().getCode());
// 写死 是否有主管单位 // 写死 是否有主管单位
oldProj.setIsHigherSuperOrg(CommonEnum.YES.getCode()); oldProj.setIsHigherSuperOrg(CommonEnum.YES.getCode());
oldProj.setIsSuperOrg(CommonEnum.YES.getCode()); oldProj.setIsSuperOrg(CommonEnum.YES.getCode());
@@ -284,14 +305,16 @@ public class DeclaredRecordManage {
BeanUtils.copyProperties(reqProj, project); BeanUtils.copyProperties(reqProj, project);
Map<String, OrgInfoDTO> orgModelMap = defaultDeclaredProjectManage.buildOrgModelMap(user.getUserId(), project); Map<String, OrgInfoDTO> orgModelMap = defaultDeclaredProjectManage.buildOrgModelMap(user.getUserId(), project);
String instId = processInstanceService.startProcessLs(model, params, orgModelMap); String instId = processInstanceService.startProcessLs(model, params, orgModelMap);
log.info("立项备案重新提交 【{}】", instId);
log.info("立项备案成功 【{}】", instId);


//保存项目相关 //保存项目相关
Project newProj = projectLibManage.saveProjectInDeclared(reqProj, instId, user.getUserId(), Project newProj = projectLibManage.saveProjectInDeclared(reqProj, instId, user.getUserId(),
ProjectStatusEnum.NOT_APPROVED, ProjectStatusEnum.NOT_APPROVED,
ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING, ProjectStatusEnum.DECLARED_APPROVED_RECORD_AUDITING,
processStageEnum); processStageEnum);

// 保存状态变更
saveProjectStatusChangeLog(ProjectStatusEnum.DECLARED_APPROVED_RECORD_FAILED,
newProj, ProjectStatusChangeEvent.DECLARED_RECORD_RESUBMIT);
//发送给第一个审批人消息 //发送给第一个审批人消息
noticeManage.sendFirstUser(newProj, model.getFormName(), instId, noticeManage.sendFirstUser(newProj, model.getFormName(), instId,
WorkNoticeConst.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW); WorkNoticeConst.PASS_MSG_TEMPLATE, MsgTypeEnum.PROJECT_REVIEW);
@@ -299,5 +322,16 @@ public class DeclaredRecordManage {
return instId; return instId;
} }


private void saveProjectStatusChangeLog(ProjectStatusEnum beforeStatus, Project project, ProjectStatusChangeEvent event) {
ProjectStatusChange change = new ProjectStatusChange();
change.setAfterStatus(project.getStatus());
change.setProjectId(project.getId());
change.setBeforeStatus(beforeStatus.getCode());
change.setEvent(event.name());
change.setCreateOn(LocalDateTime.now());
change.setProjectCode(project.getProjectCode());
projectStatusChangeService.save(change);
}



} }

+ 6
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ProjectDTO.java Datei anzeigen

@@ -365,4 +365,10 @@ public class ProjectDTO {
@ApiModelProperty("政务信息系统替代情况") @ApiModelProperty("政务信息系统替代情况")
private List<GovSystemReplaceInfoDTO> systemReplaceInfos; private List<GovSystemReplaceInfoDTO> systemReplaceInfos;


@ApiModelProperty("信产项目ID")
private Long mhProjectId;

@ApiModelProperty("申报单位领域")
private Integer unitStrip;

} }

+ 3
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/entity/Project.java Datei anzeigen

@@ -546,4 +546,7 @@ public class Project implements Serializable {
@ApiModelProperty("立项依据证明材料") @ApiModelProperty("立项依据证明材料")
private String baseProjBasisFile; private String baseProjBasisFile;


@ApiModelProperty("申报单位领域")
private Integer unitStrip;

} }

+ 3
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/DeclaredProjectListVO.java Datei anzeigen

@@ -47,4 +47,7 @@ public class DeclaredProjectListVO {
@ApiModelProperty("ID") @ApiModelProperty("ID")
private Long mhProjectId; private Long mhProjectId;


@ApiModelProperty("项目ID")
private Long projectId;

} }

+ 7
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/MhProjectBaseInfoVO.java Datei anzeigen

@@ -7,7 +7,7 @@ import java.math.BigDecimal;


/** /**
* <p> * <p>
* MhProjectDetailVO
* 信产立项备案
* </p> * </p>
* *
* @author WendyYang * @author WendyYang
@@ -40,4 +40,10 @@ public class MhProjectBaseInfoVO {
@ApiModelProperty("id") @ApiModelProperty("id")
private Long mhProjectId; private Long mhProjectId;


@ApiModelProperty("项目ID")
private Long projectId;

@ApiModelProperty("项目编码")
private String projectCode;

} }

+ 12
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/service/IProjectService.java Datei anzeigen

@@ -28,11 +28,22 @@ public interface IProjectService extends IService<Project> {
default Optional<String> getProjectCode(Long projectId) { default Optional<String> getProjectCode(Long projectId) {
LambdaQueryWrapper<Project> query = Wrappers.lambdaQuery(Project.class) LambdaQueryWrapper<Project> query = Wrappers.lambdaQuery(Project.class)
.select(Project::getProjectCode) .select(Project::getProjectCode)
.eq(Project::getId, projectId)
.last(BizConst.LIMIT_1); .last(BizConst.LIMIT_1);
return Optional.ofNullable(getOne(query)) return Optional.ofNullable(getOne(query))
.flatMap(w -> Optional.of(w.getProjectCode())); .flatMap(w -> Optional.of(w.getProjectCode()));
} }


default Optional<Long> getNewProjectId(String projectCode) {
LambdaQueryWrapper<Project> query = Wrappers.lambdaQuery(Project.class)
.select(Project::getId)
.eq(Project::getProjectCode, projectCode)
.orderByDesc(Project::getVersion)
.last(BizConst.LIMIT_1);
return Optional.ofNullable(getOne(query))
.flatMap(w -> Optional.of(w.getId()));
}

List<Long> allVersionProjectIds(String projectCode); List<Long> allVersionProjectIds(String projectCode);


List<Long> allVersionProjectIds(Long projectId); List<Long> allVersionProjectIds(Long projectId);
@@ -56,7 +67,7 @@ public interface IProjectService extends IService<Project> {
update(wrapper); update(wrapper);
} }


default List<Project> listNewestByProjectCodes(Collection<String> projectCode){
default List<Project> listNewestByProjectCodes(Collection<String> projectCode) {
Wrapper<Project> query = Wrappers.lambdaQuery(Project.class) Wrapper<Project> query = Wrappers.lambdaQuery(Project.class)
.eq(Project::getNewest, Boolean.TRUE) .eq(Project::getNewest, Boolean.TRUE)
.in(Project::getProjectCode, projectCode); .in(Project::getProjectCode, projectCode);


+ 5
- 3
hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java Datei anzeigen

@@ -512,17 +512,19 @@ public class HandlerManage {
*/ */
private void updateRejectProjectStatus(Long userId, Project project, Integer instType) { private void updateRejectProjectStatus(Long userId, Project project, Integer instType) {
stateMachineUtil.reject(project); stateMachineUtil.reject(project);
LambdaUpdateWrapper<Project> updateWrapper = Wrappers.lambdaUpdate();
project.setUpdateOn(LocalDateTime.now()); project.setUpdateOn(LocalDateTime.now());
project.setUpdateBy(userId); project.setUpdateBy(userId);
projectService.updateById(project); projectService.updateById(project);
// 如果是预审审批驳回,需要重新盖章,原来盖过章的文件要清空 // 如果是预审审批驳回,需要重新盖章,原来盖过章的文件要清空
LambdaUpdateWrapper<Project> updateWrapper;
if (InstTypeEnum.PRELIMINARY_PREVIEW.eq(instType)) { if (InstTypeEnum.PRELIMINARY_PREVIEW.eq(instType)) {
updateWrapper.set(Project::getPretrialFileId, null)
updateWrapper = Wrappers.lambdaUpdate(Project.class)
.set(Project::getPretrialFileId, null)
.set(Project::getPretrialFileName, null) .set(Project::getPretrialFileName, null)
.eq(Project::getId, project.getId()); .eq(Project::getId, project.getId());
} else if (InstTypeEnum.CONSTRUCTION_PLAN_REVIEW.eq(instType)) { } else if (InstTypeEnum.CONSTRUCTION_PLAN_REVIEW.eq(instType)) {
updateWrapper.set(Project::getConstructFileId, null)
updateWrapper = Wrappers.lambdaUpdate(Project.class)
.set(Project::getConstructFileId, null)
.set(Project::getConstructFileName, null) .set(Project::getConstructFileName, null)
.eq(Project::getId, project.getId()); .eq(Project::getId, project.getId());
} else { } else {


Laden…
Abbrechen
Speichern