Merge pull request #20 from xushuai95/develop

新增批量导入黑/白名单数据记录接口
This commit is contained in:
feihu.wang 2019-11-08 09:39:15 +08:00 committed by GitHub
commit a039e5842d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 74 additions and 1 deletions

View File

@ -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<DataListRecordVO> info = getImportMeta();
List<Map<String, Object>> listError = new ArrayList<>();
List<DataListRecordVO> 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<DataListRecordVO> getImportMeta() {
ExportExcelInfo<DataListRecordVO> info = new ExportExcelInfo<DataListRecordVO>(null);
info.addExcelColumn("dataRecord", "dataRecord");
return info;
}
}

View File

@ -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<DataListRecordVO> 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;
}
}

View File

@ -49,4 +49,6 @@ public interface DataListsService {
Map<String, Object> getDataListMap(Long modelId);
CommonResult batchImportData(List<DataListsVO> list, Long modelId);
CommonResult batchImportDataRecord(List<DataListRecordVO> list, Long dataListId);
}