dengsixing 7 ヶ月 前
コミット
8467b09e1e

+ 7 - 1
src/main/java/com/fdkankan/contro/entity/SceneFileBuild.java

@@ -12,7 +12,7 @@ import java.util.Date;
  * 场景文件建模表
  * </p>
  *
- * @author 
+ * @author
  * @since 2022-01-20
  */
 @Getter
@@ -83,5 +83,11 @@ public class SceneFileBuild implements Serializable {
     @TableLogic("A")
     private String recStatus;
 
+    @TableField("task_id")
+    private String taskId;
+
+    @TableField("k_no")
+    private String kNo;
+
 
 }

+ 16 - 0
src/main/java/com/fdkankan/contro/httpclient/MyClient.java

@@ -0,0 +1,16 @@
+package com.fdkankan.contro.httpclient;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.dtflys.forest.annotation.Header;
+import com.dtflys.forest.annotation.JSONBody;
+import com.dtflys.forest.annotation.Post;
+import com.dtflys.forest.annotation.Var;
+import com.fdkankan.web.response.ResultData;
+
+public interface MyClient {
+
+    @Post(url = "${url}")
+    ResultData postJson(@Var("url") String url, @Header("sign") String sign, @JSONBody JSONObject param);
+
+}

+ 42 - 3
src/main/java/com/fdkankan/contro/service/impl/GzZcdjzxServiceImpl.java

@@ -2,10 +2,16 @@ package com.fdkankan.contro.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fdkankan.common.constant.RecStatus;
 import com.fdkankan.common.util.CmdUtils;
+import com.fdkankan.common.util.DateExtUtil;
+import com.fdkankan.common.util.MD5;
+import com.fdkankan.common.util.SnowflakeIdGenerator;
 import com.fdkankan.contro.entity.SceneFileBuild;
 import com.fdkankan.contro.httpclient.CustomHttpClient;
 import com.fdkankan.contro.service.GzZcdjzxService;
@@ -69,19 +75,50 @@ public class GzZcdjzxServiceImpl implements GzZcdjzxService {
                 httpClient.downloadFile(url, ossHomeAbsolutePath, zipName);
                 String unzipCmd = "unzip -O GBK " + ossHomeAbsolutePath + zipName + " -d " + ossHomeAbsolutePath;
                 CmdUtils.callLine(unzipCmd);
-                SceneFileBuild sceneFileBuild = sceneFileBuildService.findByFileId(fileId);
+                //解压后删除压缩包
+                FileUtil.del(ossHomeAbsolutePath + zipName);
+
+                String dataFdage = ossHomeAbsolutePath + "/data.fdage";
+                JSONObject dataFdageJson = JSON.parseObject(dataFdage);
+                String taskId = dataFdageJson.getString("taskId");
+                String kNo = dataFdageJson.getString("kNo");
+                if(StrUtil.isEmpty(taskId) && StrUtil.isEmpty(kNo)){
+                    throw new RuntimeException("案件号、勘探号不能同时为空");
+                }
+
+                LambdaQueryWrapper<SceneFileBuild> wrapper = new LambdaQueryWrapper<>();
+                if(StrUtil.isNotEmpty(taskId)){
+                    wrapper.eq(SceneFileBuild::getTaskId, taskId);
+                }
+                if(StrUtil.isNotEmpty(kNo)){
+                    wrapper.eq(SceneFileBuild::getKNo, kNo);
+                }
+                SceneFileBuild sceneFileBuild = sceneFileBuildService.getOne(wrapper);
+                String realFileId = null;
                 if(Objects.isNull(sceneFileBuild)){
+                    realFileId = fileId + "_" + DateExtUtil.format(new Date(), "yyyyMMddHHmmss");
                     sceneFileBuild = new SceneFileBuild();
-                    sceneFileBuild.setFileId(fileId);
+                    sceneFileBuild.setFileId(realFileId);
                     sceneFileBuild.setUnicode(unicode);
                     sceneFileBuild.setChildName(snCode);
                     sceneFileBuild.setCreateTime(new Date());
                     sceneFileBuild.setRecStatus(RecStatus.VALID.code());
+                    sceneFileBuild.setTaskId(taskId);
+                    sceneFileBuild.setKNo(kNo);
                     sceneFileBuildService.save(sceneFileBuild);
+                }else{
+                    realFileId = sceneFileBuild.getFileId();
                 }
+                String realDataSource =  ConstantFilePath.BUILD_MODEL_PATH + snCode + "/" + realFileId + "/" + unicode;
+                String realOssHomePath = SceneUtil.getHomePath(realDataSource);
+                String realOssHomeAbsolutePath = LocalConstants.BASE_PATH + fYunFileConfig.getBucket() + "/" + realOssHomePath;
+                FileUtil.listFileNames(ossHomeAbsolutePath).stream().forEach(fileName -> {
+                    FileUtil.copy(ossHomeAbsolutePath + "/" + fileName, realOssHomeAbsolutePath + "/" + fileName, true);
+                });
+
 
                 // 私钥解密过程
-                String paramsStr = snCode + "#" + fileId + "#" + unicode;
+                String paramsStr = snCode + "#" + realFileId + "#" + unicode;
                 byte[] res = RSAEncrypt.encrypt(RSAEncrypt.loadPublicKeyByStr(RSAEncrypt.loadPublicKeyByFile()),
                         paramsStr.getBytes(StandardCharsets.UTF_8));
                 String params = new Base64().encodeToString(res);
@@ -106,5 +143,7 @@ public class GzZcdjzxServiceImpl implements GzZcdjzxService {
                 new Base64().decode(new Base64().encodeToString(res)));
         String restr = new String(res2, "UTF-8");
         System.out.println(restr);
+
+
     }
 }

+ 50 - 13
src/main/java/com/fdkankan/contro/service/impl/SceneFileBuildServiceImpl.java

@@ -6,6 +6,8 @@ import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.symmetric.AES;
 import cn.hutool.extra.qrcode.QrCodeUtil;
 import cn.hutool.extra.qrcode.QrConfig;
 import cn.hutool.http.HttpUtil;
@@ -17,15 +19,14 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fdkankan.common.constant.*;
 import com.fdkankan.common.exception.BusinessException;
-import com.fdkankan.common.util.DateExtUtil;
-import com.fdkankan.common.util.FileMd5Util;
-import com.fdkankan.common.util.FileUtils;
-import com.fdkankan.common.util.SnowflakeIdGenerator;
+import com.fdkankan.common.util.*;
 import com.fdkankan.contro.constant.RedisConstants;
 import com.fdkankan.contro.entity.*;
 import com.fdkankan.contro.enums.CameraTypeEnum;
+import com.fdkankan.contro.httpclient.MyClient;
 import com.fdkankan.contro.mapper.ISceneFileBuildMapper;
 import com.fdkankan.contro.service.*;
+import com.fdkankan.contro.util.RsaUtils;
 import com.fdkankan.contro.vo.ResponseSceneFile;
 import com.fdkankan.contro.vo.ScenePlusVO;
 import com.fdkankan.fyun.config.FYunFileConfig;
@@ -58,6 +59,7 @@ import org.springframework.util.ObjectUtils;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
@@ -199,6 +201,8 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     private ISceneColdStorageService sceneColdStorageService;
     @Autowired
     private IntermitSceneService intermitSceneService;
+    @Resource
+    private MyClient httpClient;
 
     @Override
     public SceneFileBuild findByFileId(String fileId) {
@@ -356,7 +360,6 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
         int rebuild = CommonStatus.YES.code();
         if (ObjectUtils.isEmpty(scenePlus)) {
 
-
             //清除超容量场景记录
             exceedSpaceSceneService.repeal(camera.getId(), fileId, unicode);
 
@@ -440,10 +443,23 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         //舒淇要求场景上传取data.fdage中的用户
         Long userId = null;
-        userName = jsonObject.getString("account");
+        userName = jsonObject.getString("userId");
+        String password = jsonObject.getString("password");
         log.info("场景归属账号为:account:{}", userName);
         if(StrUtil.isNotEmpty(userName)){
             User user = userService.getByUserName(userName);
+            if(Objects.isNull(user)){
+                //自动注册
+                JSONObject registerParams = new JSONObject();
+                registerParams.put("phoneNum", userName);
+                registerParams.put("password", password);
+                registerParams.put("msgAuthCode", "2a22bac40f44af4d3b5fdc20ea706fc5");
+                ResultData resultData = httpClient.postJson("http://127.0.0.1:8081/ucenter/sso/user/register", null, registerParams);
+                Object data = resultData.getData();
+                Long id = ((JSONObject)data).getLong("id");
+                log.info("自动注册,userId:{}", id);
+                user = userService.getByUserName(userName);
+            }
             log.info("场景归属账号id为:userId:{}", user.getId());
             if(Objects.nonNull(user)){
                 userId = user.getId();
@@ -831,6 +847,19 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
 
         ScenePlusVO scenePlusVO = null;
 
+        //调用接口入库
+        Map<String, Object> signPlayload = new HashMap<>();
+        signPlayload.put("appId", "ucenter");
+        signPlayload.put("timestamp", Calendar.getInstance().getTimeInMillis());
+        String sign = RsaUtils.encipher(JSON.toJSONString(signPlayload), RsaUtils.publicKey);
+        JSONObject cameraInStoreParams = new JSONObject();
+        cameraInStoreParams.put("cameraType", cameraType);
+        cameraInStoreParams.put("snCode", mac);
+        ResultData resultData = httpClient.postJson("http://127.0.0.1:8081/ucenter/_inner/cameraInStore", sign, cameraInStoreParams);
+        Object data = resultData.getData();
+        Long cameraId = ((JSONObject)data).getLong("id");
+        log.info("自动入库,cameraId:{}", cameraId);
+
         if (ObjectUtils.isEmpty(scenePro) || (!ObjectUtils.isEmpty(scenePro.getIsUpgrade()) && scenePro.getIsUpgrade() == 1)) {
             scenePlusVO = buildScene(fileId, prefixBuffer.toString(), fdageJson, buildType, cameraType);
         } else {
@@ -1918,13 +1947,21 @@ public class SceneFileBuildServiceImpl extends ServiceImpl<ISceneFileBuildMapper
     }
 
     public static void main(String[] args) throws Exception {
-        String test = "1VCTnzsHFK9+jxvV5/YXqtdeAaCKdSBrW2NbvkFlkrYf9sWkFt1oPNr/x31clCJ02ox9+EX8dTeer+EE7K/azgHs+6W7lyi9ZcnklLbuPGdgZ32TgiL34DZKCxGZqMt+U0Mg65bgVxe01CCJZGkO7VBtZAygaNAfMUbFDYhOETU=";
-        Base64 base64 = new Base64();
-        // 私钥解密过程
-        byte[] res = RSAEncrypt.decrypt(RSAEncrypt.loadPrivateKeyByStr(RSAEncrypt.loadPrivateKeyByFile()),
-                base64.decode(test));
-        String restr = new String(res, "UTF-8");
-        System.out.println(restr);
+//        String test = "1VCTnzsHFK9+jxvV5/YXqtdeAaCKdSBrW2NbvkFlkrYf9sWkFt1oPNr/x31clCJ02ox9+EX8dTeer+EE7K/azgHs+6W7lyi9ZcnklLbuPGdgZ32TgiL34DZKCxGZqMt+U0Mg65bgVxe01CCJZGkO7VBtZAygaNAfMUbFDYhOETU=";
+//        Base64 base64 = new Base64();
+//        // 私钥解密过程
+//        byte[] res = RSAEncrypt.decrypt(RSAEncrypt.loadPrivateKeyByStr(RSAEncrypt.loadPrivateKeyByFile()),
+//                base64.decode(test));
+//        String restr = new String(res, "UTF-8");
+//        System.out.println(restr);
+
+//        AES  aes = new AES();
+//        String s = aes.decryptStr("E10ADC3949BA59ABBE56E057F20F883E");
+//        System.out.println(s);
+
+        String s1 = MD5.md5Str("123456");
+        System.out.println(s1);
+
     }
 
     @Override

ファイルの差分が大きいため隠しています
+ 314 - 0
src/main/java/com/fdkankan/contro/util/RsaUtils.java