update 法规字典翻译

This commit is contained in:
liao
2023-09-18 14:38:29 +08:00
parent 0508052d22
commit a3a2f9f1e4
2 changed files with 111 additions and 24 deletions
@@ -31,6 +31,13 @@ public class FieldCommon {
LawsFieldTypeEnum.OPTION_MANY.getValue() // 下拉多选
);
// 字典翻译类型
public static final List<String> TYPE_DICT = Arrays.asList(
LawsFieldTypeEnum.OPTION_SINGLE.getValue(), // 下拉单选
LawsFieldTypeEnum.OPTION_MANY.getValue(), // 下拉多选
LawsFieldTypeEnum.TREE_BOX.getValue()
);
public static final String MODULE = "module"; // 表名标识
public static final String ORDER_BY = "orderBy"; // 升序还是倒序标识
public static final String ORDER_BY_FIELD = "orderByField"; // 排序字段
@@ -21,15 +21,16 @@ import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.personal.entity.LawsStandardCollection;
import com.jero.modules.personal.service.ILawsStandardCollectionService;
import com.jero.modules.system.entity.SysDepart;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysDepartService;
import com.jero.modules.system.service.ISysDictItemService;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.tag.entity.LawsArea;
import com.jero.modules.tag.entity.LawsTag;
import com.jero.modules.tag.enums.TableNameEnum;
import com.jero.modules.tag.enums.LawsFieldTypeEnum;
import com.jero.modules.tag.service.ILawsAreaService;
import com.spire.ms.System.Collections.ArrayList;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
@@ -63,6 +64,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
private ILawsStandardCollectionService lawsStandardCollectionService;
@Autowired
private ILawsUpdateRecordService lawsUpdateRecordService;
@Autowired
private ISysDictItemService sysDictItemService;
/**
* @Author: liao
@@ -96,7 +99,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
// 获取分页查询结果
IPage<Map<String, Object>> infoPage = lawsCommonMapper.getCommonPage(page, tableName, selectField, selectCondition);
// 对返回的数据做处理
infoPage.getRecords().forEach(map -> processResultMap(map, fieldListSelect));
// 做字段翻译和拼接
infoPage.setRecords(processResultMapPageList(infoPage.getRecords(), fieldListSelect));
// 是否收藏判断标识
collectionFlag(infoPage.getRecords());
// 待处理
@@ -138,52 +142,126 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
/**
* @Author: liao
* @Date: 2023/8/25 11:52
* @Description: 对返回的数据做处理
* @Description: 对返回的数据做处理(详情页)
**/
private void processResultMap(Map<String, Object> map, List<LawsTag> fieldList) {
for (Map.Entry<String, Object> entryMap : map.entrySet()) {
private Map<String, Object> processResultMap(Map<String, Object> initMap, List<LawsTag> fieldList) {
// 字典类型
List<LawsTag> dictTag = fieldList.stream().filter(lawsTag ->
FieldCommon.TYPE_DICT.contains(lawsTag.getFieldShowType())).collect(Collectors.toList());
// 字典配置项
List<SysDictItem> dictItemList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(dictTag)) {
List<String> dictIdList = dictTag.stream().map(LawsTag::getDictId).collect(Collectors.toList());
LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(SysDictItem::getDictId, dictIdList);
dictItemList = sysDictItemService.list(queryWrapper);
}
Map<String, Object> resultMap = new LinkedHashMap<>();
for (Map.Entry<String, Object> entryMap : initMap.entrySet()) {
String key = entryMap.getKey();
String value = "";
if (!Objects.isNull(entryMap.getValue())) {
value = entryMap.getValue().toString();
value = (String) entryMap.getValue();
}
// 如果value不为null和"",对返回结果做处理
if (StringUtils.isNotBlank(value)) {
// 对返回的字段值做处理
processResultFieldValue(key, value, fieldList, map);
processResultFieldValue(key, value, fieldList, resultMap, dictItemList);
} else {
resultMap.put(key, value);
}
}
return resultMap;
}
/**
* @Author: liao
* @Date: 2023/8/25 11:52
* @Description: 对返回的数据做处理(列表显示)
**/
private List<Map<String, Object>> processResultMapPageList(List<Map<String, Object>> records, List<LawsTag> fieldList) {
// 字典类型
List<LawsTag> dictTag = fieldList.stream().filter(lawsTag ->
FieldCommon.TYPE_DICT.contains(lawsTag.getFieldShowType())).collect(Collectors.toList());
// 字典配置项
List<SysDictItem> dictItemList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(dictTag)) {
List<String> dictIdList = dictTag.stream().map(LawsTag::getDictId).collect(Collectors.toList());
LambdaQueryWrapper<SysDictItem> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.in(SysDictItem::getDictId, dictIdList);
dictItemList = sysDictItemService.list(queryWrapper);
}
List<Map<String, Object>> resultMapList = new ArrayList<>();
for (Map<String, Object> map : records) {
Map<String, Object> resultMap = new LinkedHashMap<>();
for (Map.Entry<String, Object> entryMap : map.entrySet()) {
String key = entryMap.getKey();
String value = "";
if (!Objects.isNull(entryMap.getValue())) {
value = (String) entryMap.getValue();
}
// 如果value不为null和"",对返回结果做处理
if (StringUtils.isNotBlank(value)) {
// 对返回的字段值做处理
processResultFieldValue(key, value, fieldList, resultMap, dictItemList);
} else {
resultMap.put(key, value);
}
}
resultMapList.add(resultMap);
}
return resultMapList;
}
/**
* @Author: liao
* @Date: 2023/8/25 11:55
* @Description: 对返回的字段值做处理
* @Description: 对返回的字段值做处理(详情页)
**/
private void processResultFieldValue(String key, String value, List<LawsTag> fieldList, Map<String, Object> map) {
private void processResultFieldValue(String key, String value, List<LawsTag> fieldList,
Map<String, Object> resultMap, List<SysDictItem> dictItemList) {
if ("id".equals(key)) {
resultMap.put(key, value);
return;
}
for (LawsTag lawsTag : fieldList) {
if (key.equals(lawsTag.getDbFieldName())) {
List<String> valueList = Arrays.asList(value.split(","));
if (LawsFieldTypeEnum.DATE_MANY.getValue().equals(lawsTag.getFieldShowType())) {
// 如果是多日期格式,做去重处理
map.put(key, StringUtils.join(valueList.stream()
resultMap.put(key, StringUtils.join(valueList.stream()
.distinct().collect(Collectors.toList()), ","));
} else if (LawsFieldTypeEnum.USER_SINGLE.getValue().equals(lawsTag.getFieldShowType())) {
// 如果是用户弹框(列表查询会查询多次,但是业务上应该不会在列表上展示,应该不会影响性能)
// 如果是用户弹框,做翻译
LambdaQueryWrapper<SysUser> sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysUserLambdaQueryWrapper.in(SysUser::getId, valueList);
map.put(key, sysUserService.list(sysUserLambdaQueryWrapper));
List<SysUser> userList = sysUserService.list(sysUserLambdaQueryWrapper);
List<String> nameList = userList.stream().map(SysUser::getNameWorkNo).collect(Collectors.toList());
resultMap.put(key + FieldCommon._DICT_TEXT, StringUtils.join(nameList, ","));
} else if (LawsFieldTypeEnum.GROUP_SINGLE.getValue().equals(lawsTag.getFieldShowType())
|| LawsFieldTypeEnum.GROUP_MANY.getValue().equals(lawsTag.getFieldShowType())) {
// 如果是组织机构弹框(列表查询会查询多次,但是业务上应该不会在列表上展示,应该不会影响性能)
// 如果是组织机构弹框
LambdaQueryWrapper<SysDepart> sysDepartLambdaQueryWrapper = new LambdaQueryWrapper<>();
sysDepartLambdaQueryWrapper.in(SysDepart::getId, valueList);
map.put(key, sysDepartService.list(sysDepartLambdaQueryWrapper));
List<SysDepart> departList = sysDepartService.list(sysDepartLambdaQueryWrapper);
List<String> nameList = departList.stream().map(SysDepart::getDepartName).collect(Collectors.toList());
resultMap.put(key + FieldCommon._DICT_TEXT, StringUtils.join(nameList, ","));
} else if (LawsFieldTypeEnum.FILE_UP.getValue().equals(lawsTag.getFieldShowType())) {
// 如果是文件上传(列表查询会查询多次,但是业务上应该不会在列表上展示,应该不会影响性能)
// 如果是文件上传
LambdaQueryWrapper<OSSFile> ossFileLambdaQueryWrapper = new LambdaQueryWrapper<>();
ossFileLambdaQueryWrapper.in(OSSFile::getId, valueList);
map.put(key, ossFileService.list(ossFileLambdaQueryWrapper));
List<OSSFile> fileList = ossFileService.list(ossFileLambdaQueryWrapper);
List<String> nameList = fileList.stream().map(OSSFile::getFileName).collect(Collectors.toList());
resultMap.put(key + FieldCommon._DICT_TEXT, StringUtils.join(nameList, ","));
} else if (FieldCommon.TYPE_DICT.contains(lawsTag.getFieldShowType())) {
// 如果是字典翻译
List<String> nameList = dictItemList.stream().filter(dictItem ->
lawsTag.getDictId().equals(dictItem.getDictId())
&& valueList.contains(dictItem.getItemValue()))
.map(SysDictItem::getItemText).collect(Collectors.toList());
resultMap.put(key + FieldCommon._DICT_TEXT, StringUtils.join(nameList, ","));
} else {
resultMap.put(key, value);
}
}
}
@@ -429,9 +507,11 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
**/
@Override
public Map<String, Object> getByIdAndModule(String id, String module) {
if (StringUtils.isBlank(id)) {
throw new JeroBootException(ResultCommon.EMPTY_COMMON, "id");
}
// 获取要操作的表名
String tableName = TableNameEnum.getTableName(module);
// 获取全部字段
List<LawsTag> fieldList = lawsCommonMapper.getFieldList(tableName);
// 筛选表单显示的字段(传id查表单)
@@ -441,10 +521,12 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
// 封装查询显示的字段
String selectField = getSelectField(fieldList);
// 封装查询条件
Map<String, Object> resultMap = lawsCommonMapper.getByIdAndModule(tableName, selectField, id);
Map<String, Object> initMap = lawsCommonMapper.getByIdAndModule(tableName, selectField, id);
if (initMap == null) {
throw new JeroBootException(ResultCommon.NO_CORRESPONDING_DATA_FOUND);
}
// 对返回的字段做处理
processResultMap(resultMap, fieldList);
return resultMap;
return processResultMap(initMap, fieldList);
}
/**
@@ -628,10 +710,8 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
// 获取全部的字段列表
List<String> tempFieldList = fieldList.stream().map(LawsTag::getDbFieldName).collect(Collectors.toList());
// 创建一个新的用于返回的字段列表
/*List<String> selectFieldList = new ArrayList();
// 查询主键
selectFieldList.add("id");*/
StringBuilder selectFieldBuilder = new StringBuilder("id");
StringBuilder selectFieldBuilder = new StringBuilder();
selectFieldBuilder.append("id");
tempFieldList.forEach(tempField -> {
String endField;
// 对日期格式和普通格式做处理