diff --git a/radar-admin/src/main/java/com/pgmmers/radar/controller/DataListRecordApiController.java b/radar-admin/src/main/java/com/pgmmers/radar/controller/DataListRecordApiController.java index 8813881..37e866c 100644 --- a/radar-admin/src/main/java/com/pgmmers/radar/controller/DataListRecordApiController.java +++ b/radar-admin/src/main/java/com/pgmmers/radar/controller/DataListRecordApiController.java @@ -4,16 +4,28 @@ package com.pgmmers.radar.controller; import com.pgmmers.radar.dal.bean.DataListRecordQuery; import com.pgmmers.radar.service.common.CommonResult; import com.pgmmers.radar.service.model.DataListsService; +import com.pgmmers.radar.util.ExcelImportUtil; +import com.pgmmers.radar.util.ExportExcelInfo; import com.pgmmers.radar.vo.model.DataListRecordVO; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiParam; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; @RestController @RequestMapping("/services/v1/datalistrecord") @Api(value = "DataListRecordApi", description = "列表内容维护接口相关操作", tags = {"列表内容API"}) public class DataListRecordApiController { + public static Logger logger = LoggerFactory.getLogger(DataListRecordApiController.class); + @Autowired private DataListsService dataListsService; @@ -45,4 +57,46 @@ public class DataListRecordApiController { return dataListsService.deleteRecord(id); } + /** + * + * 批量导入黑/白名单管理 + * @param file 文件 + * @param dataListId 数据列表ID + * @return + * @author xushuai + */ + @PostMapping(value = "/batchImportDataRecord") + public CommonResult batchImportDataRecord(@ApiParam(value = "file detail") @RequestPart("file") MultipartFile file, @RequestParam(value = "dataListId", required = true)Long dataListId) { + CommonResult result = new CommonResult(); + result.setSuccess(false); + String fileName = file.getOriginalFilename(); + if (fileName != null && !(fileName.contains(".xls") || fileName.contains(".xlsx"))) { + result.setMsg("传入的件格式有误!"); + return result; + } + ExportExcelInfo info = getImportMeta(); + List> listError = new ArrayList<>(); + List list = null; + try { + list = ExcelImportUtil.excelToList(file.getInputStream(), info, listError, DataListRecordVO.class); + } catch (Exception e) { + logger.error("导入Excel失败:" + e.getMessage()); + } + if (list == null || list.size() == 0) { + result.setMsg("无导入数据!"); + return result; + } + if (list.size() > 1000) { + result.setMsg("最大导入不能超过" + 1000 + "条"); + return result; + } + return dataListsService.batchImportDataRecord(list, dataListId); + } + + private ExportExcelInfo getImportMeta() { + ExportExcelInfo info = new ExportExcelInfo(null); + info.addExcelColumn("dataRecord", "dataRecord"); + return info; + } + } diff --git a/radar-service-impl/src/main/java/com/pgmmers/radar/service/impl/model/DataListsServiceImpl.java b/radar-service-impl/src/main/java/com/pgmmers/radar/service/impl/model/DataListsServiceImpl.java index 24348d1..b9d36d3 100644 --- a/radar-service-impl/src/main/java/com/pgmmers/radar/service/impl/model/DataListsServiceImpl.java +++ b/radar-service-impl/src/main/java/com/pgmmers/radar/service/impl/model/DataListsServiceImpl.java @@ -1,7 +1,6 @@ package com.pgmmers.radar.service.impl.model; import com.alibaba.fastjson.JSON; - import com.pgmmers.radar.dal.bean.DataListQuery; import com.pgmmers.radar.dal.bean.DataListRecordQuery; import com.pgmmers.radar.dal.model.DataListDal; @@ -302,4 +301,22 @@ public class DataListsServiceImpl implements DataListsService, SubscribeHandle { result.setMsg("导入成功"); return result; } + + @Override + public CommonResult batchImportDataRecord(List list, Long dataListId) { + CommonResult result = new CommonResult(); + for (DataListRecordVO dataListRecord : list) { + int count = dataListDal.saveRecord(dataListRecord); + if (count > 0) { + // 通知更新 + DataListsVO dataListVO = dataListDal.get(dataListRecord.getDataListId()); + dataListRecord.setModelId(dataListVO.getModelId()); + dataListRecord.setOpt("update"); + cacheService.publishDataListRecord(dataListRecord); + } + } + result.setSuccess(true); + result.setMsg("导入成功"); + return result; + } } diff --git a/radar-service/src/main/java/com/pgmmers/radar/service/model/DataListsService.java b/radar-service/src/main/java/com/pgmmers/radar/service/model/DataListsService.java index 3e3fc29..2368042 100644 --- a/radar-service/src/main/java/com/pgmmers/radar/service/model/DataListsService.java +++ b/radar-service/src/main/java/com/pgmmers/radar/service/model/DataListsService.java @@ -49,4 +49,6 @@ public interface DataListsService { Map getDataListMap(Long modelId); CommonResult batchImportData(List list, Long modelId); + + CommonResult batchImportDataRecord(List list, Long dataListId); }