添加批量导入csv接口
parent
4a2b964c40
commit
3fb29b06ed
@ -0,0 +1,17 @@
|
||||
package com.gccloud.dataroom.core.module.manage.dto;
|
||||
|
||||
import cn.hutool.core.text.csv.CsvRow;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author 17803
|
||||
* @date 2024-09-05 17:11
|
||||
*/
|
||||
@Data
|
||||
public class CvsDTO {
|
||||
|
||||
private List<String> header;
|
||||
private List<CsvRow> rows ;
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package com.gccloud.dataroom.core.module.manage.service;
|
||||
|
||||
|
||||
import com.gccloud.common.vo.R;
|
||||
import com.gccloud.dataroom.core.module.manage.dto.CategorySearchDTO;
|
||||
import com.gccloud.dataroom.core.module.manage.entity.CategoryEntity;
|
||||
import com.gccloud.dataset.vo.CategoryVO;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author 17803
|
||||
* @date 2024-09-02 16:22
|
||||
*/
|
||||
|
||||
public interface NewExcelService {
|
||||
|
||||
|
||||
R uploadCVS(MultipartFile file, String userId);
|
||||
}
|
@ -0,0 +1,165 @@
|
||||
package com.gccloud.dataroom.core.module.manage.service.impl;
|
||||
|
||||
import cn.hutool.core.text.csv.CsvRow;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gccloud.common.exception.GlobalException;
|
||||
import com.gccloud.common.utils.BeanConvertUtils;
|
||||
import com.gccloud.common.utils.JSON;
|
||||
import com.gccloud.common.vo.R;
|
||||
import com.gccloud.dataroom.core.module.basic.dao.DataRoomPagePreviewDao;
|
||||
import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity;
|
||||
import com.gccloud.dataroom.core.module.manage.dao.NeUploadExcelDao;
|
||||
import com.gccloud.dataroom.core.module.manage.dto.CvsDTO;
|
||||
import com.gccloud.dataroom.core.module.manage.dto.DataRoomPageDTO;
|
||||
import com.gccloud.dataroom.core.module.manage.entity.StuUploadExcelUser;
|
||||
import com.gccloud.dataroom.core.module.manage.service.IDataRoomPagePreviewService;
|
||||
import com.gccloud.dataroom.core.module.manage.service.NewExcelService;
|
||||
import com.gccloud.dataroom.core.utils.CsvImportUtil;
|
||||
import net.sourceforge.pinyin4j.PinyinHelper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author hongyang
|
||||
* @version 1.0
|
||||
* @date 2023/9/13 10:11
|
||||
*/
|
||||
@Service
|
||||
public class NewExcelServiceImpl extends ServiceImpl<NeUploadExcelDao, StuUploadExcelUser> implements NewExcelService {
|
||||
|
||||
|
||||
@Override
|
||||
public R uploadCVS(MultipartFile file, String userId) {
|
||||
int suff = file.getOriginalFilename().lastIndexOf(".");
|
||||
String substring = file.getOriginalFilename().substring(suff+1);
|
||||
//存储excel数据 根据id关联
|
||||
String s = UUID.randomUUID().toString().replaceAll("-", "");
|
||||
|
||||
// 存储转换后的拼音列表
|
||||
List<String> pinyinList = new ArrayList<>();
|
||||
if ("csv".equals(substring))
|
||||
{
|
||||
List<StuUploadExcelUser> excelUsers=new ArrayList<>();
|
||||
|
||||
CvsDTO cvsDTO= null;
|
||||
try {
|
||||
cvsDTO = CsvImportUtil.csvImportsNew(file);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
// 遍历list中的每个字符串
|
||||
for (String chinese : cvsDTO.getHeader()) {
|
||||
StringBuilder pinyin = new StringBuilder();
|
||||
|
||||
// 遍历字符串中的每个字符
|
||||
for (char c : chinese.toCharArray()) {
|
||||
if (Character.toString(c).matches("[\\u4E00-\\u9FA5]")) {
|
||||
// 获取拼音
|
||||
String[] pinyinArray = PinyinHelper.toHanyuPinyinStringArray(c);
|
||||
if (pinyinArray != null) {
|
||||
// 取第一个拼音
|
||||
pinyin.append(pinyinArray[0].replaceAll("[1234]", ""));
|
||||
}
|
||||
} else {
|
||||
// 非中文字符原样添加
|
||||
pinyin.append(c);
|
||||
}
|
||||
}
|
||||
|
||||
// 将拼音结果添加到pinyinList
|
||||
pinyinList.add(pinyin.toString().trim());
|
||||
}
|
||||
|
||||
|
||||
|
||||
StuUploadExcelUser stuUploadExcelUsers = new StuUploadExcelUser();
|
||||
stuUploadExcelUsers.setModule(s);
|
||||
stuUploadExcelUsers.setUserId(userId);
|
||||
if (CollectionUtils.isEmpty(pinyinList))
|
||||
{
|
||||
stuUploadExcelUsers.setStepOneA(JSON.toJSONString(cvsDTO.getHeader()));
|
||||
}else {
|
||||
stuUploadExcelUsers.setStepOneA(JSON.toJSONString(pinyinList));
|
||||
}
|
||||
// 获取 StuUploadExcelUser 的所有字段
|
||||
Field[] fields = StuUploadExcelUser.class.getDeclaredFields();
|
||||
int fieldIndex = 2;
|
||||
int count = 0;
|
||||
// 遍历 CsvRow
|
||||
for (CsvRow row : cvsDTO.getRows()) {
|
||||
|
||||
StuUploadExcelUser stuUploadExcelUser = new StuUploadExcelUser();
|
||||
fieldIndex = 2;
|
||||
if (count >=1000)
|
||||
{
|
||||
break;
|
||||
}
|
||||
for (int j = 0; j < row.size(); j++) {
|
||||
|
||||
if (fieldIndex >= fields.length) {
|
||||
// 如果字段超出范围,跳出循环
|
||||
break;
|
||||
}
|
||||
|
||||
try {
|
||||
// 获取字段
|
||||
Field field = fields[fieldIndex];
|
||||
field.setAccessible(true); // 设置字段为可访问
|
||||
// 获取 row 中的值
|
||||
Object value = row.get(j);
|
||||
// 根据字段类型进行赋值
|
||||
if (field.getType().equals(String.class)) {
|
||||
field.set(stuUploadExcelUser, value != null ? value.toString() : null);
|
||||
}
|
||||
else {
|
||||
field.set(stuUploadExcelUser, value != null ? value.toString() : null);
|
||||
}
|
||||
|
||||
|
||||
if (row.size() == j)
|
||||
{
|
||||
fieldIndex = 2;
|
||||
break;
|
||||
|
||||
}else {
|
||||
fieldIndex++;
|
||||
}
|
||||
|
||||
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
count++;
|
||||
excelUsers.add(stuUploadExcelUser);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
excelUsers.stream().forEach(item->{
|
||||
|
||||
item.setModule(s);
|
||||
item.setStepOneA(JSON.toJSONString(pinyinList));
|
||||
item.setUserId(userId);
|
||||
|
||||
});
|
||||
|
||||
this.saveBatch(excelUsers);
|
||||
}
|
||||
|
||||
|
||||
return R.success(s);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue