|
@@ -1,6 +1,7 @@
|
|
|
package com.fdkankan.contro.service.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
+import cn.hutool.core.io.FileUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
@@ -13,16 +14,15 @@ import com.fdkankan.contro.service.IJmgaService;
|
|
|
import com.fdkankan.contro.service.IOrigFileUploadBatchService;
|
|
|
import com.fdkankan.contro.service.IOrigFileUploadService;
|
|
|
import com.fdkankan.fyun.face.FYunFileServiceInterface;
|
|
|
+import com.fdkankan.model.utils.SceneUtil;
|
|
|
import com.fdkankan.rabbitmq.util.RabbitMqProducer;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Set;
|
|
|
+import java.io.File;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
@@ -96,4 +96,60 @@ public class JmgaServiceImpl implements IJmgaService {
|
|
|
public void sendStatus(Map<String, Object> param) {
|
|
|
mqProducer.sendByWorkQueue("jmga-event-notice", param);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Set<String> checkLackFile(String dataSource) {
|
|
|
+
|
|
|
+ String dataFdagePath = dataSource.concat(File.separator).concat("data.fdage");
|
|
|
+ JSONObject fdageData = JSON.parseObject(FileUtil.readUtf8String(dataFdagePath));
|
|
|
+
|
|
|
+ int camType = fdageData.getJSONObject("cam").getIntValue("type");
|
|
|
+
|
|
|
+ //从data.fdage中获取需要上传的文件列表
|
|
|
+ JSONArray points = fdageData.getJSONArray("points");
|
|
|
+ if(CollUtil.isEmpty(points)){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> fileList = new ArrayList<>();
|
|
|
+ for (Object point : points) {
|
|
|
+ JSONObject pointJson = (JSONObject) point;
|
|
|
+ if(camType == 5){//圆周率相机
|
|
|
+ String name = pointJson.getString("name");
|
|
|
+ fileList.add(name);
|
|
|
+ }else{//四维相机
|
|
|
+ JSONArray imgs = pointJson.getJSONArray("imgs");
|
|
|
+ if(CollUtil.isEmpty(imgs)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ for (Object img : imgs) {
|
|
|
+ JSONObject imgJson = (JSONObject) img;
|
|
|
+ String name = imgJson.getString("name");
|
|
|
+ fileList.add(name);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询当前待通知计算批次文件是否存在
|
|
|
+ List<OrigFileUploadBatch> batchList = origFileUploadBatchService.list(new LambdaQueryWrapper<OrigFileUploadBatch>().eq(OrigFileUploadBatch::getUuid, uuid));
|
|
|
+ if(CollUtil.isNotEmpty(batchList)){
|
|
|
+ Set<String> batchIds = batchList.stream().map(v -> v.getBatchId()).collect(Collectors.toSet());
|
|
|
+ List<OrigFileUpload> origFileList = origFileUploadService.list(new LambdaQueryWrapper<OrigFileUpload>().in(OrigFileUpload::getBatchId, batchIds));
|
|
|
+ //过滤出不存在的
|
|
|
+ fileList = fileList.stream().filter(v -> origFileList.stream().noneMatch(k -> k.getFileName().equals(v))).collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
+// //查询oss文件目录是否存在
|
|
|
+// String homePath = SceneUtil.getHomePath(dataSource);
|
|
|
+// List<String> ossKeyList = fileServiceInterface.listRemoteFiles(homePath);
|
|
|
+// fileList = fileList.stream().filter(v->ossKeyList.stream().noneMatch(k->FileUtil.getName(k).equals(v))).collect(Collectors.toList());
|
|
|
+//
|
|
|
+ if(CollUtil.isNotEmpty(fileList)){
|
|
|
+ String args = JSON.toJSONString(fileList);
|
|
|
+ if(fileList.size() > 5){
|
|
|
+ args = fileList.size() + "个文件";
|
|
|
+ }
|
|
|
+ throw new BusinessException(ErrorCode.FAILURE_CODE_4001, args);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|