diff --git a/DataRoom/dataroom-core/pom.xml b/DataRoom/dataroom-core/pom.xml index 6256d932..5d63b62c 100644 --- a/DataRoom/dataroom-core/pom.xml +++ b/DataRoom/dataroom-core/pom.xml @@ -96,5 +96,13 @@ 3.2.1 + + com.github.stuxuhai + pinyin4j + 2.5.1 + system + ${project.basedir}/src/main/resources/pinyin4j-2.5.0.jar + + diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/NeUploadExcelController.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/NeUploadExcelController.java index 63d02cfc..f72c2d4b 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/NeUploadExcelController.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/NeUploadExcelController.java @@ -1,6 +1,7 @@ package com.gccloud.dataroom.core.module.manage.controller; import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.dto.DatasetDTO; import com.gccloud.dataset.entity.DatasetEntity; +import com.gccloud.dataset.entity.config.BaseDataSetConfig; import com.gccloud.dataset.service.IBaseDataSetService; import com.gccloud.dataset.service.IDatasetLabelService; import io.swagger.annotations.Api; @@ -26,6 +28,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import java.io.IOException; import java.util.List; +import java.util.UUID; /** * @author 17803 @@ -46,33 +49,50 @@ public class NeUploadExcelController { @Autowired private IBaseDataSetService dataSetService; - @ApiOperation("新增Excel") - @PostMapping("/newAdd") + + + @ApiOperation("上传Excel") + @PostMapping("/uploadExcel") @ApiPermission(permissions = {DatasetConstant.Permission.Dataset.ADD}) @Transactional(rollbackFor = Exception.class) - public R newAdd(String datasetDTO, @RequestParam("file") @RequestPart MultipartFile file) throws IOException { - DatasetDTO datasetByJson = JSON.parseObject(datasetDTO, DatasetDTO.class); - // IBaseDataSetService dataSetService = dataSetServiceFactory.build(datasetByJson.getDatasetType()); - String id = dataSetService.add(datasetByJson); + public R uploadExcel(@RequestParam("file") @RequestPart MultipartFile file,String userId) throws IOException { + //存储excel数据 根据id关联 + String s = UUID.randomUUID().toString().replaceAll("-", ""); + + DemoDataListener demoDataListener = new DemoDataListener(neUploadExcelDao, userId, s); // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭 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); + } + + @ApiOperation("分页查询excel") + @GetMapping("/getExcelByPage") + @ApiPermission(permissions = {DatasetConstant.Permission.Dataset.ADD}) + public R getExcelByPage(String userId,Integer index,Integer size,String value) throws IOException { + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StuUploadExcelUser::getModule,value); + IPage page = new Page(index,size); + neUploadExcelDao.selectPage(page, wrapper); + + + R objectR = new R<>(200,String.valueOf(page.getTotal()),page.getRecords()); - // 保存与标签的关联关系 - List labelIds = datasetByJson.getLabelIds(); - if (labelIds == null || labelIds.isEmpty()) { - return R.success(id); - } - datasetLabelService.addByDatasetId(id, labelIds); - return R.success(id); + return R.success(objectR); } + @ApiOperation("新详情") @GetMapping("/NewInfo") @ApiPermission(permissions = {DatasetConstant.Permission.Dataset.VIEW}) @@ -83,8 +103,20 @@ public class NeUploadExcelController { DatasetEntityDTO datasetEntityDTO = new DatasetEntityDTO(); BeanUtils.copyProperties(datasetEntity,datasetEntityDTO); + + BaseDataSetConfig config = datasetEntity.getConfig(); + + String value = config.getParamsList().get(0).getValue(); + + + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(StuUploadExcelUser::getModule,value); + + + + IPage page = new Page(index,size); - neUploadExcelDao.selectPage(page, null); + neUploadExcelDao.selectPage(page, wrapper); datasetEntityDTO.setUploadExcelList(page.getRecords()); diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/utils/DemoDataListener.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/utils/DemoDataListener.java index e44d175e..5061e65f 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/utils/DemoDataListener.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/utils/DemoDataListener.java @@ -7,6 +7,7 @@ import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.util.ConverterUtils; import com.alibaba.excel.util.ListUtils; +import net.sourceforge.pinyin4j.PinyinHelper; import com.gccloud.common.utils.JSON; import com.gccloud.dataroom.core.module.manage.dao.NeUploadExcelDao; @@ -27,7 +28,7 @@ public class DemoDataListener implements ReadListener { * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收 * */ - private static final int BATCH_COUNT = 150; + private static final int BATCH_COUNT = 50; private static final int MAX_COUNT = 1000; // 最大处理条数 /** * 缓存的数据 @@ -43,6 +44,9 @@ public class DemoDataListener implements ReadListener { List list = new ArrayList(); + // 存储转换后的拼音列表 + List pinyinList = new ArrayList<>(); + /** * 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来 * @@ -76,6 +80,32 @@ public class DemoDataListener implements ReadListener { } + + // 遍历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 // 方案1: 不要implements ReadListener 而是 extends AnalysisEventListener // 方案2: 调用 ConverterUtils.convertToStringMap(headMap, context) 自动会转换 @@ -133,7 +163,7 @@ public class DemoDataListener implements ReadListener { cachedDataList.forEach(item->{ item.setUserId(userId); item.setModule(id); - item.setStepOneA(JSON.toJSONString(list)); + item.setStepOneA(JSON.toJSONString(pinyinList)); }); @@ -141,7 +171,7 @@ public class DemoDataListener implements ReadListener { demoDAO.insert(uploadExcelUser); } - //demoDAO.insertBatch(cachedDataList); + // demoDAO.insertBatch(cachedDataList); diff --git a/DataRoom/dataroom-core/src/main/resources/pinyin4j-2.5.0.jar b/DataRoom/dataroom-core/src/main/resources/pinyin4j-2.5.0.jar new file mode 100644 index 00000000..2e1d8196 Binary files /dev/null and b/DataRoom/dataroom-core/src/main/resources/pinyin4j-2.5.0.jar differ diff --git a/DataRoom/dataroom-server/src/main/resources/application.yml b/DataRoom/dataroom-server/src/main/resources/application.yml index 41fc8cbe..183fe1ea 100644 --- a/DataRoom/dataroom-server/src/main/resources/application.yml +++ b/DataRoom/dataroom-server/src/main/resources/application.yml @@ -42,7 +42,7 @@ spring: datasource: type: com.alibaba.druid.pool.DruidDataSource 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 password: Sztzjy506