提交 9e25f8ad 作者: 925993793@qq.com

人物批量导入/导出 籍贯字段逻辑修改

上级 b52f5a0d
package com.zzsn.leaderbase.feign.api;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
//feign调用
@FeignClient(value = "jeecg-system")
public interface RemoteSystemService {
/**
* 根据字典编码查询字典项列表
*
* @param dictCode 字典编码
* @author lkg
* @date 2025/2/11
*/
@GetMapping("/sys/api/listItemByDictCode")
String sysDictItemList(@RequestParam String dictCode);
}
package com.zzsn.leaderbase.feign.entity;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @Author zhangweijian
* @since 2018-12-28
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SysDictItem implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 字典id
*/
private String dictId;
/**
* 字典项文本
*/
@Excel(name = "字典项文本", width = 20)
private String itemText;
/**
* 字典项值
*/
@Excel(name = "字典项值", width = 30)
private String itemValue;
/**
* 描述
*/
@Excel(name = "描述", width = 40)
private String description;
/**
* 排序
*/
@Excel(name = "排序", width = 15,type=4)
private Integer sortOrder;
/**
* 状态(1启用 0不启用)
*/
private Integer status;
private String createBy;
private Date createTime;
private String updateBy;
private Date updateTime;
/**
* 上级id
*/
private String pid;
/**
* 是否有下级
*/
private String hasChild;
/**
* 节点全路径(字典id)
*/
private String pathIds;
/**
* 层级
*/
private Integer level;
}
...@@ -3,6 +3,7 @@ package com.zzsn.leaderbase.service.impl; ...@@ -3,6 +3,7 @@ package com.zzsn.leaderbase.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
...@@ -11,16 +12,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -11,16 +12,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zzsn.leaderbase.entity.CharacterBasicInfo; import com.zzsn.leaderbase.entity.CharacterBasicInfo;
import com.zzsn.leaderbase.entity.CharacterCategoryStructure; import com.zzsn.leaderbase.entity.CharacterCategoryStructure;
import com.zzsn.leaderbase.feign.api.RemoteSystemService;
import com.zzsn.leaderbase.feign.entity.SysDictItem;
import com.zzsn.leaderbase.mapper.CharacterBasicInfoMapper; import com.zzsn.leaderbase.mapper.CharacterBasicInfoMapper;
import com.zzsn.leaderbase.service.CharacterBasicInfoService; import com.zzsn.leaderbase.service.CharacterBasicInfoService;
import com.zzsn.leaderbase.service.CharacterTagService; import com.zzsn.leaderbase.service.CharacterTagService;
import com.zzsn.leaderbase.service.IGeneratorIdService; import com.zzsn.leaderbase.service.IGeneratorIdService;
import com.zzsn.leaderbase.service.LeaderCategoryService; import com.zzsn.leaderbase.service.LeaderCategoryService;
import com.zzsn.leaderbase.util.AuthUtil;
import com.zzsn.leaderbase.util.ExcelUtil; import com.zzsn.leaderbase.util.ExcelUtil;
import com.zzsn.leaderbase.util.LoginUser;
import com.zzsn.leaderbase.vo.BasicInfoListVo; import com.zzsn.leaderbase.vo.BasicInfoListVo;
import com.zzsn.leaderbase.vo.CharacterVo; import com.zzsn.leaderbase.vo.CharacterVo;
import com.zzsn.leaderbase.vo.Result; import com.zzsn.leaderbase.vo.Result;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
...@@ -62,6 +68,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf ...@@ -62,6 +68,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
@Autowired @Autowired
LeaderCategoryService leaderCategoryService; LeaderCategoryService leaderCategoryService;
@Autowired
private RemoteSystemService remoteSystemService;
@Override @Override
public CharacterVo getByUid(String uid) { public CharacterVo getByUid(String uid) {
return baseMapper.getByUid(uid); return baseMapper.getByUid(uid);
...@@ -320,6 +329,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf ...@@ -320,6 +329,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
sheetNameList.add(sheetName); sheetNameList.add(sheetName);
} }
Map<String, String> typeNameKeyMap = getTypeMapper(category).stream().collect(Collectors.toMap(CharacterCategoryStructure::getTypeName, CharacterCategoryStructure::getId)); Map<String, String> typeNameKeyMap = getTypeMapper(category).stream().collect(Collectors.toMap(CharacterCategoryStructure::getTypeName, CharacterCategoryStructure::getId));
List<SysDictItem> dictItemList = dictItemList("Region_dic");
Map<String, List<SysDictItem>> dictValueMap = dictItemList.stream().collect(Collectors.groupingBy(SysDictItem::getItemText, Collectors.toList()));
Map<String, List<SysDictItem>> dictPathIdsMap = dictItemList.stream().collect(Collectors.groupingBy(SysDictItem::getPathIds, Collectors.toList()));
//人物类别映射集合,用来转化typeId和类别名称 //人物类别映射集合,用来转化typeId和类别名称
for (String sheetName : sheetNameList) { for (String sheetName : sheetNameList) {
Sheet sheet = workbook.getSheet(sheetName); Sheet sheet = workbook.getSheet(sheetName);
...@@ -342,6 +354,10 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf ...@@ -342,6 +354,10 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
if ("分类".equals(titleName) && "typeId".equals(importFieldMap.get(titleName))) { if ("分类".equals(titleName) && "typeId".equals(importFieldMap.get(titleName))) {
stringCellValue = typeNameKeyMap.get(stringCellValue); stringCellValue = typeNameKeyMap.get(stringCellValue);
} }
//籍贯 转换
if ("籍贯".equals(titleName) && "nativePlace".equals(importFieldMap.get(titleName))) {
stringCellValue = nativePlaceChange(stringCellValue,dictValueMap,dictPathIdsMap);
}
//将导入文件中不为null的列放入beanMap,key为导入列在数据库中对应的表列名 //将导入文件中不为null的列放入beanMap,key为导入列在数据库中对应的表列名
if (StringUtils.isNotEmpty(stringCellValue)) { if (StringUtils.isNotEmpty(stringCellValue)) {
beanMap.put(importFieldMap.get(titleName), stringCellValue); beanMap.put(importFieldMap.get(titleName), stringCellValue);
...@@ -351,7 +367,6 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf ...@@ -351,7 +367,6 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
} }
} }
} }
System.out.println(beanMap);
//过滤掉根据导入文档类型中文名找不到对应类别的数据(这些不做处理) //过滤掉根据导入文档类型中文名找不到对应类别的数据(这些不做处理)
if (StringUtils.isNotEmpty((CharSequence) beanMap.get("typeId"))) { if (StringUtils.isNotEmpty((CharSequence) beanMap.get("typeId"))) {
list.add(BeanUtil.mapToBean(beanMap, CharacterBasicInfo.class, true, CopyOptions.create().setIgnoreError(true))); list.add(BeanUtil.mapToBean(beanMap, CharacterBasicInfo.class, true, CopyOptions.create().setIgnoreError(true)));
...@@ -454,7 +469,59 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf ...@@ -454,7 +469,59 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
} }
return result; return result;
} }
private String nativePlaceChange(String stringCellValue,Map<String, List<SysDictItem>> dictValueMap,Map<String, List<SysDictItem>> dictPathIdsMap){
if (StringUtils.isNotBlank(stringCellValue)) {
if (stringCellValue.contains("/")){
String[] split = stringCellValue.split("/");
//判断节点是否全部包含
boolean match = true;
for (String s : split) {
boolean b = dictValueMap.containsKey(s);
if (!b) {
match = false;
break;
}
}
if (match) {
StringBuilder stringBuilder = new StringBuilder();
for (int j = 0; j < split.length; j++) {
if (j == 0) {
List<SysDictItem> sysDictItems = dictValueMap.get(split[j]);
stringBuilder.append(",").append(sysDictItems.get(0).getId());
} else {
List<SysDictItem> sysDictItems = dictValueMap.get(split[j]);
for (SysDictItem sysDictItem : sysDictItems) {
if (sysDictItem.getPathIds().contains(stringBuilder.substring(1))) {
stringBuilder.append(",").append(sysDictItem.getId());
break;
}
}
}
}
String substring = stringBuilder.substring(1);
if (dictPathIdsMap.containsKey(substring)) {
stringCellValue = dictPathIdsMap.get(substring).get(0).getItemValue();
} else {
stringCellValue = null;
}
} else {
stringCellValue = null;
}
} else {
if (dictValueMap.containsKey(stringCellValue)){
List<SysDictItem> sysDictItems = dictValueMap.get(stringCellValue);
stringCellValue = sysDictItems.get(0).getItemValue();
} else {
stringCellValue = null;
}
}
}
return stringCellValue;
}
private List<CharacterCategoryStructure> getTypeMapper(String category) { private List<CharacterCategoryStructure> getTypeMapper(String category) {
//根据名称模糊查询 //根据名称模糊查询
LambdaQueryWrapper<CharacterCategoryStructure> characterCategoryStructureLambdaQueryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<CharacterCategoryStructure> characterCategoryStructureLambdaQueryWrapper = Wrappers.lambdaQuery();
...@@ -546,6 +613,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf ...@@ -546,6 +613,9 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
}); });
int rowNum = 1; int rowNum = 1;
Map<String,String> typeIdeKeyMap=getTypeMapper(category).stream().collect(Collectors.toMap(CharacterCategoryStructure::getId, CharacterCategoryStructure::getTypeName)); Map<String,String> typeIdeKeyMap=getTypeMapper(category).stream().collect(Collectors.toMap(CharacterCategoryStructure::getId, CharacterCategoryStructure::getTypeName));
List<SysDictItem> dictItemList = dictItemList("Region_dic");
Map<String, SysDictItem> dictValueMap = dictItemList.stream().collect(Collectors.toMap(SysDictItem::getItemValue, e -> e));
Map<String, SysDictItem> dictItemIdMap = dictItemList.stream().collect(Collectors.toMap(SysDictItem::getId, e -> e));
//数据填充到Excel工作表 //数据填充到Excel工作表
for (CharacterBasicInfo characterBasicInfo : characterBasicInfos) { for (CharacterBasicInfo characterBasicInfo : characterBasicInfos) {
Row row = sheet.createRow(rowNum++); Row row = sheet.createRow(rowNum++);
...@@ -559,10 +629,17 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf ...@@ -559,10 +629,17 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
Map<String, Object> characterMap = BeanUtil.beanToMap(characterBasicInfo); Map<String, Object> characterMap = BeanUtil.beanToMap(characterBasicInfo);
if (columnName != null) { if (columnName != null) {
Object value = characterMap.get(columnName); Object value = characterMap.get(columnName);
if("typeId".equals(columnName)) if(ObjectUtils.isNotEmpty(value) && "typeId".equals(columnName)){
{
value=typeIdeKeyMap.get(value); value=typeIdeKeyMap.get(value);
} }
if (ObjectUtils.isNotEmpty(value) && "nativePlace".equals(columnName)) {
StringBuilder stringBuilder = new StringBuilder();
String pathIds = dictValueMap.get(value).getPathIds();
for (String itemId : pathIds.split(",")) {
stringBuilder.append("/").append(dictItemIdMap.get(itemId).getItemText());
}
value = stringBuilder.substring(1);
}
if (value != null) { if (value != null) {
if (value instanceof String) { if (value instanceof String) {
cell.setCellValue((String) value); cell.setCellValue((String) value);
...@@ -596,4 +673,35 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf ...@@ -596,4 +673,35 @@ public class CharacterBasicInfoServiceImpl extends ServiceImpl<CharacterBasicInf
// 返回Excel文件作为字节数组响应 // 返回Excel文件作为字节数组响应
return new ResponseEntity<>(byteArrayOutputStream.toByteArray(), headers, HttpStatus.OK); return new ResponseEntity<>(byteArrayOutputStream.toByteArray(), headers, HttpStatus.OK);
} }
private List<SysDictItem> dictItemList(String dictCode){
String s = remoteSystemService.sysDictItemList(dictCode);
return JSON.parseArray(s, SysDictItem.class);
/*List<SysDictItem> list = new ArrayList<>();
SysDictItem item = new SysDictItem();
item.setId("1865339606107422721");
item.setItemText("国内地域");
item.setItemValue("Domestic");
item.setPathIds("1865339606107422721");
list.add(item);
SysDictItem item1 = new SysDictItem();
item1.setId("1865339606120005633");
item1.setItemText("中国");
item1.setItemValue("China");
item1.setPathIds("1865339606107422721,1865339606120005633");
list.add(item1);
SysDictItem item2 = new SysDictItem();
item2.setId("1865339606518464514");
item2.setItemText("河南省");
item2.setItemValue("410000000000");
item2.setPathIds("1865339606107422721,1865339606120005633,1865339606518464514");
list.add(item2);
SysDictItem item3 = new SysDictItem();
item3.setId("1865339641427656705");
item3.setItemText("焦作市");
item3.setItemValue("410800000000");
item3.setPathIds("1865339606107422721,1865339606120005633,1865339606518464514,1865339641427656705");
list.add(item3);
return list;*/
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论