From 05da6b3509233426c363c02e711c1cadd769fb46 Mon Sep 17 00:00:00 2001 From: zhouhaibin Date: Tue, 6 May 2025 09:18:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BB=93=E6=9E=9C=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-dev.yml | 4 +- .../DocumentTaskResultsController.java | 32 ++++++ .../domain/DocumentTaskCategory.java | 29 +++++ .../domain/DocumentTaskResultDetail.java | 48 +++++++++ .../domain/vo/DocumentTaskResultVO.java | 47 ++++++++ .../DocumentTaskResultDetailMapper.java | 14 +++ .../mapper/DocumentTaskResultsMapper.java | 11 ++ .../service/IDocumentTaskResultsService.java | 25 +++++ .../impl/DocumentTaskResultsServiceImpl.java | 101 ++++++++++++++++++ .../DocumentTaskResultDetailMapper.xml | 26 +++++ .../DocumentTaskResultsMapper.xml | 31 ++++++ 11 files changed, 366 insertions(+), 2 deletions(-) create mode 100644 zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskCategory.java create mode 100644 zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskResultDetail.java create mode 100644 zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTaskResultVO.java create mode 100644 zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTaskResultDetailMapper.java create mode 100644 zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTaskResultDetailMapper.xml diff --git a/ruoyi-admin/src/main/resources/application-dev.yml b/ruoyi-admin/src/main/resources/application-dev.yml index 204d775..6238ebc 100644 --- a/ruoyi-admin/src/main/resources/application-dev.yml +++ b/ruoyi-admin/src/main/resources/application-dev.yml @@ -52,8 +52,8 @@ spring: # url: jdbc:mysql://localhost:3306/zaojia?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true # username: root # password: root - url: jdbc:mysql://10.1.21.250:3306/aitable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true -# url: jdbc:mysql://218.0.1.42:53306/aitable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true +# url: jdbc:mysql://10.1.21.250:3306/aitable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true + url: jdbc:mysql://218.0.1.42:53306/aitable?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true username: root password: 'HXj-6nR|D8xy*h#!I&:(' # 从库数据源 diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTaskResultsController.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTaskResultsController.java index 6bb2b4f..7ddeaac 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTaskResultsController.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTaskResultsController.java @@ -18,6 +18,7 @@ import org.dromara.common.core.validate.EditGroup; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.excel.utils.ExcelUtil; import org.dromara.productManagement.domain.vo.DocumentTaskResultsVo; +import org.dromara.productManagement.domain.vo.DocumentTaskResultVO; import org.dromara.productManagement.domain.bo.DocumentTaskResultsBo; import org.dromara.productManagement.service.IDocumentTaskResultsService; import org.dromara.common.mybatis.core.page.TableDataInfo; @@ -78,6 +79,19 @@ public class DocumentTaskResultsController extends BaseController { @PathVariable String id) { return R.ok(documentTaskResultsService.queryByTaskId(id)); } + + /** + * 根据任务ID获取详细的文档任务结果 + * + * @param taskId 任务ID + */ +// @SaCheckPermission("productManagement:DocumentTaskResults:query") + @GetMapping("/taskDetail/{taskId}") + public R> getDetailResultsByTaskId(@NotNull(message = "任务ID不能为空") + @PathVariable String taskId) { + return R.ok(documentTaskResultsService.getDetailResultsByTaskId(taskId)); + } + /** * 新增文档任务结果 */ @@ -112,6 +126,24 @@ public class DocumentTaskResultsController extends BaseController { @PathVariable String[] ids) { return toAjax(documentTaskResultsService.deleteWithValidByIds(List.of(ids), true)); } + + /** + * 更新文档任务结果项的状态(已读/采纳) + * + * @param id 结果项ID + * @param field 字段名(isRead/isAdopted) + * @param value 值(0/1) + */ +// @SaCheckPermission("productManagement:DocumentTaskResults:edit") + @Log(title = "更新文档任务结果项状态", businessType = BusinessType.UPDATE) + @PutMapping("/updateResultItemStatus/{id}/{field}/{value}") + public R updateResultItemStatus( + @NotEmpty(message = "ID不能为空") @PathVariable("id") String id, + @NotEmpty(message = "字段名不能为空") @PathVariable("field") String field, + @NotEmpty(message = "值不能为空") @PathVariable("value") String value) { + return toAjax(documentTaskResultsService.updateResultItemStatus(id, field, value)); + } + /** * 下载文档任务 * diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskCategory.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskCategory.java new file mode 100644 index 0000000..4de5fe0 --- /dev/null +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskCategory.java @@ -0,0 +1,29 @@ +package org.dromara.productManagement.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.Version; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("document_task_categories") +public class DocumentTaskCategory extends TenantEntity { + + @TableId(value = "id") + private String id; + + private String documentTaskId; + + private String categoryName; + + /** + * 删除标志 + */ + @TableLogic + private String delFlag; + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskResultDetail.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskResultDetail.java new file mode 100644 index 0000000..3925dfb --- /dev/null +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskResultDetail.java @@ -0,0 +1,48 @@ +package org.dromara.productManagement.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.Version; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.dromara.common.tenant.core.TenantEntity; + +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("document_task_result_details") +public class DocumentTaskResultDetail extends TenantEntity { + + @TableId(value = "id") + private String id; + + /** + * 分类id + */ + private String categoryId; + private String issueName; // 问题点名称 + + private String originalText; // 原文 + + private String comparedText; // 比对原文 + + private String modifiedContent; // 修改后的内容 + + private String modificationDisplay; // 展示修改情况 + + private String existingIssues; // 存在的问题 + + private String reviewBasis; // 审查依据 + + private String isRead; // 是否已读 + + private String isAdopted; // 是否采纳 + + /** + * 删除标志 + */ + @TableLogic + private String delFlag; + + +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTaskResultVO.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTaskResultVO.java new file mode 100644 index 0000000..597a1ce --- /dev/null +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTaskResultVO.java @@ -0,0 +1,47 @@ +package org.dromara.productManagement.domain.vo; + +import lombok.Data; + +import java.util.List; + +@Data +public class DocumentTaskResultVO { + + private String name; // 分类名称 + + private List results; + + @Data + public static class ResultItem { + + private String id; // 唯一标识ID + + private Integer serialNumber; // 序号 + + private String issueName; // 问题点名称 + + private String originalText; // 原文 + + private String comparedText; // 比对原文 + + private String modifiedContent; // 修改后的内容 + + private String modificationDisplay; // 展示修改情况 + + private String existingIssues; // 存在的问题 + + private ReviewBasis reviewBasis; // 审查依据 + + private String isRead; // 是否已读 + + private String isAdopted; // 是否采纳 + + @Data + public static class ReviewBasis { + + private String reviewContent; // 审查内容 + + private List reviewPoints; // 审查点 + } + } +} diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTaskResultDetailMapper.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTaskResultDetailMapper.java new file mode 100644 index 0000000..f64b0f8 --- /dev/null +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTaskResultDetailMapper.java @@ -0,0 +1,14 @@ +package org.dromara.productManagement.mapper; + +import org.dromara.productManagement.domain.DocumentTaskResultDetail; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 文档任务结果详情Mapper接口 + * + * @author Lion Li + * @date 2024-10-23 + */ +public interface DocumentTaskResultDetailMapper extends BaseMapperPlus { + +} \ No newline at end of file diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTaskResultsMapper.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTaskResultsMapper.java index 2116b10..1ca9b57 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTaskResultsMapper.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTaskResultsMapper.java @@ -2,7 +2,11 @@ package org.dromara.productManagement.mapper; import org.dromara.productManagement.domain.DocumentTaskResults; import org.dromara.productManagement.domain.vo.DocumentTaskResultsVo; +import org.dromara.productManagement.domain.vo.DocumentTaskResultVO; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 文档任务结果Mapper接口 @@ -12,4 +16,11 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface DocumentTaskResultsMapper extends BaseMapperPlus { + /** + * 根据任务ID获取详细的文档任务结果 + * + * @param taskId 任务ID + * @return 文档任务结果详情列表 + */ + List getResultsByTaskId(@Param("taskId") String taskId); } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTaskResultsService.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTaskResultsService.java index b23c6c0..0c51933 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTaskResultsService.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTaskResultsService.java @@ -2,6 +2,7 @@ package org.dromara.productManagement.service; import jakarta.servlet.http.HttpServletResponse; import org.dromara.productManagement.domain.vo.DocumentTaskResultsVo; +import org.dromara.productManagement.domain.vo.DocumentTaskResultVO; import org.dromara.productManagement.domain.bo.DocumentTaskResultsBo; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; @@ -67,7 +68,31 @@ public interface IDocumentTaskResultsService { */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + /** + * 根据任务ID查询文档任务结果 + * + * @param id 任务ID + * @return 文档任务结果 + */ DocumentTaskResultsVo queryByTaskId(String id); + /** + * 根据任务ID查询详细的文档任务结果 + * + * @param taskId 任务ID + * @return 详细的文档任务结果列表 + */ + List getDetailResultsByTaskId(String taskId); + + /** + * 更新文档任务结果项的状态(已读/采纳) + * + * @param id 结果项ID + * @param field 字段名(isRead/isAdopted) + * @param value 值(0/1) + * @return 是否更新成功 + */ + Boolean updateResultItemStatus(String id, String field, String value); + void downloadResult(Long[] ids, HttpServletResponse response); } diff --git a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTaskResultsServiceImpl.java b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTaskResultsServiceImpl.java index f3e0ce3..a9595c7 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTaskResultsServiceImpl.java +++ b/zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTaskResultsServiceImpl.java @@ -18,10 +18,14 @@ import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; +import org.dromara.productManagement.domain.DocumentTaskResultDetail; +import org.dromara.productManagement.domain.vo.DocumentTaskResultVO; import org.dromara.productManagement.domain.vo.DocumentTasksVo; import org.dromara.productManagement.enums.TaskEnum; +import org.dromara.productManagement.mapper.DocumentTaskResultDetailMapper; import org.dromara.productManagement.service.IDocumentTasksService; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; @@ -56,6 +60,7 @@ import java.util.zip.ZipOutputStream; public class DocumentTaskResultsServiceImpl implements IDocumentTaskResultsService { private final DocumentTaskResultsMapper baseMapper; + private final DocumentTaskResultDetailMapper documentTaskResultDetailMapper; private final IDocumentTasksService documentTasksService; private final DictService dictTypeService; @@ -164,6 +169,102 @@ public class DocumentTaskResultsServiceImpl implements IDocumentTaskResultsServi return baseMapper.selectVoOne(lqw); } + /** + * 根据任务ID获取详细的文档任务结果 + * + * @param taskId 任务ID + * @return 详细的文档任务结果列表 + */ + @Override + public List getDetailResultsByTaskId(String taskId) { + // 获取原始分类结果 + List originalResults = baseMapper.getResultsByTaskId(taskId); + + // 如果没有结果,直接返回 + if (originalResults == null || originalResults.isEmpty()) { + return originalResults; + } + + // 创建"全部"分类 + DocumentTaskResultVO allCategory = new DocumentTaskResultVO(); + allCategory.setName("全部"); + + // 合并所有结果并设置全局序号 + List allResults = new java.util.ArrayList<>(); + int globalSerialNumber = 1; + + for (DocumentTaskResultVO category : originalResults) { + if (category.getResults() != null) { + for (DocumentTaskResultVO.ResultItem item : category.getResults()) { + // 创建新的item以避免引用相同的对象 + DocumentTaskResultVO.ResultItem newItem = new DocumentTaskResultVO.ResultItem(); + // 复制所有属性 + org.springframework.beans.BeanUtils.copyProperties(item, newItem); + // 设置全局序号 + newItem.setSerialNumber(globalSerialNumber++); + // 添加到全部分类 + allResults.add(newItem); + } + } + } + + // 为每个原始分类中的结果设置序号 + for (DocumentTaskResultVO category : originalResults) { + if (category.getResults() != null) { + for (int i = 0; i < category.getResults().size(); i++) { + DocumentTaskResultVO.ResultItem item = category.getResults().get(i); + item.setSerialNumber(i + 1); + } + } + } + + // 设置"全部"分类的结果 + allCategory.setResults(allResults); + + // 将"全部"分类添加到结果列表的开头 + List finalResults = new java.util.ArrayList<>(); + finalResults.add(allCategory); + finalResults.addAll(originalResults); + + return finalResults; + } + + /** + * 更新文档任务结果项的状态(已读/采纳) + * + * @param id 结果项ID + * @param field 字段名(isRead/isAdopted) + * @param value 值(0/1) + * @return 是否更新成功 + */ + @Override + public Boolean updateResultItemStatus(String id, String field, String value) { + // 验证字段名是否合法 + if (!"isRead".equals(field) && !"isAdopted".equals(field)) { + throw new RuntimeException("不支持更新的字段: " + field); + } + + // 验证值是否合法 + if (!"0".equals(value) && !"1".equals(value)) { + throw new RuntimeException("无效的值: " + value); + } + + try { + LambdaUpdateWrapper updateWrapper = Wrappers.lambdaUpdate(DocumentTaskResultDetail.class); + updateWrapper.eq(DocumentTaskResultDetail::getId, id); + + if ("isRead".equals(field)) { + updateWrapper.set(DocumentTaskResultDetail::getIsRead, value); + } else { + updateWrapper.set(DocumentTaskResultDetail::getIsAdopted, value); + } + + return documentTaskResultDetailMapper.update(null, updateWrapper) > 0; + } catch (Exception e) { + throw new RuntimeException("更新状态失败: " + e.getMessage(), e); + } + } + @Override public void downloadResult(Long[] ids, HttpServletResponse response) { try { diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTaskResultDetailMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTaskResultDetailMapper.xml new file mode 100644 index 0000000..5d1523f --- /dev/null +++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTaskResultDetailMapper.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTaskResultsMapper.xml b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTaskResultsMapper.xml index cd19ff6..29e0ba8 100644 --- a/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTaskResultsMapper.xml +++ b/zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTaskResultsMapper.xml @@ -3,5 +3,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + + + + + + + + + + + + + + + +