From cc0f05de550ad75df6627025b074019c6c336a79 Mon Sep 17 00:00:00 2001 From: mashuai Date: Wed, 23 Oct 2024 16:50:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E8=B4=AD=E7=BB=91=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../purchase/config/RemoteConfig.java | 90 +++++++++++++++++++ .../controller/PurchaseBindController.java | 2 +- .../service/impl/PurchaseBindServiceImpl.java | 83 +++-------------- 3 files changed, 103 insertions(+), 72 deletions(-) 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..64803918 --- /dev/null +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/config/RemoteConfig.java @@ -0,0 +1,90 @@ +package com.bonus.material.purchase.config; + +import com.bonus.common.core.constant.SecurityConstants; +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.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 框架远程调用配置类 + * @Author ma_sh + * @create 2024/10/23 16:10 + */ +@Component +@Slf4j +public class RemoteConfig { + + @Resource + private RemoteDictDataService remoteDictDataService; + + @Resource + private RemoteUserService remoteUserService; + + /** + * 获取字典值 + * @param dictType + * @param dictLabel + * @return + */ + public String getDictValue(String dictType, String dictLabel) { + 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.get(dictLabel); + } catch (Exception e) { + log.error("远程调用查询字典键值失败:", e.getMessage()); + } + return null; + } + + /** + * 获取用户名 + * @param userId + * @return + */ + public String getUserName(String userId) { + try { + String userName = ""; + AjaxResult ajaxResult = remoteUserService.getInfo(Long.parseLong(userId), SecurityConstants.INNER); + if (ajaxResult.isSuccess()) { + // ajaxResult.get("data") 返回的是 LinkedHashMap + LinkedHashMap rawDataList = (LinkedHashMap) ajaxResult.get("data"); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + if (rawDataList != null) { + SysUser sysUser = objectMapper.convertValue(rawDataList, SysUser.class); + userName = sysUser.getNickName(); + } + } + return userName; + } catch (IllegalArgumentException e) { + log.error("远程调用查询用户名失败:", e.getMessage()); + } + return null; + } +} diff --git a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseBindController.java b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseBindController.java index 8428c749..321d07f3 100644 --- a/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseBindController.java +++ b/bonus-modules/bonus-material/src/main/java/com/bonus/material/purchase/controller/PurchaseBindController.java @@ -36,7 +36,7 @@ public class PurchaseBindController extends BaseController { * 一级分页查询 */ @ApiOperation(value = "查询新购验收绑定详细列表") - @RequiresPermissions("purchase:bind:list") + //@RequiresPermissions("purchase:bind:list") @GetMapping(value = "/list") public TableDataInfo getList(PurchaseDto dto) { startPage(); 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 f2f63fc7..3a47b537 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 @@ -5,22 +5,15 @@ import com.bonus.common.biz.config.DateTimeHelper; import com.bonus.common.biz.config.QrCodeUtils; import com.bonus.common.biz.constant.MaterialConstants; import com.bonus.common.biz.enums.HttpCodeEnum; -import com.bonus.common.core.constant.SecurityConstants; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; -import com.bonus.material.basic.domain.BmUnit; +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; import com.bonus.material.purchase.vo.PurchaseVo; import com.bonus.material.task.mapper.TmTaskMapper; -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 com.google.zxing.WriterException; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; @@ -46,14 +39,11 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService { @Resource private PurchaseBindMapper purchaseBindMapper; - @Resource - private RemoteUserService remoteUserService; - @Resource private TmTaskMapper tmTaskMapper; @Resource - private RemoteDictDataService remoteDictDataService; + private RemoteConfig remoteConfig; /** * 查询所有绑定信息 @@ -92,38 +82,11 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService { * @param list */ private void extracted(List list) { - try { - AjaxResult result = remoteDictDataService.dictType("purchase_task_status", SecurityConstants.INNER); - if (result.isSuccess()) { - // 假设 ajaxResult.get("data") 返回的是 List - List rawData = (List) result.get("data"); - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - // 将 rawData 转换为 SysDictData 列表 - List dataList = rawData.stream() - .map(rawDatum -> mapper.convertValue(rawDatum, SysDictData.class)) - .collect(Collectors.toList()); - // 使用 Map 存储字典数据以提高查找速度 - Map dictMap = dataList.stream() - .collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel)); - for (PurchaseVo purchaseVo : list) { - AjaxResult ajaxResult = remoteUserService.getInfo(Long.parseLong(purchaseVo.getCreateBy()), SecurityConstants.INNER); - if (ajaxResult.isSuccess()) { - // ajaxResult.get("data") 返回的是 LinkedHashMap - LinkedHashMap rawDataList = (LinkedHashMap) ajaxResult.get("data"); - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - if (rawDataList != null) { - SysUser sysUser = objectMapper.convertValue(rawDataList, SysUser.class); - purchaseVo.setCreateBy(sysUser.getNickName() == null ? "" : sysUser.getNickName()); - } - } - String name = dictMap.get(purchaseVo.getStatus().toString()); - purchaseVo.setStatusName(name == null ? "" : name); - } - } - } catch (IllegalArgumentException e) { - e.printStackTrace(); + for (PurchaseVo purchaseVo : list) { + String userName = remoteConfig.getUserName(purchaseVo.getCreateBy()); + purchaseVo.setCreateBy(userName == null ? "" : userName); + String dictValue = remoteConfig.getDictValue("purchase_task_status", purchaseVo.getStatus().toString()); + purchaseVo.setStatusName(dictValue == null ? "" : dictValue); } } @@ -150,35 +113,13 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService { @Override public List getDetails(PurchaseDto dto) { List list = purchaseBindMapper.getDetails(dto); - extractedDict(list); - return list; - } - - private void extractedDict(List list) { - try { - AjaxResult ajaxResult = remoteDictDataService.dictType("purchase_task_status", 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 存储字典数据以提高查找速度 - Map dictMap = dataList.stream() - .collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel)); - if (CollectionUtils.isNotEmpty(list)) { - for (PurchaseVo purchaseVo : list) { - String name = dictMap.get(purchaseVo.getStatus().toString()); - purchaseVo.setStatusName(name == null ? "" : name); - } - } + if (CollectionUtils.isNotEmpty(list)) { + for (PurchaseVo purchaseVo : list) { + String name = remoteConfig.getDictValue("purchase_task_status", purchaseVo.getStatus().toString()); + purchaseVo.setStatusName(name == null ? "" : name); } - } catch (Exception e) { - log.error("远程服务调用查询失败:", e.getMessage()); } + return list; } /**