diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/EightworkInfoSaveDraftExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/EightworkInfoSaveDraftExe.java index bf28bca..7cb35b7 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/EightworkInfoSaveDraftExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/EightworkInfoSaveDraftExe.java @@ -29,6 +29,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -201,6 +202,7 @@ public class EightworkInfoSaveDraftExe { AuthContext.getUserId(), AuthContext.getName() ); + taskLog.setSignTime(LocalDateTime.now()); // 暂存时申请步骤状态为进行中 taskLog.setStatus(DRAFT_STATUS); diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogAddExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogAddExe.java index f41f37d..6a65bb0 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogAddExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogAddExe.java @@ -33,6 +33,7 @@ import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; @@ -280,6 +281,7 @@ public class TaskLogAddExe { AuthContext.getUserId(), AuthContext.getName() ); + taskLogDO.setSignTime(LocalDateTime.now()); log.info("第一步已设置申请人: stepName={}", flow.getStepName()); } diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogUpdateExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogUpdateExe.java index ea6409b..d5268df 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/TaskLogUpdateExe.java @@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jjb.saas.message.client.message.facede.MessageFacade; import com.jjb.saas.message.client.message.request.MessageSendCmd; import com.jjb.saas.message.client.message.request.MessageTargetCmd; +import com.zcloud.eightwork.command.convertor.TaskLogCoConvertor; import com.zcloud.eightwork.command.convertor.TaskLogConvertUtil; import com.zcloud.eightwork.domain.config.MessageConfig; import com.zcloud.eightwork.domain.gateway.EightworkSupplementaryInfoGateway; @@ -46,6 +47,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -84,7 +86,7 @@ public class TaskLogUpdateExe { /** * PC端待办标识 */ - private static final Integer PC_FLAG = 1; + private static final Integer PC_FLAG = 0; /** * APP端待办标识 */ @@ -105,10 +107,15 @@ public class TaskLogUpdateExe { * 打回状态 */ private static final Integer REJECTED_STATUS = 2; + /** + * 延时监火使用,1:正常流程,2:任务转发 + */ + private static final Integer STEP_TYPE = 2; private final TaskLogGateway taskLogGateway; private final TaskFlowGateway taskFlowGateway; private final TaskLogRepository taskLogRepository; + private final TaskLogCoConvertor taskLogCoConvertor; private final TaskLogArchiveRepository taskLogArchiveRepository; private final MeasuresLogsRepository measuresLogsRepository; private final MeasuresLogsArchiveRepository measuresLogsArchiveRepository; @@ -146,6 +153,7 @@ public class TaskLogUpdateExe { * 强制终止状态码 */ private static final Integer FORCE_TERMINATE_STATUS = 998; + private static final Integer REJECT_STEP_STATUS = 997; /** * 锁定标识:锁定不可撤回 */ @@ -180,6 +188,13 @@ public class TaskLogUpdateExe { return; } + if (REJECT_STEP_STATUS.equals(cmd.getStatus())) { + handleRejectStep(cmd); + log.info("打回到某一步步骤,重新处理步骤流转: workId={}, stepId={}, status={}", + cmd.getWorkId(), cmd.getStepId(), cmd.getStatus()); + + return; + } List logs = taskLogGateway.listAllByWorkId(cmd.getWorkId()); List actionLogs = new ArrayList<>(); @@ -241,6 +256,8 @@ public class TaskLogUpdateExe { log.info("步骤流转完成: workId={}, currentStep={}", cmd.getWorkId(), currentLog.getStepName()); } + + /** * 查找当前处理的步骤日志 */ @@ -266,6 +283,7 @@ public class TaskLogUpdateExe { // 签字步骤,保存签字图片 if (SIGN_STEP_FLAG.equals(currentLog.getSignStepFlag())) { currentLog.setSignPath(cmd.getSignPath()); + currentLog.setSignTime(LocalDateTime.now()); } // 定位步骤,保存经纬度 @@ -378,6 +396,7 @@ public class TaskLogUpdateExe { // 修改当前步骤状态为已完成 currentLog.setStatus(TaskLogStatus.APPROVED.getCode()); + currentLog.setSignTime(LocalDateTime.now()); addActionLog(actionLogs, currentLog); } @@ -408,6 +427,7 @@ public class TaskLogUpdateExe { return d; }).collect(Collectors.toList())); } else { + measuresLogsRepository.deleteByWorkId(currentLog.getWorkId()); measuresLogsRepository.saveBatch(measuresList.stream().map(item -> { MeasuresLogsDO d = new MeasuresLogsDO(); BeanUtils.copyProperties(item, d, "id"); @@ -444,6 +464,7 @@ public class TaskLogUpdateExe { // 持续步骤状态保持 IN_PROGRESS,不随审批流转 currentLog.setStatus(TaskLogStatus.IN_PROGRESS.getCode()); + currentLog.setSignTime(LocalDateTime.now()); // 添加到待更新列表 addActionLog(actionLogs, currentLog); @@ -884,7 +905,8 @@ public class TaskLogUpdateExe { .orElseThrow(() -> new BizException("未找到申请步骤配置")); applyFlow.setStatus(TaskLogStatus.IN_PROGRESS.getCode()); addActionLog(actionLogs, applyFlow); - + //将分支步骤改为已打回 + handleBranchStepsForReject(allLogs, actionLogs); // 更新本次步骤变化 taskLogRepository.updateBatchById(actionLogs); @@ -928,20 +950,357 @@ public class TaskLogUpdateExe { messageNotice(branchStep, currentLog); log.info("工作流已打回到申请步骤: workId={}", cmd.getWorkId()); } + /** + * 处理打回时的分支步骤状态 + * 将所有已完成的分支步骤改为打回状态 + */ + private void handleBranchStepsForReject(List allLogs, List actionLogs) { + log.info("开始处理打回时的分支步骤状态"); + + // 收集所有分支开始节点 + List branchStartNodes = allLogs.stream() + .filter(log -> BranchFlag.BRANCH_START.getCode().equals(log.getBranchFlag())) + .collect(Collectors.toList()); + + if (branchStartNodes.isEmpty()) { + log.info("没有分支流程需要处理"); + return; + } + + for (TaskLogE branchStartNode : branchStartNodes) { + Long branchStepId = branchStartNode.getBranchStep(); + if (branchStepId == null) { + log.warn("分支开始节点 {} 没有配置分支步骤ID", branchStartNode.getStepName()); + continue; + } + + // 查找对应的分支步骤 + TaskLogE branchStep = allLogs.stream() + .filter(log -> log.getStepId().equals(branchStepId)) + .findFirst() + .orElse(null); + + if (branchStep == null) { + log.warn("未找到分支步骤: branchStepId={}", branchStepId); + continue; + } + + // 如果分支步骤进行中),将其改为打回状态 + if (TaskLogStatus.IN_PROGRESS.equalsCode(branchStep.getStatus())) { + Integer oldStatus = branchStep.getStatus(); + branchStep.setStatus(TaskLogStatus.REJECTED.getCode()); + addActionLog(actionLogs, branchStep); + log.info("将分支步骤 {} (stepId={}) 状态从 {} 改为打回(2)", + branchStep.getStepName(), branchStepId, oldStatus); + // 7. 分支发送待办完成事件 + sendTodoCompleteEvent(branchStep.getId()); + } + } + + log.info("分支步骤打回处理完成"); + } + + private void handleRejectStep(TaskLogNextCmd cmd) { + log.info("开始处理打回到某一步: workId={}, stepId={}", cmd.getWorkId(), cmd.getStepId()); + + List allLogs = taskLogGateway.listAllByWorkId(cmd.getWorkId()); + TaskLogE currentLog = findCurrentLog(allLogs, cmd.getId()); + if (currentLog == null) { + throw new BizException("未找到对应的步骤记录"); + } + Integer rejectStepId = currentLog.getRejectStepId(); + if(rejectStepId==null){ + log.warn("未找到对应的步骤记录.workId={}, stepId={}", cmd.getWorkId(), cmd.getStepId()); + return; + } + EightworkInfoDO infoDO = eightworkInfoRepository.getOne( + new LambdaQueryWrapper() + .eq(EightworkInfoDO::getWorkId, cmd.getWorkId()) + ); + if (infoDO == null) { + log.warn("未找到作业信息: workId={}", cmd.getWorkId()); + return; + } + // 1. 归档当前的 task_log 记录(除了申请步骤) + archiveTaskLogs(allLogs); + + // 2. 删除的所有 task_log + deleteTaskLogsExceptFirst(cmd.getWorkId()); + + + List taskLogs = taskLogCoConvertor.converEsToDOs(allLogs); + // 3. 设置所有步骤的id + for (TaskLogDO taskLog : taskLogs) { + taskLog.setId(null); + taskLog.setTaskLogId(Tools.get32UUID()); + } + //4. 将指定步骤之后的步骤设置为未开始 + resetStepsAfterTargetStep(taskLogs, rejectStepId); + + // 5. 批量保存 + taskLogRepository.saveBatch(taskLogs); + + + + + // 6. 发送待办完成事件 + sendTodoCompleteEvent(currentLog.getId()); + TaskLogE branchStep = new TaskLogE(); + branchStep.setActUser(currentLog.getActUser()); + branchStep.setStatus(TaskLogStatus.REJECTED.getCode()); + branchStep.setStepName(currentLog.getStepName()); + messageNotice(branchStep, currentLog); + log.info("工作流已打回到指定步骤: workId={},step={}", cmd.getWorkId(),rejectStepId); + + //获取目标步骤 + // 6. 从新保存的数据中获取目标步骤(用于发送待办和消息) + TaskLogDO targetTaskLogDO = taskLogs.stream() + .filter(log -> log.getStepId().equals(rejectStepId.longValue())) + .findFirst() + .orElse(null); + + + //发送待办和消息 + // 发送待办通知 + log.info("发送退回步骤待办通知"); + if(targetTaskLogDO!=null){ + log.info("发送待办通知workId={},workType={},数据:{}",currentLog.getWorkId(),currentLog.getWorkType(),JSONUtil.toJsonStr(targetTaskLogDO)); + TaskLogE targetTaskLogE = new TaskLogE(); + BeanUtils.copyProperties(targetTaskLogDO, targetTaskLogE); + sendTodoAddEvent(getWorkId(currentLog.getWorkId()), targetTaskLogE, currentLog.getWorkType()); + } else { + log.warn("未找到目标步骤,无法发送待办通知: rejectStepId={}", rejectStepId); + } + log.info("工作流已打回到指定步骤: workId={}, step={}", cmd.getWorkId(), rejectStepId); + + } + /** + * 将指定步骤ID之后的所有步骤重置状态 + * - targetStepId 本身设置为 0(进行中) + * - targetStepId 之后的步骤,如果状态是 1(通过),则改为 -99(未开始) + * - 只修改状态字段,不清空其他数据 + * + * @param taskLogs 所有任务日志列表 + * @param targetStepId 目标步骤ID + */ + private void resetStepsAfterTargetStep(List taskLogs, Integer targetStepId) { + if (targetStepId == null) { + log.warn("目标步骤ID为空,跳过重置后续步骤"); + return; + } + + log.info("开始重置步骤状态: targetStepId={}", targetStepId); + + // 构建 stepId -> TaskLogDO 的映射,方便快速查找 + Map stepMap = taskLogs.stream() + .collect(Collectors.toMap(TaskLogDO::getStepId, log -> log, (v1, v2) -> v1)); + + // 1. 将目标步骤设置为进行中 + TaskLogDO targetStep = stepMap.get(targetStepId.longValue()); + if (targetStep != null) { + Integer oldStatus = targetStep.getStatus(); + targetStep.setStatus(DRAFT_STATUS); // 0 进行中/暂存状态 + log.info("将目标步骤 {} (stepId={}) 状态从 {} 改为 {}", + targetStep.getStepName(), targetStepId, oldStatus, DRAFT_STATUS); + } else { + log.warn("未找到目标步骤: stepId={}", targetStepId); + } + // 2. 收集所有分支开始节点及其对应的分支步骤 + List branchInfos = collectBranchInfos(taskLogs, stepMap); + // 2. 从目标步骤开始,沿着 nextStep 链路遍历,将通过的步骤改为未开始 + Long currentStepId = targetStepId.longValue(); + int resetCount = 0; + Set visitedSteps = new HashSet<>(); + visitedSteps.add(currentStepId); + while (currentStepId != null) { + TaskLogDO currentStep = stepMap.get(currentStepId); + + if (currentStep == null) { + log.warn("未找到步骤: stepId={}", currentStepId); + break; + } + + // 获取下一步骤ID + Long nextStepId = currentStep.getNextStep(); + + // 如果下一步骤存在且不是归档状态(999) + if (nextStepId != null && !nextStepId.equals(TaskLogStatus.ARCHIVED.getCode().longValue())) { + TaskLogDO nextStep = stepMap.get(nextStepId); + + if (nextStep != null) { + // 只将通过状态(1)的步骤改为未开始(-99) + if (TaskLogStatus.APPROVED.equalsCode(nextStep.getStatus())||TaskLogStatus.IN_PROGRESS.equalsCode(nextStep.getStatus())) { + Integer oldStatus = nextStep.getStatus(); + nextStep.setStatus(TaskLogStatus.NOT_STARTED.getCode()); + resetCount++; + log.info("将步骤 {} (stepId={}) 状态从 {} 改为 {}", + nextStep.getStepName(), nextStepId, oldStatus, TaskLogStatus.NOT_STARTED.getCode()); + } + /* //如果有分支开始,将分支步骤设置为进行中 + if (BranchFlag.getByCode(nextStep.getBranchFlag()).isBranchStart()) { + TaskLogDO branchStep = stepMap.get(nextStep.getBranchStep()); + + }*/ + } + + } + + // 移动到下一步 + currentStepId = nextStepId; + } + log.info("准备调用 handleBranchStepsStatus,branchInfos 数量: {}", branchInfos.size()); + // 4. 处理分支流程的状态设置 + handleBranchStepsStatus(targetStepId, branchInfos, stepMap, visitedSteps); + log.info("状态重置完成: 目标步骤设置为进行中, 共重置 {} 个已通过步骤为未开始", resetCount); + } + /** + * 分支信息内部类 + */ + private static class BranchInfo { + TaskLogDO branchStartNode; // 分支开始节点 + Long branchStepId; // 分支步骤ID + + BranchInfo(TaskLogDO branchStartNode, Long branchStepId) { + this.branchStartNode = branchStartNode; + this.branchStepId = branchStepId; + } + } + + /** + * 收集所有分支开始节点及其对应的分支步骤 + */ + private List collectBranchInfos(List taskLogs, Map stepMap) { + List branchInfos = new ArrayList<>(); + + for (TaskLogDO taskLogDO : taskLogs) { + // 找到所有分支开始节点(branchFlag == 1) + if (BranchFlag.BRANCH_START.getCode().equals(taskLogDO.getBranchFlag())) { + Long branchStepId = taskLogDO.getBranchStep() != null ? taskLogDO.getBranchStep().longValue() : null; + if (branchStepId != null) { + branchInfos.add(new BranchInfo(taskLogDO, branchStepId)); + log.info("发现分支开始节点: branchStartStepId={}, branchStepId={}, branchStartNodeName={}", + taskLogDO.getStepId(), branchStepId, taskLogDO.getStepName()); + } + } + } + + return branchInfos; + } + + /** + * 处理分支步骤的状态设置 + * - 如果 targetStepId 在分支开始之前,将分支步骤设置为进行中(0) + * - 如果 targetStepId 在分支开始之后,将分支步骤设置为未开始(-99) + */ + private void handleBranchStepsStatus(Integer targetStepId, List branchInfos, + Map stepMap, Set visitedSteps) { + if (branchInfos.isEmpty()) { + log.info("没有分支流程需要处理"); + return; + } + + for (BranchInfo branchInfo : branchInfos) { + //只处理已完成和进行中的 + + TaskLogDO branchStartNode = branchInfo.branchStartNode; + Long branchStepId = branchInfo.branchStepId; + if (!TaskLogStatus.APPROVED.equalsCode(branchStartNode.getStatus())&&!TaskLogStatus.IN_PROGRESS.equalsCode(branchStartNode.getStatus())) { + log.warn("分支节点 {} (stepId={}) 状态不是通过或进行中,无法处理",branchStepId); + continue; + } + + // 判断 targetStepId 是否在分支开始节点之前 + boolean isBeforeBranchStart = isStepBeforeBranchStart(targetStepId.longValue(), + branchStartNode.getStepId(), stepMap); + log.info("判断 targetStepId 是否在分支开始节点之前: targetStepId={}, branchStartNodeId={}, isBeforeBranchStart={}", + targetStepId, branchStartNode.getStepId(), isBeforeBranchStart); + + TaskLogDO branchStep = stepMap.get(branchStepId); + if (branchStep == null) { + log.warn("未找到分支步骤: branchStepId={}", branchStepId); + continue; + } + + if (isBeforeBranchStart) { + // targetStepId 在分支开始之后或就是分支开始,将分支步骤设置为未开始 + if (!TaskLogStatus.NOT_STARTED.equalsCode(branchStep.getStatus())&& !TaskLogStatus.SKIPPED.equalsCode(branchStep.getStatus())) { + Integer oldStatus = branchStep.getStatus(); + branchStep.setStatus(TaskLogStatus.NOT_STARTED.getCode()); // -99 未开始 + log.info("分支步骤 {} (stepId={}) 在目标步骤之前,状态从 {} 改为未开始(-99)", + branchStep.getStepName(), branchStepId, oldStatus); + } + } else { + // targetStepId 在分支开始之前,将分支步骤设置为进行中 + if (!TaskLogStatus.IN_PROGRESS.equalsCode(branchStep.getStatus()) && !TaskLogStatus.SKIPPED.equalsCode(branchStep.getStatus())) { + Integer oldStatus = branchStep.getStatus(); + branchStep.setStatus(DRAFT_STATUS); // 0 进行中 + log.info("分支步骤 {} (stepId={}) 在目标步骤之后或同时,状态从 {} 改为进行中(0)", + branchStep.getStepName(), branchStepId, oldStatus); + } + + } + } + } + + /** + * 判断指定步骤是否在分支开始节点之前 + * 通过遍历主流程链路来判断 + */ + private boolean isStepBeforeBranchStart(Long targetStepId, Long branchStartStepId, + Map stepMap) { + if (targetStepId.equals(branchStartStepId)) { + // 目标步骤就是分支开始节点,视为"在分支开始之后" + return false; + } + + // 从目标步骤开始遍历,看是否能到达分支开始节点 + Long currentStepId = targetStepId; + Set visited = new HashSet<>(); + visited.add(currentStepId); + + while (currentStepId != null) { + TaskLogDO currentStep = stepMap.get(currentStepId); + if (currentStep == null) { + log.warn("未找到步骤: stepId={}", currentStepId); + break; + } + + Long nextStepId = currentStep.getNextStep(); + + // 如果下一步是分支开始节点,说明 targetStepId 在分支开始之前 + if (branchStartStepId.equals(nextStepId)) { + log.info("目标步骤 {} (stepId={}) 在分支开始节点之前", currentStep.getStepName(), currentStepId); + return true; + } + + // 防止循环 + if (nextStepId == null || visited.contains(nextStepId)) { + log.info("无法到达分支开始节点,目标步骤 {} (stepId={}) 在分支开始之后或同时", + currentStep.getStepName(), currentStepId); + break; + } + + visited.add(nextStepId); + currentStepId = nextStepId; + } + + // 无法到达分支开始节点,说明 targetStepId 在分支开始之后 + return false; + } /** * 归档 task_log 记录到 task_log_archive 表 */ private void archiveTaskLogs(List allLogs) { List archiveList = new ArrayList<>(); - + log.info("开始归档 {} 条 task_log 记录", allLogs.size()); for (TaskLogE log : allLogs) { - // 只归档已处理的记录(状态不是未开始) - if (!TaskLogStatus.NOT_STARTED.equalsCode(log.getStatus())) { + // 只归档已处理的记录(状态不是未开始),暂时全部归档 +// if (!TaskLogStatus.NOT_STARTED.equalsCode(log.getStatus())) { TaskLogArchiveDO archiveDO = new TaskLogArchiveDO(); - BeanUtils.copyProperties(log, archiveDO, "id"); + BeanUtils.copyProperties(log, archiveDO, "id", "update_id", "update_time"); archiveList.add(archiveDO); - } +// } } if (!archiveList.isEmpty()) { @@ -1203,15 +1562,21 @@ public class TaskLogUpdateExe { addActionLog(actionLogs, signStepLog); log.info("步骤设置为跳过: {}", signStepLog.getStepName()); } else { - signStepLog.setSign( - signInfo.getActorField(), - signInfo.getActUserDepartment(), - signInfo.getActUserDepartmentName(), - signInfo.getActUser(), - signInfo.getActUserName() - ); - addActionLog(actionLogs, signStepLog); - log.info("已设置签字人: step={}, user={}", signStepLog.getStepName(), signInfo.getActUserName()); + Integer stepType = signInfo.getStepType(); + if (!STEP_TYPE.equals(stepType)) { + signStepLog.setSign( + signInfo.getActorField(), + signInfo.getActUserDepartment(), + signInfo.getActUserDepartmentName(), + signInfo.getActUser(), + signInfo.getActUserName() + ); + addActionLog(actionLogs, signStepLog); + log.info("已设置签字人: step={}, user={}", signStepLog.getStepName(), signInfo.getActUserName()); + }else{ + log.info("延时监火已跳过设置多人签字人: stepName={}", signStepLog.getStepName()); + } + } } @@ -1257,15 +1622,21 @@ public class TaskLogUpdateExe { addActionLog(actionLogs, taskLogE); log.info("多人签字步骤记录设置为跳过: stepName={}, recordId={}", taskLogE.getStepName(), taskLogE.getId()); } else { - taskLogE.setSign( - signInfo.getActorField(), - signInfo.getActUserDepartment(), - signInfo.getActUserDepartmentName(), - signInfo.getActUser(), - signInfo.getActUserName() - ); - addActionLog(actionLogs, taskLogE); - log.info("已设置多人签字人: stepName={}, userName={}", taskLogE.getStepName(), signInfo.getActUserName()); + Integer stepType = signInfo.getStepType(); + if (!STEP_TYPE.equals(stepType)) { + taskLogE.setSign( + signInfo.getActorField(), + signInfo.getActUserDepartment(), + signInfo.getActUserDepartmentName(), + signInfo.getActUser(), + signInfo.getActUserName() + ); + addActionLog(actionLogs, taskLogE); + log.info("已设置多人签字人: stepName={}, userName={}", taskLogE.getStepName(), signInfo.getActUserName()); + }else{ + log.info("延时监火已跳过设置多人签字人: stepName={}", taskLogE.getStepName()); + } + } } } @@ -1310,6 +1681,7 @@ public class TaskLogUpdateExe { */ private void sendTodoCompleteEvent(Long taskLogId) { try { + log.info("发送待办完成事件: taskLogId={}", taskLogId); TodoListCompleteEvent event = new TodoListCompleteEvent(); event.setForeignSubsidiaryKey(taskLogId); todoListEventPusherUtil.sendMessageCompleteEvent(event); @@ -1478,7 +1850,7 @@ public class TaskLogUpdateExe { * 批量更新 eightworkInfo.info 字段 * 只更新本次变化的步骤,减少数据库操作 */ - private void updateEightworkInfo(String workId, List actionLogs) { + /* private void updateEightworkInfo(String workId, List actionLogs) { if (actionLogs == null || actionLogs.isEmpty()) { return; } @@ -1546,8 +1918,36 @@ public class TaskLogUpdateExe { stepInfo.put("otherParams", logDO.getOtherParams()); } } + // 只处理signInfo.getStepId() =3的数据,其他的直接put替换,如果对应的infoJson.get(baseKey) 存在,则替换,baseKey 只有step_3和step_3-1 + String baseKey = "step_" + logDO.getStepId(); + if (logDO.getMultipleFlag() != null && logDO.getMultipleFlag() == 1) { + // 多人签字步骤:先删除该步骤的所有旧记录(step_3, step_3_1, step_3_2...) + removeStepKeys(infoJson, baseKey); - infoJson.put("step_" + logDO.getStepId(), stepInfo); + // 然后查找下一个可用的序号并添加 + if (infoJson.containsKey(baseKey)) { + // 如果基础key已存在(理论上不会,因为刚删除了) + int suffix = 1; + String newKey; + do { + newKey = baseKey + "_" + suffix; + suffix++; + } while (infoJson.containsKey(newKey)); + + infoJson.put(newKey, stepInfo); + log.info("多人签字步骤 {} 追加为新键: {}", logDO.getStepId(), newKey); + } else { + // 直接使用基础key + infoJson.put(baseKey, stepInfo); + log.info("多人签字步骤添加新记录: {}", baseKey); + } + }else{ + // 非多人签字步骤:直接替换(put) + infoJson.put(baseKey, stepInfo); + log.info("更新步骤: {}", baseKey); + } + + // infoJson.put("step_" + logDO.getStepId(), stepInfo); } // 更新到数据库 @@ -1555,6 +1955,214 @@ public class TaskLogUpdateExe { eightworkInfoRepository.updateById(infoDO); log.info("已批量更新步骤 info: workId={}, count={}", workId, actionLogs.size()); + }*/ + private void updateEightworkInfo(String workId, List actionLogs) { + if (actionLogs == null || actionLogs.isEmpty()) { + return; + } + + EightworkInfoDO infoDO = eightworkInfoRepository.getOne( + new LambdaQueryWrapper() + .eq(EightworkInfoDO::getWorkId, workId) + ); + + if (infoDO == null) { + log.warn("未找到作业信息: workId={}", workId); + return; + } + + // 解析现有的 info + JSONObject infoJson; + if (StringUtils.isNotBlank(infoDO.getInfo())) { + try { + infoJson = JSONObject.parseObject(infoDO.getInfo()); + } catch (Exception e) { + log.warn("解析 info 失败,使用空对象: workId={}", workId, e); + infoJson = new JSONObject(); + } + } else { + infoJson = new JSONObject(); + } + + // 循环更新本次变化的步骤 + for (TaskLogDO logDO : actionLogs) { + String baseKey = "step_" + logDO.getStepId(); + + // 判断是否为多人签字步骤 + if (logDO.getMultipleFlag() != null && logDO.getMultipleFlag() == 1) { + // 多人签字步骤:根据 actUser 查找并更新,或追加新记录 + updateOrAppendMultipleSignStepByUser(infoJson, baseKey, logDO); + } else { + // 普通步骤:直接替换 + JSONObject stepInfo = buildStepInfo(logDO); + infoJson.put(baseKey, stepInfo); + log.info("更新普通步骤: {}", baseKey); + } + } + + // 更新到数据库 + infoDO.setInfo(infoJson.toJSONString()); + eightworkInfoRepository.updateById(infoDO); + + + log.info("已批量更新步骤 info: workId={}, count={}", workId, actionLogs.size()); + } + /** + * 根据 actUser 更新或追加多人签字步骤记录 + * 策略: + * 1. 遍历所有相关key(step_X, step_X_1, step_X_2...) + * 2. 如果找到相同 actUser 的记录,则更新 + * 3. 如果没找到,则追加为新记录 + * + * @param infoJson JSON对象 + * @param baseKey 基础key,如 "step_3" + * @param logDO 任务日志数据 + */ + private void updateOrAppendMultipleSignStepByUser(JSONObject infoJson, String baseKey, TaskLogDO logDO) { + JSONObject stepInfo = buildStepInfo(logDO); + Long targetActUser = logDO.getActUser(); + + // 如果 actUser 为空,直接追加 + if (targetActUser == null) { + appendNewMultipleSignRecord(infoJson, baseKey, stepInfo); + return; + } + + // 1. 遍历所有相关key,查找是否有相同 actUser 的记录 + boolean found = false; + for (String key : infoJson.keySet()) { + // 只处理匹配的key + if (!key.equals(baseKey) && !key.startsWith(baseKey + "_")) { + continue; + } + + Object value = infoJson.get(key); + if (value instanceof JSONObject) { + JSONObject existingStep = (JSONObject) value; + Long existingActUser = existingStep.getLong("actUser"); + + // 找到相同 actUser 的记录,更新它 + if (targetActUser.equals(existingActUser)) { + infoJson.put(key, stepInfo); + log.info("更新多人签字步骤记录: stepId={}, actUser={}, key={}", + logDO.getStepId(), targetActUser, key); + found = true; + break; + } + } + } + + // 2. 如果没有找到相同 actUser 的记录,追加为新记录 + if (!found) { + appendNewMultipleSignRecord(infoJson, baseKey, stepInfo); + } + } + + /** + * 追加新的多人签字记录 + * 如果 baseKey 不存在,使用 baseKey;否则使用 baseKey_1, baseKey_2... + * + * @param infoJson JSON对象 + * @param baseKey 基础key + * @param stepInfo 步骤信息 + */ + private void appendNewMultipleSignRecord(JSONObject infoJson, String baseKey, JSONObject stepInfo) { + if (!infoJson.containsKey(baseKey)) { + // 基础key不存在,直接使用 + infoJson.put(baseKey, stepInfo); + log.info("多人签字步骤添加首条记录: {}", baseKey); + } else { + // 基础key已存在,查找下一个可用序号 + int suffix = 1; + String newKey; + do { + newKey = baseKey + "_" + suffix; + suffix++; + } while (infoJson.containsKey(newKey)); + + infoJson.put(newKey, stepInfo); + log.info("多人签字步骤追加新记录: key={}", newKey); + } + } + /** + * 构建步骤信息JSON对象 + */ + private JSONObject buildStepInfo(TaskLogDO logDO) { + JSONObject stepInfo = new JSONObject(); + stepInfo.put("stepName", logDO.getStepName()); + stepInfo.put("actUserDepartment", logDO.getActUserDepartment()); + stepInfo.put("actUserDepartmentName", logDO.getActUserDepartmentName()); + stepInfo.put("actUser", logDO.getActUser()); + stepInfo.put("actUserName", logDO.getActUserName()); + stepInfo.put("signPath", logDO.getSignPath()); + stepInfo.put("signTime", DateUtil.format(new Date(), DatePattern.NORM_DATETIME_PATTERN)); + stepInfo.put("status", logDO.getStatus()); + + // 定位步骤,添加经纬度信息 + if (logDO.getLatitude() != null || logDO.getLongitude() != null) { + JSONObject location = new JSONObject(); + location.put("latitude", logDO.getLatitude()); + location.put("longitude", logDO.getLongitude()); + stepInfo.put("location", location); + } + + // 附件步骤,添加附件信息 + if (StringUtils.isNotBlank(logDO.getFilePath())) { + stepInfo.put("filePath", logDO.getFilePath()); + } + + // 有填写意见步骤,添加意见 + if (StringUtils.isNotBlank(logDO.getRemarks())) { + stepInfo.put("remarks", logDO.getRemarks()); + } + + // 其他自定义步骤,添加 otherParams + if (StringUtils.isNotBlank(logDO.getOtherParams())) { + try { + JSONObject otherParams = JSONObject.parseObject(logDO.getOtherParams()); + stepInfo.put("otherParams", otherParams); + } catch (Exception e) { + // 如果不是JSON格式,直接存储字符串 + stepInfo.put("otherParams", logDO.getOtherParams()); + } + } + + return stepInfo; + } + /** + * 删除指定步骤的所有相关key + * 例如:baseKey = "step_3",则删除 step_3, step_3_1, step_3_2... + * + * @param infoJson JSON对象 + * @param baseKey 基础key,如 "step_3" + */ + private void removeStepKeys(JSONObject infoJson, String baseKey) { + if (infoJson == null || baseKey == null || baseKey.isEmpty()) { + return; + } + + // 收集需要删除的key + List keysToRemove = new ArrayList<>(); + + // 遍历所有key,找出匹配的 + for (String key : infoJson.keySet()) { + // 匹配规则: + // 1. 完全匹配:key.equals(baseKey) -> "step_3" + // 2. 前缀匹配:key.startsWith(baseKey + "_") -> "step_3_1", "step_3_2" + if (key.equals(baseKey) || key.startsWith(baseKey + "_")) { + keysToRemove.add(key); + } + } + + // 批量删除 + for (String key : keysToRemove) { + infoJson.remove(key); + log.debug("删除旧记录: {}", key); + } + + if (!keysToRemove.isEmpty()) { + log.info("已删除步骤 {} 的 {} 条旧记录", baseKey, keysToRemove.size()); + } } /** diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/convertor/TaskLogCoConvertor.java b/web-app/src/main/java/com/zcloud/eightwork/command/convertor/TaskLogCoConvertor.java index 18d45f6..18e8a29 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/convertor/TaskLogCoConvertor.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/convertor/TaskLogCoConvertor.java @@ -1,5 +1,6 @@ package com.zcloud.eightwork.command.convertor; +import com.zcloud.eightwork.domain.model.TaskLogE; import com.zcloud.eightwork.dto.clientobject.TaskLogCO; import com.zcloud.eightwork.persistence.dataobject.TaskLogDO; import org.mapstruct.Mapper; @@ -21,5 +22,7 @@ public interface TaskLogCoConvertor { */ List converDOsToCOs(List taskLogDOs); TaskLogCO converDOToCO(TaskLogDO taskLogDO); + + List converEsToDOs(List allLogs); } diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkInfoQueryExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkInfoQueryExe.java index 32f97e5..e296ba8 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkInfoQueryExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/query/EightworkInfoQueryExe.java @@ -48,9 +48,9 @@ public class EightworkInfoQueryExe { * @return */ public PageResponse execute(EightworkInfoPageQry eightworkInfoPageQry) { - if(eightworkInfoPageQry.getCorpinfoId()==null){ + /* if(eightworkInfoPageQry.getCorpinfoId()==null){ eightworkInfoPageQry.setCorpinfoId(AuthContext.getTenantId()); - } + }*/ Map params = PageQueryHelper.toHashMap(eightworkInfoPageQry); PageResponse pageResponse = eightworkInfoRepository.listPage(params); List examCenterCOS = eightworkInfoCoConvertor.converDOsToCOs(pageResponse.getData()); diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/query/TaskFlowChartQueryExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/query/TaskFlowChartQueryExe.java index 6232131..0d5a0ce 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/query/TaskFlowChartQueryExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/query/TaskFlowChartQueryExe.java @@ -204,6 +204,8 @@ public class TaskFlowChartQueryExe { co.setStatus(log.getStatus()); co.setStepName(log.getStepName()); co.setActUserName(log.getActUserName()); + co.setActUserDepartment(log.getActUserDepartment()); + co.setActUserDepartmentName(log.getActUserDepartmentName()); co.setUpdateTime(log.getUpdateTime()); return co; diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java b/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java index 07acf90..5e96e68 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoPageQry.java @@ -1,6 +1,7 @@ package com.zcloud.eightwork.dto; import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @@ -35,6 +36,7 @@ public class EightworkInfoPageQry extends PageQuery { private String likeWorkContent; private Long eqDepartmentId; private Long eqCreateId; + private Long eqTenantId; private Integer eqXgfFlag; private Integer eqInternalOperationFlag; private Long eqProjectId; diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogPageQry.java b/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogPageQry.java index 065aab0..ca8c5e8 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogPageQry.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogPageQry.java @@ -4,6 +4,8 @@ import com.alibaba.cola.dto.PageQuery; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.util.List; + /** * web-client @@ -27,5 +29,46 @@ public class TaskLogPageQry extends PageQuery { private String eqWorkType; private Integer eqStatus; private Integer eqStepId; + + private List inCorpInfoId; + private Long corpinfoId; + private String eqCheckNo; + private String eqWorkLevel; + private String likeWorkContent; + private Long eqDepartmentId; + private Long eqCreateId; + private Integer eqXgfFlag; + private Integer eqInternalOperationFlag; + private Long eqProjectId; + private Long eqWorkDepartmentId; + private Long eqWorkUserId; + + private List inDepartmentId; + + private String leCreateTime; + + private String geCreateTime; + + private String leWorkStartTime; + + private String geWorkStartTime; + + private String likeCreateName; + + /** + * 当前步骤ID筛选(精确查询) + */ + private Long eqCurrentStepId; + + /** + * 受限空间名称和编号筛选(模糊查询) + */ + private Integer eqIsInnerWork; + private String likeLimitedSpaceNameAndCode; + + /** + * 盲板工作类型筛选(精确查询) + */ + private String eqBlindboardWorkType; } diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/TaskSignStepInfoCmd.java b/web-client/src/main/java/com/zcloud/eightwork/dto/TaskSignStepInfoCmd.java index 457e883..6d3a613 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/TaskSignStepInfoCmd.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/TaskSignStepInfoCmd.java @@ -27,6 +27,8 @@ public class TaskSignStepInfoCmd extends Command { //操作人 @ApiModelProperty(value = "操作人编码") private String actorField; + @ApiModelProperty(value = "延时监火使用,1:正常流程,2:任务转发") + private Integer stepType; //操作人部门 @ApiModelProperty(value = "操作人部门") private Long actUserDepartment; diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskFlowChartCO.java b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskFlowChartCO.java index ece219a..7c09841 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskFlowChartCO.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskFlowChartCO.java @@ -34,6 +34,13 @@ public class TaskFlowChartCO { @ApiModelProperty(value = "签字人姓名") private String actUserName; + //操作人部门 + @ApiModelProperty(value = "操作人部门") + private Long actUserDepartment; + //操作人部门 + @ApiModelProperty(value = "操作人部门名称") + private String actUserDepartmentName; + @ApiModelProperty(value = "更新时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskLogCO.java b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskLogCO.java index 88238fb..81632c4 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskLogCO.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskLogCO.java @@ -53,7 +53,7 @@ public class TaskLogCO extends ClientObject { @ApiModelProperty(value = "操作人") private String actUserName; //-99未开始0进行中1通过2打回 - @ApiModelProperty(value = "-99未开始0进行中1通过2打回") + @ApiModelProperty(value = "-99未开始-1跳过0进行中1通过2打回") private Integer status; //签字图片路径 @ApiModelProperty(value = "签字图片路径") diff --git a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskFlowE.java b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskFlowE.java index a0ab4f0..956a2ab 100644 --- a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskFlowE.java +++ b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskFlowE.java @@ -68,5 +68,7 @@ public class TaskFlowE extends BaseE { private Long blockingStepId; //手机端组件名称(special_step_code==other 时使用) private String componentName; + @ApiModelProperty(value = "打回步骤id") + private Integer rejectStepId; } diff --git a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskLogE.java b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskLogE.java index 9f121b8..f49bc29 100644 --- a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskLogE.java +++ b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskLogE.java @@ -6,6 +6,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; /** * web-domain @@ -55,6 +56,8 @@ public class TaskLogE extends BaseE { private Integer stepType; //是否签字步骤1是 private Integer signStepFlag; + + private LocalDateTime signTime; //选择级别1部门2人员 private Integer selectLevel; //是否可选相关方0否1是 @@ -101,6 +104,8 @@ public class TaskLogE extends BaseE { private String otherParams; //手机端组件名称(special_step_code==other 时使用) private String componentName; + @ApiModelProperty(value = "打回步骤id") + private Integer rejectStepId; public TaskLogE(TaskLogE log) { this.taskLogId = log.getTaskLogId(); @@ -141,6 +146,7 @@ public class TaskLogE extends BaseE { this.filePath = log.getFilePath(); this.otherParams = log.getOtherParams(); this.componentName = log.getComponentName(); + this.rejectStepId = log.getRejectStepId(); } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/gatewayimpl/TaskLogGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/gatewayimpl/TaskLogGatewayImpl.java index 70094ff..5f78928 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/gatewayimpl/TaskLogGatewayImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/gatewayimpl/TaskLogGatewayImpl.java @@ -68,6 +68,7 @@ public class TaskLogGatewayImpl implements TaskLogGateway { return list.stream().map(d -> { TaskLogE taskLog = new TaskLogE(); BeanUtils.copyProperties(d, taskLog); + taskLog.setUpdateTime(d.getSignTime()); return taskLog; }).collect(Collectors.toList()); } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskFlowDO.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskFlowDO.java index 9c4552c..8170b03 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskFlowDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskFlowDO.java @@ -96,6 +96,9 @@ public class TaskFlowDO extends BaseDO { @ApiModelProperty(value = "手机端组件名称") private String componentName; + @ApiModelProperty(value = "打回步骤id") + private Integer rejectStepId; + } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogArchiveDO.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogArchiveDO.java index b4ac0ad..bb9cbe1 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogArchiveDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogArchiveDO.java @@ -142,6 +142,8 @@ public class TaskLogArchiveDO extends BaseDO { //手机端组件名称(special_step_code==other 时使用) @ApiModelProperty(value = "手机端组件名称") private String componentName; + @ApiModelProperty(value = "打回步骤id") + private Integer rejectStepId; public TaskLogArchiveDO(String taskLogId) { this.taskLogId = taskLogId; diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogDO.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogDO.java index d5c80ec..661a62c 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskLogDO.java @@ -8,6 +8,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import javax.validation.constraints.NotNull; +import java.time.LocalDateTime; /** * web-infrastructure @@ -59,6 +60,7 @@ public class TaskLogDO extends BaseDO { //签字图片路径 @ApiModelProperty(value = "签字图片路径") private String signPath; + private LocalDateTime signTime; //任务类型 @ApiModelProperty(value = "任务类型") private String workType; @@ -146,6 +148,8 @@ public class TaskLogDO extends BaseDO { //手机端组件名称(special_step_code==other 时使用) @ApiModelProperty(value = "手机端组件名称") private String componentName; + @ApiModelProperty(value = "打回步骤id") + private Integer rejectStepId; public TaskLogDO(String taskLogId) { this.taskLogId = taskLogId; diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/MeasuresLogsRepository.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/MeasuresLogsRepository.java index 1ee0324..8e9db85 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/MeasuresLogsRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/MeasuresLogsRepository.java @@ -24,5 +24,7 @@ public interface MeasuresLogsRepository extends BaseRepository { * @return 删除的记录数 */ int physicalDeleteByWorkId(String workId); + + void deleteByWorkId(String workId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/MeasuresLogsRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/MeasuresLogsRepositoryImpl.java index 74b5049..a13f92d 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/MeasuresLogsRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/MeasuresLogsRepositoryImpl.java @@ -12,6 +12,7 @@ import com.zcloud.eightwork.persistence.repository.MeasuresLogsRepository; import com.zcloud.gbscommon.utils.PageQueryHelper; import com.zcloud.gbscommon.utils.Query; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; @@ -24,6 +25,7 @@ import java.util.Map; */ @Service @RequiredArgsConstructor +@Slf4j public class MeasuresLogsRepositoryImpl extends BaseRepositoryImpl implements MeasuresLogsRepository { private final MeasuresLogsMapper measuresLogsMapper; @@ -52,5 +54,19 @@ public class MeasuresLogsRepositoryImpl extends BaseRepositoryImpl queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(MeasuresLogsDO::getWorkId, workId); + int deletedCount = measuresLogsMapper.delete(queryWrapper); + log.info("逻辑删除安全措施记录: workId={}, 删除数量={}", workId, deletedCount); + + } } diff --git a/web-infrastructure/src/main/resources/mapper/EightworkInfoMapper.xml b/web-infrastructure/src/main/resources/mapper/EightworkInfoMapper.xml index 1c9c69b..076a845 100644 --- a/web-infrastructure/src/main/resources/mapper/EightworkInfoMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/EightworkInfoMapper.xml @@ -64,7 +64,7 @@ and t.create_name like concat('%', #{params.likeCreateName}, '%') - and t.info->>'$.workContent' like concat('%', #{params.likeCreateName}, '%') + and t.info->>'$.workContent' like concat('%', #{params.likeWorkContent}, '%') and t.info->>'$.blindboardWorkType' = #{params.eqBlindboardWorkType} @@ -93,6 +93,11 @@ and t.corpinfo_id = #{params.corpinfoId} + + + and t.create_id = #{params.eqCreateId} + + and t.tenant_id = #{params.eqTenantId} ORDER BY CASE WHEN t.status = 0 THEN 0 ELSE 1 END ASC, diff --git a/web-infrastructure/src/main/resources/mapper/TaskFlowMapper.xml b/web-infrastructure/src/main/resources/mapper/TaskFlowMapper.xml index 8966041..4df3004 100644 --- a/web-infrastructure/src/main/resources/mapper/TaskFlowMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/TaskFlowMapper.xml @@ -7,14 +7,14 @@ diff --git a/web-infrastructure/src/main/resources/mapper/TaskLogMapper.xml b/web-infrastructure/src/main/resources/mapper/TaskLogMapper.xml index 5d0107e..b675539 100644 --- a/web-infrastructure/src/main/resources/mapper/TaskLogMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/TaskLogMapper.xml @@ -6,8 +6,8 @@ select * from task_log - where work_id = #{workId} + where delete_enum = 'FALSE' and work_id = #{workId} and step_id = #{stepId} limit 1