diff --git a/web-adapter/src/main/java/com/zcloud/eightwork/web/MeasuresLogsController.java b/web-adapter/src/main/java/com/zcloud/eightwork/web/MeasuresLogsController.java index 5c973a4..372ecf4 100644 --- a/web-adapter/src/main/java/com/zcloud/eightwork/web/MeasuresLogsController.java +++ b/web-adapter/src/main/java/com/zcloud/eightwork/web/MeasuresLogsController.java @@ -39,7 +39,7 @@ public class MeasuresLogsController { } @ApiOperation("分页") - @PostMapping("/list") + @PostMapping("/page") public PageResponse page(@RequestBody MeasuresLogsPageQry qry) { return measuresLogsService.listPage(qry); } @@ -50,6 +50,12 @@ public class MeasuresLogsController { return MultiResponse.of(measuresLogsService.listAll(workId)); } + @ApiOperation("所有数据") + @PostMapping("/list") + public MultiResponse list(@RequestBody MeasuresLogsPageQry qry) { + return MultiResponse.of(measuresLogsService.list(qry)); + } + @ApiOperation("详情") @GetMapping("/{id}") public SingleResponse getInfoById(@PathVariable("id") Long id) { diff --git a/web-adapter/src/main/java/com/zcloud/eightwork/web/TaskLogController.java b/web-adapter/src/main/java/com/zcloud/eightwork/web/TaskLogController.java index 5cfc42f..a4a83dc 100644 --- a/web-adapter/src/main/java/com/zcloud/eightwork/web/TaskLogController.java +++ b/web-adapter/src/main/java/com/zcloud/eightwork/web/TaskLogController.java @@ -45,6 +45,7 @@ public class TaskLogController { @PostMapping("/save") public SingleResponse add(@Validated @RequestBody TaskLogAddCmd cmd) { cmd.setDepartmentId(AuthContext.getOrgId()); + cmd.setDepartmentName(AuthContext.getCurrentUser().getOrgName()); return taskLogService.add(cmd); } 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 6fc8105..80a52b1 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 @@ -1,33 +1,29 @@ package com.zcloud.eightwork.command; -import cn.hutool.core.date.DatePattern; import com.alibaba.cola.exception.BizException; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.jjb.saas.framework.auth.utils.AuthContext; import com.zcloud.eightwork.domain.gateway.TaskFlowGateway; import com.zcloud.eightwork.domain.model.TaskFlowE; import com.zcloud.eightwork.domain.model.enums.TaskLogStatus; -import com.zcloud.eightwork.domain.model.enums.WorkCodeEnum; import com.zcloud.eightwork.dto.EightworkInfoSaveDraftCmd; import com.zcloud.eightwork.dto.TaskSignStepInfoCmd; import com.zcloud.eightwork.persistence.dataobject.EightworkInfoDO; +import com.zcloud.eightwork.persistence.dataobject.MeasuresLogsDO; import com.zcloud.eightwork.persistence.dataobject.TaskLogDO; import com.zcloud.eightwork.persistence.repository.EightworkInfoRepository; +import com.zcloud.eightwork.persistence.repository.MeasuresLogsRepository; import com.zcloud.eightwork.persistence.repository.TaskLogRepository; import com.zcloud.gbscommon.utils.Tools; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; -import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.util.Date; import java.util.List; -import java.util.concurrent.TimeUnit; /** * 八险作业暂存执行器 @@ -40,24 +36,35 @@ import java.util.concurrent.TimeUnit; @Component @AllArgsConstructor public class EightworkInfoSaveDraftExe { - /** 第一步(申请步骤)的步骤ID */ + /** + * 第一步(申请步骤)的步骤ID + */ private static final Long FIRST_STEP_ID = 1L; - /** 暂存状态 */ + /** + * 暂存状态 + */ private static final Integer DRAFT_STATUS = 0; - /** 进行中状态 */ + /** + * 进行中状态 + */ private static final Integer IN_PROGRESS_STATUS = 1; + /** + * 其他安全措施类型 + */ + private static final Integer OTHER_MEASURE_TYPE = 2; private final TaskFlowGateway taskFlowGateway; private final EightworkInfoRepository eightworkInfoRepository; private final TaskLogRepository taskLogRepository; + private final MeasuresLogsRepository measuresLogsRepository; @Transactional(rollbackFor = Exception.class) public void execute(EightworkInfoSaveDraftCmd cmd) { log.info("开始暂存作业: id={}, workType={}, workLevel={}", - cmd.getId(), cmd.getWorkType(), cmd.getWorkLevel()); + cmd.getWorkId(), cmd.getWorkType(), cmd.getWorkLevel()); try { - if (cmd.getId() != null) { + if (StringUtils.isNotBlank(cmd.getWorkId())) { // 更新现有暂存 updateDraft(cmd); } else { @@ -76,10 +83,10 @@ public class EightworkInfoSaveDraftExe { * 更新现有暂存 */ private void updateDraft(EightworkInfoSaveDraftCmd cmd) { - log.info("更新现有暂存: id={}", cmd.getId()); + log.info("更新现有暂存: id={}", cmd.getWorkId()); // 1. 查询现有记录 - EightworkInfoDO existingInfo = eightworkInfoRepository.getById(cmd.getId()); + EightworkInfoDO existingInfo = eightworkInfoRepository.getOne(new LambdaQueryWrapper().eq(EightworkInfoDO::getWorkId, cmd.getWorkId())); if (existingInfo == null) { throw new BizException("暂存记录不存在"); } @@ -104,6 +111,9 @@ public class EightworkInfoSaveDraftExe { // 6. 更新主表 info 中的预设签字人信息 updateInfoWithSigners(existingInfo.getWorkId(), cmd.getSignLogs()); + // 7. 处理其他安全措施 + handleOtherMeasures(existingInfo.getWorkId(), cmd.getWorkType(), cmd.getOthers()); + log.info("暂存更新成功: workId={}", existingInfo.getWorkId()); } @@ -139,6 +149,9 @@ public class EightworkInfoSaveDraftExe { // 3. 更新主表 info 中的预设签字人信息 updateInfoWithSigners(eightworkInfo.getWorkId(), cmd.getSignLogs()); + // 4. 处理其他安全措施 + handleOtherMeasures(eightworkInfo.getWorkId(), cmd.getWorkType(), cmd.getOthers()); + log.info("暂存创建成功: workId={}", eightworkInfo.getWorkId()); } @@ -241,4 +254,42 @@ public class EightworkInfoSaveDraftExe { log.info("预设签字人信息已保存: workId={}, count={}", workId, signLogs.size()); } + + /** + * 处理其他安全措施 + * 将暂存时填写的其他安全措施保存到 measures_logs 表 + * + * @param workId 作业ID + * @param workType 作业类型 + * @param others 前端传入的其他参数(包含 otherMeasures) + */ + private void handleOtherMeasures(String workId, String workType, JSONObject others) { + if (others == null) { + return; + } + + // 从 others 中获取 otherMeasures + String otherMeasures = others.getString("otherMeasures"); + if (StringUtils.isBlank(otherMeasures)) { + log.info("暂存时没有填写其他安全措施: workId={}", workId); + return; + } + + // 删除旧的其他安全措施记录(如果有) + measuresLogsRepository.remove( + new LambdaQueryWrapper() + .eq(MeasuresLogsDO::getWorkId, workId) + .eq(MeasuresLogsDO::getType, OTHER_MEASURE_TYPE) + ); + + // 保存新的其他安全措施 + MeasuresLogsDO measuresLogsDO = new MeasuresLogsDO( + otherMeasures, + workId, + workType + ); + measuresLogsRepository.save(measuresLogsDO); + + log.info("暂存时已保存其他安全措施: workId={}, content={}", workId, otherMeasures); + } } 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 24d94a4..0fa0603 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 @@ -1,5 +1,6 @@ package com.zcloud.eightwork.command; +import cn.hutool.core.date.DatePattern; import com.alibaba.cola.exception.BizException; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -19,6 +20,7 @@ import com.zcloud.gbscommon.utils.DateUtil; import com.zcloud.gbscommon.utils.Tools; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.stereotype.Component; @@ -59,11 +61,11 @@ public class TaskLogAddExe { @Transactional(rollbackFor = Exception.class) public List execute(TaskLogAddCmd cmd) { - log.info("开始创建作业流程: workType={}, workLevel={}, id={}", - cmd.getWorkType(), cmd.getWorkLevel(), cmd.getId()); + log.info("开始创建作业流程: workType={}, workLevel={}, workId={}", + cmd.getWorkType(), cmd.getWorkLevel(), cmd.getWorkId()); try { - if (cmd.getId() != null) { + if (StringUtils.isNotBlank(cmd.getWorkId())) { // 从暂存转正式提交 return submitFromDraft(cmd); } else { @@ -80,10 +82,10 @@ public class TaskLogAddExe { * 从暂存转正式提交 */ private List submitFromDraft(TaskLogAddCmd cmd) { - log.info("从暂存转正式提交: id={}", cmd.getId()); + log.info("从暂存转正式提交: id={}", cmd.getWorkId()); // 1. 查询暂存记录 - EightworkInfoDO existingInfo = eightworkInfoRepository.getById(cmd.getId()); + EightworkInfoDO existingInfo = eightworkInfoRepository.getOne(new LambdaQueryWrapper().eq(EightworkInfoDO::getWorkId, cmd.getWorkId())); if (existingInfo == null) { throw new BizException("暂存记录不存在"); } @@ -115,6 +117,9 @@ public class TaskLogAddExe { existingInfo.setStatus(TaskLogStatus.APPROVED.getCode()); // 主表进行中=1 existingInfo.setInfo(processedInfo); // 设置处理后的 info(包含 rejectHistory) + + // 处理签字人信息 + handleInfoStep(existingInfo,cmd.getSignLogs()); eightworkInfoRepository.updateById(existingInfo); // 6. 获取流程配置 @@ -281,19 +286,48 @@ public class TaskLogAddExe { cmd.getWorkLevel(), cmd.getCorpinfoId(), cmd.getXgfFlag(), + cmd.getGasFlag(), cmd.getInternalOperationFlag(), cmd.getProjectId(), cmd.getXgfId(), checkNo, TaskLogStatus.APPROVED.getCode(), // 主表进行中=1 cmd.getInfo(), - cmd.getDepartmentId() + cmd.getDepartmentId(), + cmd.getDepartmentName() ); + handleInfoStep(eightworkInfo,cmd.getSignLogs()); eightworkInfoRepository.save(eightworkInfo); return eightworkInfo.getWorkId(); } + private void handleInfoStep(EightworkInfoDO info,List signLogs){ + JSONObject infoJson; + if (StringUtils.isNotBlank(info.getInfo())) { + try { + infoJson = JSONObject.parseObject(info.getInfo()); + } catch (Exception e) { + log.warn("解析 info 失败,使用空对象: workId={}", info.getWorkId(), e); + infoJson = new JSONObject(); + } + } else { + infoJson = new JSONObject(); + } + for (TaskSignStepInfoCmd logDO : signLogs) { + 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()); + + infoJson.put("step_" + logDO.getStepId(), stepInfo); + } + info.setInfo(infoJson.toJSONString()); + + } + /** * 处理打回历史 * 将旧的 rejectInfo 转换为 rejectHistory,并与新的 info 合并 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 6a781e4..e4aebae 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 @@ -11,9 +11,11 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zcloud.eightwork.command.convertor.TaskLogConvertUtil; import com.zcloud.eightwork.domain.gateway.EightworkSupplementaryInfoGateway; +import com.zcloud.eightwork.domain.gateway.TaskFlowGateway; import com.zcloud.eightwork.domain.gateway.TaskLogGateway; import com.zcloud.eightwork.domain.model.EightworkSupplementaryInfoE; import com.zcloud.eightwork.domain.model.MeasuresLogsE; +import com.zcloud.eightwork.domain.model.TaskFlowE; import com.zcloud.eightwork.domain.model.TaskLogE; import com.zcloud.eightwork.domain.model.enums.BranchFlag; import com.zcloud.eightwork.domain.model.enums.StepType; @@ -27,6 +29,7 @@ import com.zcloud.eightwork.persistence.repository.*; import com.zcloud.gbscommon.todolistmq.TodoListEventPusherUtil; import com.zcloud.gbscommon.todolistmq.event.TodoListAddEvent; import com.zcloud.gbscommon.todolistmq.event.TodoListCompleteEvent; +import com.zcloud.gbscommon.utils.Tools; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; @@ -79,6 +82,10 @@ public class TaskLogUpdateExe { * APP端待办标识 */ private static final Integer APP_FLAG = 1; + /** + * 附件步骤标识 + */ + private static final Integer FILE_STEP_FLAG = 1; /** * 第一步(申请步骤)ID */ @@ -93,9 +100,11 @@ public class TaskLogUpdateExe { private static final Integer REJECTED_STATUS = 2; private final TaskLogGateway taskLogGateway; + private final TaskFlowGateway taskFlowGateway; private final TaskLogRepository taskLogRepository; private final TaskLogArchiveRepository taskLogArchiveRepository; private final MeasuresLogsRepository measuresLogsRepository; + private final MeasuresLogsArchiveRepository measuresLogsArchiveRepository; private final EightworkInfoRepository eightworkInfoRepository; private final TodoListEventPusherUtil todoListEventPusherUtil; private final EightworkSupplementaryInfoGateway eightworkSupplementaryInfoGateway; @@ -171,13 +180,13 @@ public class TaskLogUpdateExe { // 3. 先设置后续签字人(在激活步骤之前设置,避免状态覆盖问题) handleSignStepsIfNeeded(currentLog, cmd, actionLogs, logs); - // 4. 判断是否可以流转到下一步 - if (canProceedToNext(currentLog, logs, cmd)) { - // 5. 处理特殊步骤逻辑 - boolean shouldProceed = handleSpecialStepIfNeeded(currentLog, cmd, actionLogs); + // 4. 处理特殊步骤逻辑 + boolean shouldProceed = handleSpecialStepIfNeeded(currentLog, cmd, actionLogs); - // 6. 处理其他安全措施 - handleOtherMeasuresIfNeeded(currentLog, cmd); + // 5. 处理其他安全措施 + handleOtherMeasuresIfNeeded(currentLog, cmd); + // 6. 判断是否可以流转到下一步 + if (canProceedToNext(currentLog, logs, cmd)) { // 7. 在流转到下一步之前,检查是否被持续步骤阻塞(双重验证) checkBlockingStepBeforeProceed(currentLog, logs); @@ -234,6 +243,12 @@ public class TaskLogUpdateExe { log.info("定位步骤已保存经纬度: latitude={}, longitude={}", cmd.getLatitude(), cmd.getLongitude()); } + // 附件步骤,保存附件 + if (FILE_STEP_FLAG.equals(currentLog.getFileStepFlag())) { + currentLog.setFilePath(cmd.getFilePath()); + log.info("附件步骤已保存附件: filePath={}", cmd.getFilePath()); + } + // 发送待办完成事件 sendTodoCompleteEvent(currentLog.getId()); @@ -348,12 +363,22 @@ public class TaskLogUpdateExe { } } - measuresLogsRepository.saveBatch(measuresList.stream().map(item -> { - MeasuresLogsDO d = new MeasuresLogsDO(); - BeanUtils.copyProperties(item, d, "id"); - d.setType(MAIN_MEASURE_TYPE); - return d; - }).collect(Collectors.toList())); + if(ObjectUtil.isNotEmpty(cmd.getOthers().get("measuresType")) && cmd.getOthers().get("measuresType").equals("2")){ + measuresLogsRepository.updateBatchById(measuresList.stream().map(item -> { + MeasuresLogsDO d = new MeasuresLogsDO(); + BeanUtils.copyProperties(item, d); + return d; + }).collect(Collectors.toList())); + }else { + measuresLogsRepository.saveBatch(measuresList.stream().map(item -> { + MeasuresLogsDO d = new MeasuresLogsDO(); + BeanUtils.copyProperties(item, d, "id"); + d.setType(MAIN_MEASURE_TYPE); + return d; + }).collect(Collectors.toList())); + } + + return true; } @@ -466,36 +491,6 @@ public class TaskLogUpdateExe { return; } - // 判断下一步是否为合并节点(需要等待所有前置步骤都完成) - boolean isMerge = isMergeNode(nextStep); - log.info("检查是否为合并节点: stepId={}, stepName={}, branchFlag={}, isMerge={}", - nextStep.getStepId(), nextStep.getStepName(), nextStep.getBranchFlag(), isMerge); - if (isMerge) { - if (!areAllBranchesCompleted(nextStep, allLogs)) { - List pendingSteps = getPendingBranches(nextStep, allLogs); - log.info("合并节点等待其他前置步骤完成: mergeNode={}, waitingSteps={}", - nextStep.getStepName(), - pendingSteps.stream() - .map(TaskLogE::getStepName) - .collect(java.util.stream.Collectors.joining(", "))); - // 不激活合并节点,等待其他前置步骤完成 - return; - } - log.info("所有前置步骤已完成,激活合并节点: {}", nextStep.getStepName()); - } - - // 判断下一步是否被持续步骤阻塞(如气体检测必须填写指定次数) - BlockingInfo blockingInfo = getBlockingInfo(nextStep, allLogs); - if (blockingInfo != null && !blockingInfo.isCompleted) { - log.info("步骤被持续步骤阻塞: step={}, blockingStep={}, currentTimes={}, requiredTimes={}", - nextStep.getStepName(), - blockingInfo.blockingStep.getStepName(), - blockingInfo.currentTimes, - blockingInfo.requiredTimes); - // 不激活步骤,等待持续步骤填写足够次数 - return; - } - // 激活下一步 activateNextSteps(nextSteps, actionLogs, currentLog, allLogs); } @@ -555,6 +550,7 @@ public class TaskLogUpdateExe { for (TaskLogE log : allLogs) { // 找出持续步骤,且其阻塞的步骤ID等于当前步骤ID if (Integer.valueOf(1).equals(log.getOngoingFlag()) + && !TaskLogStatus.SKIPPED.equalsCode(log.getStatus()) && step.getStepId().equals(log.getBlockingStepId())) { return log; } @@ -580,7 +576,7 @@ public class TaskLogUpdateExe { } /** - * 获取阻塞信息(统一入口,避免重复判断) + * 获取阻塞信息 */ private BlockingInfo getBlockingInfo(TaskLogE step, List allLogs) { TaskLogE blockingStep = findBlockingStep(step, allLogs); @@ -621,17 +617,20 @@ public class TaskLogUpdateExe { */ private void activateNextSteps(List nextSteps, List actionLogs, TaskLogE currentLog, List allLogs) { Long workId = getWorkId(currentLog.getWorkId()); + BlockingInfo info = getBlockingInfo(currentLog, allLogs); + + if (info != null && !info.isCompleted) { + // 阻塞步骤未完成,不激活该步骤 + log.info("步骤被持续步骤阻塞,跳过激活: step={}, blockingStep={}, currentTimes={}, requiredTimes={}", + currentLog.getStepName(), info.blockingStep.getStepName(), info.currentTimes, info.requiredTimes); + return; + } + // 如果有阻塞步骤且已完成,标记为通过 + if (info != null && info.isCompleted) { + completeBlockingStep(info.blockingStep, actionLogs); + } for (TaskLogE next : nextSteps) { - // 使用统一的 getBlockingInfo 方法 - BlockingInfo info = getBlockingInfo(next, allLogs); - - if (info != null && !info.isCompleted) { - // 阻塞步骤未完成,不激活该步骤 - log.info("步骤被持续步骤阻塞,跳过激活: step={}, blockingStep={}, currentTimes={}, requiredTimes={}", - next.getStepName(), info.blockingStep.getStepName(), info.currentTimes, info.requiredTimes); - continue; - } // 激活步骤 next.setStatus(TaskLogStatus.IN_PROGRESS.getCode()); @@ -642,10 +641,7 @@ public class TaskLogUpdateExe { log.info("已激活下一步: {}", next.getStepName()); - // 如果有阻塞步骤且已完成,标记为通过 - if (info != null && info.isCompleted) { - completeBlockingStep(info.blockingStep, actionLogs); - } + } // 如果有步骤被激活,更新作业当前步骤 @@ -750,12 +746,16 @@ public class TaskLogUpdateExe { // 4. 删除辅助数据(delay、gas、measures) deleteSupplementaryInfo(cmd.getWorkId()); - // 5. 更新主表状态为暂存,添加打回信息 + // 5. 新建一条新的申请记录,status=0(暂存状态) + createNewApplyTaskLog(cmd.getWorkId()); + + // 6. 更新主表状态为暂存,添加打回信息 updateMainInfoForReject(cmd.getWorkId(), currentLog, cmd.getOthers()); - // 6. 发送待办完成事件 + // 7. 发送待办完成事件 sendTodoCompleteEvent(currentLog.getId()); + log.info("工作流已打回到申请步骤: workId={}", cmd.getWorkId()); } @@ -766,10 +766,6 @@ public class TaskLogUpdateExe { List archiveList = new ArrayList<>(); for (TaskLogE log : allLogs) { - // 跳过申请步骤(stepId=1) - if (FIRST_STEP_ID.equals(log.getStepId())) { - continue; - } // 只归档已处理的记录(状态不是未开始) if (!TaskLogStatus.NOT_STARTED.equalsCode(log.getStatus())) { TaskLogArchiveDO archiveDO = new TaskLogArchiveDO(); @@ -791,6 +787,7 @@ public class TaskLogUpdateExe { * 归档辅助数据到 eightwork_supplementary_info_archive 表 */ private void archiveSupplementaryInfo(String workId) { + // 归档 eightwork_supplementary_info List infoList = eightworkSupplementaryInfoRepository.list( new LambdaQueryWrapper() .eq(EightworkSupplementaryInfoDO::getWorkId, workId) @@ -805,17 +802,28 @@ public class TaskLogUpdateExe { } log.info("已归档 {} 条辅助数据记录", infoList.size()); } + + // 归档 measures_logs + List measuresList = measuresLogsRepository.list( + new LambdaQueryWrapper() + .eq(MeasuresLogsDO::getWorkId, workId) + ); + + if (!measuresList.isEmpty()) { + for (MeasuresLogsDO measuresDO : measuresList) { + MeasuresLogsArchiveDO archiveDO = new MeasuresLogsArchiveDO(); + BeanUtils.copyProperties(measuresDO, archiveDO, "id"); + measuresLogsArchiveRepository.save(archiveDO); + } + log.info("已归档 {} 条安全措施记录", measuresList.size()); + } } /** * 删除除申请步骤外的所有 task_log */ private void deleteTaskLogsExceptFirst(String workId) { - taskLogRepository.remove( - new LambdaQueryWrapper() - .eq(TaskLogDO::getWorkId, workId) - .ne(TaskLogDO::getStepId, FIRST_STEP_ID) - ); + taskLogRepository.physicalDeleteByWorkId(workId); log.info("已删除除申请步骤外的 task_log: workId={}", workId); } @@ -824,20 +832,63 @@ public class TaskLogUpdateExe { */ private void deleteSupplementaryInfo(String workId) { // 删除 eightwork_supplementary_info 中的记录 - eightworkSupplementaryInfoRepository.remove( - new LambdaQueryWrapper() - .eq(EightworkSupplementaryInfoDO::getWorkId, workId) - ); + eightworkSupplementaryInfoRepository.physicalDeleteByWorkId(workId); log.info("已删除辅助数据: workId={}", workId); - // 删除 measures_logs 中的记录(如果有的话) - measuresLogsRepository.remove( - new LambdaQueryWrapper() - .eq(MeasuresLogsDO::getWorkId, workId) - ); + measuresLogsRepository.physicalDeleteByWorkId(workId); log.info("已删除安全措施记录: workId={}", workId); } + /** + * 新建一条新的申请记录,status=0(暂存状态) + * 从主表获取作业信息 + */ + private void createNewApplyTaskLog(String workId) { + // 获取主表信息 + EightworkInfoDO infoDO = eightworkInfoRepository.getOne( + new LambdaQueryWrapper() + .eq(EightworkInfoDO::getWorkId, workId) + ); + + if (infoDO == null) { + log.warn("未找到作业信息,无法创建申请记录: workId={}", workId); + return; + } + + // 获取申请步骤的流程配置 + List flows = taskFlowGateway.listAllByWorkType(infoDO.getWorkType(), infoDO.getWorkLevel()); + TaskFlowE applyFlow = flows.stream() + .filter(f -> FIRST_STEP_ID.equals(f.getStepId())) + .findFirst() + .orElse(null); + + if (applyFlow == null) { + log.warn("未找到申请步骤配置: workType={}, workLevel={}", infoDO.getWorkType(), infoDO.getWorkLevel()); + return; + } + + // 创建新的申请步骤记录 + TaskLogDO taskLog = new TaskLogDO(); + BeanUtils.copyProperties(applyFlow, taskLog, "id"); + taskLog.setTaskLogId(Tools.get32UUID()); + taskLog.setWorkId(workId); + taskLog.setWorkType(infoDO.getWorkType()); + taskLog.setCorpinfoId(infoDO.getCorpinfoId()); + taskLog.setActUserDepartment(infoDO.getDepartmentId()); + taskLog.setActUserDepartmentName(infoDO.getDepartmentName()); + taskLog.setActUser(infoDO.getCreateId()); + taskLog.setActUserName(infoDO.getCreateName()); + taskLog.setCheckNo(""); // 打回后重新提交会使用原票号 + taskLog.setCurrentFillTimes(0); + + // 设置状态为 0(暂存状态) + taskLog.setStatus(DRAFT_STATUS); + + // 保存 + taskLogRepository.save(taskLog); + log.info("已创建新的申请步骤记录: workId={}, taskLogId={}, status=0", workId, taskLog.getTaskLogId()); + } + /** * 更新主表信息(打回后) */ @@ -1080,6 +1131,10 @@ public class TaskLogUpdateExe { if (source.getLongitude() != null) { target.setLongitude(source.getLongitude()); } + // 附件:允许覆盖(最新的附件信息) + if (source.getFilePath() != null) { + target.setFilePath(source.getFilePath()); + } } /** @@ -1134,6 +1189,11 @@ public class TaskLogUpdateExe { stepInfo.put("location", location); } + // 附件步骤,添加附件信息 + if (StringUtils.isNotBlank(logDO.getFilePath())) { + stepInfo.put("filePath", logDO.getFilePath()); + } + // 其他自定义步骤,添加 otherParams if (StringUtils.isNotBlank(logDO.getOtherParams())) { try { @@ -1160,16 +1220,7 @@ public class TaskLogUpdateExe { * 如果被阻塞且未完成,抛出异常回滚整个事务 */ private void checkBlockingStepBeforeProceed(TaskLogE currentLog, List allLogs) { - List nextSteps = findNextSteps(currentLog, allLogs); - - if (CollectionUtil.isEmpty(nextSteps)) { - return; - } - - TaskLogE nextStep = nextSteps.get(0); - - // 使用统一的 getBlockingInfo 方法 - BlockingInfo info = getBlockingInfo(nextStep, allLogs); + BlockingInfo info = getBlockingInfo(currentLog, allLogs); if (info != null && !info.isCompleted) { // 阻塞步骤未完成,抛出异常回滚整个事务 @@ -1179,7 +1230,7 @@ public class TaskLogUpdateExe { info.requiredTimes); log.warn("步骤被阻塞,阻止流转: stepId={}, stepName={}, blockingStep={}, currentTimes={}, requiredTimes={}", - nextStep.getStepId(), nextStep.getStepName(), + currentLog.getStepId(), currentLog.getStepName(), info.blockingStep.getStepName(), info.currentTimes, info.requiredTimes); throw new BizException(errorMsg); diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/query/MeasuresLogsQueryExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/query/MeasuresLogsQueryExe.java index a50031b..d47265d 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/query/MeasuresLogsQueryExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/query/MeasuresLogsQueryExe.java @@ -1,6 +1,7 @@ package com.zcloud.eightwork.command.query; import com.alibaba.cola.dto.PageResponse; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zcloud.eightwork.command.convertor.MeasuresLogsCoConvertor; import com.zcloud.eightwork.domain.gateway.TaskLogGateway; import com.zcloud.eightwork.domain.model.TaskLogE; @@ -62,5 +63,12 @@ public class MeasuresLogsQueryExe { }); return measuresLogsCOS; } + + public List list(MeasuresLogsPageQry qry) { + Map params = PageQueryHelper.toHashMap(qry); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params); + return measuresLogsCoConvertor.converDOsToCOs(measuresLogsRepository.list(queryWrapper)); + } } diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/query/TaskLogQueryExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/query/TaskLogQueryExe.java index d83ee06..fb3c3be 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/query/TaskLogQueryExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/query/TaskLogQueryExe.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zcloud.eightwork.command.convertor.EightworkInfoCoConvertor; import com.zcloud.eightwork.command.convertor.TaskLogCoConvertor; import com.zcloud.eightwork.domain.model.TodoCountE; +import com.zcloud.eightwork.domain.model.enums.TaskLogStatus; import com.zcloud.eightwork.dto.TaskLogPageQry; import com.zcloud.eightwork.dto.clientobject.BlockingStepInfoCO; import com.zcloud.eightwork.dto.clientobject.EightworkInfoCO; @@ -100,7 +101,7 @@ public class TaskLogQueryExe { // 查找阻塞当前步骤的持续步骤 for (TaskLogDO step : allSteps) { // 检查是否为持续步骤且阻塞当前步骤 - if (ONGOING_FLAG.equals(step.getOngoingFlag()) + if (ONGOING_FLAG.equals(step.getOngoingFlag()) && !TaskLogStatus.SKIPPED.equalsCode(step.getStatus()) && taskLogCO.getStepId().equals(step.getBlockingStepId())) { // 检查填写次数是否达标 Integer currentTimes = step.getCurrentFillTimes(); diff --git a/web-app/src/main/java/com/zcloud/eightwork/service/MeasuresLogsServiceImpl.java b/web-app/src/main/java/com/zcloud/eightwork/service/MeasuresLogsServiceImpl.java index 6e1251e..a2bafac 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/service/MeasuresLogsServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/eightwork/service/MeasuresLogsServiceImpl.java @@ -66,5 +66,10 @@ public class MeasuresLogsServiceImpl implements MeasuresLogsServiceI { public List listAll(String workId){ return measuresLogsQueryExe.listAll(workId); } + + @Override + public List list(MeasuresLogsPageQry qry){ + return measuresLogsQueryExe.list(qry); + } } diff --git a/web-client/src/main/java/com/zcloud/eightwork/api/MeasuresLogsServiceI.java b/web-client/src/main/java/com/zcloud/eightwork/api/MeasuresLogsServiceI.java index fd31020..0f445e8 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/api/MeasuresLogsServiceI.java +++ b/web-client/src/main/java/com/zcloud/eightwork/api/MeasuresLogsServiceI.java @@ -29,5 +29,7 @@ public interface MeasuresLogsServiceI { void removeBatch(Long[] ids); List listAll(String workId); + + List list(MeasuresLogsPageQry qry); } diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/ConfinedSpaceAddCmd.java b/web-client/src/main/java/com/zcloud/eightwork/dto/ConfinedSpaceAddCmd.java index f5e046c..3834364 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/ConfinedSpaceAddCmd.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/ConfinedSpaceAddCmd.java @@ -68,10 +68,13 @@ public class ConfinedSpaceAddCmd extends Command { @NotNull(message = "最大作业人数不能为空") private Integer maximumNumber; - @ApiModelProperty(value = "是否有应急指导书,0否1是", name = "isEmergencyBook", required = true) - @NotNull(message = "是否有应急指导书,0否1是不能为空") + @ApiModelProperty(value = "是否有应急指导书,1是2否", name = "isEmergencyBook", required = true) + @NotNull(message = "是否有应急指导书,1是2否不能为空") private Integer isEmergencyBook; + @ApiModelProperty(value = "应急指导书附件", name = "emergencyBookFile") + private String emergencyBookFile; + @ApiModelProperty(value = "位置及范围", name = "position", required = true) @NotEmpty(message = "位置及范围不能为空") private String position; diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/ConfinedSpaceUpdateCmd.java b/web-client/src/main/java/com/zcloud/eightwork/dto/ConfinedSpaceUpdateCmd.java index 1d2f501..dbe4881 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/ConfinedSpaceUpdateCmd.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/ConfinedSpaceUpdateCmd.java @@ -63,9 +63,11 @@ public class ConfinedSpaceUpdateCmd extends Command { @ApiModelProperty(value = "最大作业人数", name = "maximumNumber", required = true) @NotNull(message = "最大作业人数不能为空") private Integer maximumNumber; - @ApiModelProperty(value = "是否有应急指导书,0否1是", name = "isEmergencyBook", required = true) - @NotNull(message = "是否有应急指导书,0否1是不能为空") + @ApiModelProperty(value = "是否有应急指导书,1是2否", name = "isEmergencyBook", required = true) + @NotNull(message = "是否有应急指导书,1是2否不能为空") private Integer isEmergencyBook; + @ApiModelProperty(value = "应急指导书附件", name = "emergencyBookFile") + private String emergencyBookFile; @ApiModelProperty(value = "位置及范围", name = "position", required = true) @NotEmpty(message = "位置及范围不能为空") private String position; 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 bac8110..1c0f98f 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 @@ -28,6 +28,8 @@ public class EightworkInfoPageQry extends PageQuery { private String eqWorkType; private String eqCheckNo; private Integer eqStatus; + private String eqWorkLevel; + private String likeWorkContent; private Long eqDepartmentId; private Long eqCreateId; private Integer eqXgfFlag; @@ -42,6 +44,10 @@ public class EightworkInfoPageQry extends PageQuery { private String geCreateTime; + private String leWorkStartTime; + + private String geWorkStartTime; + private String likeCreateName; /** diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoSaveDraftCmd.java b/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoSaveDraftCmd.java index 476b222..96502e6 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoSaveDraftCmd.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/EightworkInfoSaveDraftCmd.java @@ -27,7 +27,7 @@ public class EightworkInfoSaveDraftCmd extends Command { * 主表ID(有值表示修改暂存,无值表示新建暂存) */ @ApiModelProperty(value = "主表ID") - private Long id; + private String workId; @ApiModelProperty(value = "企业", name = "corpinfoId", required = true) private Long corpinfoId; @@ -61,4 +61,7 @@ public class EightworkInfoSaveDraftCmd extends Command { @ApiModelProperty(value = "部门id", name = "departmentId") private Long departmentId; + + @ApiModelProperty(value = "其他参数", name = "others") + private JSONObject others; } diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/MeasuresLogsPageQry.java b/web-client/src/main/java/com/zcloud/eightwork/dto/MeasuresLogsPageQry.java index 89114d2..60ad48c 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/MeasuresLogsPageQry.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/MeasuresLogsPageQry.java @@ -23,6 +23,8 @@ public class MeasuresLogsPageQry extends PageQuery { * - `le`: 小于等于比较查询 * - `ne`: 不等比较查询,对应SQL的!=操作符 */ - private String likeWorkType; + private String eqWorkType; + private String eqWorkId; + private Long eqUpdateId; } diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogAddCmd.java b/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogAddCmd.java index 62ec977..75b33d1 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogAddCmd.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogAddCmd.java @@ -23,7 +23,7 @@ import java.util.List; @AllArgsConstructor public class TaskLogAddCmd extends Command { @ApiModelProperty(value = "主表ID(有值表示从暂存转正式,无值表示首次正式提交)") - private Long id; + private String workId; @ApiModelProperty(value = "任务类型", name = "workType",required = true) @NotBlank @@ -56,6 +56,7 @@ public class TaskLogAddCmd extends Command { @ApiModelProperty(value = "部门id", name = "departmentId") private Long departmentId; + private String departmentName; @ApiModelProperty(value = "其他参数", name = "others") private JSONObject others; } diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogNextCmd.java b/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogNextCmd.java index b842831..b0ed445 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogNextCmd.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/TaskLogNextCmd.java @@ -50,5 +50,8 @@ public class TaskLogNextCmd extends Command { //经度 @ApiModelProperty(value = "经度") private String longitude; + //附件 + @ApiModelProperty(value = "附件") + private String filePath; } 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 c2001e8..457e883 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 @@ -21,6 +21,9 @@ public class TaskSignStepInfoCmd extends Command { //步骤ID @ApiModelProperty(value = "步骤ID") private Long stepId; + //步骤名 + @ApiModelProperty(value = "步骤名") + private String stepName; //操作人 @ApiModelProperty(value = "操作人编码") private String actorField; diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/BlockingStepInfoCO.java b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/BlockingStepInfoCO.java new file mode 100644 index 0000000..4abc8dc --- /dev/null +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/BlockingStepInfoCO.java @@ -0,0 +1,35 @@ +package com.zcloud.eightwork.dto.clientobject; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 阻塞步骤信息 CO + * + * @Author fangjiakai + * @Date 2026-03-24 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@ApiModel("阻塞步骤信息") +public class BlockingStepInfoCO { + + @ApiModelProperty(value = "阻塞步骤ID") + private Long stepId; + + @ApiModelProperty(value = "阻塞步骤名称") + private String stepName; + + @ApiModelProperty(value = "当前填写次数") + private Integer currentFillTimes; + + @ApiModelProperty(value = "应填写次数") + private Integer minFillTimes; + + @ApiModelProperty(value = "是否已达成条件") + private Boolean isCompleted; +} diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/ConfinedSpaceCO.java b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/ConfinedSpaceCO.java index 6b43765..a50b641 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/ConfinedSpaceCO.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/ConfinedSpaceCO.java @@ -55,9 +55,12 @@ public class ConfinedSpaceCO extends ClientObject { //最大作业人数 @ApiModelProperty(value = "最大作业人数") private Integer maximumNumber; - //是否有应急指导书,0否1是 - @ApiModelProperty(value = "是否有应急指导书,0否1是") + //是否有应急指导书,1是2否 + @ApiModelProperty(value = "是否有应急指导书,1是2否") private Integer isEmergencyBook; + //应急指导书附件 + @ApiModelProperty(value = "应急指导书附件") + private String emergencyBookFile; //位置及范围 @ApiModelProperty(value = "位置及范围") private String position; 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 0049c8f..6589f5c 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 @@ -136,6 +136,9 @@ public class TaskLogCO extends ClientObject { //经度 @ApiModelProperty(value = "经度") private String longitude; + //附件 + @ApiModelProperty(value = "附件") + private String filePath; //其他参数(special_step_code==other 时使用) @ApiModelProperty(value = "其他参数") private String otherParams; diff --git a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/ConfinedSpaceE.java b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/ConfinedSpaceE.java index 9affb06..acd1b61 100644 --- a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/ConfinedSpaceE.java +++ b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/ConfinedSpaceE.java @@ -37,8 +37,10 @@ public class ConfinedSpaceE extends BaseE { private String separateSafetyMeasures; //最大作业人数 private Integer maximumNumber; - //是否有应急指导书,0否1是 + //是否有应急指导书,1是2否 private Integer isEmergencyBook; + //应急指导书附件 + private String emergencyBookFile; //位置及范围 private String position; //所属部门 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 d9b146e..9bec09e 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 @@ -93,6 +93,8 @@ public class TaskLogE extends BaseE { private String latitude; //经度 private String longitude; + //附件 + private String filePath; //其他参数(special_step_code==other 时使用) private String otherParams; //手机端组件名称(special_step_code==other 时使用) @@ -133,6 +135,7 @@ public class TaskLogE extends BaseE { this.currentFillTimes = log.getCurrentFillTimes(); this.latitude = log.getLatitude(); this.longitude = log.getLongitude(); + this.filePath = log.getFilePath(); this.otherParams = log.getOtherParams(); this.componentName = log.getComponentName(); diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/ConfinedSpaceDO.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/ConfinedSpaceDO.java index 1527179..926e820 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/ConfinedSpaceDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/ConfinedSpaceDO.java @@ -57,9 +57,12 @@ public class ConfinedSpaceDO extends BaseDO { //最大作业人数 @ApiModelProperty(value = "最大作业人数") private Integer maximumNumber; - //是否有应急指导书,0否1是 - @ApiModelProperty(value = "是否有应急指导书,0否1是") + //是否有应急指导书,1是2否 + @ApiModelProperty(value = "是否有应急指导书,1是2否") private Integer isEmergencyBook; + //应急指导书附件 + @ApiModelProperty(value = "应急指导书附件") + private String emergencyBookFile; //位置及范围 @ApiModelProperty(value = "位置及范围") private String position; diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/EightworkInfoDO.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/EightworkInfoDO.java index 437f4bf..c069f65 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/EightworkInfoDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/EightworkInfoDO.java @@ -62,12 +62,13 @@ public class EightworkInfoDO extends BaseDO { @ApiModelProperty(value = "部门id", name = "departmentId") private Long departmentId; + private String departmentName; public EightworkInfoDO(String workId) { this.workId = workId; } - public EightworkInfoDO(String uuid, String workType, String workLevel, Long corpinfoId, Integer xgfFlag, Integer internalOperationFlag, String projectId, Long xgfId, String checkNo, Integer status, JSONObject info,Long departmentId) { + public EightworkInfoDO(String uuid, String workType, String workLevel, Long corpinfoId, Integer xgfFlag,Integer gasFlag, Integer internalOperationFlag, String projectId, Long xgfId, String checkNo, Integer status, JSONObject info,Long departmentId,String departmentName) { this.workId = uuid; this.workType = workType; this.workLevel = workLevel; @@ -80,10 +81,12 @@ public class EightworkInfoDO extends BaseDO { this.internalOperationFlag = internalOperationFlag; this.projectId = projectId; this.xgfId = xgfId; + this.gasFlag = gasFlag; this.checkNo = checkNo; this.status = status; this.info = info.toJSONString(); this.departmentId = departmentId; + this.departmentName = departmentName; } } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/MeasuresLogsArchiveDO.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/MeasuresLogsArchiveDO.java new file mode 100644 index 0000000..0fcc34f --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/MeasuresLogsArchiveDO.java @@ -0,0 +1,52 @@ +package com.zcloud.eightwork.persistence.dataobject; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.jjb.saas.framework.repository.basedo.BaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +/** + * web-infrastructure + * 安全措施归档表 + * + * @Author fangjiakai + * @Date 2026-03-25 + */ +@Data +@TableName("measures_logs_archive") +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class MeasuresLogsArchiveDO extends BaseDO { + //作业类型 + @ApiModelProperty(value = "作业类型") + private String workType; + //防护措施 + @ApiModelProperty(value = "防护措施") + private String content; + //问题 &&分割 + @ApiModelProperty(value = "问题 &&分割") + private String questions; + //作业票id + @ApiModelProperty(value = "作业票id") + private String workId; + //所属步骤id + @ApiModelProperty(value = "所属步骤id") + private String taskLogId; + //答案 &&分割 + @ApiModelProperty(value = "答案 &&分割") + private String answer; + //是否合格1是2否 + @ApiModelProperty(value = "是否合格1是2否") + private Integer status; + //签字 + @ApiModelProperty(value = "签字") + private String signPath; + //类型1主要2其他 + @ApiModelProperty(value = "类型1主要2其他") + private Integer type; + //排序 + @ApiModelProperty(value = "排序") + private Integer orderBy; +} 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 01b9668..b4ac0ad 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 @@ -133,6 +133,9 @@ public class TaskLogArchiveDO extends BaseDO { //经度 @ApiModelProperty(value = "经度") private String longitude; + //附件 + @ApiModelProperty(value = "附件") + private String filePath; //其他参数(special_step_code==other 时使用) @ApiModelProperty(value = "其他参数") private String otherParams; 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 e7092d8..08cbda5 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 @@ -134,6 +134,9 @@ public class TaskLogDO extends BaseDO { //经度 @ApiModelProperty(value = "经度") private String longitude; + //附件 + @ApiModelProperty(value = "附件") + private String filePath; //其他参数(special_step_code==other 时使用) @ApiModelProperty(value = "其他参数") private String otherParams; diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/EightworkSupplementaryInfoMapper.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/EightworkSupplementaryInfoMapper.java index c79daed..b08601f 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/EightworkSupplementaryInfoMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/EightworkSupplementaryInfoMapper.java @@ -3,6 +3,7 @@ package com.zcloud.eightwork.persistence.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zcloud.eightwork.persistence.dataobject.EightworkSupplementaryInfoDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * web-infrastructure @@ -13,5 +14,12 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface EightworkSupplementaryInfoMapper extends BaseMapper { + /** + * 物理删除指定 workId 的所有记录 + * + * @param workId 作业ID + * @return 删除的记录数 + */ + int physicalDeleteByWorkId(@Param("workId") String workId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/MeasuresLogsArchiveMapper.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/MeasuresLogsArchiveMapper.java new file mode 100644 index 0000000..390c688 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/MeasuresLogsArchiveMapper.java @@ -0,0 +1,16 @@ +package com.zcloud.eightwork.persistence.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zcloud.eightwork.persistence.dataobject.MeasuresLogsArchiveDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * web-infrastructure + * 安全措施归档表 Mapper + * + * @Author fangjiakai + * @Date 2026-03-25 + */ +@Mapper +public interface MeasuresLogsArchiveMapper extends BaseMapper { +} diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/MeasuresLogsMapper.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/MeasuresLogsMapper.java index 1fe943b..0518667 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/MeasuresLogsMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/MeasuresLogsMapper.java @@ -3,6 +3,7 @@ package com.zcloud.eightwork.persistence.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zcloud.eightwork.persistence.dataobject.MeasuresLogsDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * web-infrastructure @@ -12,5 +13,11 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface MeasuresLogsMapper extends BaseMapper { - } - + /** + * 物理删除指定 workId 的所有记录 + * + * @param workId 作业ID + * @return 删除的记录数 + */ + int physicalDeleteByWorkId(@Param("workId") String workId); +} \ No newline at end of file diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/TaskLogMapper.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/TaskLogMapper.java index dbc7721..795b734 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/TaskLogMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/mapper/TaskLogMapper.java @@ -22,5 +22,13 @@ public interface TaskLogMapper extends BaseMapper { List getTodoCountForWork(@Param("orgId") Long orgId,@Param("userId") Long userId,@Param("workType") String workType); TaskLogDO getByWorkIdAndStepId(@Param("workId") String workId, @Param("stepId") Long stepId); + + /** + * 物理删除指定 workId 的所有记录 + * + * @param workId 作业ID + * @return 删除的记录数 + */ + int physicalDeleteByWorkId(@Param("workId") String workId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkSupplementaryInfoRepository.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkSupplementaryInfoRepository.java index c5294b9..b62fc1e 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkSupplementaryInfoRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/EightworkSupplementaryInfoRepository.java @@ -17,5 +17,13 @@ public interface EightworkSupplementaryInfoRepository extends BaseRepository listPage(Map params); List listAll(String workId); + + /** + * 物理删除指定 workId 的所有记录 + * + * @param workId 作业ID + * @return 删除的记录数 + */ + int physicalDeleteByWorkId(String workId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/MeasuresLogsArchiveRepository.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/MeasuresLogsArchiveRepository.java new file mode 100644 index 0000000..6340aee --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/MeasuresLogsArchiveRepository.java @@ -0,0 +1,14 @@ +package com.zcloud.eightwork.persistence.repository; + +import com.jjb.saas.framework.repository.repo.BaseRepository; +import com.zcloud.eightwork.persistence.dataobject.MeasuresLogsArchiveDO; + +/** + * web-infrastructure + * 安全措施归档表 Repository + * + * @Author fangjiakai + * @Date 2026-03-25 + */ +public interface MeasuresLogsArchiveRepository extends BaseRepository { +} 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 9061214..1ee0324 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 @@ -16,5 +16,13 @@ public interface MeasuresLogsRepository extends BaseRepository { PageResponse listPage(Map params); List listAll(String workId); + + /** + * 物理删除指定 workId 的所有记录 + * + * @param workId 作业ID + * @return 删除的记录数 + */ + int physicalDeleteByWorkId(String workId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/TaskLogRepository.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/TaskLogRepository.java index 41b6bd3..de23cb3 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/TaskLogRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/TaskLogRepository.java @@ -26,5 +26,13 @@ public interface TaskLogRepository extends BaseRepository { List getTodoCountForWork(Long orgId, Long userId, String workType); TaskLogDO getByWorkIdAndStepId(String workId, Long stepId); + + /** + * 物理删除指定 workId 的所有记录 + * + * @param workId 作业ID + * @return 删除的记录数 + */ + int physicalDeleteByWorkId(String workId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkSupplementaryInfoRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkSupplementaryInfoRepositoryImpl.java index a4372d2..f38d9db 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkSupplementaryInfoRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/EightworkSupplementaryInfoRepositoryImpl.java @@ -44,5 +44,11 @@ public class EightworkSupplementaryInfoRepositoryImpl extends BaseRepositoryImpl queryWrapper.eq(EightworkSupplementaryInfoDO::getWorkId, workId); return list(queryWrapper); } + + @Override + public int physicalDeleteByWorkId(String workId) { + // 使用 Mapper 中定义的物理删除 SQL + return eightworkSupplementaryInfoMapper.physicalDeleteByWorkId(workId); + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/MeasuresLogsArchiveRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/MeasuresLogsArchiveRepositoryImpl.java new file mode 100644 index 0000000..7ec9334 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/repository/impl/MeasuresLogsArchiveRepositoryImpl.java @@ -0,0 +1,20 @@ +package com.zcloud.eightwork.persistence.repository.impl; + +import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; +import com.zcloud.eightwork.persistence.dataobject.MeasuresLogsArchiveDO; +import com.zcloud.eightwork.persistence.mapper.MeasuresLogsArchiveMapper; +import com.zcloud.eightwork.persistence.repository.MeasuresLogsArchiveRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +/** + * web-infrastructure + * 安全措施归档表 Repository 实现 + * + * @Author fangjiakai + * @Date 2026-03-25 + */ +@Service +@RequiredArgsConstructor +public class MeasuresLogsArchiveRepositoryImpl extends BaseRepositoryImpl implements MeasuresLogsArchiveRepository { +} 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 0750ca2..74b5049 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 @@ -46,5 +46,11 @@ public class MeasuresLogsRepositoryImpl extends BaseRepositoryImpl and t.work_type = #{params.eqWorkType} @@ -16,6 +17,9 @@ and t.status = #{params.eqStatus} + + and t.work_level = #{params.eqWorkLevel} + and t.department_id = #{params.eqDepartmentId} @@ -31,6 +35,7 @@ and t.project_id = #{params.eqProjectId} + and exists (select 1 from task_log log @@ -58,6 +63,15 @@ and t.create_name like concat('%', #{params.likeCreateName}, '%') + + and t.info->>'$.workContent' like concat('%', #{params.likeCreateName}, '%') + + + and t.info->>'$.workStartTime' >= #{params.geWorkStartTime} + + + and t.info->>'$.workStartTime' <= #{params.leWorkStartTime} + and exists (select 1 from task_log log diff --git a/web-infrastructure/src/main/resources/mapper/EightworkSupplementaryInfoMapper.xml b/web-infrastructure/src/main/resources/mapper/EightworkSupplementaryInfoMapper.xml index 6024035..55ebb23 100644 --- a/web-infrastructure/src/main/resources/mapper/EightworkSupplementaryInfoMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/EightworkSupplementaryInfoMapper.xml @@ -4,5 +4,9 @@ + + DELETE FROM eightwork_supplementary_info WHERE work_id = #{workId} + + diff --git a/web-infrastructure/src/main/resources/mapper/MeasuresLogsArchiveMapper.xml b/web-infrastructure/src/main/resources/mapper/MeasuresLogsArchiveMapper.xml new file mode 100644 index 0000000..d89e286 --- /dev/null +++ b/web-infrastructure/src/main/resources/mapper/MeasuresLogsArchiveMapper.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/web-infrastructure/src/main/resources/mapper/MeasuresLogsMapper.xml b/web-infrastructure/src/main/resources/mapper/MeasuresLogsMapper.xml index 235a6f8..f3fe1ca 100644 --- a/web-infrastructure/src/main/resources/mapper/MeasuresLogsMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/MeasuresLogsMapper.xml @@ -4,5 +4,9 @@ + + DELETE FROM measures_logs WHERE work_id = #{workId} + + diff --git a/web-infrastructure/src/main/resources/mapper/TaskLogMapper.xml b/web-infrastructure/src/main/resources/mapper/TaskLogMapper.xml index 136e331..d3653fc 100644 --- a/web-infrastructure/src/main/resources/mapper/TaskLogMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/TaskLogMapper.xml @@ -21,12 +21,13 @@ task_log.step_id, count(1) as todoCount from task_log + left join eightwork_info on task_log.work_id = eightwork_info.work_id where task_log.status = 0 - left join eightwork_info on task_log.work_id = eightwork_info.work_id and task_log.work_type = #{workType} and eightwork_info.status != 0 and (task_log.act_user = #{userId} - or (task_log.act_user_department = #{orgId} and task_log.act_user is null)) + or (task_log.act_user_department = #{orgId} + and task_log.act_user is null)) group by task_log.step_id @@ -37,5 +38,9 @@ and step_id = #{stepId} limit 1 + + + DELETE FROM task_log WHERE work_id = #{workId} +