fix(文档拆分): 字典翻译

This commit is contained in:
yjz
2023-10-18 17:25:31 +08:00
parent 23dd44ad6e
commit 93e56b571e
2 changed files with 57 additions and 2 deletions
@@ -56,6 +56,10 @@ public class DocumentSplitCommon {
* <=
*/
public static final String LT = " <= ";
/**
* 翻译后缀
*/
public static final String DIC_TEXT = "_dictText";
/**
* 条目类型 TEXT:文本, IMG:图片, TABLE:表格, INTERPRETATION:解读
*/
@@ -1,6 +1,7 @@
package com.jero.modules.laws.documenttool.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -11,6 +12,7 @@ import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.MessageUtils;
import com.jero.common.util.UUIDUtils;
import com.jero.modules.laws.common.constant.FieldCommon;
import com.jero.modules.laws.common.mapper.LawsCommonMapper;
import com.jero.modules.laws.documenttool.common.DocumentSplitCommon;
import com.jero.modules.laws.documenttool.entity.DocumentSplitInfo;
@@ -29,6 +31,10 @@ import com.jero.modules.split.mapper.SarFileSplitItemsValEOMapper;
import com.jero.modules.split.service.ISarFileSplitInfoService;
import com.jero.modules.split.service.ISarFileSplitMenuEOService;
import com.jero.modules.split.service.impl.FileSpiltService;
import com.jero.modules.system.entity.SysDict;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysDictService;
import com.jero.modules.tag.entity.LawsTag;
import com.jero.modules.tag.enums.LawsFieldTypeEnum;
import com.jero.modules.tag.enums.TableNameEnum;
@@ -69,6 +75,8 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
private final ISarFileSplitMenuEOService sarFileSplitMenuEOService;
private final LawsDocumentSplitMapper lawsDocumentSplitMapper;
private final SarFileSplitItemsValEOMapper sarFileSplitItemsValEOMapper;
private final ISysDictService sysDictService;
private final ISysDictItemService sysDictItemService;
private static final String INFO_ID = "info_id";
private static final String ID = "id";
private static final String IDS = "ids";
@@ -84,7 +92,9 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
FileSpiltService fileSpiltService,
ISarFileSplitMenuEOService sarFileSplitMenuEOService,
LawsDocumentSplitMapper lawsDocumentSplitMapper,
SarFileSplitItemsValEOMapper sarFileSplitItemsValEOMapper) {
SarFileSplitItemsValEOMapper sarFileSplitItemsValEOMapper,
ISysDictService sysDictService,
ISysDictItemService sysDictItemService) {
this.documentSplitMapper = documentSplitMapper;
this.sarFileSplitInfoService = sarFileSplitInfoService;
this.lawsCommonMapper = lawsCommonMapper;
@@ -92,6 +102,8 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
this.sarFileSplitMenuEOService = sarFileSplitMenuEOService;
this.lawsDocumentSplitMapper = lawsDocumentSplitMapper;
this.sarFileSplitItemsValEOMapper = sarFileSplitItemsValEOMapper;
this.sysDictService = sysDictService;
this.sysDictItemService = sysDictItemService;
}
@Override
@@ -146,7 +158,46 @@ public class DocumentSplitServiceImpl implements IDocumentSplitService {
String selectCondition = getSelectCondition(parameter, fieldListCondition);
// 查询数据
return documentSplitMapper.queryDocumentSplitDetail(new Page<>(pageNo, pageSize), selectColumn, selectCondition);
IPage<Map<String, Object>> mapIPage = documentSplitMapper.queryDocumentSplitDetail(new Page<>(pageNo, pageSize), selectColumn, selectCondition);
// 翻译
dicTranslate(mapIPage.getRecords(), fieldListSelect);
return mapIPage;
}
private void dicTranslate(List<Map<String, Object>> records, List<LawsTag> fieldListSelect) {
// 单选树结构、多选树结构
List<String> treeTypeList = Arrays.asList(LawsFieldTypeEnum.TREE_BOX.getValue(), LawsFieldTypeEnum.TREE_BOX_SINGLE.getValue());
List<LawsTag> lawsTags = fieldListSelect.stream()
.filter(j -> FieldCommon.TYPE_DICT.contains(j.getFieldShowType())).collect(Collectors.toList());
for (Map<String, Object> map : records) {
for (LawsTag lawsTag : lawsTags) {
String dbFieldName = lawsTag.getDbFieldName();
if (map.containsKey(dbFieldName)){
// 字典查找
SysDict sysDict = sysDictService.getById(lawsTag.getDictId());
if (!Objects.isNull(sysDict)){
setDicText(treeTypeList, map, lawsTag, dbFieldName, sysDict);
}
}
}
}
}
private void setDicText(List<String> treeTypeList, Map<String, Object> map, LawsTag lawsTag, String dbFieldName, SysDict sysDict) {
LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<SysDictItem>()
.eq(SysDictItem::getDictId, sysDict.getId());
// 树结构查询dic_id
if (treeTypeList.contains(lawsTag.getFieldShowType())){
queryWrapper.in(SysDictItem::getId, Arrays.asList(map.get(dbFieldName).toString().split(",")));
}else {
queryWrapper.in(SysDictItem::getItemValue, Arrays.asList(map.get(dbFieldName).toString().split(",")));
}
// 字典值查询
List<SysDictItem> list = sysDictItemService.list(queryWrapper);
if(!list.isEmpty()){
List<String> itemTextList = list.stream().map(SysDictItem::getItemText).collect(Collectors.toList());
map.put(dbFieldName + DocumentSplitCommon.DIC_TEXT, String.join(",", itemTextList));
}
}
@Override