diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/controller/EntBaseExpelledInfoController.java b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/controller/EntBaseExpelledInfoController.java index 9328d71..10069ef 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/controller/EntBaseExpelledInfoController.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/controller/EntBaseExpelledInfoController.java @@ -10,6 +10,7 @@ import com.github.xiaoymin.knife4j.annotations.ApiSort; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -33,14 +34,14 @@ public class EntBaseExpelledInfoController { @Resource private IEntBaseExpelledInfoService entBaseExpelledInfoService; - @ApiOperation(value = "1.分页查询市场主体拟除名名单信息", position = 1) + @ApiOperation(value = "1.分页查询市场主体拟除名名单信息") @PostMapping("/list") public RestResult> list(@RequestBody BaseQuery query) { IPage data = entBaseExpelledInfoService.listEntBaseExpelledInfo(query); return RestResult.ok(data); } - @ApiOperation(value = "2.新增、更新、删除市场主体拟除名名单信息", position = 2) + @ApiOperation(value = "2.新增、更新、删除市场主体拟除名名单信息") @PostMapping("/save") public RestResult save(@RequestBody EntBaseExpelledInfo query){ entBaseExpelledInfoService.saveOrUpdateEntBaseExpelledInfo(query); @@ -60,6 +61,11 @@ public class EntBaseExpelledInfoController { if (annex == null || annex.isEmpty()) { return RestResult.error(ResultCode.PARAM_IS_BLANK); } + String fileName = annex.getOriginalFilename(); + if (StringUtils.isBlank(fileName) + || (!fileName.toLowerCase().endsWith(".xls") && !fileName.toLowerCase().endsWith(".xlsx"))) { + return RestResult.error(ResultCode.BUSINESS_LOGIC_ERROR,"文件类型错误"); + } entBaseExpelledInfoService.batchImportExpelledInfo(annex); return RestResult.ok(); } diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/IEntBaseExpelledInfoService.java b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/IEntBaseExpelledInfoService.java index aa3f683..06959b0 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/IEntBaseExpelledInfoService.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/IEntBaseExpelledInfoService.java @@ -8,7 +8,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.List; /** * @Description: 市场主体拟除名名单信息表接口类 @@ -42,9 +41,4 @@ public interface IEntBaseExpelledInfoService extends IService datas); } diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/impl/EntBaseExpelledInfoServiceImpl.java b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/impl/EntBaseExpelledInfoServiceImpl.java index 1fcd0d0..a9f07c1 100644 --- a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/impl/EntBaseExpelledInfoServiceImpl.java +++ b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/service/impl/EntBaseExpelledInfoServiceImpl.java @@ -1,6 +1,5 @@ package com.chinaweal.aiccs.aiccs.expelled.service.impl; -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.toolkit.Wrappers; @@ -9,9 +8,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chinaweal.aiccs.aiccs.expelled.entity.EntBaseExpelledInfo; import com.chinaweal.aiccs.aiccs.expelled.mapper.EntBaseExpelledInfoMapper; import com.chinaweal.aiccs.aiccs.expelled.service.IEntBaseExpelledInfoService; -import com.chinaweal.aiccs.listener.EasyExcelReadListener; +import com.chinaweal.aiccs.aiccs.expelled.vo.EntBaseExpelledInfoExcelVo; +import com.chinaweal.aiccs.aiccs.punishment.util.ExcelIePortUtils; +import com.chinaweal.aiccs.aiccs.punishment.util.ExcelListener; import com.chinaweal.aiccs.utils.BeanUtil; import com.chinaweal.youfool.framework.springboot.base.query.BaseQuery; +import com.chinaweal.youfool.framework.springboot.exception.custom.BusinessException; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ClassPathResource; @@ -101,20 +104,18 @@ public class EntBaseExpelledInfoServiceImpl extends ServiceImpl(datas -> { - // 数据处理逻辑 - batchImportExpelledInfo(datas); - }); - EasyExcel.read(new ByteArrayInputStream(annex.getBytes()), EntBaseExpelledInfo.class, readListener).sheet().doRead(); - } - - @Override - public void batchImportExpelledInfo(List datas) { - if (datas == null) { - return; + ExcelListener excelListener = ExcelIePortUtils.getExcelListener(annex, new EntBaseExpelledInfoExcelVo(), 1, 1); + Object objects = excelListener.getDatas(); + if (objects == null) { + throw new BusinessException("读取不到数据,请检查上传的附件是否有录入数据"); } - // 再插入 - for (EntBaseExpelledInfo expelledInfo : datas) { + List datas = (List) objects; + if (CollectionUtils.isEmpty(datas)) { + throw new BusinessException("读取不到数据,请检查上传的附件是否有录入数据"); + } + for (EntBaseExpelledInfoExcelVo excelVo : datas) { + EntBaseExpelledInfo expelledInfo = new EntBaseExpelledInfo(); + BeanUtil.copyBean(excelVo, expelledInfo); saveOrUpdateEntBaseExpelledInfo(expelledInfo); } } diff --git a/src/main/java/com/chinaweal/aiccs/aiccs/expelled/vo/EntBaseExpelledInfoExcelVo.java b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/vo/EntBaseExpelledInfoExcelVo.java new file mode 100644 index 0000000..9b736a6 --- /dev/null +++ b/src/main/java/com/chinaweal/aiccs/aiccs/expelled/vo/EntBaseExpelledInfoExcelVo.java @@ -0,0 +1,27 @@ +package com.chinaweal.aiccs.aiccs.expelled.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.metadata.BaseRowModel; +import lombok.Data; + +/** + * @Description: + * @Author: TiAmo-cc + * @Email: 1049976610@qq.com + * @Date: 2026/1/4 16:25 + */ +@Data +public class EntBaseExpelledInfoExcelVo extends BaseRowModel { + + @ExcelProperty(value = "市场主体名称", index = 0) + private String entName; + + @ExcelProperty(value = "统一社会信用代码", index = 1) + private String uscc; + + @ExcelProperty(value = "法定代表人(负责人、经营者)", index = 2) + private String lerepName; + + @ExcelProperty(value = "住所(经营场所)", index = 3) + private String address; +} diff --git a/src/main/java/com/chinaweal/aiccs/listener/EasyExcelReadListener.java b/src/main/java/com/chinaweal/aiccs/listener/EasyExcelReadListener.java deleted file mode 100644 index 170dada..0000000 --- a/src/main/java/com/chinaweal/aiccs/listener/EasyExcelReadListener.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.chinaweal.aiccs.listener; - -import com.alibaba.excel.context.AnalysisContext; -import com.alibaba.excel.metadata.CellData; -import com.alibaba.excel.metadata.CellExtra; -import com.alibaba.excel.read.listener.ReadListener; - -import java.util.List; -import java.util.Map; -import java.util.function.Consumer; - -/** - * @Description alibaba读取excel数据监听器 - * @Author Radish Angelo - * @Date 2022/11/18 14:56 - * @Email 1049976610@qq.com - */ -public class EasyExcelReadListener implements ReadListener { - - /** - * 每隔100条存储数据库,然后清理list ,方便内存回收 - */ - private static final int BATCH_COUNT = 100; - - /** - * 缓存的数据 - */ - private List cachedData = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT); - - /** - * 数据处理逻辑接口 - */ - private Consumer> consumer; - - /** - * 构造方法,需要将具体的数据处理逻辑通过consumer传进来 - */ - public EasyExcelReadListener(Consumer> consumer) { - this.consumer = consumer; - } - - @Override - public void onException(Exception e, AnalysisContext analysisContext) throws Exception { - - } - - @Override - public void invokeHead(Map map, AnalysisContext analysisContext) { - - } - - /** - * 这里每一条数据解析都会来调用 - */ - @Override - public void invoke(T t, AnalysisContext analysisContext) { - cachedData.add(t); - // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM - if (cachedData.size() >= BATCH_COUNT) { - consumer.accept(cachedData); - // 存储完成清理 list - cachedData = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT); - } - } - - @Override - public void extra(CellExtra cellExtra, AnalysisContext analysisContext) { - - } - - /** - * 所有数据解析完成了 都会来调用 - */ - @Override - public void doAfterAllAnalysed(AnalysisContext analysisContext) { - // 这里也要保存数据,确保最后遗留的数据也存储到数据库 - consumer.accept(cachedData); - } - - @Override - public boolean hasNext(AnalysisContext analysisContext) { - return false; - } -} diff --git a/src/main/java/com/chinaweal/aiccs/listener/ListUtils.java b/src/main/java/com/chinaweal/aiccs/listener/ListUtils.java deleted file mode 100644 index 0575a0d..0000000 --- a/src/main/java/com/chinaweal/aiccs/listener/ListUtils.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.chinaweal.aiccs.listener; - -import java.util.ArrayList; -import java.util.List; - -/** - * @Description: - * @Author: TiAmo-cc - * @Email: 1049976610@qq.com - * @Date: 2026/1/3 20:56 - */ -public class ListUtils { - - public static List newArrayList() { - return new ArrayList<>(); - } - - public static List newArrayListWithExpectedSize(int size) { - return new ArrayList<>(size); - } -}