|
|
@@ -23,14 +23,12 @@ import com.fdkankan.model.constants.UploadFilePath;
|
|
|
import com.fdkankan.redis.constant.RedisKey;
|
|
|
import com.fdkankan.scene.bean.EvidenceBean;
|
|
|
import com.fdkankan.scene.bean.IconBean;
|
|
|
+import com.fdkankan.scene.bean.JMErrorCode;
|
|
|
import com.fdkankan.scene.entity.*;
|
|
|
import com.fdkankan.scene.httpclient.ManageHttpClient;
|
|
|
import com.fdkankan.scene.mapper.ISceneEvidenceMapper;
|
|
|
-import com.fdkankan.scene.service.ISceneEditInfoService;
|
|
|
-import com.fdkankan.scene.service.ISceneEvidenceService;
|
|
|
+import com.fdkankan.scene.service.*;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
-import com.fdkankan.scene.service.ISceneIconService;
|
|
|
-import com.fdkankan.scene.service.IScenePlusService;
|
|
|
import com.fdkankan.scene.util.JmgaSSOLoginHelper;
|
|
|
import com.fdkankan.scene.vo.*;
|
|
|
import com.fdkankan.web.response.ResultData;
|
|
|
@@ -75,6 +73,8 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
|
|
|
private String basePath;
|
|
|
@Autowired
|
|
|
private JmgaSSOLoginHelper jmgaSSOLoginHelper;
|
|
|
+ @Autowired
|
|
|
+ private ISceneMidService sceneMidService;
|
|
|
|
|
|
@Override
|
|
|
public void saveEvidence(SaveEvidenceParamVO param, String token) throws Exception {
|
|
|
@@ -96,8 +96,28 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
|
|
|
sceneEditInfoService.updateById(sceneEditInfo);
|
|
|
|
|
|
//推送媒体库
|
|
|
- this.batchPushMedia(param, token, scenePlus);
|
|
|
-
|
|
|
+ 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);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private void generalConfig(String num, JSONObject generalConfig){
|
|
|
@@ -117,7 +137,7 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
|
|
|
this.updateBatchById(sceneEvidences);
|
|
|
}
|
|
|
|
|
|
- private void batchPushMedia(SaveEvidenceParamVO param, String token, ScenePlus scenePlus){
|
|
|
+ private Set<Long> batchPushMedia(SaveEvidenceParamVO param, String token, ScenePlus scenePlus){
|
|
|
log.info("--------------SaveEvidenceParamVO:{}", JSON.toJSONString(param));
|
|
|
SSOUser ssoUser = jmgaSSOLoginHelper.getSsoUser(token);
|
|
|
List<JSONObject> params = new ArrayList<>();
|
|
|
@@ -179,11 +199,12 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
|
|
|
|
|
|
//调用案件系统接口,进行推送
|
|
|
if(CollUtil.isEmpty(params)){
|
|
|
- return;
|
|
|
+ return null;
|
|
|
}
|
|
|
JSONObject playLoad = new JSONObject();
|
|
|
playLoad.put("params", params);
|
|
|
- manageHttpClient.addMediaLibrarys(basePath, token, playLoad);
|
|
|
+ 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{
|
|
|
@@ -196,10 +217,12 @@ 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.setUpdateTime(null);
|
|
|
JSONObject evidenceContent = JSON.parseObject(v.getData().toString());
|
|
|
@@ -347,6 +370,12 @@ public class SceneEvidenceServiceImpl extends ServiceImpl<ISceneEvidenceMapper,
|
|
|
if (scenePlus == null)
|
|
|
throw new BusinessException(ErrorCode.FAILURE_CODE_5005);
|
|
|
|
|
|
+ //检验重复导入,一个痕迹物证在同一场景不能被多次导入
|
|
|
+ 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));
|
|
|
+ if(count > 0)
|
|
|
+ throw new BusinessException(JMErrorCode.FAILURE_CODE_20000.code(), JMErrorCode.FAILURE_CODE_20000.message());
|
|
|
+
|
|
|
List<JSONObject> collect = param.getDataList().stream().map(v -> {
|
|
|
JSONObject data = v.getData();
|
|
|
JSONArray medias = data.getJSONArray("media");
|