|
|
@ -1,6 +1,12 @@
|
|
|
|
package org.jeecg.modules.ocr.controller;
|
|
|
|
package org.jeecg.modules.ocr.controller;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
import java.util.function.Function;
|
|
|
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
@ -22,9 +28,14 @@ import org.jeecg.modules.ocr.model.OcrRuleCheckSaveModel;
|
|
|
|
import org.jeecg.modules.ocr.service.IOcrRuleCheckService;
|
|
|
|
import org.jeecg.modules.ocr.service.IOcrRuleCheckService;
|
|
|
|
import org.jeecg.common.system.base.controller.JeecgController;
|
|
|
|
import org.jeecg.common.system.base.controller.JeecgController;
|
|
|
|
import org.jeecg.modules.ocr.utils.DownloadTemplateUtil;
|
|
|
|
import org.jeecg.modules.ocr.utils.DownloadTemplateUtil;
|
|
|
|
|
|
|
|
import org.jeecg.modules.ocr.vo.OcrMetadataConfigVo;
|
|
|
|
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
|
|
|
|
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
|
|
|
|
|
|
|
|
import org.jeecgframework.poi.excel.ExcelImportUtil;
|
|
|
|
|
|
|
|
import org.jeecgframework.poi.excel.entity.ImportParams;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
import org.springframework.web.servlet.ModelAndView;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.Api;
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
@ -200,7 +211,60 @@ public class OcrRuleCheckController extends JeecgController<OcrRuleCheck, IOcrRu
|
|
|
|
// @RequiresPermissions("org.jeecg.modules.ocr:ocr_rule_check:importExcel")
|
|
|
|
// @RequiresPermissions("org.jeecg.modules.ocr:ocr_rule_check:importExcel")
|
|
|
|
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
|
|
|
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
|
|
|
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
|
|
|
return super.importExcel(request, response, OcrRuleCheck.class);
|
|
|
|
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
|
|
|
|
|
|
|
|
Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
|
|
|
|
|
|
|
|
for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
|
|
|
|
|
|
|
|
// 获取上传文件对象
|
|
|
|
|
|
|
|
MultipartFile file = entity.getValue();
|
|
|
|
|
|
|
|
ImportParams params = new ImportParams();
|
|
|
|
|
|
|
|
params.setTitleRows(2);
|
|
|
|
|
|
|
|
params.setHeadRows(1);
|
|
|
|
|
|
|
|
params.setNeedSave(true);
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
List<OcrRuleCheckSaveModel> list = ExcelImportUtil.importExcel(file.getInputStream(), OcrRuleCheckSaveModel.class, params);
|
|
|
|
|
|
|
|
AssertUtils.hasSize(list,"未获取到数据!");
|
|
|
|
|
|
|
|
//判断重复字段名
|
|
|
|
|
|
|
|
Map<String, Long> countMap = list.stream().map(o->o.getConfigName()).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
|
|
|
|
|
|
|
|
AssertUtils.notTrue(countMap.values().stream().filter(f->f>1).count()>0,"不可有重复的配置名称!");
|
|
|
|
|
|
|
|
List<OcrRuleCheckSaveModel> saveModelList=new ArrayList<>();
|
|
|
|
|
|
|
|
OcrRuleCheckSaveModel ocrRuleCheckSaveModel=new OcrRuleCheckSaveModel();
|
|
|
|
|
|
|
|
for (OcrRuleCheckSaveModel configVo : list) {
|
|
|
|
|
|
|
|
ocrRuleCheckSaveModel.setConfigName(configVo.getConfigName());
|
|
|
|
|
|
|
|
boolean existsFlag=ocrRuleCheckService.existsByConfigName(configVo.getConfigName(),null);//true 已存在,false不存在
|
|
|
|
|
|
|
|
AssertUtils.notTrue(existsFlag,String.format("[配置名称]-%s 已存在",configVo.getConfigName()));
|
|
|
|
|
|
|
|
String configRule = configVo.getConfigRule();
|
|
|
|
|
|
|
|
String metadataConfigId = configVo.getMetadataConfigId();
|
|
|
|
|
|
|
|
ocrRuleCheckSaveModel.setConfigRule(configRule);
|
|
|
|
|
|
|
|
ocrRuleCheckSaveModel.setMetadataConfigId(metadataConfigId);
|
|
|
|
|
|
|
|
saveModelList.add(ocrRuleCheckSaveModel);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//update-begin-author:taoyan date:20190528 for:批量插入数据
|
|
|
|
|
|
|
|
long start = System.currentTimeMillis();
|
|
|
|
|
|
|
|
ocrRuleCheckService.saveModelBatch(saveModelList);
|
|
|
|
|
|
|
|
//400条 saveBatch消耗时间1592毫秒 循环插入消耗时间1947毫秒
|
|
|
|
|
|
|
|
//1200条 saveBatch消耗时间3687毫秒 循环插入消耗时间5212毫秒
|
|
|
|
|
|
|
|
log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
|
|
|
|
|
|
|
|
//update-end-author:taoyan date:20190528 for:批量插入数据
|
|
|
|
|
|
|
|
return Result.ok("文件导入成功!数据行数:" + list.size());
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
//update-begin-author:taoyan date:20211124 for: 导入数据重复增加提示
|
|
|
|
|
|
|
|
String msg = e.getMessage();
|
|
|
|
|
|
|
|
log.error(msg, e);
|
|
|
|
|
|
|
|
if(msg!=null && msg.indexOf("Duplicate entry")>=0){
|
|
|
|
|
|
|
|
return Result.error("文件导入失败:有重复数据!");
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
return Result.error("文件导入失败:" + e.getMessage());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
//update-end-author:taoyan date:20211124 for: 导入数据重复增加提示
|
|
|
|
|
|
|
|
} finally {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
file.getInputStream().close();
|
|
|
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return Result.error("文件导入失败!");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|