From a3a2f9f1e4a8a9bb2f4871dcd3b9871b7e772dd9 Mon Sep 17 00:00:00 2001 From: liao Date: Mon, 18 Sep 2023 14:38:29 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=B3=95=E8=A7=84=E5=AD=97=E5=85=B8?= =?UTF-8?q?=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../laws/common/constant/FieldCommon.java | 7 + .../service/impl/LawsCommonServiceImpl.java | 128 ++++++++++++++---- 2 files changed, 111 insertions(+), 24 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java index bd45f717..c1f526ac 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/constant/FieldCommon.java @@ -31,6 +31,13 @@ public class FieldCommon { LawsFieldTypeEnum.OPTION_MANY.getValue() // 下拉多选 ); + // 字典翻译类型 + public static final List 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"; // 排序字段 diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java index 8ab671ed..8c1ea4d8 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java @@ -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> 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 map, List fieldList) { - for (Map.Entry entryMap : map.entrySet()) { + private Map processResultMap(Map initMap, List fieldList) { + // 字典类型 + List dictTag = fieldList.stream().filter(lawsTag -> + FieldCommon.TYPE_DICT.contains(lawsTag.getFieldShowType())).collect(Collectors.toList()); + // 字典配置项 + List dictItemList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(dictTag)) { + List dictIdList = dictTag.stream().map(LawsTag::getDictId).collect(Collectors.toList()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(SysDictItem::getDictId, dictIdList); + dictItemList = sysDictItemService.list(queryWrapper); + } + Map resultMap = new LinkedHashMap<>(); + for (Map.Entry 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> processResultMapPageList(List> records, List fieldList) { + // 字典类型 + List dictTag = fieldList.stream().filter(lawsTag -> + FieldCommon.TYPE_DICT.contains(lawsTag.getFieldShowType())).collect(Collectors.toList()); + // 字典配置项 + List dictItemList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(dictTag)) { + List dictIdList = dictTag.stream().map(LawsTag::getDictId).collect(Collectors.toList()); + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(SysDictItem::getDictId, dictIdList); + dictItemList = sysDictItemService.list(queryWrapper); + } + List> resultMapList = new ArrayList<>(); + for (Map map : records) { + Map resultMap = new LinkedHashMap<>(); + for (Map.Entry 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 fieldList, Map map) { + private void processResultFieldValue(String key, String value, List fieldList, + Map resultMap, List dictItemList) { + if ("id".equals(key)) { + resultMap.put(key, value); + return; + } for (LawsTag lawsTag : fieldList) { if (key.equals(lawsTag.getDbFieldName())) { List 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 sysUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); sysUserLambdaQueryWrapper.in(SysUser::getId, valueList); - map.put(key, sysUserService.list(sysUserLambdaQueryWrapper)); + List userList = sysUserService.list(sysUserLambdaQueryWrapper); + List 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 sysDepartLambdaQueryWrapper = new LambdaQueryWrapper<>(); sysDepartLambdaQueryWrapper.in(SysDepart::getId, valueList); - map.put(key, sysDepartService.list(sysDepartLambdaQueryWrapper)); + List departList = sysDepartService.list(sysDepartLambdaQueryWrapper); + List 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 ossFileLambdaQueryWrapper = new LambdaQueryWrapper<>(); ossFileLambdaQueryWrapper.in(OSSFile::getId, valueList); - map.put(key, ossFileService.list(ossFileLambdaQueryWrapper)); + List fileList = ossFileService.list(ossFileLambdaQueryWrapper); + List 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 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 getByIdAndModule(String id, String module) { + if (StringUtils.isBlank(id)) { + throw new JeroBootException(ResultCommon.EMPTY_COMMON, "id"); + } // 获取要操作的表名 String tableName = TableNameEnum.getTableName(module); - // 获取全部字段 List fieldList = lawsCommonMapper.getFieldList(tableName); // 筛选表单显示的字段(传id查表单) @@ -441,10 +521,12 @@ public class LawsCommonServiceImpl implements ILawsCommonService { // 封装查询显示的字段 String selectField = getSelectField(fieldList); // 封装查询条件 - Map resultMap = lawsCommonMapper.getByIdAndModule(tableName, selectField, id); + Map 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 tempFieldList = fieldList.stream().map(LawsTag::getDbFieldName).collect(Collectors.toList()); // 创建一个新的用于返回的字段列表 - /*List selectFieldList = new ArrayList(); - // 查询主键 - selectFieldList.add("id");*/ - StringBuilder selectFieldBuilder = new StringBuilder("id"); + StringBuilder selectFieldBuilder = new StringBuilder(); + selectFieldBuilder.append("id"); tempFieldList.forEach(tempField -> { String endField; // 对日期格式和普通格式做处理