Fix-deduplication-logic
This commit is contained in:
parent
f3231395d1
commit
04bc3d96c9
@ -17,7 +17,7 @@ import java.util.Date;
|
|||||||
*/
|
*/
|
||||||
@SQLQuery(value = {
|
@SQLQuery(value = {
|
||||||
@SQL(view = "selectLastedComment"
|
@SQL(view = "selectLastedComment"
|
||||||
, sql = "SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY subsystem_name, parameter_name ORDER BY creation_date DESC) AS rn FROM data_change_comment WHERE param_detail_id IN (#paramIds) ) ranked WHERE rn = 1 ORDER BY subsystem_name, parameter_name")
|
, sql = "SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY param_detail_id ORDER BY creation_date DESC) AS rn FROM data_change_comment WHERE param_detail_id IN (#paramIds) ) ranked WHERE rn = 1 ORDER BY subsystem_name, parameter_name")
|
||||||
})
|
})
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
|||||||
@ -15,7 +15,7 @@ import com.xdap.self_development.domain.view.FlowNode;
|
|||||||
import com.xdap.self_development.exception.CommonException;
|
import com.xdap.self_development.exception.CommonException;
|
||||||
import com.xdap.self_development.service.*;
|
import com.xdap.self_development.service.*;
|
||||||
import com.xdap.self_development.utils.RedisLockUtils;
|
import com.xdap.self_development.utils.RedisLockUtils;
|
||||||
import groovy.util.logging.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.commons.lang3.ObjectUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
@ -173,6 +173,9 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
public void startActiviti(ApprovalNodeRequest approvalNodeRequest) {
|
public void startActiviti(ApprovalNodeRequest approvalNodeRequest) {
|
||||||
String processTitle = approvalNodeRequest.getProcessTitle();
|
String processTitle = approvalNodeRequest.getProcessTitle();
|
||||||
String userId = approvalNodeRequest.getUserId();
|
String userId = approvalNodeRequest.getUserId();
|
||||||
|
log.info("startActiviti 开始执行, modelId: {}, userId: {}, processTitle: {}",
|
||||||
|
approvalNodeRequest.getModelId(), userId, processTitle);
|
||||||
|
|
||||||
// 1. 获取第一个审批环节(按nodeOrder排序取最小)
|
// 1. 获取第一个审批环节(按nodeOrder排序取最小)
|
||||||
ApprovalNodeDTO firstNode = approvalNodeRequest.getNodeList().stream()
|
ApprovalNodeDTO firstNode = approvalNodeRequest.getNodeList().stream()
|
||||||
.min(Comparator.comparingInt(ApprovalNodeDTO::getNodeOrder))
|
.min(Comparator.comparingInt(ApprovalNodeDTO::getNodeOrder))
|
||||||
@ -182,9 +185,15 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
.eq("id", approvalNodeRequest.getModelId())
|
.eq("id", approvalNodeRequest.getModelId())
|
||||||
.doQueryFirst(DataEntryEngineModelPojo.class);
|
.doQueryFirst(DataEntryEngineModelPojo.class);
|
||||||
if (ObjectUtils.isEmpty(model)) {
|
if (ObjectUtils.isEmpty(model)) {
|
||||||
|
log.error("机型不存在, modelId: {}", approvalNodeRequest.getModelId());
|
||||||
throw new CommonException("机型不存在,请检查");
|
throw new CommonException("机型不存在,请检查");
|
||||||
}
|
}
|
||||||
|
log.info("查询机型成功, modelId: {}, modelName: {}, versionNumber: {}",
|
||||||
|
model.getId(), model.getModelName(), model.getVersionNumber());
|
||||||
|
|
||||||
// 检查当前参数是否全部填写完成
|
// 检查当前参数是否全部填写完成
|
||||||
|
log.info("查询待办任务: model_id={}, data_type={}, owner_id={}, process_title={}",
|
||||||
|
model.getId(), CurrentNodeEnum.REPAIR.getDesc(), userId, model.getModelName() + "-" + "填写参数任务");
|
||||||
TodoTaskPojo filledTodo = bd.getBusinessDatabase()
|
TodoTaskPojo filledTodo = bd.getBusinessDatabase()
|
||||||
.eq("model_id", model.getId())
|
.eq("model_id", model.getId())
|
||||||
.eq("data_type", CurrentNodeEnum.REPAIR.getDesc())
|
.eq("data_type", CurrentNodeEnum.REPAIR.getDesc())
|
||||||
@ -192,7 +201,11 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
.eq("owner_id", userId)
|
.eq("owner_id", userId)
|
||||||
.eq("process_title", model.getModelName() + "-" + "填写参数任务")
|
.eq("process_title", model.getModelName() + "-" + "填写参数任务")
|
||||||
.doQueryFirst(TodoTaskPojo.class);
|
.doQueryFirst(TodoTaskPojo.class);
|
||||||
|
log.info("查询待办任务结果: {}", filledTodo != null ? "找到待办" : "未找到待办");
|
||||||
|
|
||||||
if (filledTodo != null) {
|
if (filledTodo != null) {
|
||||||
|
log.info("查询待填写参数: engine_model_id={}, major_version={}, filled_by={}",
|
||||||
|
model.getId(), model.getVersionNumber(), userId);
|
||||||
List<EngineParamDetailPojo> toBeFilledParams = bd.getBusinessDatabase()
|
List<EngineParamDetailPojo> toBeFilledParams = bd.getBusinessDatabase()
|
||||||
.eq("engine_model_id", model.getId())
|
.eq("engine_model_id", model.getId())
|
||||||
.eq("major_version", model.getVersionNumber())
|
.eq("major_version", model.getVersionNumber())
|
||||||
@ -200,6 +213,8 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
.isNull("minor_version")
|
.isNull("minor_version")
|
||||||
.in("version_status", Arrays.asList(1, null))
|
.in("version_status", Arrays.asList(1, null))
|
||||||
.doQuery(EngineParamDetailPojo.class);
|
.doQuery(EngineParamDetailPojo.class);
|
||||||
|
log.info("查询待填写参数结果: 数量={}", toBeFilledParams.size());
|
||||||
|
|
||||||
if (!ObjectUtils.isEmpty(toBeFilledParams)) {
|
if (!ObjectUtils.isEmpty(toBeFilledParams)) {
|
||||||
StringBuilder errorMsg = new StringBuilder("填写人在当前机型的参数未全部填写完成,请检查:\n");
|
StringBuilder errorMsg = new StringBuilder("填写人在当前机型的参数未全部填写完成,请检查:\n");
|
||||||
for (EngineParamDetailPojo param : toBeFilledParams) {
|
for (EngineParamDetailPojo param : toBeFilledParams) {
|
||||||
@ -215,11 +230,14 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 查询机型最新版本的参数,过滤出操作为更新且由当前用户更新的参数
|
// 查询机型最新版本的参数,过滤出操作为更新且由当前用户更新的参数
|
||||||
|
log.info("查询用户更新的参数: engine_model_id={}, major_version={}, last_updated_by={}",
|
||||||
|
model.getId(), model.getVersionNumber(), userId);
|
||||||
List<EngineParamDetailPojo> paramList = bd.getBusinessDatabase()
|
List<EngineParamDetailPojo> paramList = bd.getBusinessDatabase()
|
||||||
.eq("engine_model_id", model.getId())
|
.eq("engine_model_id", model.getId())
|
||||||
.eq("major_version", model.getVersionNumber())
|
.eq("major_version", model.getVersionNumber())
|
||||||
.eq("last_updated_by", userId)
|
.eq("last_updated_by", userId)
|
||||||
.doQuery(EngineParamDetailPojo.class);
|
.doQuery(EngineParamDetailPojo.class);
|
||||||
|
log.info("查询用户更新的参数结果: 数量={}", paramList.size());
|
||||||
|
|
||||||
if (paramList.isEmpty()) {
|
if (paramList.isEmpty()) {
|
||||||
throw new CommonException("没有找到您需要填写的参数");
|
throw new CommonException("没有找到您需要填写的参数");
|
||||||
@ -232,6 +250,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
|
|
||||||
if (approvalNodeRequest.getFlowId() != null && !approvalNodeRequest.getFlowId().isEmpty()) {
|
if (approvalNodeRequest.getFlowId() != null && !approvalNodeRequest.getFlowId().isEmpty()) {
|
||||||
// 清除拒绝提醒待办
|
// 清除拒绝提醒待办
|
||||||
|
log.info("清除拒绝提醒待办: document_no={}, data_type=数据拒绝", approvalNodeRequest.getFlowId());
|
||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
.eq("document_no", approvalNodeRequest.getFlowId())
|
.eq("document_no", approvalNodeRequest.getFlowId())
|
||||||
.eq("data_type", "数据拒绝")
|
.eq("data_type", "数据拒绝")
|
||||||
@ -258,6 +277,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
|
|
||||||
engineReviewListPojo.setReturnNum(0);
|
engineReviewListPojo.setReturnNum(0);
|
||||||
engineReviewListPojo.setPreNode(-1);
|
engineReviewListPojo.setPreNode(-1);
|
||||||
|
log.info("插入审批记录: approvalId={}, modelId={}, statusCode={}", approvalId, model.getId(), ParamValueVersionEnum.UNDER.getCode());
|
||||||
bd.getBusinessDatabase().doInsert(engineReviewListPojo);
|
bd.getBusinessDatabase().doInsert(engineReviewListPojo);
|
||||||
|
|
||||||
//分发待办
|
//分发待办
|
||||||
@ -279,6 +299,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
todoTaskPojo.setIsDelete(0);
|
todoTaskPojo.setIsDelete(0);
|
||||||
list.add(todoTaskPojo);
|
list.add(todoTaskPojo);
|
||||||
}
|
}
|
||||||
|
log.info("批量插入待办任务: 数量={}", list.size());
|
||||||
bd.getBusinessDatabase().doBatchInsert(list);
|
bd.getBusinessDatabase().doBatchInsert(list);
|
||||||
|
|
||||||
//创建审批发起
|
//创建审批发起
|
||||||
@ -294,10 +315,12 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
initiatedTaskPojo.setCreationDate(engineReviewListPojo.getCreationDate());
|
initiatedTaskPojo.setCreationDate(engineReviewListPojo.getCreationDate());
|
||||||
initiatedTaskPojo.setIsDelete(0);
|
initiatedTaskPojo.setIsDelete(0);
|
||||||
initiatedTaskPojo.setEnableReturn(1);
|
initiatedTaskPojo.setEnableReturn(1);
|
||||||
|
log.info("插入发起任务: approvalId={}", approvalId);
|
||||||
bd.getBusinessDatabase().doInsert(initiatedTaskPojo);
|
bd.getBusinessDatabase().doInsert(initiatedTaskPojo);
|
||||||
|
|
||||||
//将参数绑定到该机型审批流程中
|
//将参数绑定到该机型审批流程中
|
||||||
List<String> collected = paramList.stream().map(EngineParamDetailPojo::getId).collect(Collectors.toList());
|
List<String> collected = paramList.stream().map(EngineParamDetailPojo::getId).collect(Collectors.toList());
|
||||||
|
log.info("更新参数状态: approvalId={}, 参数数量={}", approvalId, collected.size());
|
||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
.update("version_status", ParamValueVersionEnum.UNDER.getCode()) // 更新版本状态为审核中
|
.update("version_status", ParamValueVersionEnum.UNDER.getCode()) // 更新版本状态为审核中
|
||||||
.update("approval_id", approvalId) // 关联审批ID
|
.update("approval_id", approvalId) // 关联审批ID
|
||||||
@ -327,9 +350,11 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
approvalConfigs.add(config);
|
approvalConfigs.add(config);
|
||||||
b = false;
|
b = false;
|
||||||
}
|
}
|
||||||
|
log.info("批量插入审批配置: 数量={}", approvalConfigs.size());
|
||||||
bd.getBusinessDatabase().doBatchInsert(approvalConfigs);
|
bd.getBusinessDatabase().doBatchInsert(approvalConfigs);
|
||||||
|
|
||||||
//记录审批提交操作
|
//记录审批提交操作
|
||||||
|
log.info("插入审批记录: approvalId={}, 操作=发起审批", approvalId);
|
||||||
bd.getBusinessDatabase().doInsert(
|
bd.getBusinessDatabase().doInsert(
|
||||||
new ParamApprovalRecordPojo(
|
new ParamApprovalRecordPojo(
|
||||||
approvalId,
|
approvalId,
|
||||||
@ -345,14 +370,18 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
);
|
);
|
||||||
|
|
||||||
// 参数发起审批后,删除填写人的待办
|
// 参数发起审批后,删除填写人的待办
|
||||||
|
log.info("查询用户待办: owner_id={}, model_id={}, data_type=数据维护", userId, model.getId());
|
||||||
TodoTaskPojo todoTaskPojo = bd.getBusinessDatabase()
|
TodoTaskPojo todoTaskPojo = bd.getBusinessDatabase()
|
||||||
.eq("owner_id", userId)
|
.eq("owner_id", userId)
|
||||||
.eq("model_id", model.getId())
|
.eq("model_id", model.getId())
|
||||||
.eq("data_type", "数据维护")
|
.eq("data_type", "数据维护")
|
||||||
.eq("is_delete", 0)
|
.eq("is_delete", 0)
|
||||||
.doQueryFirst(TodoTaskPojo.class);
|
.doQueryFirst(TodoTaskPojo.class);
|
||||||
|
log.info("查询用户待办结果: {}", todoTaskPojo != null ? "找到待办" : "未找到待办");
|
||||||
|
|
||||||
if (todoTaskPojo != null) {
|
if (todoTaskPojo != null) {
|
||||||
// 修改待办和发起的任务状态
|
// 修改待办和发起的任务状态
|
||||||
|
log.info("删除待办: document_no={}", todoTaskPojo.getDocumentNo());
|
||||||
bd.getBusinessDatabase()
|
bd.getBusinessDatabase()
|
||||||
.update("is_delete", 1)
|
.update("is_delete", 1)
|
||||||
.update("current_node", "已维护")
|
.update("current_node", "已维护")
|
||||||
@ -369,6 +398,7 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
completedTaskPojo.setCreationDate(engineReviewListPojo.getCreationDate());
|
completedTaskPojo.setCreationDate(engineReviewListPojo.getCreationDate());
|
||||||
completedTaskPojo.setIsDelete(0);
|
completedTaskPojo.setIsDelete(0);
|
||||||
completedTaskPojo.setCurrentNode("已维护");
|
completedTaskPojo.setCurrentNode("已维护");
|
||||||
|
log.info("插入已办任务: document_no={}", todoTaskPojo.getDocumentNo());
|
||||||
bd.getBusinessDatabase().doInsert(completedTaskPojo);
|
bd.getBusinessDatabase().doInsert(completedTaskPojo);
|
||||||
|
|
||||||
InitiatedTaskPojo initiatedTask = new InitiatedTaskPojo();
|
InitiatedTaskPojo initiatedTask = new InitiatedTaskPojo();
|
||||||
@ -379,8 +409,10 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
initiatedTask.setCreationDate(engineReviewListPojo.getCreationDate());
|
initiatedTask.setCreationDate(engineReviewListPojo.getCreationDate());
|
||||||
initiatedTask.setIsDelete(0);
|
initiatedTask.setIsDelete(0);
|
||||||
initiatedTask.setCurrentNode("已维护");
|
initiatedTask.setCurrentNode("已维护");
|
||||||
|
log.info("插入发起任务: document_no={}", todoTaskPojo.getDocumentNo());
|
||||||
bd.getBusinessDatabase().doInsert(initiatedTask);
|
bd.getBusinessDatabase().doInsert(initiatedTask);
|
||||||
}
|
}
|
||||||
|
log.info("startActiviti 执行完成");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -907,6 +939,70 @@ public class ActivitiProcessServiceImpl implements ActivitiProcessService {
|
|||||||
.doUpdate(EngineReviewListPojo.class);
|
.doUpdate(EngineReviewListPojo.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 清理旧的 data_change_comment 数据并重新生成
|
||||||
|
List<EngineParamDetailPojo> paramDetailPojos = bd.getBusinessDatabase()
|
||||||
|
.eq("approval_id", reviewListPojo.getId())
|
||||||
|
.doQuery(EngineParamDetailPojo.class);
|
||||||
|
|
||||||
|
if (!ObjectUtils.isEmpty(paramDetailPojos)) {
|
||||||
|
Set<String> paramDetailIds = paramDetailPojos.stream()
|
||||||
|
.map(EngineParamDetailPojo::getId)
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
// 删除旧的变更说明数据
|
||||||
|
bd.getBusinessDatabase()
|
||||||
|
.in("param_detail_id", paramDetailIds)
|
||||||
|
.doDelete(DataChangeCommentPojo.class);
|
||||||
|
|
||||||
|
// 重新生成变更说明数据
|
||||||
|
List<DataChangeCommentPojo> newDataChangeComments = new ArrayList<>();
|
||||||
|
for (EngineParamDetailPojo paramDetail : paramDetailPojos) {
|
||||||
|
String parameterId = paramDetail.getParameterId();
|
||||||
|
List<ParameterPojo> parameters = bd.getBusinessDatabase()
|
||||||
|
.eq("id", parameterId)
|
||||||
|
.doQuery(ParameterPojo.class);
|
||||||
|
|
||||||
|
ParameterPojo parameter = ObjectUtils.isEmpty(parameters) ? null : parameters.get(0);
|
||||||
|
|
||||||
|
String com = "";
|
||||||
|
String operation = paramDetail.getOperation();
|
||||||
|
if (ParamOperationEnum.UPDATE.toString().equals(operation)) {
|
||||||
|
String parameterValue = StringUtils.isEmpty(paramDetail.getParameterValue()) ?
|
||||||
|
"" : paramDetail.getParameterValue();
|
||||||
|
if (ObjectUtils.isEmpty(parameterValue)) {
|
||||||
|
com = "填写为:" + paramDetail.getMinorVersion();
|
||||||
|
} else {
|
||||||
|
com = "修改:" + parameterValue + "改为" + paramDetail.getMinorVersion();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ParamOperationEnum.INSERT.toString().equals(operation)) {
|
||||||
|
com = "新增";
|
||||||
|
}
|
||||||
|
if (ParamOperationEnum.DELETE.toString().equals(operation)) {
|
||||||
|
com = "删除";
|
||||||
|
}
|
||||||
|
|
||||||
|
DataChangeCommentPojo dataChangeCommentPojo = new DataChangeCommentPojo();
|
||||||
|
BeanUtils.copyProperties(paramDetail, dataChangeCommentPojo, "id");
|
||||||
|
if (parameter != null) {
|
||||||
|
dataChangeCommentPojo.setPartsName(parameter.getPartsName());
|
||||||
|
dataChangeCommentPojo.setUnit(parameter.getUnit());
|
||||||
|
}
|
||||||
|
dataChangeCommentPojo.setParamDetailId(paramDetail.getId());
|
||||||
|
dataChangeCommentPojo.setChangeComment(com);
|
||||||
|
dataChangeCommentPojo.setParameterValue(paramDetail.getMinorVersion());
|
||||||
|
dataChangeCommentPojo.setCreatedBy(userId);
|
||||||
|
dataChangeCommentPojo.setCreationDate(Timestamp.valueOf(LocalDateTime.now()));
|
||||||
|
|
||||||
|
newDataChangeComments.add(dataChangeCommentPojo);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量插入新的变更说明数据
|
||||||
|
if (!ObjectUtils.isEmpty(newDataChangeComments)) {
|
||||||
|
bd.getBusinessDatabase().doBatchInsert(newDataChangeComments);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 添加新待办
|
// 添加新待办
|
||||||
myself.addNodeTodo(
|
myself.addNodeTodo(
|
||||||
reviewListPojo,
|
reviewListPojo,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user