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