From 36e99617e389dac69736bf863c49e97e796e07b5 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Sat, 29 Nov 2025 16:57:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=9B=E6=A0=87=E8=A7=A3=E6=9E=90=E7=AE=97?= =?UTF-8?q?=E6=B3=95=E6=9C=8D=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../analysis/AnalysisController.java | 10 ++- .../web/service/analysis/AnalysisService.java | 72 ++++++++++++++++--- .../main/resources/mapper/AnalysisMapper.xml | 4 +- .../domain/analysis/dto/AnalysisDto.java | 38 ++++++++++ .../analysis/vo/AnalysisLabelItemOcrVo.java | 4 +- .../domain/rabbitmq/dto/RabbitMqMessage.java | 7 +- .../java/com/bonus/file/util/MinioUtil.java | 27 +++++++ .../bonus/framework/manager/AsyncManager.java | 3 +- .../bonus/ocr/service/AnalysisOcrService.java | 28 +++++++- .../consumer/RabbitMQConsumerService.java | 2 +- .../rabbitmq/service/SendRabbitMqService.java | 18 +---- 11 files changed, 180 insertions(+), 33 deletions(-) diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/analysis/AnalysisController.java b/bonus-admin/src/main/java/com/bonus/web/controller/analysis/AnalysisController.java index 1a325d4..6497981 100644 --- a/bonus-admin/src/main/java/com/bonus/web/controller/analysis/AnalysisController.java +++ b/bonus-admin/src/main/java/com/bonus/web/controller/analysis/AnalysisController.java @@ -92,13 +92,21 @@ public class AnalysisController extends BaseController { } @ApiOperation(value = "招标解析", notes = "删除项目数据") - @PostMapping("delBidData") + @PostMapping("delProData") @SysLog(title = "招标解析", module = "招标解析->删除项目数据", businessType = OperaType.DELETE, details = "删除项目数据", logType = 1) @RequiresPermissions("analysis:analysis:del") public AjaxResult delProData(@RequestBody AnalysisDto.TemplateDto dto) { return analysisService.delProData(dto); } + @ApiOperation(value = "招标解析", notes = "标段提交文件解析") + @PostMapping("saveBidData") + @SysLog(title = "招标解析", module = "招标解析->标段提交文件解析", businessType = OperaType.INSERT, details = "标段提交文件解析", logType = 1) + @RequiresPermissions("analysis:analysis:add") + public AjaxResult saveBidData(@RequestBody AnalysisDto.TemplateBidDto dto) { + return analysisService.saveBidData(dto); + } + @ApiOperation(value = "测试mq异步消息", notes = "测试mq异步消息") @GetMapping("/testAsyncMq2") public AjaxResult testAsyncMq2() { diff --git a/bonus-admin/src/main/java/com/bonus/web/service/analysis/AnalysisService.java b/bonus-admin/src/main/java/com/bonus/web/service/analysis/AnalysisService.java index 45da06c..a8931d9 100644 --- a/bonus-admin/src/main/java/com/bonus/web/service/analysis/AnalysisService.java +++ b/bonus-admin/src/main/java/com/bonus/web/service/analysis/AnalysisService.java @@ -14,6 +14,7 @@ import com.bonus.common.domain.file.vo.ResourceFileVo; import com.bonus.common.domain.file.vo.SysFile; import com.bonus.common.domain.ocr.dto.OcrRequest; import com.bonus.common.domain.ocr.vo.WordConvertPdfResponse; +import com.bonus.common.domain.rabbitmq.dto.RabbitMqMessage; import com.bonus.common.utils.Base64ToPdfConverter; import com.bonus.common.utils.ValidatorsUtils; import com.bonus.file.service.FileUploadService; @@ -120,7 +121,7 @@ public class AnalysisService { map.put("uploadPath", uploadPath); list.add(map); } - AsyncManager.me().executeSendRabbitMqMessage(list); +// AsyncManager.me().executeSendRabbitMqMessage(list); return AjaxResult.success(); } @@ -147,7 +148,7 @@ public class AnalysisService { public AjaxResult saveData(AnalysisDto.TemplateDto dto) { try { // 异步任务集合 - List> asyncTaskList = new ArrayList<>(); + List asyncTaskList = new ArrayList<>(); // 校验数据是否合法 String validResult = validatorsUtils.valid(dto, AnalysisDto.TemplateDto.ADD.class); if (StringUtils.isNotBlank(validResult)) { @@ -169,14 +170,15 @@ public class AnalysisService { dto.getFiles().get(i).setBusinessId(id); dto.getFiles().get(i).setSourceTable(TableConstants.TB_PRO_COMPOSITION); // 添加异步任务数据 - Map map = new HashMap<>(); + RabbitMqMessage msg = new RabbitMqMessage(); String taskId = UUID.randomUUID().toString(); - map.put("taskId", taskId); - map.put("uploadPath", dto.getFiles().get(i).getFilePath()); - map.put("businessId", dto.getProId()); - map.put("templateId",dto.getTemplateId()); - map.put("analysisLabelId",dto.getAnalysisLabelId()); - asyncTaskList.add(map); + msg.setMessageId(taskId); + msg.setUploadPath(dto.getFiles().get(i).getFilePath()); + msg.setProId(dto.getProId()); + msg.setTemplateId(dto.getTemplateId()); + msg.setAnalysisLabelId(dto.getAnalysisLabelId()); + msg.setTaskName("OCR_PROCESS"); + asyncTaskList.add(msg); } sourceFileService.saveResourceFile(dto.getFiles()); // 执行异步任务 @@ -336,5 +338,57 @@ public class AnalysisService { return AjaxResult.error(); } } + + /** + * 招标解析->标段提交文件解析 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2025/11/29 16:17 + */ + @Transactional(rollbackFor = Exception.class) + public AjaxResult saveBidData(AnalysisDto.TemplateBidDto dto) { + try { + // 异步任务集合 + List asyncTaskList = new ArrayList<>(); + // 校验数据是否合法 + String validResult = validatorsUtils.valid(dto, AnalysisDto.TemplateBidDto.ADD.class); + if (StringUtils.isNotBlank(validResult)) { + return AjaxResult.error(validResult); + } + + List compositions = new ArrayList<>(); + + for (String uploadType : dto.getUploadType()) { + ProComposition vo = createVo(dto.getBidId(), uploadType,"2"); + compositions.add(vo); + } + // 保存标段的文件组成数据 + analysisService.addProCompositionData(compositions); + // 添加文件 + for (int i = 0; i < compositions.size(); i++) { + Long id = compositions.get(i).getId(); + dto.getFiles().get(i).setBusinessId(id); + dto.getFiles().get(i).setSourceTable(TableConstants.TB_PRO_COMPOSITION); + // 添加异步任务数据 + RabbitMqMessage msg = new RabbitMqMessage(); + String taskId = UUID.randomUUID().toString(); + msg.setMessageId(taskId); + msg.setUploadPath(dto.getFiles().get(i).getFilePath()); + msg.setProId(dto.getProId()); + msg.setBidId(dto.getBidId()); + msg.setTaskName("OCR_PROCESS"); + asyncTaskList.add(msg); + } + sourceFileService.saveResourceFile(dto.getFiles()); + // 执行异步任务 + AsyncManager.me().executeSendRabbitMqMessage(asyncTaskList); + return AjaxResult.success(); + } catch (Exception e) { + log.error(e.toString(),e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return AjaxResult.error(); + } + } } diff --git a/bonus-analysis/src/main/resources/mapper/AnalysisMapper.xml b/bonus-analysis/src/main/resources/mapper/AnalysisMapper.xml index 6274b2f..f54dcb0 100644 --- a/bonus-analysis/src/main/resources/mapper/AnalysisMapper.xml +++ b/bonus-analysis/src/main/resources/mapper/AnalysisMapper.xml @@ -122,8 +122,8 @@