|
@@ -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;
|
|
@@ -27,6 +33,9 @@ import com.persagy.dmp.common.utils.ResultHelper;
|
|
import com.persagy.dmp.define.entity.ObjectInfoDefine;
|
|
import com.persagy.dmp.define.entity.ObjectInfoDefine;
|
|
import com.persagy.dmp.digital.entity.ObjectDigital;
|
|
import com.persagy.dmp.digital.entity.ObjectDigital;
|
|
import com.persagy.dmp.digital.entity.ObjectRelation;
|
|
import com.persagy.dmp.digital.entity.ObjectRelation;
|
|
|
|
+import com.persagy.dmp.file.client.FileClientFacade;
|
|
|
|
+import com.persagy.dmp.file.model.FileRequestData;
|
|
|
|
+import com.persagy.dmp.file.model.UploadMes;
|
|
import com.persagy.dmp.rwd.basic.constant.DigitalMessageConstant;
|
|
import com.persagy.dmp.rwd.basic.constant.DigitalMessageConstant;
|
|
import com.persagy.dmp.rwd.basic.constant.DigitalObjectType;
|
|
import com.persagy.dmp.rwd.basic.constant.DigitalObjectType;
|
|
import com.persagy.dmp.rwd.basic.constant.DigitalRelCode;
|
|
import com.persagy.dmp.rwd.basic.constant.DigitalRelCode;
|
|
@@ -39,11 +48,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 +67,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;
|
|
@@ -454,6 +467,7 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
|
|
return ResultHelper.multi(new ArrayList<>());
|
|
return ResultHelper.multi(new ArrayList<>());
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
/***
|
|
/***
|
|
* Description: 通用处理分页数据方法
|
|
* Description: 通用处理分页数据方法
|
|
* @param dataResult : 分页数据
|
|
* @param dataResult : 分页数据
|
|
@@ -811,4 +825,76 @@ public class ObjectDigitalServiceImpl extends ServiceImpl<ObjectDigitalMapper, O
|
|
return CollUtil.fieldValueAsMap(objectDigitals, "id", "virtual_codes");
|
|
return CollUtil.fieldValueAsMap(objectDigitals, "id", "virtual_codes");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 生成默认二维码
|
|
|
|
+ * @param objectDigitals
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void createDefaultQrCode(List<ObjectNode> objectDigitals) {
|
|
|
|
+ if(CollUtil.isEmpty(objectDigitals)){
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ List<ObjectDigital> list = new ArrayList<>();
|
|
|
|
+ for (ObjectNode objectDigital : objectDigitals) {
|
|
|
|
+ //生成二维码图片,并上传到文件服务器
|
|
|
|
+ ObjectDigital digital = new ObjectDigital();
|
|
|
|
+ digital.setId(objectDigital.get("id").textValue());
|
|
|
|
+ UploadMes objectQrCode = createObjectQrCode(digital);
|
|
|
|
+ if(objectQrCode == null){
|
|
|
|
+ log.info("生成二维码失败");
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ //设置对象二维码信息
|
|
|
|
+ setObjectQrCode(digital,objectQrCode);
|
|
|
|
+ list.add(digital);
|
|
|
|
+ }
|
|
|
|
+ //更新对象二维码信息
|
|
|
|
+ update(list);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 设置二维码图片
|
|
|
|
+ * @param digital
|
|
|
|
+ */
|
|
|
|
+ public void setObjectQrCode(ObjectDigital digital, UploadMes objectQrCode){
|
|
|
|
+ //设置二维码信息
|
|
|
|
+ ArrayNode qrCodePics = JsonNodeFactory.instance.arrayNode();
|
|
|
|
+ ObjectNode qrCodePic = JsonNodeFactory.instance.objectNode();
|
|
|
|
+ qrCodePic.put("key", objectQrCode.getId());
|
|
|
|
+ qrCodePics.add(qrCodePic);
|
|
|
|
+
|
|
|
|
+ ObjectNode infos = JsonNodeFactory.instance.objectNode();
|
|
|
|
+ infos.put(CommonConstant.QR_CODE_PIC_INFO,qrCodePics);
|
|
|
|
+ digital.setInfos(infos);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 生成二维码信息并上传到文件服务器
|
|
|
|
+ * @param objectDigitalVO
|
|
|
|
+ */
|
|
|
|
+ public UploadMes createObjectQrCode(ObjectDigital objectDigitalVO){
|
|
|
|
+ //获取基础参数
|
|
|
|
+ String projectId = objectDigitalVO.getProjectId();
|
|
|
|
+ String groupCode = objectDigitalVO.getGroupCode();
|
|
|
|
+ String objId = objectDigitalVO.getId();
|
|
|
|
+ String key = CommonConstant.QRCODE_KEY_PREFIX +"_"+ objId;
|
|
|
|
+ //生成二维码
|
|
|
|
+ QrConfig qrConfig = new QrConfig(300, 300);
|
|
|
|
+ File qrCodeFile = QrCodeUtil.generate(objId, qrConfig, FileUtil.file("/image"));
|
|
|
|
+ //上传到文件服务器
|
|
|
|
+ FileRequestData fileRequestData = new FileRequestData();
|
|
|
|
+ fileRequestData.setFileName(key);
|
|
|
|
+ fileRequestData.setFileMd5(SecureUtil.md5(qrCodeFile));
|
|
|
|
+ fileRequestData.setGroupCode(objectDigitalVO.getGroupCode());
|
|
|
|
+ fileRequestData.setFileBucket(CommonConstant.FILE_BUCKET_NAME);
|
|
|
|
+ fileRequestData.setFileSize(qrCodeFile.length());
|
|
|
|
+ CommonResult<UploadMes> uploadMesCommonResult = FileClientFacade.initSingleUploadPrototype(groupCode,projectId,null,null,fileRequestData);
|
|
|
|
+ if(!CommonConstant.QUERY_SUCCESS.equals(uploadMesCommonResult.getResult())){
|
|
|
|
+ log.info("上传文件失败:"+uploadMesCommonResult.getMessage());
|
|
|
|
+ return new UploadMes();
|
|
|
|
+ }
|
|
|
|
+ log.info("生成二维码信息"+uploadMesCommonResult.getMessage());
|
|
|
|
+ return uploadMesCommonResult.getData();
|
|
|
|
+ }
|
|
}
|
|
}
|