|
@@ -2,15 +2,21 @@ package com.persagy.dmp.rwd.digital.service.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
|
+import cn.hutool.core.io.FileUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.map.MapUtil;
|
|
import cn.hutool.core.util.ReflectUtil;
|
|
import cn.hutool.core.util.ReflectUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
+import cn.hutool.crypto.SecureUtil;
|
|
|
|
+import cn.hutool.extra.qrcode.QrCodeUtil;
|
|
|
|
+import cn.hutool.extra.qrcode.QrConfig;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.fasterxml.jackson.databind.JsonNode;
|
|
import com.fasterxml.jackson.databind.node.ArrayNode;
|
|
import com.fasterxml.jackson.databind.node.ArrayNode;
|
|
|
|
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
import com.persagy.dmp.basic.dto.RequestData;
|
|
import com.persagy.dmp.basic.dto.RequestData;
|
|
import com.persagy.dmp.basic.model.CodeTableTypeEnum;
|
|
import com.persagy.dmp.basic.model.CodeTableTypeEnum;
|
|
@@ -39,11 +45,14 @@ import com.persagy.dmp.rwd.digital.dao.ObjectRelationMapper;
|
|
import com.persagy.dmp.rwd.digital.service.IObjectDigitalService;
|
|
import com.persagy.dmp.rwd.digital.service.IObjectDigitalService;
|
|
import com.persagy.dmp.rwd.parser.service.InfoDataFactory;
|
|
import com.persagy.dmp.rwd.parser.service.InfoDataFactory;
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
+import java.io.File;
|
|
import java.lang.reflect.Field;
|
|
import java.lang.reflect.Field;
|
|
|
|
+import java.math.BigDecimal;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@@ -55,6 +64,7 @@ import java.util.stream.Collectors;
|
|
@Service
|
|
@Service
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@RequiredArgsConstructor
|
|
@RequiredArgsConstructor
|
|
|
|
+@Slf4j
|
|
public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, ObjectDigital> implements IObjectDigitalService {
|
|
public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, ObjectDigital> implements IObjectDigitalService {
|
|
|
|
|
|
private final ObjectDigitalMapper objectDigitalMapper;
|
|
private final ObjectDigitalMapper objectDigitalMapper;
|
|
@@ -85,10 +95,10 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public List<ObjectDigital> insert(List<ObjectDigital> voList) {
|
|
public List<ObjectDigital> insert(List<ObjectDigital> voList) {
|
|
- validateOnSave(voList, false);
|
|
|
|
if(CollUtil.isEmpty(voList)) {
|
|
if(CollUtil.isEmpty(voList)) {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
+ validateOnSave(voList, false);
|
|
//获取对象类型
|
|
//获取对象类型
|
|
Map<String, String> typeMap = typeService.queryObjTypeMap();
|
|
Map<String, String> typeMap = typeService.queryObjTypeMap();
|
|
voList.forEach(vo -> {
|
|
voList.forEach(vo -> {
|
|
@@ -128,9 +138,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
|
|
fillClassCodeForUpdate(voList,dbMap);
|
|
fillClassCodeForUpdate(voList,dbMap);
|
|
//信息点校验
|
|
//信息点校验
|
|
validateOnSave(voList, true);
|
|
validateOnSave(voList, true);
|
|
- if(CollUtil.isEmpty(voList)) {
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
|
|
+ List<ObjectDigital> resultList = new ArrayList<>();
|
|
voList.forEach(vo -> {
|
|
voList.forEach(vo -> {
|
|
ObjectDigital dbVO = MapUtil.get(dbMap, vo.getId(), ObjectDigital.class);
|
|
ObjectDigital dbVO = MapUtil.get(dbMap, vo.getId(), ObjectDigital.class);
|
|
// 容错处理
|
|
// 容错处理
|
|
@@ -456,6 +464,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
|
|
return ResultHelper.multi(new ArrayList<>());
|
|
return ResultHelper.multi(new ArrayList<>());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
/***
|
|
/***
|
|
* Description: 通用处理分页数据方法
|
|
* Description: 通用处理分页数据方法
|
|
* @param dataResult : 分页数据
|
|
* @param dataResult : 分页数据
|
|
@@ -681,7 +690,6 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
|
|
// 查询信息点定义
|
|
// 查询信息点定义
|
|
Map<String, Map<String, ObjectInfoDefine>> allInfoMap = infoService.queryByTypes(typeCodeList);
|
|
Map<String, Map<String, ObjectInfoDefine>> allInfoMap = infoService.queryByTypes(typeCodeList);
|
|
// 信息点校验器
|
|
// 信息点校验器
|
|
- List<ObjectDigital> restList = new ArrayList<>();
|
|
|
|
for(ObjectDigital vo:voList) {
|
|
for(ObjectDigital vo:voList) {
|
|
// 获取信息点列表 TODO 先这样处理,后续优化信息点接口后直接删掉此段即可
|
|
// 获取信息点列表 TODO 先这样处理,后续优化信息点接口后直接删掉此段即可
|
|
Map<String, ObjectInfoDefine> infoMap = new HashMap<>(16);
|
|
Map<String, ObjectInfoDefine> infoMap = new HashMap<>(16);
|
|
@@ -701,11 +709,8 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(MapUtil.isEmpty(infoMap)) {
|
|
if(MapUtil.isEmpty(infoMap)) {
|
|
- log.error(StrUtil.format("没有对象类型【{}】的信息点定义信息!", vo.getClassCode()));
|
|
|
|
- continue;
|
|
|
|
|
|
+ throw new BusinessException(StrUtil.format("没有对象类型【{}】的信息点定义信息!", vo.getClassCode()));
|
|
}
|
|
}
|
|
- // 只保留有对象类型的
|
|
|
|
- restList.add(vo);
|
|
|
|
// 信息点值对象
|
|
// 信息点值对象
|
|
ObjectNode infos = vo.getInfos();
|
|
ObjectNode infos = vo.getInfos();
|
|
if(infos == null || infos.isNull()) {
|
|
if(infos == null || infos.isNull()) {
|
|
@@ -724,11 +729,6 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
|
|
InfoDataFactory.parse(infoMap.get(infoCode), infos.get(infoCode));
|
|
InfoDataFactory.parse(infoMap.get(infoCode), infos.get(infoCode));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- // 只保留能找到对象类型的
|
|
|
|
- voList.clear();
|
|
|
|
- if(CollUtil.isNotEmpty(restList)) {
|
|
|
|
- voList.addAll(restList);
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -822,4 +822,6 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
|
|
return CollUtil.fieldValueAsMap(objectDigitals, "id", "virtual_codes");
|
|
return CollUtil.fieldValueAsMap(objectDigitals, "id", "virtual_codes");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|