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 @@