master
周文涛 2 years ago
parent b1bed8e255
commit 0a067dee45

@ -270,7 +270,7 @@ public class OcrMetadataConfigController extends JeecgController<OcrMetadataConf
AssertUtils.hasSize(list,"未获取到数据!");
//判断重复字段名
Map<String, Long> countMap = list.stream().map(o->o.getConfigName()).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
AssertUtils.notTrue(countMap.keySet().size()>0,"不可有重复的配置名称!");
AssertUtils.notTrue(countMap.values().stream().filter(f->f>1).count()>0,"不可有重复的配置名称!");
List<OcrMetadataConfigSaveModel> saveModelList=new ArrayList<>();
OcrMetadataConfigSaveModel ocrMetadataConfigSaveModel=new OcrMetadataConfigSaveModel();
List<OcrMetadataConfigDetail> ocrMetadataConfigDetailList=new ArrayList();

@ -1,6 +1,12 @@
package org.jeecg.modules.ocr.controller;
import java.io.IOException;
import java.util.ArrayList;
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.servlet.http.HttpServletRequest;
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.common.system.base.controller.JeecgController;
import org.jeecg.modules.ocr.utils.DownloadTemplateUtil;
import org.jeecg.modules.ocr.vo.OcrMetadataConfigVo;
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.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
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")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
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("文件导入失败!");
}
}

@ -72,5 +72,6 @@ public class OcrMetadataConfig implements Serializable {
/**任务类型*/
@ApiModelProperty(value = "任务类型")
@Excel(name = "任务类型", width = 15)
private String taskType;
}

@ -67,5 +67,6 @@ public class OcrRuleCheck implements Serializable {
private String resultName;*/
@ApiModelProperty(value = "元数据配置id")
@Excel(name = "元数据配置id", width = 15)
private String metadataConfigId;
}

@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.io.Serializable;
@ -17,20 +19,24 @@ import java.util.List;
* @Date 2023/7/17 18:45
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class OcrRuleCheckSaveModel implements Serializable {
/**主键*/
@ApiModelProperty(value = "主键")
private String id;
/**配置名称*/
@ApiModelProperty(value = "配置名称")
@Excel(name = "配置名称", width = 15)
private String configName;
/**配置规则*/
@ApiModelProperty(value = "配置规则")
@TableField(exist = false)
@Excel(name = "配置规则", width = 15)
private String configRule;
/**选择的元数据明细id*/
@ApiModelProperty(value = "选择的元数据id")
@Excel(name = "元数据配置id", width = 15)
public String metadataConfigId;
/**选择的元数据明细id*/
//@ApiModelProperty(value = "选择的元数据明细id")

@ -7,6 +7,8 @@ import org.jeecg.modules.ocr.entity.OcrRuleCheck;
import org.jeecg.modules.ocr.model.OcrRuleCheckSaveModel;
import org.jeecg.modules.ocr.vo.OcrRuleCheckVo;
import java.util.List;
/**
* @Description:
* @Author: jeecg-boot
@ -17,7 +19,7 @@ public interface IOcrRuleCheckService extends IService<OcrRuleCheck> {
boolean existsByConfigName(String configName, String id);
OcrRuleCheck saveModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel);
void saveModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel);
OcrRuleCheck updateModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel);
@ -26,4 +28,6 @@ public interface IOcrRuleCheckService extends IService<OcrRuleCheck> {
IPage<OcrRuleCheckVo> pageVo(Page<OcrRuleCheck> page, OcrRuleCheck ocrRuleCheck);
OcrRuleCheckVo findById(String ruleCheck);
void saveModelBatch(List<OcrRuleCheckSaveModel> saveModelList);
}

@ -54,6 +54,8 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
for (OcrMetadataConfigSaveModel ocrMetadataConfigSaveModel : saveModelList) {
OcrMetadataConfig ocrMetadataConfig=new OcrMetadataConfig();
ocrMetadataConfig.setConfigName(ocrMetadataConfigSaveModel.getConfigName());
Boolean existsFlag=existsByConfigName(ocrMetadataConfigSaveModel.getConfigName(),ocrMetadataConfigSaveModel.getId());
AssertUtils.notTrue(existsFlag, String.format("[配置名称]-%s 已存在", ocrMetadataConfigSaveModel.getConfigName()));
this.save(ocrMetadataConfig);
List<OcrMetadataConfigDetail> ocrMetadataConfigDetailList = ocrMetadataConfigSaveModel.getOcrMetadataConfigDetailList();
if(ocrMetadataConfigDetailList!=null&&ocrMetadataConfigDetailList.size()>0){

@ -21,10 +21,7 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* @Description:
@ -49,28 +46,19 @@ public class OcrRuleCheckServiceImpl extends ServiceImpl<OcrRuleCheckMapper, Ocr
}
@Override
public OcrRuleCheck saveModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel) {
public void saveModel(OcrRuleCheckSaveModel ocrRuleCheckSaveModel) {
saveModelBatch(Arrays.asList(ocrRuleCheckSaveModel));
}
@Override
public void saveModelBatch(List<OcrRuleCheckSaveModel> ocrRuleCheckSaveModels) {
for (OcrRuleCheckSaveModel ocrRuleCheckSaveModel : ocrRuleCheckSaveModels) {
OcrRuleCheck ocrRuleCheck=new OcrRuleCheck();
ocrRuleCheck.setConfigRule(ocrRuleCheckSaveModel.getConfigRule());
ocrRuleCheck.setMetadataConfigId(ocrRuleCheckSaveModel.getMetadataConfigId());
ocrRuleCheck.setConfigName(ocrRuleCheckSaveModel.getConfigName());
this.save(ocrRuleCheck);
//明细
/*
List<OcrRuleCheckDetail> ocrRuleCheckDetailList=new ArrayList<>();
if (ocrRuleCheckSaveModel.getMetadataConfigDetailIdList()!=null) {
for (String s : ocrRuleCheckSaveModel.getMetadataConfigDetailIdList()) {
OcrRuleCheckDetail ocrRuleCheckDetail=new OcrRuleCheckDetail();
ocrRuleCheckDetail.setRuleCheckId(ocrRuleCheck.getId());
ocrRuleCheckDetail.setMetadataConfigDetailId(s);
ocrRuleCheckDetailList.add(ocrRuleCheckDetail);
}
if (ocrRuleCheckDetailList.size()>0) {
ocrRuleCheckDetailService.saveOrUpdateBatch(ocrRuleCheckDetailList);
}
}*/
return ocrRuleCheck;
}
@Override

Loading…
Cancel
Save