Browse Source

Merge branch 'ai_300' into sjj_dev

# Conflicts:
#	ruoyi-admin/src/main/resources/application-dev.yml
sjj_dev
zhouhaibin 20 hours ago
parent
commit
5fbb50aed4
  1. 32
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/controller/DocumentTaskResultsController.java
  2. 29
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskCategory.java
  3. 48
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/DocumentTaskResultDetail.java
  4. 47
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/domain/vo/DocumentTaskResultVO.java
  5. 14
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTaskResultDetailMapper.java
  6. 11
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/mapper/DocumentTaskResultsMapper.java
  7. 25
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/IDocumentTaskResultsService.java
  8. 101
      zaojiaManagement/zaojia-productManagement/src/main/java/org/dromara/productManagement/service/impl/DocumentTaskResultsServiceImpl.java
  9. 26
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTaskResultDetailMapper.xml
  10. 31
      zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTaskResultsMapper.xml

32
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<List<DocumentTaskResultVO>> 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<Void> 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));
}
/**
* 下载文档任务
*

29
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;
}

48
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;
}

47
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<ResultItem> 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<String> reviewPoints; // 审查点
}
}
}

14
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<DocumentTaskResultDetail, DocumentTaskResultDetail> {
}

11
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<DocumentTaskResults, DocumentTaskResultsVo> {
/**
* 根据任务ID获取详细的文档任务结果
*
* @param taskId 任务ID
* @return 文档任务结果详情列表
*/
List<DocumentTaskResultVO> getResultsByTaskId(@Param("taskId") String taskId);
}

25
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<String> ids, Boolean isValid);
/**
* 根据任务ID查询文档任务结果
*
* @param id 任务ID
* @return 文档任务结果
*/
DocumentTaskResultsVo queryByTaskId(String id);
/**
* 根据任务ID查询详细的文档任务结果
*
* @param taskId 任务ID
* @return 详细的文档任务结果列表
*/
List<DocumentTaskResultVO> 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);
}

101
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<DocumentTaskResultVO> getDetailResultsByTaskId(String taskId) {
// 获取原始分类结果
List<DocumentTaskResultVO> originalResults = baseMapper.getResultsByTaskId(taskId);
// 如果没有结果,直接返回
if (originalResults == null || originalResults.isEmpty()) {
return originalResults;
}
// 创建"全部"分类
DocumentTaskResultVO allCategory = new DocumentTaskResultVO();
allCategory.setName("全部");
// 合并所有结果并设置全局序号
List<DocumentTaskResultVO.ResultItem> 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<DocumentTaskResultVO> 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<DocumentTaskResultDetail> 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 {

26
zaojiaManagement/zaojia-productManagement/src/main/resources/mapper/productManagement/DocumentTaskResultDetailMapper.xml

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.productManagement.mapper.DocumentTaskResultDetailMapper">
<resultMap type="org.dromara.productManagement.domain.DocumentTaskResultDetail" id="DocumentTaskResultDetailResult">
<id property="id" column="id"/>
<result property="categoryId" column="category_id"/>
<result property="issueName" column="issue_name"/>
<result property="originalText" column="original_text"/>
<result property="comparedText" column="compared_text"/>
<result property="modifiedContent" column="modified_content"/>
<result property="modificationDisplay" column="modification_display"/>
<result property="existingIssues" column="existing_issues"/>
<result property="reviewBasis" column="review_basis"/>
<result property="isRead" column="is_read"/>
<result property="isAdopted" column="is_adopted"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
</mapper>

31
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">
<mapper namespace="org.dromara.productManagement.mapper.DocumentTaskResultsMapper">
<resultMap id="resultItemMap" type="org.dromara.productManagement.domain.vo.DocumentTaskResultVO$ResultItem">
<result property="id" column="id"/>
<result property="serialNumber" column="serial_number"/>
<result property="issueName" column="issue_name"/>
<result property="originalText" column="original_text"/>
<result property="comparedText" column="compared_text"/>
<result property="modifiedContent" column="modified_content"/>
<result property="modificationDisplay" column="modification_display"/>
<result property="existingIssues" column="existing_issues"/>
<result property="isRead" column="is_read"/>
<result property="isAdopted" column="is_adopted"/>
<!-- 审查依据需要在代码中解析JSON -->
</resultMap>
<resultMap id="resultVOMap" type="org.dromara.productManagement.domain.vo.DocumentTaskResultVO">
<result property="name" column="category_name"/>
<collection property="results" javaType="java.util.ArrayList" ofType="org.dromara.productManagement.domain.vo.DocumentTaskResultVO$ResultItem"
column="category_id" select="getResultItemsByCategoryId"/>
</resultMap>
<select id="getResultsByTaskId" resultMap="resultVOMap">
SELECT id as category_id, category_name
FROM document_task_categories
WHERE document_task_id = #{taskId}
</select>
<select id="getResultItemsByCategoryId" resultMap="resultItemMap">
SELECT id, issue_name, original_text, compared_text, modified_content,
modification_display, existing_issues, review_basis, is_read, is_adopted
FROM document_task_result_details
WHERE category_id = #{category_id}
</select>
</mapper>

Loading…
Cancel
Save