Browse Source

modify:

1. 项目变更审批修改;
tags/24080901
WendyYang 5 months ago
parent
commit
960a037f76
12 changed files with 98 additions and 109 deletions
  1. +7
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/common/model/constant/BizConst.java
  2. +0
    -38
      hz-pm-api/src/main/java/com/hz/pm/api/common/util/MethodReferenceUtil.java
  3. +4
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/ProjectEditDTO.java
  4. +4
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/utils/BeanDiffUtil.java
  5. +1
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/controller/ProjectStoppedChangeController.java
  6. +2
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/entity/PurchaseStatusChange.java
  7. +41
    -40
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/helper/ProjectChangeStopHelper.java
  8. +25
    -21
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectChangeManage.java
  9. +3
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/mapper/ProjectMapper.xml
  10. +4
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/GovSystemReplaceInfoDTO.java
  11. +4
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ProjectDTO.java
  12. +3
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/ProjectChangeListVO.java

+ 7
- 0
hz-pm-api/src/main/java/com/hz/pm/api/common/model/constant/BizConst.java View File

@@ -1,5 +1,6 @@
package com.hz.pm.api.common.model.constant; package com.hz.pm.api.common.model.constant;


import cn.hutool.json.JSONConfig;
import com.ningdatech.basic.model.ApiResponse; import com.ningdatech.basic.model.ApiResponse;


import java.math.BigDecimal; import java.math.BigDecimal;
@@ -111,4 +112,10 @@ public class BizConst {
public static final String OP_SUCCESS = "操作成功"; public static final String OP_SUCCESS = "操作成功";
public static final String OP_FAIL = "操作失败"; public static final String OP_FAIL = "操作失败";
public static final String SAVE_FAIL = "保存失败"; public static final String SAVE_FAIL = "保存失败";

public static final JSONConfig JSON_NOT_IGNORE_NULL_VALUE;

static {
JSON_NOT_IGNORE_NULL_VALUE = JSONConfig.create().setIgnoreNullValue(false);
}
} }

+ 0
- 38
hz-pm-api/src/main/java/com/hz/pm/api/common/util/MethodReferenceUtil.java View File

@@ -1,38 +0,0 @@
package com.hz.pm.api.common.util;

import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;

import java.lang.reflect.Method;
import java.util.function.Function;

/**
* <p>
* MethodReferenceUtil
* </p>
*
* @author WendyYang
* @since 16:24 2024/8/6
*/
public class MethodReferenceUtil {

private MethodReferenceUtil() {
}

/**
* 根据属性名获取方法引用。
*
* @param field 属性名
* @return 方法引用
*/
public static <T> Function<T, Object> getReference(Class<T> clazz, String field) {
// 将属性名首字母大写
String methodName = StrUtil.upperFirst(field);
Method method = ReflectUtil.getMethod(clazz, "get" + methodName);
if (method == null) {
return null;
}
return obj -> ReflectUtil.invoke(obj, method);
}

}

+ 4
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/dto/ProjectEditDTO.java View File

@@ -5,6 +5,7 @@ import com.hz.pm.api.projectlib.model.dto.ProjectDTO;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import java.io.Serializable;
import java.util.List; import java.util.List;


/** /**
@@ -16,7 +17,9 @@ import java.util.List;
* @since 19:53 2024/8/5 * @since 19:53 2024/8/5
*/ */
@Data @Data
public class ProjectEditDTO {
public class ProjectEditDTO implements Serializable {

private static final long serialVersionUID = 7066112975653039072L;


@ApiModelProperty("项目信息") @ApiModelProperty("项目信息")
private ProjectDTO project; private ProjectDTO project;


+ 4
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/utils/BeanDiffUtil.java View File

@@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjUtil;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;


import java.io.Serializable;
import java.util.*; import java.util.*;


/** /**
@@ -24,7 +25,9 @@ public class BeanDiffUtil {


@Data @Data
@Builder @Builder
public static class FieldDiff {
public static class FieldDiff implements Serializable {

private static final long serialVersionUID = -9003132377177378460L;


private String fieldName; private String fieldName;




+ 1
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/controller/ProjectStoppedChangeController.java View File

@@ -28,7 +28,7 @@ import java.util.List;
* @since 11:03 2024/8/5 * @since 11:03 2024/8/5
*/ */
@RestController @RestController
@Api(tags = "项目终止控制器")
@Api(tags = "项目终止变更控制器")
@RequestMapping("/api/v1/project") @RequestMapping("/api/v1/project")
@RequiredArgsConstructor @RequiredArgsConstructor
public class ProjectStoppedChangeController { public class ProjectStoppedChangeController {


+ 2
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/entity/PurchaseStatusChange.java View File

@@ -1,8 +1,6 @@
package com.hz.pm.api.projectlib.entity; package com.hz.pm.api.projectlib.entity;


import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.experimental.Tolerate; import lombok.experimental.Tolerate;
@@ -41,6 +39,7 @@ public class PurchaseStatusChange implements Serializable {


private String event; private String event;


@TableField(fill = FieldFill.INSERT)
private LocalDateTime createOn; private LocalDateTime createOn;


private String projectCode; private String projectCode;


+ 41
- 40
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/helper/ProjectChangeStopHelper.java View File

@@ -1,15 +1,17 @@
package com.hz.pm.api.projectlib.helper; package com.hz.pm.api.projectlib.helper;


import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
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.ProjectStateChangeEvent; import com.hz.pm.api.common.statemachine.event.ProjectStateChangeEvent;
import com.hz.pm.api.common.statemachine.event.TenderStateChangeEvent; import com.hz.pm.api.common.statemachine.event.TenderStateChangeEvent;
import com.hz.pm.api.common.util.MethodReferenceUtil;
import com.hz.pm.api.common.util.BizUtils;
import com.hz.pm.api.projectdeclared.entity.ProjectChangeHistory; import com.hz.pm.api.projectdeclared.entity.ProjectChangeHistory;
import com.hz.pm.api.projectdeclared.model.dto.*; import com.hz.pm.api.projectdeclared.model.dto.*;
import com.hz.pm.api.projectdeclared.model.entity.Contract; import com.hz.pm.api.projectdeclared.model.entity.Contract;
@@ -35,9 +37,9 @@ import lombok.RequiredArgsConstructor;
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.ArrayList;
import java.util.List;
import java.util.Map;
import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;


/** /**
* <p> * <p>
@@ -124,20 +126,22 @@ public class ProjectChangeStopHelper {
} else { } else {
throw new BizException("不支持的状态转换"); throw new BizException("不支持的状态转换");
} }
resetProjectPurchaseStatus(project, event, beforeEvent, tenderBeforeEvent, tenderEvent);
resetProjectPurchaseStatus(project.getId(), project.getProjectCode(), event, beforeEvent, tenderBeforeEvent, tenderEvent);
} }


private void resetProjectPurchaseStatus(Project project,
private void resetProjectPurchaseStatus(Long projectId, String projectCode,
ProjectStateChangeEvent projEvent, ProjectStateChangeEvent projEvent,
ProjectStateChangeEvent projBeforeEvent, ProjectStateChangeEvent projBeforeEvent,
TenderStateChangeEvent tenderBeforeEvent, TenderStateChangeEvent tenderBeforeEvent,
TenderStateChangeEvent tenderEvent) { TenderStateChangeEvent tenderEvent) {
LambdaUpdateWrapper<Project> projectWrapper = Wrappers.lambdaUpdate(Project.class)
.eq(Project::getId, projectId);
if (projBeforeEvent != null) { if (projBeforeEvent != null) {
if (projEvent.equals(ProjectStateChangeEvent.STOPPED_APPLY_FAILED)) { if (projEvent.equals(ProjectStateChangeEvent.STOPPED_APPLY_FAILED)) {
project.setStoppedStatus(buildBizStatus(projEvent).getCode());
projectWrapper.set(Project::getStoppedStatus, buildBizStatus(projEvent).getCode());
} else { } else {
Wrapper<ProjectChangeHistory> changeHistoryWrapper = Wrappers.lambdaQuery(ProjectChangeHistory.class) Wrapper<ProjectChangeHistory> changeHistoryWrapper = Wrappers.lambdaQuery(ProjectChangeHistory.class)
.eq(ProjectChangeHistory::getProjectCode, project.getProjectCode())
.eq(ProjectChangeHistory::getProjectCode, projectCode)
.orderByDesc(ProjectChangeHistory::getCreateOn) .orderByDesc(ProjectChangeHistory::getCreateOn)
.last(BizConst.LIMIT_1); .last(BizConst.LIMIT_1);
ProjectChangeHistory changeHistory = projectChangeHistoryService.getOne(changeHistoryWrapper); ProjectChangeHistory changeHistory = projectChangeHistoryService.getOne(changeHistoryWrapper);
@@ -147,26 +151,27 @@ public class ProjectChangeStopHelper {
projectEditRewrite(JSONUtil.toBean(changeHistory.getChangeContent(), ProjectEditDTO.class)); projectEditRewrite(JSONUtil.toBean(changeHistory.getChangeContent(), ProjectEditDTO.class));
} }
} }
ProjectStatusChange change = projectStatusChangeService.getLastOne(projBeforeEvent, project.getId());
ProjectStatusChange change = projectStatusChangeService.getLastOne(projBeforeEvent, projectId);
projectStatusChangeService.save(ProjectStatusChange.builder() projectStatusChangeService.save(ProjectStatusChange.builder()
.event(projEvent.name()) .event(projEvent.name())
.projectId(project.getId())
.projectId(projectId)
.event(projEvent.name()) .event(projEvent.name())
.projectCode(project.getProjectCode())
.projectCode(projectCode)
.beforeStatus(change.getAfterStatus()) .beforeStatus(change.getAfterStatus())
.afterStatus(change.getBeforeStatus()) .afterStatus(change.getBeforeStatus())
.createOn(project.getCreateOn())
.build()); .build());
project.setStatus(change.getBeforeStatus());
project.setStage(ProjectStatus.getNoNull(project.getStatus()).getStage().getCode());
projectService.updateById(project);
List<Purchase> purchases = purchaseService.listByProjectId(project.getId());
Integer currStatus = change.getBeforeStatus();
projectWrapper.set(Project::getStatus, currStatus);
projectWrapper.set(Project::getStage, ProjectStatus.getNoNull(currStatus).getStage().getCode());
projectService.update(projectWrapper);
List<Purchase> purchases = purchaseService.listByProjectId(projectId);
if (!purchases.isEmpty()) { if (!purchases.isEmpty()) {
Wrapper<PurchaseStatusChange> purchaseStatusChangeQuery = Wrappers.lambdaQuery(PurchaseStatusChange.class) Wrapper<PurchaseStatusChange> purchaseStatusChangeQuery = Wrappers.lambdaQuery(PurchaseStatusChange.class)
.eq(PurchaseStatusChange::getProjectId, project.getId())
.eq(PurchaseStatusChange::getProjectId, projectId)
.eq(PurchaseStatusChange::getEvent, tenderBeforeEvent); .eq(PurchaseStatusChange::getEvent, tenderBeforeEvent);
List<PurchaseStatusChange> purchaseStatusChanges = purchaseStatusChangeService.list(purchaseStatusChangeQuery); List<PurchaseStatusChange> purchaseStatusChanges = purchaseStatusChangeService.list(purchaseStatusChangeQuery);
Map<Long, PurchaseStatusChange> purchaseStatusChangeMap = CollUtils.listToMap(purchaseStatusChanges, PurchaseStatusChange::getBidId);
Map<Long, PurchaseStatusChange> purchaseStatusChangeMap = BizUtils.groupFirstMap(purchaseStatusChanges,
PurchaseStatusChange::getBidId, Comparator.comparing(PurchaseStatusChange::getCreateOn).reversed());
List<PurchaseStatusChange> changeArrayList = new ArrayList<>(); List<PurchaseStatusChange> changeArrayList = new ArrayList<>();
purchases.forEach(purchase -> { purchases.forEach(purchase -> {
PurchaseStatusChange currChange = purchaseStatusChangeMap.get(purchase.getId()); PurchaseStatusChange currChange = purchaseStatusChangeMap.get(purchase.getId());
@@ -176,8 +181,8 @@ public class ProjectChangeStopHelper {
.beforeStatus(currChange.getAfterStatus()) .beforeStatus(currChange.getAfterStatus())
.bidId(purchase.getId()) .bidId(purchase.getId())
.event(tenderEvent.name()) .event(tenderEvent.name())
.projectId(project.getId())
.projectCode(project.getProjectCode())
.projectId(projectId)
.projectCode(projectCode)
.build()); .build());
}); });
purchaseService.updateBatchById(purchases); purchaseService.updateBatchById(purchases);
@@ -227,9 +232,9 @@ public class ProjectChangeStopHelper {
projectLibManage.saveGovSystemReplaceInfos(projectDetail.getId(), projectLibManage.saveGovSystemReplaceInfos(projectDetail.getId(),
projectDetail.getProjectCode(), projectDetail.getSystemReplaceInfos()); projectDetail.getProjectCode(), projectDetail.getSystemReplaceInfos());
} }
LambdaUpdateWrapper<Project> wrapper = buildWrapper(projectDiffs, Project.class);
UpdateWrapper<Project> wrapper = buildWrapper(projectDiffs, Project.class);
if (wrapper != null) { if (wrapper != null) {
wrapper.eq(Project::getId, projectDetail.getId());
wrapper.eq("id", projectDetail.getId());
projectService.update(wrapper); projectService.update(wrapper);
} }
} }
@@ -239,27 +244,27 @@ public class ProjectChangeStopHelper {
List<FieldDiff> purchaseDiffs = purchaseEdit.getPurchaseDiffs(); List<FieldDiff> purchaseDiffs = purchaseEdit.getPurchaseDiffs();
if (CollUtil.isNotEmpty(purchaseDiffs)) { if (CollUtil.isNotEmpty(purchaseDiffs)) {
PurchaseDTO purchaseDetail = purchaseEdit.getPurchase(); PurchaseDTO purchaseDetail = purchaseEdit.getPurchase();
LambdaUpdateWrapper<Purchase> wrapper = buildWrapper(purchaseDiffs, Purchase.class);
UpdateWrapper<Purchase> wrapper = buildWrapper(purchaseDiffs, Purchase.class);
if (wrapper != null) { if (wrapper != null) {
wrapper.eq(Purchase::getId, purchaseDetail.getId());
wrapper.eq("id", purchaseDetail.getId());
purchaseService.update(wrapper); purchaseService.update(wrapper);
} }
} }
List<FieldDiff> contractDiffs = purchaseEdit.getContractDiffs(); List<FieldDiff> contractDiffs = purchaseEdit.getContractDiffs();
if (CollUtil.isNotEmpty(contractDiffs)) { if (CollUtil.isNotEmpty(contractDiffs)) {
ContractDTO contractDetail = purchaseEdit.getContract(); ContractDTO contractDetail = purchaseEdit.getContract();
LambdaUpdateWrapper<Contract> wrapper = buildWrapper(contractDiffs, Contract.class);
UpdateWrapper<Contract> wrapper = buildWrapper(contractDiffs, Contract.class);
if (wrapper != null) { if (wrapper != null) {
wrapper.eq(Contract::getId, contractDetail.getId());
wrapper.eq("id", contractDetail.getId());
contractService.update(wrapper); contractService.update(wrapper);
} }
} }
List<FieldDiff> operationDiffs = purchaseEdit.getOperationDiffs(); List<FieldDiff> operationDiffs = purchaseEdit.getOperationDiffs();
if (CollUtil.isNotEmpty(operationDiffs)) { if (CollUtil.isNotEmpty(operationDiffs)) {
OperationDTO operationDetail = purchaseEdit.getOperation(); OperationDTO operationDetail = purchaseEdit.getOperation();
LambdaUpdateWrapper<Operation> wrapper = buildWrapper(operationDiffs, Operation.class);
UpdateWrapper<Operation> wrapper = buildWrapper(operationDiffs, Operation.class);
if (wrapper != null) { if (wrapper != null) {
wrapper.eq(Operation::getId, operationDetail.getId());
wrapper.eq("id", operationDetail.getId());
operationService.update(wrapper); operationService.update(wrapper);
} }
} }
@@ -267,25 +272,21 @@ public class ProjectChangeStopHelper {
} }
} }


private <T> LambdaUpdateWrapper<T> buildWrapper(List<FieldDiff> diffs,
Class<T> clazz) {
LambdaUpdateWrapper<T> wrapper = Wrappers.lambdaUpdate(clazz);
private <T> UpdateWrapper<T> buildWrapper(List<FieldDiff> diffs, Class<T> clazz) {
List<String> fields = Arrays.stream(ClassUtil.getDeclaredFields(clazz))
.map(Field::getName)
.collect(Collectors.toList());
UpdateWrapper<T> wrapper = Wrappers.update();
boolean hasFieldChanged = false; boolean hasFieldChanged = false;
for (FieldDiff fieldDiff : diffs) { for (FieldDiff fieldDiff : diffs) {
String fieldName = fieldDiff.getFieldName(); String fieldName = fieldDiff.getFieldName();
Object newValue = fieldDiff.getNewValue(); Object newValue = fieldDiff.getNewValue();
SFunction<T, Object> reference = getReference(clazz, fieldName);
if (reference != null) {
if (fields.contains(fieldName)) {
hasFieldChanged = true; hasFieldChanged = true;
wrapper.set(reference, newValue);
wrapper.set(StrUtil.toUnderlineCase(fieldName), newValue);
} }
} }
return hasFieldChanged ? wrapper : null; return hasFieldChanged ? wrapper : null;
} }



private <T> SFunction<T, Object> getReference(Class<T> clazz, String fieldName) {
return (SFunction<T, Object>) MethodReferenceUtil.getReference(clazz, fieldName);
}

} }

+ 25
- 21
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/manage/ProjectChangeManage.java View File

@@ -2,11 +2,13 @@ package com.hz.pm.api.projectlib.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.json.JSONConfig;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
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;
import com.hz.pm.api.common.enumeration.ProjectProcessType; import com.hz.pm.api.common.enumeration.ProjectProcessType;
import com.hz.pm.api.common.model.constant.BizConst;
import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum; import com.hz.pm.api.external.model.enumeration.MhUnitStripEnum;
import com.hz.pm.api.projectdeclared.entity.ProjectChangeHistory; import com.hz.pm.api.projectdeclared.entity.ProjectChangeHistory;
import com.hz.pm.api.projectdeclared.manage.DeclaredProjectHelper; import com.hz.pm.api.projectdeclared.manage.DeclaredProjectHelper;
@@ -103,26 +105,28 @@ public class ProjectChangeManage {
.build()); .build());
} }
projectEdit.setProjectDiffs(projDiffs); projectEdit.setProjectDiffs(projDiffs);
List<PurchaseFullInfoVO> purchaseDetails = projDetailOld.getPurchaseDetails();
if (purchaseDetails != null && !purchaseDetails.isEmpty()) {
Map<Long, PurchaseEditDTO> reqPurchaseMap = CollUtils.listToMap(projectEdit.getPurchases(),
w -> w.getPurchase().getId());
for (PurchaseFullInfoVO purchaseDetail : purchaseDetails) {
PurchaseVO purchase = purchaseDetail.getPurchase();
ContractVO contract = purchaseDetail.getConstruction();
OperationVO operation = purchaseDetail.getOperation();

PurchaseEditDTO reqPurchaseDetail = reqPurchaseMap.get(purchase.getId());
PurchaseDTO reqPurchase = reqPurchaseDetail.getPurchase();
OperationDTO reqOperation = reqPurchaseDetail.getOperation();
ContractDTO reqContract = reqPurchaseDetail.getContract();

List<FieldDiff> purchaseDiffs = BeanDiffUtil.diffSameField(purchase, reqPurchase);
List<FieldDiff> operationDiffs = BeanDiffUtil.diffSameField(operation, reqOperation);
List<FieldDiff> contractDiffs = BeanDiffUtil.diffSameField(contract, reqContract);
reqPurchaseDetail.setPurchaseDiffs(purchaseDiffs);
reqPurchaseDetail.setContractDiffs(contractDiffs);
reqPurchaseDetail.setOperationDiffs(operationDiffs);
if (CollUtil.isNotEmpty(projectEdit.getPurchases())) {
List<PurchaseFullInfoVO> purchaseDetails = projDetailOld.getPurchaseDetails();
if (purchaseDetails != null && !purchaseDetails.isEmpty()) {
Map<Long, PurchaseEditDTO> reqPurchaseMap = CollUtils.listToMap(projectEdit.getPurchases(),
w -> w.getPurchase().getId());
for (PurchaseFullInfoVO purchaseDetail : purchaseDetails) {
PurchaseVO purchase = purchaseDetail.getPurchase();
ContractVO contract = purchaseDetail.getConstruction();
OperationVO operation = purchaseDetail.getOperation();

PurchaseEditDTO reqPurchaseDetail = reqPurchaseMap.get(purchase.getId());
PurchaseDTO reqPurchase = reqPurchaseDetail.getPurchase();
OperationDTO reqOperation = reqPurchaseDetail.getOperation();
ContractDTO reqContract = reqPurchaseDetail.getContract();

List<FieldDiff> purchaseDiffs = BeanDiffUtil.diffSameField(purchase, reqPurchase);
List<FieldDiff> operationDiffs = BeanDiffUtil.diffSameField(operation, reqOperation);
List<FieldDiff> contractDiffs = BeanDiffUtil.diffSameField(contract, reqContract);
reqPurchaseDetail.setPurchaseDiffs(purchaseDiffs);
reqPurchaseDetail.setContractDiffs(contractDiffs);
reqPurchaseDetail.setOperationDiffs(operationDiffs);
}
} }
} }


@@ -147,7 +151,7 @@ public class ProjectChangeManage {


// 保存变更历史 // 保存变更历史
ProjectChangeHistory projectChangeHistory = new ProjectChangeHistory(); ProjectChangeHistory projectChangeHistory = new ProjectChangeHistory();
projectChangeHistory.setChangeContent(JSONUtil.toJsonStr(projectEdit));
projectChangeHistory.setChangeContent(JSONUtil.toJsonStr(projectEdit, BizConst.JSON_NOT_IGNORE_NULL_VALUE));
projectChangeHistory.setChangeReason(req.getChangeReason()); projectChangeHistory.setChangeReason(req.getChangeReason());
projectChangeHistory.setProjectId(project.getId()); projectChangeHistory.setProjectId(project.getId());
projectChangeHistory.setProjectCode(project.getProjectCode()); projectChangeHistory.setProjectCode(project.getProjectCode());


+ 3
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/mapper/ProjectMapper.xml View File

@@ -483,8 +483,9 @@
np.create_on, np.create_on,
np.unit_strip, np.unit_strip,
npch.status as changeStatus, npch.status as changeStatus,
npch.craete_on as change_apply_time,
npch.id as changeId
npch.create_on as change_apply_time,
npch.id as changeId,
npch.inst_code as instCode
from (select * from nd_project ${ew.customSqlSegment}) np from (select * from nd_project ${ew.customSqlSegment}) np
inner join nd_project_change_history npch inner join nd_project_change_history npch
on np.id = npch.project_id on np.id = npch.project_id


+ 4
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/GovSystemReplaceInfoDTO.java View File

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import java.io.Serializable;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;


@@ -16,7 +17,9 @@ import java.util.Objects;
* @since 11:49 2024/2/29 * @since 11:49 2024/2/29
*/ */
@Data @Data
public class GovSystemReplaceInfoDTO {
public class GovSystemReplaceInfoDTO implements Serializable {

private static final long serialVersionUID = -1054216204216816787L;


@ApiModelProperty("替代前系统名称") @ApiModelProperty("替代前系统名称")
private List<String> sourceSystemNames; private List<String> sourceSystemNames;


+ 4
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/dto/ProjectDTO.java View File

@@ -5,6 +5,7 @@ import com.hz.pm.api.common.compare.Compare;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;


import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@@ -19,7 +20,9 @@ import java.util.Map;
* @since 2023-02-03 * @since 2023-02-03
*/ */
@Data @Data
public class ProjectDTO {
public class ProjectDTO implements Serializable {

private static final long serialVersionUID = 632385496811481979L;


public static final String SYSTEM_REPLACE_INFOS = "systemReplaceInfos"; public static final String SYSTEM_REPLACE_INFOS = "systemReplaceInfos";




+ 3
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectlib/model/vo/ProjectChangeListVO.java View File

@@ -59,4 +59,7 @@ public class ProjectChangeListVO {
@ApiModelProperty("变更ID") @ApiModelProperty("变更ID")
private Long changeId; private Long changeId;


@ApiModelProperty("流程实例ID")
private String instCode;

} }

Loading…
Cancel
Save