From 57c582533e38f5a3426b0c6620fe5802abf3c106 Mon Sep 17 00:00:00 2001 From: mashuai Date: Wed, 23 Oct 2024 14:19:06 +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 --- .../controller/PurchaseBindController.java | 2 +- .../service/impl/PurchaseBindServiceImpl.java | 81 +++++++++++++++---- 2 files changed, 67 insertions(+), 16 deletions(-) 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 0b2e12b4..8428c749 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 @@ -100,7 +100,7 @@ public class PurchaseBindController extends BaseController { * @return */ @ApiOperation(value = "驳回或批量驳回操作") - @com.bonus.material.common.annotation.PreventRepeatSubmit + @PreventRepeatSubmit @RequiresPermissions("purchase:bind:reject") @PostMapping("/reject") public AjaxResult reject(@RequestBody PurchaseDto dto) { 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 3fcc59e9..bb1d6880 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,12 +9,15 @@ 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.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; @@ -48,6 +51,9 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService { @Resource private TmTaskMapper tmTaskMapper; + @Resource + private RemoteDictDataService remoteDictDataService; + /** * 查询所有绑定信息 * @param dto @@ -85,22 +91,38 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService { * @param list */ private void extracted(List list) { - for (PurchaseVo purchaseVo : list) { - try { - 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()); + 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) { - log.error("远程调用查询失败:", e.getMessage()); } + } catch (IllegalArgumentException e) { + e.printStackTrace(); } } @@ -126,7 +148,36 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService { */ @Override public List getDetails(PurchaseDto dto) { - return purchaseBindMapper.getDetails(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); + } + } + } + } catch (Exception e) { + log.error("远程服务调用查询失败:", e.getMessage()); + } } /** @@ -173,7 +224,7 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService { } PurchaseDto purchaseDto = new PurchaseDto(); purchaseDto.setTaskId(dto.getTaskId()); - List list = purchaseBindMapper.selectPurchaseCheckInfoById(dto); + List list = purchaseBindMapper.selectPurchaseCheckInfoById(purchaseDto); Map> groupedByIdStatus = list.stream() .collect(Collectors.groupingBy( PurchaseVo::getTaskId,