package com.fdkankan.manage.controller; import com.alibaba.fastjson.JSONObject; import com.fdkankan.fyun.face.FYunFileServiceInterface; import com.fdkankan.manage.common.ResultCode; import com.fdkankan.manage.entity.SceneCopyLog; import com.fdkankan.manage.entity.ScenePlusExt; import com.fdkankan.manage.exception.BusinessException; import com.fdkankan.manage.common.ResultData; import com.fdkankan.manage.entity.ScenePlus; import com.fdkankan.manage.entity.ScenePro; import com.fdkankan.manage.httpClient.client.FdKKClient; import com.fdkankan.manage.service.*; import com.fdkankan.manage.vo.request.SceneParam; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.Arrays; import java.util.HashMap; /** * 相机场景管理 */ @RestController @RequestMapping("/service/manage/scene") @Slf4j public class SceneController { @Autowired ISceneProService sceneProService; @Autowired IScenePlusService scenePlusService; @Autowired IScenePlusExtService scenePlusExtService; @Autowired IDownService downService; @Autowired FdKKClient fdKKClient; @Autowired FYunFileServiceInterface fYunFileServiceInterface; @Autowired ISceneCopyLogService sceneCopyLogService; @PostMapping("/list") public ResultData list(@RequestBody SceneParam param){ return ResultData.ok(sceneProService.pageList(param)); } /** * 场景迁移 * num 迁移场景码 * snCode 迁移至相机snCode */ @PostMapping("/move") public ResultData move(@RequestBody SceneParam param){ if(StringUtils.isEmpty(param.getNum()) || StringUtils.isEmpty(param.getSnCode())){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } sceneProService.move(param); return ResultData.ok(); } /** * 场景复制 * num 场景码 */ @PostMapping("/copy") public ResultData copy(@RequestBody SceneParam param) throws Exception { if(StringUtils.isEmpty(param.getNum())){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } sceneProService.copy(param.getNum()); return ResultData.ok(); } /** * 场景删除 * num 场景码 */ @PostMapping("/delete") public ResultData delete(@RequestBody SceneParam param){ if(StringUtils.isEmpty(param.getNum())){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } sceneProService.deleteByNum(param.getNum()); return ResultData.ok(); } /** * 检查下载 * num 场景码 */ @GetMapping("/checkDownLoad") public ResultData checkDownLoad(@RequestParam(required = false) String num, @RequestParam(required = false,defaultValue = "0") Integer isObj){ return ResultData.ok(downService.checkDownLoad(num,isObj)); } /** * 下载场景 * num 场景码 */ @GetMapping("/downScene") public ResultData downScene(@RequestParam(required = false) String num, @RequestParam(required = false,defaultValue = "0") Integer isObj){ return ResultData.ok(downService.down(num,isObj)); } /** * 下载场景进度条 * num 场景码 */ @GetMapping("/downloadProcess") public ResultData downloadProcess(@RequestParam(required = false) String num, @RequestParam(required = false,defaultValue = "0") Integer isObj){ return ResultData.ok(downService.downloadProcess(num,isObj)); } /** * 场景重算 * num 场景码 */ @GetMapping("/rebuildScene") public ResultData rebuild(@RequestParam(required = false) String num){ String dataSource = null; ScenePro scenePro = sceneProService.getByNum(num); if(scenePro!=null && scenePro.getSceneSource() != 4){ throw new BusinessException(ResultCode.V3_SCENE_REBUILD); } ScenePlus scenePlus = scenePlusService.getByNum(num); if(scenePlus == null && scenePro == null){ throw new BusinessException(ResultCode.SCENE_NOT_EXIST); } if(scenePro != null){ dataSource = scenePro.getDataSource(); } if(scenePlus != null){ ScenePlusExt scenePlusExt= scenePlusExtService.getByPlusId(scenePlus.getId()); if(scenePlusExt!= null){ dataSource = scenePlusExt.getDataSource(); } } if(StringUtils.isBlank(dataSource)){ throw new BusinessException(ResultCode.SCENE_REBUILD_ERROR); } Long countByNewNum = sceneCopyLogService.getCountByNewNum(num); if(countByNewNum >0){ throw new BusinessException(ResultCode.COPY_NUM_NOTREBUILD); } if(!fYunFileServiceInterface.fileExist(dataSource.replace("/mnt/data","home")+"/data.fdage")){ throw new BusinessException(ResultCode.SCENE_REBUILD_ERROR); } HashMap paramMap = new HashMap<>(); paramMap.put("num",num); try { JSONObject jsonObject = fdKKClient.rebuildScene(paramMap); Integer code = jsonObject.getInteger("code"); if(code != 0){ log.error("场景重算失败:{},{}",num,jsonObject); throw new BusinessException(ResultCode.SCENE_REBUILD_ERROR); } }catch (Exception e){ throw new BusinessException(ResultCode.SCENE_REBUILD_ERROR); } return ResultData.ok(); } }