From 7649a2bb592ecb7e35c2333cd25b19b5ab8be423 Mon Sep 17 00:00:00 2001 From: xueqingkun Date: Wed, 4 Sep 2024 11:07:46 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E7=AC=94=E5=BD=95=E5=9B=BE=E7=89=87?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OCRRecordController.java | 34 +++++++ .../police/dto/NoteRecordDetailDTO.java | 34 +++++++ .../police/mapper/CaseTaskRecordMapper.java | 2 + .../police/service/CaseTaskRecordService.java | 2 + .../police/service/FileOcrProcessService.java | 3 + .../police/service/OCRRecordService.java | 2 + .../service/RecordSplitProcessService.java | 10 ++ .../impl/FileOcrProcessServiceImpl.java | 19 ++++ .../impl/NoteRecordSplitServiceImpl.java | 91 ++----------------- .../service/impl/OCRRecordServiceImpl.java | 65 ++++++++++++- .../impl/RecordSplitProcessServiceImpl.java | 81 +++++++++++++++++ 11 files changed, 255 insertions(+), 88 deletions(-) diff --git a/src/main/java/com/supervision/police/controller/OCRRecordController.java b/src/main/java/com/supervision/police/controller/OCRRecordController.java index 86d3e15..f8078c2 100644 --- a/src/main/java/com/supervision/police/controller/OCRRecordController.java +++ b/src/main/java/com/supervision/police/controller/OCRRecordController.java @@ -34,27 +34,61 @@ public class OCRRecordController { } + /** + * 查询笔录信息 + * @param recordId + * @return + */ @GetMapping("/info") public R queryRecordInfo(@RequestParam("recordId") String recordId) { NoteRecordDTO noteRecord = ocrRecordService.queryRecordInfo(recordId); return R.ok(noteRecord); } + /** + * 查询笔录文件列表 + * @param recordId + * @return + */ @GetMapping("/fileList") public R> queryFileList(@RequestParam("recordId") String recordId) { List recordFileDTOList = ocrRecordService.queryFileList(recordId); return R.ok(recordFileDTOList); } + /** + * 重新OCR识别 + * @param ocrId + * @return + */ + @GetMapping("/reOcr") public R reOcr(@RequestParam("ocrId") String ocrId) { Boolean success = ocrRecordService.reOcr(ocrId); return R.ok(success); } + + /** + * 修改OCR识别文本 + * @param ocrTextDTOList + * @return + */ @PostMapping("/reviseOcrText") public R reviseOcrText(@RequestBody List ocrTextDTOList) { Boolean success = ocrRecordService.reviseOcrText(ocrTextDTOList); return R.ok(success); } + + /** + * 提交笔录分析任务 + * @param recordId + * @return + */ + @GetMapping("/submitTask") + public R submitRecordTask(String recordId) { + Boolean success = ocrRecordService.submitRecordTask(recordId); + return R.ok(success); + } + } diff --git a/src/main/java/com/supervision/police/dto/NoteRecordDetailDTO.java b/src/main/java/com/supervision/police/dto/NoteRecordDetailDTO.java index d1f8d4d..8c05e67 100644 --- a/src/main/java/com/supervision/police/dto/NoteRecordDetailDTO.java +++ b/src/main/java/com/supervision/police/dto/NoteRecordDetailDTO.java @@ -1,11 +1,13 @@ package com.supervision.police.dto; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.annotation.JsonFormat; import com.supervision.minio.domain.MinioFile; import com.supervision.police.domain.CaseTaskRecord; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; @@ -32,6 +34,12 @@ public class NoteRecordDetailDTO { */ private String recordName; + @Schema(description = "笔录类型 0:文档 1:ocr图片识别") + private String recordType; + + @Schema(description = "是否已提交 0:否 1:是") + private String submitted; + /** * 笔录文件信息 */ @@ -155,4 +163,30 @@ public class NoteRecordDetailDTO { } } } + + public void setRecordTypeValue(List recordFileDTOS){ + + if (CollUtil.isEmpty(recordFileDTOS) || CollUtil.isEmpty(fileList)){ + this.recordType = "0"; + return; + } + + for (RecordFileDTO recordFileDTO : recordFileDTOS) { + for (NoteRecordFileDTO noteRecordFileDTO : this.fileList) { + if (StrUtil.equals(recordFileDTO.getFileId(), noteRecordFileDTO.getFileId())){ + this.recordType = "1"; + return; + } + } + } + this.recordType = "0"; + } + + public void setSubmittedValue(CaseTaskRecord caseTaskRecord){ + if (null == caseTaskRecord){ + this.submitted = "0"; + return; + } + this.submitted = StrUtil.equals(caseTaskRecord.getRecordId(), this.id) ? "1" : "0"; + } } diff --git a/src/main/java/com/supervision/police/mapper/CaseTaskRecordMapper.java b/src/main/java/com/supervision/police/mapper/CaseTaskRecordMapper.java index a03dfe6..aafac71 100644 --- a/src/main/java/com/supervision/police/mapper/CaseTaskRecordMapper.java +++ b/src/main/java/com/supervision/police/mapper/CaseTaskRecordMapper.java @@ -4,6 +4,8 @@ import com.supervision.police.domain.CaseTaskRecord; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author Administrator * @description 针对表【case_task_record(案件任务记录表)】的数据库操作Mapper diff --git a/src/main/java/com/supervision/police/service/CaseTaskRecordService.java b/src/main/java/com/supervision/police/service/CaseTaskRecordService.java index 9f81c31..dac7a8d 100644 --- a/src/main/java/com/supervision/police/service/CaseTaskRecordService.java +++ b/src/main/java/com/supervision/police/service/CaseTaskRecordService.java @@ -3,6 +3,8 @@ package com.supervision.police.service; import com.supervision.police.domain.CaseTaskRecord; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * @author Administrator * @description 针对表【case_task_record(案件任务记录表)】的数据库操作Service diff --git a/src/main/java/com/supervision/police/service/FileOcrProcessService.java b/src/main/java/com/supervision/police/service/FileOcrProcessService.java index 5dc39c3..6426b89 100644 --- a/src/main/java/com/supervision/police/service/FileOcrProcessService.java +++ b/src/main/java/com/supervision/police/service/FileOcrProcessService.java @@ -34,4 +34,7 @@ public interface FileOcrProcessService extends IService { List queryFileList(List fileIdList); + + List queryListByRecordId(String recordId); + } diff --git a/src/main/java/com/supervision/police/service/OCRRecordService.java b/src/main/java/com/supervision/police/service/OCRRecordService.java index b89791f..58b6092 100644 --- a/src/main/java/com/supervision/police/service/OCRRecordService.java +++ b/src/main/java/com/supervision/police/service/OCRRecordService.java @@ -20,4 +20,6 @@ public interface OCRRecordService { Boolean reviseOcrText(List ocrTextDTOList); Boolean reOcr(String ocrId); + + Boolean submitRecordTask(String recordId); } diff --git a/src/main/java/com/supervision/police/service/RecordSplitProcessService.java b/src/main/java/com/supervision/police/service/RecordSplitProcessService.java index 3cace96..7603063 100644 --- a/src/main/java/com/supervision/police/service/RecordSplitProcessService.java +++ b/src/main/java/com/supervision/police/service/RecordSplitProcessService.java @@ -8,4 +8,14 @@ import java.util.List; public interface RecordSplitProcessService { void process(List allTypeList, List splitList); + + /** + * 校验是否已经执行过任务 + * + * @param caseId + * @param recordId + * @return 没有执行过, 返回true, 执行过, 返回false + */ + boolean recordProcessTaskStatusCheck(String caseId, String recordId, Integer splitSize); + } diff --git a/src/main/java/com/supervision/police/service/impl/FileOcrProcessServiceImpl.java b/src/main/java/com/supervision/police/service/impl/FileOcrProcessServiceImpl.java index 28f1dbf..76df1fb 100644 --- a/src/main/java/com/supervision/police/service/impl/FileOcrProcessServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/FileOcrProcessServiceImpl.java @@ -1,17 +1,20 @@ package com.supervision.police.service.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.supervision.minio.domain.MinioFile; import com.supervision.minio.service.MinioService; import com.supervision.police.domain.FileOcrProcess; +import com.supervision.police.domain.NoteRecord; import com.supervision.police.dto.OCRReqDTO; import com.supervision.police.dto.OCRResDTO; import com.supervision.police.dto.RecordFileDTO; import com.supervision.police.service.FileOcrProcessService; import com.supervision.police.mapper.FileOcrProcessMapper; +import com.supervision.police.service.NoteRecordService; import com.supervision.police.service.OCRService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -21,7 +24,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; /** @@ -42,6 +47,8 @@ public class FileOcrProcessServiceImpl extends ServiceImpl submitOCR(List fileIdList) { @@ -138,6 +145,18 @@ public class FileOcrProcessServiceImpl extends ServiceImpl queryListByRecordId(String recordId) { + if (StrUtil.isEmpty(recordId)){ + return new ArrayList<>(1); + } + NoteRecord noteRecord = noteRecordService.getById(recordId); + if (Objects.isNull(noteRecord) || StrUtil.isEmpty(noteRecord.getFileIds())){ + return new ArrayList<>(1); + } + return queryFileList(Arrays.stream(noteRecord.getFileIds().split(",")).toList()); + } + private List buildOCRReqDTO(List fileIdList){ List minioFiles = minioService.listMinioFile(fileIdList); diff --git a/src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java b/src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java index 22373dd..6732364 100644 --- a/src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/NoteRecordSplitServiceImpl.java @@ -19,6 +19,7 @@ import com.supervision.neo4j.service.Neo4jService; import com.supervision.police.domain.*; import com.supervision.police.dto.NoteRecordDTO; import com.supervision.police.dto.NoteRecordFileDTO; +import com.supervision.police.dto.RecordFileDTO; import com.supervision.police.vo.NoteRecordReqVO; import com.supervision.police.dto.NoteRecordDetailDTO; import com.supervision.police.mapper.NoteRecordSplitMapper; @@ -65,14 +66,14 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl allNoteRecordSplits = records.getFileIdList().stream() .flatMap(fileId -> batchSaveRecordSplit(record, fileId).stream()).toList(); - boolean taskStatus = recordProcessTaskStatusCheck(record.getCaseId(), record.getId(), allNoteRecordSplits.size()); + boolean taskStatus = recordSplitProcessService.recordProcessTaskStatusCheck(record.getCaseId(), record.getId(), allNoteRecordSplits.size()); // 如果校验结果为true,则说明需要进行分类以及三元组操作 if (taskStatus) { // 对笔录进行分类,并对笔录进行提取三元组 @@ -103,86 +104,6 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl caseTaskRecordOpt = caseTaskRecordService.lambdaQuery() - .eq(CaseTaskRecord::getCaseId, caseId).eq(CaseTaskRecord::getRecordId, recordId).oneOpt(); - - - if (caseTaskRecordOpt.isEmpty()) { - log.info("recordProcessTaskStatusCheck:recordId:{}未查询到任务记录, 新建任务记录...",recordId); - CaseTaskRecord newCaseTaskRecord = new CaseTaskRecord(); - newCaseTaskRecord.setCaseId(caseId); - newCaseTaskRecord.setRecordId(recordId); - - newCaseTaskRecord.setStatus(splitSize > 0 ? 1 : 2); - newCaseTaskRecord.setSubmitTime(LocalDateTime.now()); - caseTaskRecordService.save(newCaseTaskRecord); - - return newCaseTaskRecord.getStatus().equals(1); - - } - - if (0 == splitSize) { - // 如果笔录对为0,就直接不需要拆分,直接认为任务成功 - CaseTaskRecord caseTaskRecord = caseTaskRecordOpt.get(); - caseTaskRecord.setStatus(2); - caseTaskRecord.setSubmitTime(LocalDateTime.now()); - caseTaskRecordService.saveOrUpdate(caseTaskRecord); - return false; - } - - if (caseTaskRecordOpt.get().getStatus() == 2) { - return false; - } - - // 如果存在,则校验时间是否已经超过1天,如果超过了1天还没有执行完毕,就重新提交这个任务 - CaseTaskRecord caseTaskRecord = caseTaskRecordOpt.get(); - // 如果未执行,则提交执行 - if (caseTaskRecordOpt.get().getStatus() == 0) { - caseTaskRecord.setStatus(1); - caseTaskRecord.setSubmitTime(LocalDateTime.now()); - caseTaskRecord.setTaskCount(0); - caseTaskRecord.setFinishCount(0); - caseTaskRecordService.updateById(caseTaskRecord); - return true; - } - - if (caseTaskRecordOpt.get().getStatus() == 1 && LocalDateTime.now().isAfter(caseTaskRecord.getSubmitTime().plusDays(1))) { - // 如果已经超过1天,则重新提交任务 - caseTaskRecord.setStatus(1); - caseTaskRecord.setTaskCount(0); - caseTaskRecord.setFinishCount(0); - caseTaskRecord.setSubmitTime(LocalDateTime.now()); - caseTaskRecordService.updateById(caseTaskRecord); - return true; - } - if (caseTaskRecordOpt.get().getStatus() == 3) { - // 如果执行失败,就重新执行 - caseTaskRecord.setStatus(1); - caseTaskRecord.setTaskCount(0); - caseTaskRecord.setFinishCount(0); - caseTaskRecord.setSubmitTime(LocalDateTime.now()); - caseTaskRecordService.updateById(caseTaskRecord); - return true; - } - // 如果都不是就在跑一次 - caseTaskRecord.setStatus(1); - caseTaskRecord.setTaskCount(0); - caseTaskRecord.setFinishCount(0); - caseTaskRecord.setSubmitTime(LocalDateTime.now()); - caseTaskRecordService.updateById(caseTaskRecord); - return true; - - } - @Override public Map queryRecords(NoteRecord noteRecords, Integer page, Integer size) { @@ -372,13 +293,15 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl taskList = caseTaskRecordService.lambdaQuery().eq(CaseTaskRecord::getCaseId, noteRecord.getCaseId()).list(); Map taskRecordMap = taskList.stream().collect(Collectors.toMap(CaseTaskRecord::getRecordId, Function.identity(), (k1, k2) -> k1)); - + List recordFileDTOS = fileOcrProcessService.queryFileList(fileIdList); setRecordDetailSerialNumber(noteRecordDetailDTOList); for (NoteRecordDetailDTO recordDetailDTO : noteRecordDetailDTOList) { // 获取文件的文件名称 Set fileNameSet = recordDetailDTO.getFileList().stream().map(NoteRecordFileDTO::getFileName).collect(Collectors.toSet()); recordDetailDTO.setConfessionMaterial(CollUtil.join(fileNameSet, ";")); recordDetailDTO.setPercentageValue(taskRecordMap.get(recordDetailDTO.getId())); + recordDetailDTO.setRecordTypeValue(recordFileDTOS); + recordDetailDTO.setSubmittedValue(taskRecordMap.get(recordDetailDTO.getId())); } noteRecordDetailDTOList.sort(Comparator.comparing(NoteRecordDetailDTO::getSerialNumber)); diff --git a/src/main/java/com/supervision/police/service/impl/OCRRecordServiceImpl.java b/src/main/java/com/supervision/police/service/impl/OCRRecordServiceImpl.java index b61c072..a7e9f50 100644 --- a/src/main/java/com/supervision/police/service/impl/OCRRecordServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/OCRRecordServiceImpl.java @@ -3,24 +3,27 @@ package com.supervision.police.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.StrUtil; +import com.supervision.demo.dto.QARecordNodeDTO; import com.supervision.minio.domain.MinioFile; import com.supervision.minio.service.MinioService; import com.supervision.police.domain.FileOcrProcess; +import com.supervision.police.domain.ModelRecordType; import com.supervision.police.domain.NoteRecord; +import com.supervision.police.domain.NoteRecordSplit; import com.supervision.police.dto.NoteRecordDTO; import com.supervision.police.dto.OCRReqDTO; import com.supervision.police.dto.OCRTextDTO; import com.supervision.police.dto.RecordFileDTO; import com.supervision.police.service.*; import com.supervision.police.vo.NoteRecordReqVO; +import com.supervision.utils.RecordRegexUtil; +import com.supervision.utils.WordReadUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; -import java.util.Arrays; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -31,6 +34,12 @@ public class OCRRecordServiceImpl implements OCRRecordService { private final FileOcrProcessService fileOcrProcessService; private final NoteRecordService noteRecordService; + + private final RecordSplitProcessService recordSplitProcessService; + + private final NoteRecordSplitService noteRecordSplitService; + + private final ModelRecordTypeService modelRecordTypeService; @Override public String saveRecord(NoteRecordReqVO noteRecordReqVO) { @@ -108,6 +117,54 @@ public class OCRRecordServiceImpl implements OCRRecordService { return null; } + @Override + @Transactional(transactionManager = "dataSourceTransactionManager", rollbackFor = Exception.class) + public Boolean submitRecordTask(String recordId) { + Assert.notEmpty(recordId, "recordId不能为空"); + NoteRecord noteRecord = noteRecordService.getById(recordId); + if (Objects.isNull(noteRecord) || StrUtil.isEmpty(noteRecord.getFileIds())){ + log.info("submitRecordTask:笔录:{}对应的笔录文件为空...",recordId); + return false; + } + List fileIdList = Arrays.stream(noteRecord.getFileIds().split(",")).toList(); + List recordFileDTOS = fileOcrProcessService.queryFileList(fileIdList); + + if (CollUtil.isEmpty(recordFileDTOS)){ + log.info("submitRecordTask:笔录:{}对应的笔录文件为空...",recordId); + return false; + } + + List allNoteRecordSplits = recordFileDTOS.stream() + .flatMap(recordFileDTO -> batchSaveRecordSplit(noteRecord, recordFileDTO).stream()).toList(); + boolean taskStatus = recordSplitProcessService.recordProcessTaskStatusCheck(noteRecord.getCaseId(), noteRecord.getId(), allNoteRecordSplits.size()); + // 如果校验结果为true,则说明需要进行分类以及三元组操作 + if (taskStatus) { + // 对笔录进行分类,并对笔录进行提取三元组 + List allTypeList = modelRecordTypeService.lambdaQuery().list(); + recordSplitProcessService.process(allTypeList, allNoteRecordSplits); + } + return true; + } + + public List batchSaveRecordSplit(NoteRecord noteRecord, RecordFileDTO recordFileDTO) { + + String ocrText = recordFileDTO.getOcrText(); + String reviseText = recordFileDTO.getReviseText(); + List qaList = RecordRegexUtil.recordRegex( + StrUtil.isEmpty(reviseText) ? ocrText : reviseText, noteRecord.getName()); + + log.info("文件:{}拆分问答对:{}",recordFileDTO.getFileName(), qaList.size()); + + List splitList = new ArrayList<>(); + for (QARecordNodeDTO qa : qaList) { + splitList.add( + noteRecordSplitService.saveRecordSplit(noteRecord, + recordFileDTO.getFileName(), qa.getQuestion(), qa.getAnswer()) + ); + } + return splitList; + } + private List sortByIdOrder(List fileIdList,List recordFileDTOList){ if (CollUtil.size(fileIdList) < 2 || CollUtil.size(recordFileDTOList) < 2) { diff --git a/src/main/java/com/supervision/police/service/impl/RecordSplitProcessServiceImpl.java b/src/main/java/com/supervision/police/service/impl/RecordSplitProcessServiceImpl.java index 58efaa4..4053b19 100644 --- a/src/main/java/com/supervision/police/service/impl/RecordSplitProcessServiceImpl.java +++ b/src/main/java/com/supervision/police/service/impl/RecordSplitProcessServiceImpl.java @@ -1,23 +1,104 @@ package com.supervision.police.service.impl; +import com.supervision.police.domain.CaseTaskRecord; import com.supervision.police.domain.ModelRecordType; import com.supervision.police.domain.NoteRecordSplit; +import com.supervision.police.service.CaseTaskRecordService; import com.supervision.police.service.RecordSplitProcessService; import com.supervision.police.service.RecordSplitClassifyService; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; import java.util.List; +import java.util.Optional; +@Slf4j @Service @RequiredArgsConstructor public class RecordSplitProcessServiceImpl implements RecordSplitProcessService { private final RecordSplitClassifyService recordSplitClassifyService; + private final CaseTaskRecordService caseTaskRecordService; + @Override public void process(List allTypeList, List splitList) { // 通过异步的形式提交分类 recordSplitClassifyService.classify(allTypeList,splitList); } + + public boolean recordProcessTaskStatusCheck(String caseId, String recordId, Integer splitSize) { + // 首先查询是否存在任务,如果不存在,就新建 + Optional caseTaskRecordOpt = caseTaskRecordService.lambdaQuery() + .eq(CaseTaskRecord::getCaseId, caseId).eq(CaseTaskRecord::getRecordId, recordId).oneOpt(); + + + if (caseTaskRecordOpt.isEmpty()) { + log.info("recordProcessTaskStatusCheck:recordId:{}未查询到任务记录, 新建任务记录...",recordId); + CaseTaskRecord newCaseTaskRecord = new CaseTaskRecord(); + newCaseTaskRecord.setCaseId(caseId); + newCaseTaskRecord.setRecordId(recordId); + + newCaseTaskRecord.setStatus(splitSize > 0 ? 1 : 2); + newCaseTaskRecord.setSubmitTime(LocalDateTime.now()); + caseTaskRecordService.save(newCaseTaskRecord); + + return newCaseTaskRecord.getStatus().equals(1); + + } + + if (0 == splitSize) { + // 如果笔录对为0,就直接不需要拆分,直接认为任务成功 + CaseTaskRecord caseTaskRecord = caseTaskRecordOpt.get(); + caseTaskRecord.setStatus(2); + caseTaskRecord.setSubmitTime(LocalDateTime.now()); + caseTaskRecordService.saveOrUpdate(caseTaskRecord); + return false; + } + + if (caseTaskRecordOpt.get().getStatus() == 2) { + return false; + } + + // 如果存在,则校验时间是否已经超过1天,如果超过了1天还没有执行完毕,就重新提交这个任务 + CaseTaskRecord caseTaskRecord = caseTaskRecordOpt.get(); + // 如果未执行,则提交执行 + if (caseTaskRecordOpt.get().getStatus() == 0) { + caseTaskRecord.setStatus(1); + caseTaskRecord.setSubmitTime(LocalDateTime.now()); + caseTaskRecord.setTaskCount(0); + caseTaskRecord.setFinishCount(0); + caseTaskRecordService.updateById(caseTaskRecord); + return true; + } + + if (caseTaskRecordOpt.get().getStatus() == 1 && LocalDateTime.now().isAfter(caseTaskRecord.getSubmitTime().plusDays(1))) { + // 如果已经超过1天,则重新提交任务 + caseTaskRecord.setStatus(1); + caseTaskRecord.setTaskCount(0); + caseTaskRecord.setFinishCount(0); + caseTaskRecord.setSubmitTime(LocalDateTime.now()); + caseTaskRecordService.updateById(caseTaskRecord); + return true; + } + if (caseTaskRecordOpt.get().getStatus() == 3) { + // 如果执行失败,就重新执行 + caseTaskRecord.setStatus(1); + caseTaskRecord.setTaskCount(0); + caseTaskRecord.setFinishCount(0); + caseTaskRecord.setSubmitTime(LocalDateTime.now()); + caseTaskRecordService.updateById(caseTaskRecord); + return true; + } + // 如果都不是就在跑一次 + caseTaskRecord.setStatus(1); + caseTaskRecord.setTaskCount(0); + caseTaskRecord.setFinishCount(0); + caseTaskRecord.setSubmitTime(LocalDateTime.now()); + caseTaskRecordService.updateById(caseTaskRecord); + return true; + + } }