From 253b671b25d5f464d63f9a8aa1c3763ff6d53045 Mon Sep 17 00:00:00 2001 From: mashuai Date: Wed, 23 Oct 2024 19:10:07 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=B1=BB=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchase/config/RemoteConfig.java | 96 +++++++++++++++++++ .../service/impl/PurchaseBindServiceImpl.java | 1 + .../impl/PurchaseStorageServiceImpl.java | 1 + 3 files changed, 98 insertions(+) create mode 100644 bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/config/RemoteConfig.java diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/config/RemoteConfig.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/config/RemoteConfig.java new file mode 100644 index 00000000..3d574732 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/config/RemoteConfig.java @@ -0,0 +1,96 @@ +package com.bonus.material.purchase.config; + +import com.bonus.common.core.constant.SecurityConstants; +import com.bonus.common.core.utils.StringUtils; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.system.api.RemoteDictDataService; +import com.bonus.system.api.RemoteUserService; +import com.bonus.system.api.domain.SysDictData; +import com.bonus.system.api.domain.SysUser; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author ma_sh + * @create 2024/10/23 19:06 + */ +@Component +@Slf4j +public class RemoteConfig { + + @Resource + private RemoteDictDataService remoteDictDataService; + + @Resource + private RemoteUserService remoteUserService; + + /** + * 获取字典值 + * @param dictType + * @return + */ + public Map getDictValue(String dictType) { + if (StringUtils.isBlank(dictType)) { + return Collections.emptyMap(); + } + try { + Map dictMap = new LinkedHashMap<>(); + AjaxResult ajaxResult = remoteDictDataService.dictType(dictType, SecurityConstants.INNER); + if (ajaxResult.isSuccess()) { + // 假设 ajaxResult.get("data") 返回的是 List + List rawData = (List) ajaxResult.get("data"); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + // 将 rawData 转换为 SysDictData 列表 + List dataList = rawData.stream() + .map(rawDatum -> objectMapper.convertValue(rawDatum, SysDictData.class)) + .collect(Collectors.toList()); + // 使用 Map 存储字典数据以提高查找速度 + dictMap = dataList.stream() + .collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel)); + } + return dictMap; + } catch (Exception e) { + log.error("远程调用查询字典键值失败:", e.getMessage()); + } + return Collections.emptyMap(); + } + + /** + * 获取用户名 + * @param userIds + * @return + */ + public Map getUserName(Long[] userIds) { + if (userIds == null || userIds.length == 0) { + return Collections.emptyMap(); + } + try { + AjaxResult ajaxResult = remoteUserService.getUsers(userIds, SecurityConstants.INNER); + // 假设 ajaxResult.get("data") 返回的是 List + List rawData = (List) ajaxResult.get("data"); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + List dataList = rawData.stream() + .map(rawDatum -> objectMapper.convertValue(rawDatum, SysUser.class)) + .collect(Collectors.toList()); + // 创建一个以 createBy 为键,nickName 为值的映射 + Map nickNameMap = dataList.stream() + .collect(Collectors.toMap(SysUser::getUserId, SysUser::getNickName)); + return nickNameMap; + } catch (Exception e) { + log.error("远程调用查询用户名失败:", e.getMessage()); + } + return Collections.emptyMap(); + } +} + diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseBindServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseBindServiceImpl.java index 08c100c5..31c1e722 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseBindServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseBindServiceImpl.java @@ -9,6 +9,7 @@ import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.material.purchase.config.RemoteConfig; import com.bonus.material.purchase.dto.PurchaseDto; import com.bonus.material.purchase.mapper.PurchaseBindMapper; import com.bonus.material.purchase.service.IPurchaseBindService; diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java index 67d0826a..e895c1e3 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/service/impl/PurchaseStorageServiceImpl.java @@ -6,6 +6,7 @@ import com.bonus.common.biz.enums.HttpCodeEnum; import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.material.ma.mapper.MachineMapper; +import com.bonus.material.purchase.config.RemoteConfig; import com.bonus.material.purchase.dto.PurchaseDto; import com.bonus.material.purchase.mapper.PurchaseBindMapper; import com.bonus.material.purchase.mapper.PurchaseStorageMapper;