package com.fdkankan.ucenter.httpClient.service; import cn.hutool.core.io.FileUtil; import com.alibaba.fastjson.JSONObject; import com.fdkankan.common.util.FileUtils; import com.fdkankan.ucenter.common.CameraTypeEnum; import com.fdkankan.ucenter.common.Result; import com.fdkankan.ucenter.common.utils.ShellUtil; import com.fdkankan.ucenter.entity.Camera; import com.fdkankan.ucenter.entity.CameraDetail; import com.fdkankan.ucenter.entity.User; import com.fdkankan.ucenter.httpClient.client.LaserClient; import com.fdkankan.ucenter.service.ICameraService; import com.fdkankan.ucenter.service.IUserService; import com.fdkankan.ucenter.vo.response.SceneNumVo; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Service @Slf4j public class LaserService { @Resource private LaserClient laserClient; @Autowired private IUserService userService; @Autowired ICameraService cameraService; /** * 根据用户获取激光相机数量 * @param token */ public SceneNumVo getLaserSceneNumByUser(String token) { SceneNumVo sceneNumVo = new SceneNumVo(); try { Result sceneNum = laserClient.getSceneNum(token); if(sceneNum != null && sceneNum.getCode() == 200){ sceneNumVo = JSONObject.parseObject(JSONObject.toJSONString(sceneNum.getData()), SceneNumVo.class); sceneNumVo.setTotalNum(sceneNumVo.getSceneNum() + sceneNumVo.getCooperationSceneNum()); } }catch (Exception e){ e.printStackTrace(); } return sceneNumVo ; } public Integer getLaserSceneNum(Map params){ Result result = laserClient.getSceneNumByCamera(params); if(result.getCode() == 200 ){ return (Integer) result.getData(); } return 0; } public void disableCooperation(HashMap detailMap, HashMap cameraMap ){ this.disableCooperation(getCooperationParam(detailMap,cameraMap,null)); } public void enableCameraCooperation(HashMap detailMap,HashMap cameraMap ,String username){ this.enableCameraCooperation(getCooperationParam(detailMap,cameraMap,username)); } public void disableCooperation(List> params) { if(params.size() <=0){ return; } laserClient.cooperationDisable(params); } public List> getCooperationParam(HashMap detailMap,HashMap cameraMap ,String username){ List> laserParams = new ArrayList<>(); List userIds = new ArrayList<>(); for (Long aLong : detailMap.keySet()) { if(detailMap.get(aLong).getCooperationUser()!=null){ userIds.add(detailMap.get(aLong).getCooperationUser()); } } if(userIds.size() >0){ HashMap userMap = userService.getByIds(userIds); for (Long cameraId : detailMap.keySet()) { CameraDetail cameraDetail = detailMap.get(cameraId); if (cameraDetail.getType() == CameraTypeEnum.LASER_TURN.getType()) { Camera cameraEntity = cameraMap.get(cameraId); Map param = new HashMap<>(); param.put("snCode", cameraEntity.getSnCode()); String name = userMap.get(cameraDetail.getCooperationUser()) == null ?null : userMap.get(cameraDetail.getCooperationUser()).getUserName(); param.put("cooperationUserName", name); laserParams.add(param); } } } return laserParams; } public void enableCameraCooperation(List> params) { if(params.size() <=0){ return; } laserClient.cooperationCameraSave(params); } public JSONObject getSceneByNum(String num) { Result result = laserClient.getSceneByNum(num); if(result.getCode() != HttpStatus.OK.value()){ log.error("获取激光转台场景失败!"); return null; } return JSONObject.parseObject(JSONObject.toJSONString(result.getData())); } public String copyDataSource( String oldDataSource,String dataSource) { //计算成功 激光转台相机推送 log.info("激光转台相机 同步 请求 "); try { //创建目录 if(oldDataSource.lastIndexOf("/")!=-1){ oldDataSource = oldDataSource + "_laserData"; }else{ oldDataSource = oldDataSource.substring(0,oldDataSource.length()-1) + "_laserData"; } if(dataSource.lastIndexOf("/")!=-1){ dataSource = dataSource + "_laserData"; }else{ dataSource = dataSource.substring(0,dataSource.length()-1) + "_laserData"; } FileUtils.copyDirectiory(oldDataSource ,dataSource); return dataSource + File.separator + "laserData"; }catch (Exception e){ e.printStackTrace(); } return null; } public void copy(Long camaraId, String createTime, String newNum, Integer status, String path, String sceneKey, String sceneName, Long userId){ String phone = null; String snCode = null; if(userId != null){ User user = userService.getById(userId); phone = user == null ? null :user.getUserName(); } if(camaraId != null){ Camera camera = cameraService.getById(camaraId); snCode = camera == null ? null :camera.getSnCode(); } Map params = new HashMap<>(); params.put("childName",snCode); params.put("createTime", createTime); params.put("phone", phone); params.put("sceneCode", newNum); params.put("snCode",snCode); params.put("status", 0); params.put("password", sceneKey); params.put("title", sceneName); params.put("userId", userId); params.put("isCopy", true); params.put("path",path); Result result = laserClient.saveOrEdit(newNum, params); if( result.getCode() != HttpStatus.OK.value()){ log.error("激光场景状态同步失败!"); } params.put("status",2); result = laserClient.saveOrEdit(newNum, params); if( result.getCode() != HttpStatus.OK.value()){ log.error("激光场景状态同步失败!"); } } }