新增中文转拼音工具

main
whb 7 months ago
parent e09853e7e9
commit 4a2b964c40

@ -96,5 +96,13 @@
<version>3.2.1</version> <version>3.2.1</version>
</dependency> </dependency>
<dependency>
<groupId>com.github.stuxuhai</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/pinyin4j-2.5.0.jar</systemPath>
</dependency>
</dependencies> </dependencies>
</project> </project>

@ -1,6 +1,7 @@
package com.gccloud.dataroom.core.module.manage.controller; package com.gccloud.dataroom.core.module.manage.controller;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gccloud.common.permission.ApiPermission; import com.gccloud.common.permission.ApiPermission;
@ -13,6 +14,7 @@ import com.gccloud.dataroom.core.utils.DemoDataListener;
import com.gccloud.dataset.constant.DatasetConstant; import com.gccloud.dataset.constant.DatasetConstant;
import com.gccloud.dataset.dto.DatasetDTO; import com.gccloud.dataset.dto.DatasetDTO;
import com.gccloud.dataset.entity.DatasetEntity; import com.gccloud.dataset.entity.DatasetEntity;
import com.gccloud.dataset.entity.config.BaseDataSetConfig;
import com.gccloud.dataset.service.IBaseDataSetService; import com.gccloud.dataset.service.IBaseDataSetService;
import com.gccloud.dataset.service.IDatasetLabelService; import com.gccloud.dataset.service.IDatasetLabelService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -26,6 +28,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.UUID;
/** /**
* @author 17803 * @author 17803
@ -46,33 +49,50 @@ public class NeUploadExcelController {
@Autowired @Autowired
private IBaseDataSetService dataSetService; private IBaseDataSetService dataSetService;
@ApiOperation("新增Excel")
@PostMapping("/newAdd")
@ApiOperation("上传Excel")
@PostMapping("/uploadExcel")
@ApiPermission(permissions = {DatasetConstant.Permission.Dataset.ADD}) @ApiPermission(permissions = {DatasetConstant.Permission.Dataset.ADD})
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public R<String> newAdd(String datasetDTO, @RequestParam("file") @RequestPart MultipartFile file) throws IOException { public R uploadExcel(@RequestParam("file") @RequestPart MultipartFile file,String userId) throws IOException {
DatasetDTO datasetByJson = JSON.parseObject(datasetDTO, DatasetDTO.class);
// IBaseDataSetService dataSetService = dataSetServiceFactory.build(datasetByJson.getDatasetType());
String id = dataSetService.add(datasetByJson);
//存储excel数据 根据id关联 //存储excel数据 根据id关联
String s = UUID.randomUUID().toString().replaceAll("-", "");
DemoDataListener demoDataListener = new DemoDataListener(neUploadExcelDao, userId, s);
// 这里 需要指定读用哪个class去读然后读取第一个sheet 文件流会自动关闭 // 这里 需要指定读用哪个class去读然后读取第一个sheet 文件流会自动关闭
EasyExcel.read(file.getInputStream(), StuUploadExcelUser.class, EasyExcel.read(file.getInputStream(), StuUploadExcelUser.class,
new DemoDataListener(neUploadExcelDao, datasetByJson.getRemark(), id)).sheet().doRead(); new DemoDataListener(neUploadExcelDao, userId, s)).sheet().doRead();
// 保存与标签的关联关系 return R.success(s);
List<String> labelIds = datasetByJson.getLabelIds();
if (labelIds == null || labelIds.isEmpty()) {
return R.success(id);
} }
datasetLabelService.addByDatasetId(id, labelIds);
return R.success(id); @ApiOperation("分页查询excel")
@GetMapping("/getExcelByPage")
@ApiPermission(permissions = {DatasetConstant.Permission.Dataset.ADD})
public R getExcelByPage(String userId,Integer index,Integer size,String value) throws IOException {
LambdaQueryWrapper<StuUploadExcelUser> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StuUploadExcelUser::getModule,value);
IPage page = new Page(index,size);
neUploadExcelDao.selectPage(page, wrapper);
R<Object> objectR = new R<>(200,String.valueOf(page.getTotal()),page.getRecords());
return R.success(objectR);
} }
@ApiOperation("新详情") @ApiOperation("新详情")
@GetMapping("/NewInfo") @GetMapping("/NewInfo")
@ApiPermission(permissions = {DatasetConstant.Permission.Dataset.VIEW}) @ApiPermission(permissions = {DatasetConstant.Permission.Dataset.VIEW})
@ -83,8 +103,20 @@ public class NeUploadExcelController {
DatasetEntityDTO datasetEntityDTO = new DatasetEntityDTO(); DatasetEntityDTO datasetEntityDTO = new DatasetEntityDTO();
BeanUtils.copyProperties(datasetEntity,datasetEntityDTO); BeanUtils.copyProperties(datasetEntity,datasetEntityDTO);
BaseDataSetConfig config = datasetEntity.getConfig();
String value = config.getParamsList().get(0).getValue();
LambdaQueryWrapper<StuUploadExcelUser> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(StuUploadExcelUser::getModule,value);
IPage page = new Page(index,size); IPage page = new Page(index,size);
neUploadExcelDao.selectPage(page, null); neUploadExcelDao.selectPage(page, wrapper);
datasetEntityDTO.setUploadExcelList(page.getRecords()); datasetEntityDTO.setUploadExcelList(page.getRecords());

@ -7,6 +7,7 @@ import com.alibaba.excel.read.listener.ReadListener;
import com.alibaba.excel.util.ConverterUtils; import com.alibaba.excel.util.ConverterUtils;
import com.alibaba.excel.util.ListUtils; import com.alibaba.excel.util.ListUtils;
import net.sourceforge.pinyin4j.PinyinHelper;
import com.gccloud.common.utils.JSON; import com.gccloud.common.utils.JSON;
import com.gccloud.dataroom.core.module.manage.dao.NeUploadExcelDao; import com.gccloud.dataroom.core.module.manage.dao.NeUploadExcelDao;
@ -27,7 +28,7 @@ public class DemoDataListener implements ReadListener<StuUploadExcelUser> {
* 5使100list 便 * 5使100list 便
* *
*/ */
private static final int BATCH_COUNT = 150; private static final int BATCH_COUNT = 50;
private static final int MAX_COUNT = 1000; // 最大处理条数 private static final int MAX_COUNT = 1000; // 最大处理条数
/** /**
* *
@ -43,6 +44,9 @@ public class DemoDataListener implements ReadListener<StuUploadExcelUser> {
List<String> list = new ArrayList<String>(); List<String> list = new ArrayList<String>();
// 存储转换后的拼音列表
List<String> pinyinList = new ArrayList<>();
/** /**
* 使spring,使Listenerspring * 使spring,使Listenerspring
* *
@ -76,6 +80,32 @@ public class DemoDataListener implements ReadListener<StuUploadExcelUser> {
} }
// 遍历list中的每个字符串
for (String chinese : list) {
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());
}
// 如果想转成成 Map<Integer,String> // 如果想转成成 Map<Integer,String>
// 方案1 不要implements ReadListener 而是 extends AnalysisEventListener // 方案1 不要implements ReadListener 而是 extends AnalysisEventListener
// 方案2 调用 ConverterUtils.convertToStringMap(headMap, context) 自动会转换 // 方案2 调用 ConverterUtils.convertToStringMap(headMap, context) 自动会转换
@ -133,7 +163,7 @@ public class DemoDataListener implements ReadListener<StuUploadExcelUser> {
cachedDataList.forEach(item->{ cachedDataList.forEach(item->{
item.setUserId(userId); item.setUserId(userId);
item.setModule(id); item.setModule(id);
item.setStepOneA(JSON.toJSONString(list)); item.setStepOneA(JSON.toJSONString(pinyinList));
}); });
@ -141,7 +171,7 @@ public class DemoDataListener implements ReadListener<StuUploadExcelUser> {
demoDAO.insert(uploadExcelUser); demoDAO.insert(uploadExcelUser);
} }
//demoDAO.insertBatch(cachedDataList); // demoDAO.insertBatch(cachedDataList);

@ -42,7 +42,7 @@ spring:
datasource: datasource:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.p6spy.engine.spy.P6SpyDriver driverClassName: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:p6spy:mysql://120.79.54.255:3306/dashboard?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true url: jdbc:p6spy:mysql://120.79.54.255:3306/dashboard?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true&allowMultiQueries=true
username: root username: root
password: Sztzjy506 password: Sztzjy506

Loading…
Cancel
Save