update 法规字典翻译
This commit is contained in:
@@ -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"; // 排序字段
|
||||
|
||||
+104
-24
@@ -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;
|
||||
// 对日期格式和普通格式做处理
|
||||
|
||||
Reference in New Issue
Block a user