新购绑定

This commit is contained in:
mashuai 2024-10-23 16:50:16 +08:00
parent 0b5f0bea3f
commit cc0f05de55
3 changed files with 103 additions and 72 deletions

View File

@ -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<String, String> dictMap = new LinkedHashMap<>();
AjaxResult ajaxResult = remoteDictDataService.dictType(dictType, SecurityConstants.INNER);
if (ajaxResult.isSuccess()) {
// 假设 ajaxResult.get("data") 返回的是 List<LinkedHashMap>
List<LinkedHashMap> rawData = (List<LinkedHashMap>) ajaxResult.get("data");
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// rawData 转换为 SysDictData 列表
List<SysDictData> 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<String, Object> rawDataList = (LinkedHashMap<String, Object>) 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;
}
}

View File

@ -36,7 +36,7 @@ public class PurchaseBindController extends BaseController {
* 一级分页查询 * 一级分页查询
*/ */
@ApiOperation(value = "查询新购验收绑定详细列表") @ApiOperation(value = "查询新购验收绑定详细列表")
@RequiresPermissions("purchase:bind:list") //@RequiresPermissions("purchase:bind:list")
@GetMapping(value = "/list") @GetMapping(value = "/list")
public TableDataInfo getList(PurchaseDto dto) { public TableDataInfo getList(PurchaseDto dto) {
startPage(); startPage();

View File

@ -5,22 +5,15 @@ import com.bonus.common.biz.config.DateTimeHelper;
import com.bonus.common.biz.config.QrCodeUtils; import com.bonus.common.biz.config.QrCodeUtils;
import com.bonus.common.biz.constant.MaterialConstants; import com.bonus.common.biz.constant.MaterialConstants;
import com.bonus.common.biz.enums.HttpCodeEnum; 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.utils.DateUtils;
import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.security.utils.SecurityUtils; 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.dto.PurchaseDto;
import com.bonus.material.purchase.mapper.PurchaseBindMapper; import com.bonus.material.purchase.mapper.PurchaseBindMapper;
import com.bonus.material.purchase.service.IPurchaseBindService; import com.bonus.material.purchase.service.IPurchaseBindService;
import com.bonus.material.purchase.vo.PurchaseVo; import com.bonus.material.purchase.vo.PurchaseVo;
import com.bonus.material.task.mapper.TmTaskMapper; 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 com.google.zxing.WriterException;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
@ -46,14 +39,11 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService {
@Resource @Resource
private PurchaseBindMapper purchaseBindMapper; private PurchaseBindMapper purchaseBindMapper;
@Resource
private RemoteUserService remoteUserService;
@Resource @Resource
private TmTaskMapper tmTaskMapper; private TmTaskMapper tmTaskMapper;
@Resource @Resource
private RemoteDictDataService remoteDictDataService; private RemoteConfig remoteConfig;
/** /**
* 查询所有绑定信息 * 查询所有绑定信息
@ -92,38 +82,11 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService {
* @param list * @param list
*/ */
private void extracted(List<PurchaseVo> list) { private void extracted(List<PurchaseVo> list) {
try { for (PurchaseVo purchaseVo : list) {
AjaxResult result = remoteDictDataService.dictType("purchase_task_status", SecurityConstants.INNER); String userName = remoteConfig.getUserName(purchaseVo.getCreateBy());
if (result.isSuccess()) { purchaseVo.setCreateBy(userName == null ? "" : userName);
// 假设 ajaxResult.get("data") 返回的是 List<LinkedHashMap> String dictValue = remoteConfig.getDictValue("purchase_task_status", purchaseVo.getStatus().toString());
List<LinkedHashMap> rawData = (List<LinkedHashMap>) result.get("data"); purchaseVo.setStatusName(dictValue == null ? "" : dictValue);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// rawData 转换为 SysDictData 列表
List<SysDictData> dataList = rawData.stream()
.map(rawDatum -> mapper.convertValue(rawDatum, SysDictData.class))
.collect(Collectors.toList());
// 使用 Map 存储字典数据以提高查找速度
Map<String, String> 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<String, Object> rawDataList = (LinkedHashMap<String, Object>) 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();
} }
} }
@ -150,35 +113,13 @@ public class PurchaseBindServiceImpl implements IPurchaseBindService {
@Override @Override
public List<PurchaseVo> getDetails(PurchaseDto dto) { public List<PurchaseVo> getDetails(PurchaseDto dto) {
List<PurchaseVo> list = purchaseBindMapper.getDetails(dto); List<PurchaseVo> list = purchaseBindMapper.getDetails(dto);
extractedDict(list); if (CollectionUtils.isNotEmpty(list)) {
return list; for (PurchaseVo purchaseVo : list) {
} String name = remoteConfig.getDictValue("purchase_task_status", purchaseVo.getStatus().toString());
purchaseVo.setStatusName(name == null ? "" : name);
private void extractedDict(List<PurchaseVo> list) {
try {
AjaxResult ajaxResult = remoteDictDataService.dictType("purchase_task_status", SecurityConstants.INNER);
if (ajaxResult.isSuccess()) {
// 假设 ajaxResult.get("data") 返回的是 List<LinkedHashMap>
List<LinkedHashMap> rawData = (List<LinkedHashMap>) ajaxResult.get("data");
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// rawData 转换为 SysDictData 列表
List<SysDictData> dataList = rawData.stream()
.map(rawDatum -> objectMapper.convertValue(rawDatum, SysDictData.class))
.collect(Collectors.toList());
// 使用 Map 存储字典数据以提高查找速度
Map<String, String> 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());
} }
return list;
} }
/** /**