|
|
|
|
@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
|
import org.jeecg.common.constant.OcrConstant;
|
|
|
|
|
import org.jeecg.common.util.AssertUtils;
|
|
|
|
|
import org.jeecg.modules.ocr.dto.OcrMetadataConfigDTO;
|
|
|
|
|
import org.jeecg.modules.ocr.entity.OcrMetadataConfig;
|
|
|
|
|
@ -15,8 +17,6 @@ import org.jeecg.modules.ocr.service.IOcrMetadataConfigDetailService;
|
|
|
|
|
import org.jeecg.modules.ocr.service.IOcrMetadataConfigService;
|
|
|
|
|
import org.jeecg.modules.ocr.service.IOcrTaskTypeService;
|
|
|
|
|
import org.jeecg.modules.ocr.vo.SaveOcrMetadataConfigVO;
|
|
|
|
|
import org.jeecg.modules.system.service.ISysDictItemService;
|
|
|
|
|
import org.jeecg.modules.system.service.ISysDictService;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
@ -37,25 +37,19 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
|
|
|
|
|
@Resource
|
|
|
|
|
IOcrMetadataConfigDetailService ocrMetadataConfigDetailService;
|
|
|
|
|
@Resource
|
|
|
|
|
OcrMetadataConfigMapper ocrMetadataConfigMapper;
|
|
|
|
|
@Resource
|
|
|
|
|
IOcrTaskTypeService ocrTaskTypeService;
|
|
|
|
|
@Resource
|
|
|
|
|
ISysDictItemService sysDictItemService;
|
|
|
|
|
@Resource
|
|
|
|
|
ISysDictService sysDictService;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean existsByConfigName(String configName, String id) {
|
|
|
|
|
LambdaQueryWrapper<OcrMetadataConfig> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
queryWrapper.eq(OcrMetadataConfig::getConfigName,configName);
|
|
|
|
|
queryWrapper.ne(StringUtils.isNotBlank(id),OcrMetadataConfig::getId,id);
|
|
|
|
|
return this.baseMapper.selectCount(queryWrapper)>0?true:false;
|
|
|
|
|
return this.baseMapper.selectCount(queryWrapper) > 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void saveModel(SaveOcrMetadataConfigVO saveOcrMetadataConfigVO) {
|
|
|
|
|
saveModelBatch(Arrays.asList(saveOcrMetadataConfigVO));
|
|
|
|
|
/*return ocrMetadataConfig;*/
|
|
|
|
|
saveModelBatch(Collections.singletonList(saveOcrMetadataConfigVO));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@ -64,9 +58,8 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
|
|
|
|
|
for (SaveOcrMetadataConfigVO saveOcrMetadataConfigVO : saveModelList) {
|
|
|
|
|
OcrMetadataConfig ocrMetadataConfig=new OcrMetadataConfig();
|
|
|
|
|
ocrMetadataConfig.setConfigName(saveOcrMetadataConfigVO.getConfigName());
|
|
|
|
|
Boolean existsFlag=existsByConfigName(saveOcrMetadataConfigVO.getConfigName(), saveOcrMetadataConfigVO.getId());
|
|
|
|
|
boolean existsFlag=existsByConfigName(saveOcrMetadataConfigVO.getConfigName(), saveOcrMetadataConfigVO.getId());
|
|
|
|
|
AssertUtils.notTrue(existsFlag, String.format("[配置名称]-%s 已存在", saveOcrMetadataConfigVO.getConfigName()));
|
|
|
|
|
|
|
|
|
|
//判断 元数据 所选的 任务类型 是否存在
|
|
|
|
|
if (StringUtils.isBlank(saveOcrMetadataConfigVO.getTaskType())&& StringUtils.isNotBlank(saveOcrMetadataConfigVO.getTaskTypeName())) {
|
|
|
|
|
OcrTaskType ocrTaskType = ocrTaskTypeService.saveTaskType(saveOcrMetadataConfigVO.getTaskTypeName());
|
|
|
|
|
@ -74,18 +67,20 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
|
|
|
|
|
}else{
|
|
|
|
|
ocrMetadataConfig.setTaskType(saveOcrMetadataConfigVO.getTaskType());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.save(ocrMetadataConfig);
|
|
|
|
|
List<OcrMetadataConfigDetail> ocrMetadataConfigDetailList = saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList();
|
|
|
|
|
if(ocrMetadataConfigDetailList!=null&&ocrMetadataConfigDetailList.size()>0){
|
|
|
|
|
//判断重复字段名
|
|
|
|
|
Map<String, Long> countMap = ocrMetadataConfigDetailList.stream().map(o->o.getFieldName()).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
|
|
|
|
|
Map<String, Long> countMap = ocrMetadataConfigDetailList.stream().map(OcrMetadataConfigDetail::getFieldName).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
|
|
|
|
|
if (countMap.keySet().size()>0) {
|
|
|
|
|
//有重复的字段名
|
|
|
|
|
String fieldsName = countMap.keySet().stream().filter(key -> countMap.get(key) > 1).distinct().collect(Collectors.joining(","));
|
|
|
|
|
AssertUtils.isEmpty(fieldsName,String.format("字段名[%s]-重复了",fieldsName));
|
|
|
|
|
}
|
|
|
|
|
//判断字段是否支持
|
|
|
|
|
for (OcrMetadataConfigDetail detail : saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList()) {
|
|
|
|
|
AssertUtils.isTrue(OcrConstant.SUPPORTED_FIELDS.contains(detail.getFieldName()),String.format("字段名[%s]-目前不支持",detail.getFieldName()));
|
|
|
|
|
AssertUtils.isTrue(OcrConstant.SUPPORTED_FIELD_NAMES.contains(detail.getGetField()),String.format("获取字段[%s]-目前不支持",detail.getGetField()));
|
|
|
|
|
detail.setMetadataConfigId(ocrMetadataConfig.getId());
|
|
|
|
|
ocrMetadataConfigDetailService.saveOrUpdate(detail);
|
|
|
|
|
}
|
|
|
|
|
@ -96,8 +91,7 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
|
|
|
|
|
@Override
|
|
|
|
|
public Map<String, OcrMetadataConfigDTO> listToMap(List<String> idList) {
|
|
|
|
|
List<OcrMetadataConfigDTO> metadataConfigVoList =baseMapper.allList(idList!=null&&idList.size()>0?idList:null);
|
|
|
|
|
Map<String, OcrMetadataConfigDTO> metadataConfigVoMap = metadataConfigVoList.stream().collect(Collectors.toMap(OcrMetadataConfigDTO::getId, o -> o));
|
|
|
|
|
return metadataConfigVoMap;
|
|
|
|
|
return metadataConfigVoList.stream().collect(Collectors.toMap(OcrMetadataConfigDTO::getId, o -> o));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -108,16 +102,17 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
|
|
|
|
|
ocrMetadataConfig.setConfigName(saveOcrMetadataConfigVO.getConfigName());
|
|
|
|
|
this.updateById(ocrMetadataConfig);
|
|
|
|
|
List<OcrMetadataConfigDetail> ocrMetadataConfigDetailList = saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList();
|
|
|
|
|
|
|
|
|
|
if(ocrMetadataConfigDetailList!=null&&ocrMetadataConfigDetailList.size()>0){
|
|
|
|
|
//判断重复字段名
|
|
|
|
|
Map<String, Long> countMap = ocrMetadataConfigDetailList.stream().map(o->o.getFieldName()).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
|
|
|
|
|
Map<String, Long> countMap = ocrMetadataConfigDetailList.stream().map(OcrMetadataConfigDetail::getFieldName).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
|
|
|
|
|
if (countMap.keySet().size()>0) {
|
|
|
|
|
//有重复的字段名
|
|
|
|
|
String fieldsName = countMap.keySet().stream().filter(key -> countMap.get(key) > 1).distinct().collect(Collectors.joining(","));
|
|
|
|
|
AssertUtils.isEmpty(fieldsName,String.format("字段名[%s]-重复了",fieldsName));
|
|
|
|
|
}
|
|
|
|
|
for (OcrMetadataConfigDetail detail : saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList()) {
|
|
|
|
|
AssertUtils.isTrue(OcrConstant.SUPPORTED_FIELDS.contains(detail.getFieldName()),String.format("字段名[%s]-目前不支持",detail.getFieldName()));
|
|
|
|
|
AssertUtils.isTrue(OcrConstant.SUPPORTED_FIELD_NAMES.contains(detail.getGetField()),String.format("获取字段[%s]-目前不支持",detail.getGetField()));
|
|
|
|
|
detail.setMetadataConfigId(ocrMetadataConfig.getId());
|
|
|
|
|
ocrMetadataConfigDetailService.saveOrUpdate(detail);
|
|
|
|
|
}
|
|
|
|
|
@ -126,11 +121,11 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
|
|
|
|
|
//删除旧明细
|
|
|
|
|
List<String> notRemoveIdList = new ArrayList<>();
|
|
|
|
|
if (saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList().size()>0) {
|
|
|
|
|
notRemoveIdList = saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList().stream().map(o -> o.getId()).collect(Collectors.toList());
|
|
|
|
|
notRemoveIdList = saveOcrMetadataConfigVO.getOcrMetadataConfigDetailList().stream().map(OcrMetadataConfigDetail::getId).collect(Collectors.toList());
|
|
|
|
|
}
|
|
|
|
|
LambdaQueryWrapper<OcrMetadataConfigDetail> removeQueryWrapper = new LambdaQueryWrapper<OcrMetadataConfigDetail>();
|
|
|
|
|
LambdaQueryWrapper<OcrMetadataConfigDetail> removeQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
removeQueryWrapper.eq(OcrMetadataConfigDetail::getMetadataConfigId, saveOcrMetadataConfigVO.getId());
|
|
|
|
|
removeQueryWrapper.notIn(notRemoveIdList!=null&¬RemoveIdList.size()>0, OcrMetadataConfigDetail::getId,notRemoveIdList);
|
|
|
|
|
removeQueryWrapper.notIn(CollectionUtils.isNotEmpty(notRemoveIdList), OcrMetadataConfigDetail::getId,notRemoveIdList);
|
|
|
|
|
//TODO zwt先检测这些删除的,有没有被规则检查配置 绑定(删除元数据配置明细时,需不需要先检查该元数据配置明细有没有被规则检查配置绑定,如果被绑定是否需要提示 不可删除)
|
|
|
|
|
ocrMetadataConfigDetailService.remove(removeQueryWrapper);
|
|
|
|
|
return ocrMetadataConfig;
|
|
|
|
|
@ -142,30 +137,24 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
|
|
|
|
|
params.put("getField",ocrMetadataConfig.getGetField());
|
|
|
|
|
params.put("configName",ocrMetadataConfig.getConfigName());
|
|
|
|
|
params.put("resultName",ocrMetadataConfig.getResultName());
|
|
|
|
|
/*params.put("column","createTime");
|
|
|
|
|
params.put("order","desc");*/
|
|
|
|
|
IPage<OcrMetadataConfigDTO> pageList=baseMapper.pageVo(page,params);
|
|
|
|
|
List<OcrMetadataConfigDetail> metadataConfigDetails = ocrMetadataConfigDetailService.list();
|
|
|
|
|
List<OcrMetadataConfigDetail> arrayTestList=new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<String> taskTypeIdList = pageList.getRecords().stream().map(a -> a.getTaskType()).collect(Collectors.toList());
|
|
|
|
|
List<OcrMetadataConfigDetail> arrayTestList;
|
|
|
|
|
List<String> taskTypeIdList = pageList.getRecords().stream().map(OcrMetadataConfig::getTaskType).collect(Collectors.toList());
|
|
|
|
|
List<OcrTaskType> ocrTaskTypeList=new ArrayList<>();
|
|
|
|
|
if (taskTypeIdList.size()>0) {
|
|
|
|
|
ocrTaskTypeList = ocrTaskTypeService.listByIds(taskTypeIdList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String fieldName=null,getField=null;
|
|
|
|
|
String fieldName,getField;
|
|
|
|
|
for (OcrMetadataConfigDTO record : pageList.getRecords()) {
|
|
|
|
|
if (StringUtils.isNotBlank(record.getTaskType())) {
|
|
|
|
|
String taskTypeName = ocrTaskTypeList.stream().filter(o -> o.getId().equals(record.getTaskType())).map(o -> o.getTypeName()).collect(Collectors.joining(""));
|
|
|
|
|
String taskTypeName = ocrTaskTypeList.stream().filter(o -> o.getId().equals(record.getTaskType())).map(OcrTaskType::getTypeName).collect(Collectors.joining(""));
|
|
|
|
|
record.setTaskType_dictText(taskTypeName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (metadataConfigDetails!=null && metadataConfigDetails.size()>0) {
|
|
|
|
|
arrayTestList = metadataConfigDetails.stream().filter(m -> m.getMetadataConfigId().equals(record.getId())).collect(Collectors.toList());
|
|
|
|
|
fieldName = arrayTestList.stream().map(o -> o.getFieldName()).collect(Collectors.joining(","));
|
|
|
|
|
getField = arrayTestList.stream().map(o -> o.getGetField()).collect(Collectors.joining(","));
|
|
|
|
|
fieldName = arrayTestList.stream().map(OcrMetadataConfigDetail::getFieldName).collect(Collectors.joining(","));
|
|
|
|
|
getField = arrayTestList.stream().map(OcrMetadataConfigDetail::getGetField).collect(Collectors.joining(","));
|
|
|
|
|
record.setResultName(fieldName);
|
|
|
|
|
record.setGetField(getField);
|
|
|
|
|
record.setOcrMetadataConfigDetailList(arrayTestList);
|
|
|
|
|
@ -176,13 +165,13 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<OcrMetadataConfigDTO> allList(List<String> idList) {
|
|
|
|
|
List<OcrMetadataConfigDTO> allList=new ArrayList<>();
|
|
|
|
|
List<OcrMetadataConfigDTO> allList;
|
|
|
|
|
if (idList!=null && idList.size()>0) {
|
|
|
|
|
allList=baseMapper.allList(idList);
|
|
|
|
|
}else{
|
|
|
|
|
allList=baseMapper.allList(null);
|
|
|
|
|
}
|
|
|
|
|
List<String> taskTypeIdList = allList.stream().map(a -> a.getTaskType()).collect(Collectors.toList());
|
|
|
|
|
List<String> taskTypeIdList = allList.stream().map(OcrMetadataConfig::getTaskType).collect(Collectors.toList());
|
|
|
|
|
List<OcrTaskType> ocrTaskTypeList=new ArrayList<>();
|
|
|
|
|
if (taskTypeIdList.size()>0) {
|
|
|
|
|
ocrTaskTypeList = ocrTaskTypeService.listByIds(taskTypeIdList);
|
|
|
|
|
@ -190,20 +179,20 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<OcrMetadataConfigDetail> metadataConfigDetails = ocrMetadataConfigDetailService.list();
|
|
|
|
|
List<OcrMetadataConfigDetail> arrayTestList=new ArrayList<>();
|
|
|
|
|
String fieldName=null,getField=null;
|
|
|
|
|
List<OcrMetadataConfigDetail> arrayTestList;
|
|
|
|
|
String fieldName,getField;
|
|
|
|
|
for (OcrMetadataConfigDTO ocrMetadataConfig : allList) {
|
|
|
|
|
ocrMetadataConfig.setId(ocrMetadataConfig.getId());
|
|
|
|
|
ocrMetadataConfig.setConfigName(ocrMetadataConfig.getConfigName());
|
|
|
|
|
if (StringUtils.isNotBlank(ocrMetadataConfig.getTaskType())) {
|
|
|
|
|
String taskTypeName = ocrTaskTypeList.stream().filter(o -> o.getId().equals(ocrMetadataConfig.getTaskType())).map(o -> o.getTypeName()).collect(Collectors.joining(""));
|
|
|
|
|
String taskTypeName = ocrTaskTypeList.stream().filter(o -> o.getId().equals(ocrMetadataConfig.getTaskType())).map(OcrTaskType::getTypeName).collect(Collectors.joining(""));
|
|
|
|
|
ocrMetadataConfig.setTaskType_dictText(taskTypeName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (metadataConfigDetails!=null&&metadataConfigDetails.size()>0) {
|
|
|
|
|
arrayTestList = metadataConfigDetails.stream().filter(m -> m.getMetadataConfigId().equals(ocrMetadataConfig.getId())).collect(Collectors.toList());
|
|
|
|
|
fieldName = arrayTestList.stream().map(o -> o.getFieldName()).collect(Collectors.joining(","));
|
|
|
|
|
getField = arrayTestList.stream().map(o -> o.getGetField()).collect(Collectors.joining(","));
|
|
|
|
|
fieldName = arrayTestList.stream().map(OcrMetadataConfigDetail::getFieldName).collect(Collectors.joining(","));
|
|
|
|
|
getField = arrayTestList.stream().map(OcrMetadataConfigDetail::getGetField).collect(Collectors.joining(","));
|
|
|
|
|
ocrMetadataConfig.setResultName(fieldName);
|
|
|
|
|
ocrMetadataConfig.setGetField(getField);
|
|
|
|
|
ocrMetadataConfig.setOcrMetadataConfigDetailList(arrayTestList);
|
|
|
|
|
@ -218,8 +207,8 @@ public class OcrMetadataConfigServiceImpl extends ServiceImpl<OcrMetadataConfigM
|
|
|
|
|
OcrMetadataConfig ocrMetadataConfig = this.getById(id);
|
|
|
|
|
BeanUtils.copyProperties(ocrMetadataConfig,copyEntityVo);
|
|
|
|
|
List<OcrMetadataConfigDetail> list = ocrMetadataConfigDetailService.list(new LambdaQueryWrapper<OcrMetadataConfigDetail>().eq(OcrMetadataConfigDetail::getMetadataConfigId, id));
|
|
|
|
|
String fieldName = list.stream().map(o -> o.getFieldName()).collect(Collectors.joining(","));
|
|
|
|
|
String getField = list.stream().map(o -> o.getGetField()).collect(Collectors.joining(","));
|
|
|
|
|
String fieldName = list.stream().map(OcrMetadataConfigDetail::getFieldName).collect(Collectors.joining(","));
|
|
|
|
|
String getField = list.stream().map(OcrMetadataConfigDetail::getGetField).collect(Collectors.joining(","));
|
|
|
|
|
copyEntityVo.setResultName(fieldName);
|
|
|
|
|
copyEntityVo.setGetField(getField);
|
|
|
|
|
copyEntityVo.setOcrMetadataConfigDetailList(list);
|
|
|
|
|
|