From 328f8b9b3985bb884f434427a6ef89889edeee2e Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Mon, 24 Nov 2025 13:40:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=9B=E6=A0=87=E8=A7=A3=E6=9E=90=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../analysis/AnalysisController.java | 49 +++++++++++ .../common/CommonSelectController.java | 30 +++++++ .../web/service/analysis/AnalysisService.java | 82 +++++++++++++++++++ .../service/common/CommonSelectService.java | 38 +++++++++ .../analysis/mapper/IASAnalysisMapper.java | 26 ++++++ .../analysis/service/IASAnalysisService.java | 25 ++++++ .../service/impl/ASAnalysisServiceImpl.java | 32 ++++++++ .../main/resources/mapper/AnalysisMapper.xml | 33 ++++++++ .../bonus/common/domain/admin/SelectDto.java | 14 ++++ .../domain/analysis/dto/AnalysisDto.java | 23 ++++++ .../common/domain/analysis/vo/AnalysisVo.java | 78 ++++++++++++++++++ .../bonus/common/domain/ocr/vo/OcrData.java | 40 --------- .../common/domain/system/vo/SelectVo.java | 29 +++++++ .../bonus/system/mapper/ISelectMapper.java | 24 ++++++ .../bonus/system/service/ISelectService.java | 24 ++++++ .../service/impl/SelectServiceImpl.java | 38 +++++++++ .../resources/mapper/system/SelectMapper.xml | 16 ++++ 17 files changed, 561 insertions(+), 40 deletions(-) create mode 100644 bonus-admin/src/main/java/com/bonus/web/controller/analysis/AnalysisController.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/controller/common/CommonSelectController.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/service/analysis/AnalysisService.java create mode 100644 bonus-admin/src/main/java/com/bonus/web/service/common/CommonSelectService.java create mode 100644 bonus-analysis/src/main/java/com/bonus/analysis/mapper/IASAnalysisMapper.java create mode 100644 bonus-analysis/src/main/java/com/bonus/analysis/service/IASAnalysisService.java create mode 100644 bonus-analysis/src/main/java/com/bonus/analysis/service/impl/ASAnalysisServiceImpl.java create mode 100644 bonus-analysis/src/main/resources/mapper/AnalysisMapper.xml create mode 100644 bonus-common/src/main/java/com/bonus/common/domain/admin/SelectDto.java create mode 100644 bonus-common/src/main/java/com/bonus/common/domain/analysis/dto/AnalysisDto.java create mode 100644 bonus-common/src/main/java/com/bonus/common/domain/analysis/vo/AnalysisVo.java delete mode 100644 bonus-common/src/main/java/com/bonus/common/domain/ocr/vo/OcrData.java create mode 100644 bonus-common/src/main/java/com/bonus/common/domain/system/vo/SelectVo.java create mode 100644 bonus-system/src/main/java/com/bonus/system/mapper/ISelectMapper.java create mode 100644 bonus-system/src/main/java/com/bonus/system/service/ISelectService.java create mode 100644 bonus-system/src/main/java/com/bonus/system/service/impl/SelectServiceImpl.java create mode 100644 bonus-system/src/main/resources/mapper/system/SelectMapper.xml 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 new file mode 100644 index 0000000..68ee40f --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/controller/analysis/AnalysisController.java @@ -0,0 +1,49 @@ +package com.bonus.web.controller.analysis; + +import com.bonus.common.annotation.RequiresPermissions; +import com.bonus.common.annotation.SysLog; +import com.bonus.common.core.controller.BaseController; +//import com.bonus.web.service.analysis.AnalysisService; +import com.bonus.common.core.page.TableDataInfo; +import com.bonus.common.domain.analysis.dto.AnalysisDto; +import com.bonus.common.domain.analysis.vo.AnalysisVo; +import com.bonus.common.enums.OperaType; +import com.bonus.web.service.analysis.AnalysisService; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @className:AnalysisController + * @author:cwchen + * @date:2025-11-13-11:17 + * @version:1.0 + * @description:招标解析模块 + */ +@RestController +@RequestMapping("/analysis") +public class AnalysisController extends BaseController { + + @Resource(name = "AnalysisService") + private AnalysisService analysisService; + + /*@ApiOperation(value = "测试mq异步消息", notes = "测试mq异步消息") + @GetMapping("/testAsyncMq") + public AjaxResult testAsyncMq() { + return analysisService.testAsyncMq(); + }*/ + + @ApiOperation(value = "招标解析", notes = "查询列表") + @GetMapping("getList") + @SysLog(title = "招标解析", module = "招标解析->查询列表", businessType = OperaType.QUERY, details = "查询列表", logType = 1) + @RequiresPermissions("analysis:analysis:list") + public TableDataInfo getList(AnalysisDto dto) { + startPage(); + List list = analysisService.getList(dto); + return getDataTable(list); + } +} diff --git a/bonus-admin/src/main/java/com/bonus/web/controller/common/CommonSelectController.java b/bonus-admin/src/main/java/com/bonus/web/controller/common/CommonSelectController.java new file mode 100644 index 0000000..666f09e --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/controller/common/CommonSelectController.java @@ -0,0 +1,30 @@ +package com.bonus.web.controller.common; + +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.common.domain.admin.SelectDto; +import com.bonus.web.service.common.CommonSelectService; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import javax.annotation.Resource; + +/** + * @className:CommonSelect + * @author:cwchen + * @date:2025-11-24-13:15 + * @version:1.0 + * @description:通用下拉选/树 + */ +@RequestMapping("/commonSelect/") +public class CommonSelectController { + + @Resource(name = "CommonSelectService") + private CommonSelectService commonSelectService; + + @ApiOperation(value = "招标解析模板下拉选", notes = "获取招标解析模板下拉选") + @GetMapping("getAnalysisSelects") + public AjaxResult getAnalysisSelects(SelectDto selectDto) { + return commonSelectService.getAnalysisSelects(selectDto); + } +} 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 new file mode 100644 index 0000000..6dcb7d0 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/service/analysis/AnalysisService.java @@ -0,0 +1,82 @@ + +package com.bonus.web.service.analysis; + +import com.bonus.analysis.service.IASAnalysisService; +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.common.domain.analysis.dto.AnalysisDto; +import com.bonus.common.domain.analysis.vo.AnalysisVo; +import com.bonus.common.domain.rabbitmq.dto.RabbitMqMessage; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; + + +/** + * @className:AnalysisService + * @author:cwchen + * @date:2025-11-13-13:33 + * @version:1.0 + * @description:招标解析业务逻辑层 + */ + +@Service(value = "AnalysisService") +@Slf4j +public class AnalysisService { + +// @Resource(name = "RabbitMQProducer") +// private RabbitMQProducer rabbitMQProducer; + + @Resource(name = "taskExecutor") + private Executor taskExecutor; + + @Resource(name = "IASAnalysisService") + private IASAnalysisService analysisService; + + + public AjaxResult testAsyncMq() { + /*taskExecutor.submit(() -> { + for (int i = 0; i < 1; i++) { + RabbitMqMessage mqMessage = new RabbitMqMessage(); + mqMessage.setTaskName("基础OCR识别"); + if(i == 0){ + mqMessage.setUploadPath("personnelDatabase/2025/10/24/89a266f4-f928-4ee4-95eb-1a73906da0a7.png"); + }else { + mqMessage.setUploadPath("toolsDatabase/2025/11/13/3d6dc46140c24af282981df2017982e9.png"); + } + try { +// Boolean sendStatus = rabbitMQProducer.send("myExchange", "myRoutingKey", mqMessage).get(); + *//*CompletableFuture future = rabbitMQProducer.send("myExchange", "myRoutingKey", mqMessage); + future.thenAccept(success -> { + if (success) { + log.info("消息投递成功"); + } else { + log.error("消息投递失败"); + } + });*//* + } catch (Exception e) { + throw new RuntimeException(e); + } + } + });*/ + CompletableFuture.runAsync(() -> { + }, taskExecutor); + return AjaxResult.success(); + } + + + /** + * 招标解析->查询列表 + * @param dto + * @return List + * @author cwchen + * @date 2025/11/24 10:47 + */ + public List getList(AnalysisDto dto) { + return analysisService.getList(dto); + } +} + diff --git a/bonus-admin/src/main/java/com/bonus/web/service/common/CommonSelectService.java b/bonus-admin/src/main/java/com/bonus/web/service/common/CommonSelectService.java new file mode 100644 index 0000000..02775b4 --- /dev/null +++ b/bonus-admin/src/main/java/com/bonus/web/service/common/CommonSelectService.java @@ -0,0 +1,38 @@ +package com.bonus.web.service.common; + +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.common.domain.admin.SelectDto; +import com.bonus.common.domain.system.vo.SelectVo; +import com.bonus.system.service.ISelectService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @className:CommonSelectService + * @author:cwchen + * @date:2025-11-24-13:17 + * @version:1.0 + * @description:通用下拉选/树-业务层 + */ +@Service(value = "CommonSelectService") +@Slf4j +public class CommonSelectService { + + @Resource(name = "ISelectService") + private ISelectService selectService; + + /** + * 招标解析模板下拉选 + * @param selectDto + * @return AjaxResult + * @author cwchen + * @date 2025/11/24 13:31 + */ + public AjaxResult getAnalysisSelects(SelectDto selectDto) { + List list = selectService.getAnalysisSelects(selectDto); + return AjaxResult.success(list); + } +} diff --git a/bonus-analysis/src/main/java/com/bonus/analysis/mapper/IASAnalysisMapper.java b/bonus-analysis/src/main/java/com/bonus/analysis/mapper/IASAnalysisMapper.java new file mode 100644 index 0000000..9b1ad5e --- /dev/null +++ b/bonus-analysis/src/main/java/com/bonus/analysis/mapper/IASAnalysisMapper.java @@ -0,0 +1,26 @@ +package com.bonus.analysis.mapper; + +import com.bonus.common.domain.analysis.dto.AnalysisDto; +import com.bonus.common.domain.analysis.vo.AnalysisVo; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @className:IASAnalysisMapper + * @author:cwchen + * @date:2025-11-24-10:51 + * @version:1.0 + * @description:招标解析数据层 + */ +@Repository(value = "IASAnalysisMapper") +public interface IASAnalysisMapper { + /** + * 招标解析->查询列表 + * @param dto + * @return List + * @author cwchen + * @date 2025/11/24 11:17 + */ + List getList(AnalysisDto dto); +} diff --git a/bonus-analysis/src/main/java/com/bonus/analysis/service/IASAnalysisService.java b/bonus-analysis/src/main/java/com/bonus/analysis/service/IASAnalysisService.java new file mode 100644 index 0000000..7555379 --- /dev/null +++ b/bonus-analysis/src/main/java/com/bonus/analysis/service/IASAnalysisService.java @@ -0,0 +1,25 @@ +package com.bonus.analysis.service; + +import com.bonus.common.domain.analysis.dto.AnalysisDto; +import com.bonus.common.domain.analysis.vo.AnalysisVo; + +import java.util.List; + +/** + * @className:IASAnalysisService + * @author:cwchen + * @date:2025-11-24-10:49 + * @version:1.0 + * @description:招标解析业务层 + */ +public interface IASAnalysisService { + + /** + * 招标解析->查询列表 + * @param dto + * @return List + * @author cwchen + * @date 2025/11/24 11:06 + */ + List getList(AnalysisDto dto); +} diff --git a/bonus-analysis/src/main/java/com/bonus/analysis/service/impl/ASAnalysisServiceImpl.java b/bonus-analysis/src/main/java/com/bonus/analysis/service/impl/ASAnalysisServiceImpl.java new file mode 100644 index 0000000..e7a9f4a --- /dev/null +++ b/bonus-analysis/src/main/java/com/bonus/analysis/service/impl/ASAnalysisServiceImpl.java @@ -0,0 +1,32 @@ +package com.bonus.analysis.service.impl; + +import com.bonus.analysis.mapper.IASAnalysisMapper; +import com.bonus.analysis.service.IASAnalysisService; +import com.bonus.common.domain.analysis.dto.AnalysisDto; +import com.bonus.common.domain.analysis.vo.AnalysisVo; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +/** + * @className:ASAnalysisServiceImpl + * @author:cwchen + * @date:2025-11-24-10:50 + * @version:1.0 + * @description:招标解析业务实现层 + */ +@Slf4j +@Service(value = "IASAnalysisService") +public class ASAnalysisServiceImpl implements IASAnalysisService { + + @Resource(name = "IASAnalysisMapper") + private IASAnalysisMapper analysisMapper; + + @Override + public List getList(AnalysisDto dto) { + return analysisMapper.getList(dto); + } +} diff --git a/bonus-analysis/src/main/resources/mapper/AnalysisMapper.xml b/bonus-analysis/src/main/resources/mapper/AnalysisMapper.xml new file mode 100644 index 0000000..acded39 --- /dev/null +++ b/bonus-analysis/src/main/resources/mapper/AnalysisMapper.xml @@ -0,0 +1,33 @@ + + + + + + + diff --git a/bonus-common/src/main/java/com/bonus/common/domain/admin/SelectDto.java b/bonus-common/src/main/java/com/bonus/common/domain/admin/SelectDto.java new file mode 100644 index 0000000..dc58bf0 --- /dev/null +++ b/bonus-common/src/main/java/com/bonus/common/domain/admin/SelectDto.java @@ -0,0 +1,14 @@ +package com.bonus.common.domain.admin; + +import lombok.Data; + +/** + * @className:SelectDto + * @author:cwchen + * @date:2025-11-24-13:30 + * @version:1.0 + * @description:下拉选-dto + */ +@Data +public class SelectDto { +} diff --git a/bonus-common/src/main/java/com/bonus/common/domain/analysis/dto/AnalysisDto.java b/bonus-common/src/main/java/com/bonus/common/domain/analysis/dto/AnalysisDto.java new file mode 100644 index 0000000..71c8e73 --- /dev/null +++ b/bonus-common/src/main/java/com/bonus/common/domain/analysis/dto/AnalysisDto.java @@ -0,0 +1,23 @@ +package com.bonus.common.domain.analysis.dto; + +import lombok.Data; + +/** + * @className:AnalysisDto + * @author:cwchen + * @date:2025-11-24-9:40 + * @version:1.0 + * @description:招标解析dto + */ +@Data +public class AnalysisDto { + + /**项目名称*/ + private String proName; + /**招标人*/ + private String tenderer; + /**开标开始日期*/ + private String startDate; + /**开标结束日期*/ + private String endDate; +} diff --git a/bonus-common/src/main/java/com/bonus/common/domain/analysis/vo/AnalysisVo.java b/bonus-common/src/main/java/com/bonus/common/domain/analysis/vo/AnalysisVo.java new file mode 100644 index 0000000..ac9268b --- /dev/null +++ b/bonus-common/src/main/java/com/bonus/common/domain/analysis/vo/AnalysisVo.java @@ -0,0 +1,78 @@ +package com.bonus.common.domain.analysis.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * @className:AnalysisVo + * @author:cwchen + * @date:2025-11-24-9:42 + * @version:1.0 + * @description:招标解析vo + */ +@Data +public class AnalysisVo { + + /** + * 项目id + */ + private Long proId; + + /** + * 模板信息id + */ + private Long templateId; + + /** + * 模板名称 + * */ + private String templateName; + + /** + * 项目名称 + */ + private String proName; + + + /** + * 项目编号 + */ + private String proCode; + + /** + * 招标人 + */ + private String tenderer; + + /** + * 代理机构 + */ + private String agency; + + /** + * 开标时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date bidOpeningTime; + + /** + * 开标方式 + */ + private String bidOpeningMethod; + + /** + * 创建时间 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 解析状态 0.解析中 1.解析成功 2.解析失败 + */ + private String analysisStatus; +} diff --git a/bonus-common/src/main/java/com/bonus/common/domain/ocr/vo/OcrData.java b/bonus-common/src/main/java/com/bonus/common/domain/ocr/vo/OcrData.java deleted file mode 100644 index 45fe724..0000000 --- a/bonus-common/src/main/java/com/bonus/common/domain/ocr/vo/OcrData.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.bonus.common.domain.ocr.vo; - -import com.fasterxml.jackson.annotation.JsonProperty; -import lombok.Data; - -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * @className:OcrData - * @author:cwchen - * @date:2025-10-16-10:43 - * @version:1.0 - * @description: OCR数据DTO - */ -@Data -public class OcrData { - - @JsonProperty("chat_res") - private Map chatRes; - - /** - * 获取识别文本 - */ - public String getText() { - if (chatRes == null) return null; - // 将所有字段值拼接成文本 - return chatRes.values().stream() - .filter(Objects::nonNull) - .collect(Collectors.joining(" ")); - } - - /** - * 获取特定字段值 - */ - public String getFieldValue(String fieldName) { - return chatRes != null ? chatRes.get(fieldName) : null; - } -} diff --git a/bonus-common/src/main/java/com/bonus/common/domain/system/vo/SelectVo.java b/bonus-common/src/main/java/com/bonus/common/domain/system/vo/SelectVo.java new file mode 100644 index 0000000..b9be22d --- /dev/null +++ b/bonus-common/src/main/java/com/bonus/common/domain/system/vo/SelectVo.java @@ -0,0 +1,29 @@ +package com.bonus.common.domain.system.vo; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +/** + * @className:SelectVo + * @author:cwchen + * @date:2025-11-24-13:24 + * @version:1.0 + * @description:下拉选-vo + */ +@Data +public class SelectVo { + + /** + * id + */ + private String id; + /** + * 名称 + */ + private String name; + /** + * 上传类型-模板解析 + */ + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private String uploadType; +} diff --git a/bonus-system/src/main/java/com/bonus/system/mapper/ISelectMapper.java b/bonus-system/src/main/java/com/bonus/system/mapper/ISelectMapper.java new file mode 100644 index 0000000..40ac5bd --- /dev/null +++ b/bonus-system/src/main/java/com/bonus/system/mapper/ISelectMapper.java @@ -0,0 +1,24 @@ +package com.bonus.system.mapper; + +import com.bonus.common.domain.system.vo.SelectVo; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @className:ISelectMapper + * @author:cwchen + * @date:2025-11-24-13:22 + * @version:1.0 + * @description:下拉选/树数据层 + */ +@Repository(value = "ISelectMapper") +public interface ISelectMapper { + /** + * 招标解析模板下拉选 + * @return List + * @author cwchen + * @date 2025/11/24 13:34 + */ + List getAnalysisSelects(); +} diff --git a/bonus-system/src/main/java/com/bonus/system/service/ISelectService.java b/bonus-system/src/main/java/com/bonus/system/service/ISelectService.java new file mode 100644 index 0000000..6b088ba --- /dev/null +++ b/bonus-system/src/main/java/com/bonus/system/service/ISelectService.java @@ -0,0 +1,24 @@ +package com.bonus.system.service; + +import com.bonus.common.domain.admin.SelectDto; +import com.bonus.common.domain.system.vo.SelectVo; + +import java.util.List; + +/** + * @className:ISelectService + * @author:cwchen + * @date:2025-11-24-13:20 + * @version:1.0 + * @description:下拉选/树业务层 + */ +public interface ISelectService { + /** + * 招标解析模板下拉选 + * @param selectDto + * @return List + * @author cwchen + * @date 2025/11/24 13:32 + */ + List getAnalysisSelects(SelectDto selectDto); +} diff --git a/bonus-system/src/main/java/com/bonus/system/service/impl/SelectServiceImpl.java b/bonus-system/src/main/java/com/bonus/system/service/impl/SelectServiceImpl.java new file mode 100644 index 0000000..a4934d0 --- /dev/null +++ b/bonus-system/src/main/java/com/bonus/system/service/impl/SelectServiceImpl.java @@ -0,0 +1,38 @@ +package com.bonus.system.service.impl; + +import com.bonus.common.domain.admin.SelectDto; +import com.bonus.common.domain.system.vo.SelectVo; +import com.bonus.system.mapper.ISelectMapper; +import com.bonus.system.service.ISelectService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +/** + * @className:SelectServiceImpl + * @author:cwchen + * @date:2025-11-24-13:21 + * @version:1.0 + * @description:下拉选/树业务逻辑层 + */ +@Service(value = "ISelectService") +@Slf4j +public class SelectServiceImpl implements ISelectService { + + @Resource(name = "ISelectMapper") + private ISelectMapper selectMapper; + + @Override + public List getAnalysisSelects(SelectDto selectDto) { + try { + return Optional.ofNullable(selectMapper.getAnalysisSelects()).orElse(new ArrayList<>()); + } catch (Exception e) { + return Collections.emptyList(); + } + } +} diff --git a/bonus-system/src/main/resources/mapper/system/SelectMapper.xml b/bonus-system/src/main/resources/mapper/system/SelectMapper.xml new file mode 100644 index 0000000..0e6efbc --- /dev/null +++ b/bonus-system/src/main/resources/mapper/system/SelectMapper.xml @@ -0,0 +1,16 @@ + + + + + + +