dengsixing 2 месяцев назад
Родитель
Сommit
5e8d31fc05

+ 4 - 1
src/main/java/com/fdkankan/scene/entity/SceneMid.java

@@ -31,6 +31,9 @@ public class SceneMid implements Serializable {
     @TableField("num")
     private String num;
 
+    @TableField("num")
+    private String sid;
+
     @TableField("mid")
     private Long mid;
 
@@ -41,7 +44,7 @@ public class SceneMid implements Serializable {
     private Date updateTime;
 
     @TableField("rec_status")
-    @TableLogic
+    @TableLogic(value = "A", delval = "I")
     private String recStatus;
 
 

+ 93 - 35
src/main/java/com/fdkankan/scene/service/impl/SceneEvidenceServiceImpl.java

@@ -83,7 +83,7 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
         if (scenePlus == null)
             throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
 
-        this.addOrUpdateData(param.getNum(), param.getDataList());
+        this.addOrUpdateData(param.getNum(), scenePlus.getKNo(), token, param.getDataList());
 
         //设置应用到全部数据
         this.generalConfig(param.getNum(), param.getGeneralConfig());
@@ -95,29 +95,35 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
         this.saveEvidenceToSceneEditInfo(param.getNum(), sceneEditInfo);
         sceneEditInfoService.updateById(sceneEditInfo);
 
+        this.reviseSceneMid(param.getNum());
+
         //推送媒体库
-        Set<Long> newMids = this.batchPushMedia(param, token, scenePlus);
-
-        Set<Long> dbMids = param.getDataList().stream()
-                .filter(v -> v.getData().containsKey("mid") && v.getData().getLong("mid") != null)
-                .map(v -> v.getData().getLong("mid")).collect(Collectors.toSet());
-        Set<Long> mids = new HashSet<>();
-        if(CollUtil.isNotEmpty(newMids)){
-            mids.addAll(newMids);
-        }
-        if(CollUtil.isNotEmpty(dbMids)){
-            mids.addAll(dbMids);
-        }
-        if(CollUtil.isNotEmpty(mids)){
-            //保存场景码与媒体库id关系
-            List<SceneMid> sms = mids.stream().map(v -> {
-                SceneMid sm = new SceneMid();
-                sm.setNum(param.getNum());
-                sm.setMid(v);
-                return sm;
-            }).collect(Collectors.toList());
-            sceneMidService.saveBatch(sms);
+//        this.batchPushMedia(param, token, scenePlus);
+    }
+
+    private void reviseSceneMid(String num){
+        List<SceneEvidence> sceneEvidences = this.listByNum(num);
+        Set<String> sids = new HashSet<>();
+        sceneEvidences.stream().forEach(v->{
+            JSONArray media = v.getEvidenceContent().getJSONArray("media");
+            if(CollUtil.isNotEmpty(media)){
+                media.stream().forEach(m -> {
+                    JSONObject mediaObj = JSON.parseObject(JSON.toJSONString(m));
+                    sids.add(mediaObj.getString("sid"));
+                });
+            }
+            JSONObject bgm = v.getEvidenceContent().getJSONObject("bgm");
+            if(Objects.nonNull(bgm)){
+                sids.add(bgm.getString("sid"));
+            }
+        });
+        if(CollUtil.isEmpty(sids)){
+            sceneMidService.remove(new LambdaQueryWrapper<SceneMid>().eq(SceneMid::getNum, num));
+        }else{
+            sceneMidService.remove(new LambdaQueryWrapper<SceneMid>().eq(SceneMid::getNum, num).notIn(SceneMid::getSid, sids));
         }
+
+
     }
 
     private void generalConfig(String num, JSONObject generalConfig){
@@ -137,10 +143,10 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
         this.updateBatchById(sceneEvidences);
     }
 
-    private Set<Long> batchPushMedia(SaveEvidenceParamVO param, String token, ScenePlus scenePlus){
+    private void batchPushMedia(SaveEvidenceParamVO param, String token, ScenePlus scenePlus){
         log.info("--------------SaveEvidenceParamVO:{}", JSON.toJSONString(param));
-        SSOUser ssoUser = jmgaSSOLoginHelper.getSsoUser(token);
         List<JSONObject> params = new ArrayList<>();
+        List<SceneMid> sms = new ArrayList<>();
         for (EvidenceParamVO evidenceParamVO : param.getDataList()) {
             //media
             JSONArray medias = evidenceParamVO.getData().getJSONArray("media");
@@ -169,6 +175,12 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
                             .feature(evidenceParamVO.getData().getString("feature"))
                             .leftPosition(evidenceParamVO.getData().getString("leftPosition"))
                             .status(evidenceParamVO.getData().getInteger("status")).build());
+                    ResultData<JSONObject> resultData = manageHttpClient.addMediaLibrary(basePath, token, item);
+                    SceneMid sm = new SceneMid();
+                    sms.add(sm);
+                    sm.setNum(param.getNum());
+                    sm.setSid(media.getString("sid"));
+                    sm.setMid(resultData.getData().getLong("id"));
                 }
             }
 
@@ -194,20 +206,29 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
                         .feature(evidenceParamVO.getData().getString("feature"))
                         .leftPosition(evidenceParamVO.getData().getString("leftPosition"))
                         .status(evidenceParamVO.getData().getInteger("status")).build());
+                ResultData<JSONObject> resultData = manageHttpClient.addMediaLibrary(basePath, token, item);
+                SceneMid sm = new SceneMid();
+                sms.add(sm);
+                sm.setNum(param.getNum());
+                sm.setSid(bgm.getString("sid"));
+                sm.setMid(resultData.getData().getLong("id"));
             }
         }
+        if(CollUtil.isNotEmpty(sms)){
+            sceneMidService.saveBatch(sms);
+        }
 
         //调用案件系统接口,进行推送
-        if(CollUtil.isEmpty(params)){
-            return null;
-        }
-        JSONObject playLoad = new JSONObject();
-        playLoad.put("params", params);
-        ResultData<List<JSONObject>> resultData = manageHttpClient.addMediaLibrarys(basePath, token, playLoad);
-        return resultData.getData().stream().map(v -> v.getLong("id")).collect(Collectors.toSet());
+//        if(CollUtil.isEmpty(params)){
+//            return null;
+//        }
+//        JSONObject playLoad = new JSONObject();
+//        playLoad.put("params", params);
+//        ResultData<List<JSONObject>> resultData = manageHttpClient.addMediaLibrarys(basePath, token, playLoad);
+//        return resultData.getData().stream().map(v -> v.getLong("id")).collect(Collectors.toSet());
     }
 
-    private void addOrUpdateData(String num, List<EvidenceParamVO> dataList) throws Exception{
+    private void addOrUpdateData(String num, String kno, String token, List<EvidenceParamVO> dataList) throws Exception{
         Set<String> sidList = dataList.stream().map(v->v.getSid()).collect(Collectors.toSet());
         List<SceneEvidence> sceneEvidences = this.listByNumAndSids(num, sidList);
         Map<String, SceneEvidence> dbMap = new HashMap<>();
@@ -217,12 +238,11 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
         Map<String, SceneEvidence> finalDbMap = dbMap;
         List<SceneEvidence> collect = dataList.stream().map(v -> {
             SceneEvidence sceneEvidence = finalDbMap.get(v.getSid());
-            Long mid = v.getData().getLong("mid");
             if (Objects.isNull(sceneEvidence)) {
                 sceneEvidence = new SceneEvidence();
                 sceneEvidence.setNum(num);
                 sceneEvidence.setSid(v.getSid());
-                sceneEvidence.setMid(mid);
+//                sceneEvidence.setMid(mid);
             }
             sceneEvidence.setUpdateTime(null);
             JSONObject evidenceContent = JSON.parseObject(v.getData().toString());
@@ -230,11 +250,19 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
             if(CollUtil.isNotEmpty(medias)){
                 for (Object o : medias) {
                     JSONObject media = (JSONObject) o;
+                    int isAddMedia = media.getIntValue("isAddMedia");
+                    if(isAddMedia == 1){//如果标识是1,需要推送到媒体库
+                        this.pushMedia(num, kno, v.getData(), media, token);
+                    }
                     media.remove("isAddMedia");
                 }
             }
             JSONObject bgm = evidenceContent.getJSONObject("bgm");
             if(bgm != null){
+                int isAddMedia = bgm.getIntValue("isAddMedia");
+                if(isAddMedia == 1){//如果标识是1,需要推送到媒体库
+                    this.pushMedia(num, kno, v.getData(), bgm, token);
+                }
                 bgm.remove("isAddMedia");
             }
             sceneEvidence.setEvidenceContent(evidenceContent);
@@ -243,6 +271,34 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
         this.saveOrUpdateBatch(collect);
     }
 
+    private void pushMedia(String num, String kNo, JSONObject data, JSONObject media, String token){
+        String ossPath = String.format(UploadFilePath.USER_EDIT_PATH, num) + media.getString("src");
+        JSONObject item = new JSONObject();
+        item.put("num", num);
+        item.put("kno", kNo);
+        item.put("filePath", ossPath);
+        item.put("fileName", media.getString("name"));
+        item.put("fileSize", fYunFileServiceInterface.getSpace("4dkankan", ossPath));
+        item.put("delSource", 0);
+        item.put("toHaixin", 0);
+        item.put("dictId", data.getInteger("dictId"));
+        item.put("content", EvidenceBean.builder().
+                title(data.getString("title"))
+                .collectedTime(data.getString("collectedTime"))
+                .collectionModeName(data.getString("collectionModeName"))
+                .createAccount(data.getString("createAccount"))
+                .feature(data.getString("feature"))
+                .leftPosition(data.getString("leftPosition"))
+                .status(data.getInteger("status")).build());
+        ResultData<JSONObject> resultData = manageHttpClient.addMediaLibrary(basePath, token, item);
+        SceneMid sm = new SceneMid();
+        sm.setNum(num);
+        sm.setSid(media.getString("sid"));
+        sm.setMid(resultData.getData().getLong("id"));
+        sceneMidService.save(sm);
+        media.put("mid", sm.getMid());
+    }
+
     private void addOrUpdateIcons(String num, List<String> icons) throws Exception{
         if(CollUtil.isEmpty(icons)){
             return;
@@ -293,6 +349,8 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
         SceneEditInfo sceneEditInfo = sceneEditInfoService.getByScenePlusId(scenePlus.getId());
         this.saveEvidenceToSceneEditInfo(param.getNum(), sceneEditInfo);
         sceneEditInfoService.updateById(sceneEditInfo);
+
+        this.reviseSceneMid(param.getNum());
     }
 
     @Override
@@ -368,7 +426,7 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
 
         //检验重复导入,一个痕迹物证在同一场景不能被多次导入
         List<Long> midList = param.getDataList().stream().map(v -> v.getData().getLong("mid")).collect(Collectors.toList());
-        long count = this.count(new LambdaQueryWrapper<SceneEvidence>().eq(SceneEvidence::getNum, param.getNum()).in(SceneEvidence::getMid, midList));
+        long count = sceneMidService.count(new LambdaQueryWrapper<SceneMid>().eq(SceneMid::getNum, param.getNum()).in(SceneMid::getMid, midList));
         if(count > 0)
             throw new BusinessException(JMErrorCode.FAILURE_CODE_20000.code(), JMErrorCode.FAILURE_CODE_20000.message());