package com.fdkankan.manage.controller; import cn.dev33.satoken.stp.StpUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.fdkankan.manage.common.PageInfo; import com.fdkankan.manage.common.ResultData; import com.fdkankan.manage.entity.*; import com.fdkankan.manage.httpClient.client.OverallClient; import com.fdkankan.manage.httpClient.service.OverallService; import com.fdkankan.manage.httpClient.vo.OverallParam; import com.fdkankan.manage.httpClient.vo.OverallVo; import com.fdkankan.manage.service.*; import com.fdkankan.manage.util.SceneStatusUtil; import com.fdkankan.manage.vo.response.SceneVo; 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.ArrayList; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; /** * 全景看看作品 */ @RestController @RequestMapping("/service/manage/overall") public class OverallController { @Autowired OverallService overallService; @Autowired IScenePlusService scenePlusService; @Autowired IScenePlusExtService scenePlusExtService; @Autowired ICommonService commonService; @Autowired IMqSendLogService mqSendLogService; @Autowired IUserService userService; @Autowired ISceneColdStorageService sceneColdStorageService; @PostMapping("/list") public ResultData list(@RequestBody OverallParam param){ if(StringUtils.isNotBlank(param.getUserName())){ param.setUserId(param.getUserName()); } OverallVo vo = overallService.list(param); if(vo.getCode() != 0 ){ return ResultData.error(vo.getCode(),vo.getMsg()); } Object data = vo.getData(); JSONObject dataObj = JSONObject.parseObject(JSONObject.toJSONString(data)); JSONArray array = dataObj.getJSONArray("list"); for (Object o : array) { JSONObject obj = (JSONObject) o; obj.put("thumb",obj.getString("share")); obj.put("sceneCodes",obj.getString("id")); String name = obj.getString("name"); if(StringUtils.isBlank(name)){ name = "无标题"; } obj.put("name",name); } List list = new ArrayList<>(array); long total = dataObj.getLongValue("total"); return ResultData.ok(new PageInfo<>(param.getPageNum(), param.getPageSize(), total, list)); } @PostMapping("/cameraSceneList") public ResultData cameraSceneList(@RequestBody OverallParam param){ param.setType(2); if(StringUtils.isNotBlank(param.getUserName())){ List userList = userService.getLikeByUserName(param.getUserName()); List userIds = userList.stream().map(User::getId).collect(Collectors.toList()); List scenePluses = scenePlusService.getByUserIdsAndLocation(userIds,7); if(scenePluses.isEmpty()){ return ResultData.ok(new PageInfo<>(param.getPageNum(), param.getPageSize(), 0, new ArrayList())); } List numList = scenePluses.stream().map(ScenePlus::getNum).collect(Collectors.toList()); param.setNums(numList); } OverallVo vo = overallService.list(param); if(vo.getCode() != 0 ){ return ResultData.error(vo.getCode(),vo.getMsg()); } Object data = vo.getData(); JSONObject dataObj = JSONObject.parseObject(JSONObject.toJSONString(data)); JSONArray array = dataObj.getJSONArray("list"); List collect = array.stream().map(e -> (JSONObject) e).collect(Collectors.toList()); List numList = collect.stream().map(e -> e.getString("num")).collect(Collectors.toList()); List scenePluses = scenePlusService.getByNumList(numList); List plusIds = scenePluses.stream().map(ScenePlus::getId).collect(Collectors.toList()); HashMap extMap = scenePlusExtService.getByPlusIds(plusIds); HashMap plusMap = new HashMap<>(); scenePluses.forEach( e -> plusMap.put(e.getNum(),e)); HashMap mqSendLogMap = null; if(!numList.isEmpty()){ mqSendLogMap = mqSendLogService.getByNumList(numList); } HashMap coldStorageMap = sceneColdStorageService.getByNumList(numList); List userIds = scenePluses.stream().map(ScenePlus::getUserId).collect(Collectors.toList()); HashMap userMap = userService.getByIds(userIds); HashMap numUserIdMap = new HashMap<>(); scenePluses.forEach( e -> numUserIdMap.put(e.getNum(),e.getUserId())); for (Object o : array) { JSONObject obj = (JSONObject) o; obj.put("webSite",obj.getString("share")); obj.put("sceneCodes",obj.getString("id")); String name = obj.getString("name"); if(StringUtils.isBlank(name)){ name = "无标题"; } obj.put("name",name); String num = obj.getString("num"); ScenePlus scenePlus = plusMap.get(num); if(scenePlus != null){ ScenePlusExt ext = extMap.get(scenePlus.getId()); if(ext != null){ obj.put("algorithmTime",ext.getAlgorithmTime()); obj.put("gps",ext.getGps()); obj.put("addressComponent",commonService.getAddressComponent(ext.getGps())); obj.put("shootCount",ext.getShootCount()); obj.put("computeTime",ext.getComputeTime()); obj.put("calcStatus",scenePlus.getSceneStatus() == -2 ? 1 : scenePlus.getSceneStatus()); } } obj.put("statusString", SceneStatusUtil.getOverallStatusString(obj.getInteger("payStatus"),obj.getInteger("calcStatus"))); if(mqSendLogMap!=null){ MqSendLog mqSendLog = mqSendLogMap.get(num); if(mqSendLog != null && obj.getInteger("calcStatus") == 0){ obj.put("statusString","排队中"); obj.put("calcStatus",-4); } //切图状态:-1切图失败 0等待中 1 排队 2切图中 3切图完成3月26日 16:28文杰3月26日 16:28 if(obj.getInteger("panoStatus")!=null && obj.getInteger("panoStatus") == 1 && mqSendLog == null) { obj.put("panoStatus",2); } } Long userId = numUserIdMap.get(num); if(userId != null){ User user = userMap.get(userId); obj.put("userName",user==null?null :user.getUserName()); } obj.put("isColdStorage",false); if(coldStorageMap != null){ SceneColdStorage sceneColdStorage = coldStorageMap.get(num); if(sceneColdStorage != null){ obj.put("isColdStorage",true); } } } List list = new ArrayList<>(array); long total = dataObj.getLongValue("total"); return ResultData.ok(new PageInfo<>(param.getPageNum(), param.getPageSize(), total, list)); } @PostMapping("/delete") public ResultData delete(@RequestBody OverallParam param){ OverallVo vo = overallService.delete(param.getId()); if(vo.getCode() != 0 ){ return ResultData.error(vo.getCode(),vo.getMsg()); } return ResultData.ok(vo.getData()); } @GetMapping("/downOfflinePage/{workId}") public ResultData downOfflinePage(@PathVariable String workId){ return ResultData.ok(overallService.downOfflinePage(workId)); } }