This commit is contained in:
mashuai 2024-10-24 13:17:43 +08:00
parent a926edc370
commit 5d7116b4f0
2 changed files with 44 additions and 35 deletions

View File

@ -46,11 +46,14 @@ public class BmUnit extends BaseEntity
private String typeName;
/** 所属分公司 */
@Excel(name = "所属分公司")
@ApiModelProperty(value = "所属分公司")
@NotBlank(message = "所属分公司不能为空")
private Long deptId;
@Excel(name = "所属分公司")
@ApiModelProperty(value = "所属分公司名称")
private String deptName;
/** 联系人 */
@Excel(name = "联系人")
@ApiModelProperty(value = "联系人")

View File

@ -4,7 +4,6 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import cn.hutool.core.util.PhoneUtil;
import com.alibaba.nacos.common.utils.CollectionUtils;
@ -14,8 +13,10 @@ 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.system.api.RemoteDeptService;
import com.bonus.system.api.RemoteDictDataService;
import com.bonus.system.api.domain.SysDictData;
import com.bonus.system.api.domain.SysDept;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
@ -41,7 +42,11 @@ public class BmUnitServiceImpl implements IBmUnitService
private BmUnitMapper bmUnitMapper;
@Resource
private RemoteDictDataService remoteDictDataService;
private RemoteConfig remoteConfig;
@Resource
private RemoteDeptService remoteDeptService;
/**
* 查询往来单位管理
@ -52,7 +57,9 @@ public class BmUnitServiceImpl implements IBmUnitService
@Override
public BmUnit selectBmUnitByUnitId(Long unitId)
{
return bmUnitMapper.selectBmUnitByUnitId(unitId);
BmUnit unit = bmUnitMapper.selectBmUnitByUnitId(unitId);
extracted(unit);
return unit;
}
/**
@ -65,43 +72,42 @@ public class BmUnitServiceImpl implements IBmUnitService
public List<BmUnit> selectBmUnitList(BmUnit bmUnit)
{
List<BmUnit> bmUnitList = bmUnitMapper.selectBmUnitList(bmUnit);
extracted(bmUnitList);
if (CollectionUtils.isNotEmpty(bmUnitList)) {
bmUnitList.forEach(item -> {
extracted(item);
});
}
return bmUnitList;
}
private void extracted(List<BmUnit> bmUnitList) {
try {
AjaxResult ajaxResult = remoteDictDataService.dictType("bm_unit_type", 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(bmUnitList)) {
for (BmUnit unit : bmUnitList) {
if (unit.getUnitId() != null) {
//根据单位id去人员绑定中查询是否绑定赋值绑定状态
unit.setIsBind(bmUnitMapper.selectBmUnitPersonByUnitId(unit.getUnitId()) > 0 ? 1 : 0);
}
String typeName = dictMap.get(unit.getTypeId().toString());
if (typeName != null) {
unit.setTypeName(typeName);
}
}
}
/**
* 方法抽取
* @param unit
*/
private void extracted(BmUnit unit) {
Map<String, String> labelMap = remoteConfig.getDictValue("bm_unit_type");
if (unit.getUnitId() != null) {
//根据单位id去人员绑定中查询是否绑定赋值绑定状态
unit.setIsBind(bmUnitMapper.selectBmUnitPersonByUnitId(unit.getUnitId()) > 0 ? 1 : 0);
}
if (unit.getTypeId() != null) {
unit.setTypeName(labelMap.get(unit.getTypeId().toString()) == null ? "" : labelMap.get(unit.getTypeId().toString()));
}
AjaxResult ajaxResult = remoteDeptService.getInfo(unit.getDeptId(), 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) {
SysDept sysDept = objectMapper.convertValue(rawDataList, SysDept.class);
unit.setDeptName(sysDept.getDeptName() == null ? "" : sysDept.getDeptName());
}
} catch (Exception e) {
log.error("远程服务调用查询失败:", e.getMessage());
}
}
/**
* 新增往来单位管理
*