package com.fdkankan.ucenter.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fdkankan.common.exception.BusinessException; import com.fdkankan.ucenter.common.PageInfo; import com.fdkankan.ucenter.constant.LoginConstant; import com.fdkankan.ucenter.entity.*; import com.fdkankan.ucenter.service.*; import com.fdkankan.ucenter.vo.request.SceneParam; import com.fdkankan.ucenter.vo.response.ScenePlusVo; import com.fdkankan.ucenter.vo.response.SceneProEntityVo; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; @Service public class FusionService implements IFusionService { @Autowired IScenePlusService scenePlusService; @Autowired IScenePlusExtService scenePlusExtService; @Autowired IUserService userService; @Autowired ICameraService cameraService; @Autowired IScenePlusVoidService scenePlusVoidService; @Override public PageInfo scenePageOnlyV4List(SceneParam param, String token) { PageInfo pageInfo = this.scenePageList(param, token); List list = (List) pageInfo.getList(); List proEntityVos = new ArrayList<>(); for (ScenePlusVo scenePlusVo : list) { SceneProEntityVo vo = new SceneProEntityVo(); vo.setSceneName(scenePlusVo.getTitle()); vo.setStatus(scenePlusVo.getSceneStatus()); BeanUtils.copyProperties(scenePlusVo,vo); BeanUtils.copyProperties(scenePlusVo.getPlusExt(),vo); proEntityVos.add(vo); } Page pageVo = new Page<>(param.getPageNum(),param.getPageSize()); pageVo.setRecords(proEntityVos); pageVo.setTotal(pageInfo.getTotal()); return PageInfo.PageInfo(pageVo); } @Override public PageInfo scenePageList(SceneParam param, String token) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if(StringUtils.isNotBlank(token)){ User user = userService.getByToken(token); if(user == null){ throw new BusinessException(LoginConstant.FAILURE_CODE_3015,LoginConstant.FAILURE_MSG_3015); } wrapper.eq(ScenePlus::getUserId,user.getId()); } List resourceList = new ArrayList<>(); if(param.getType()!= null && param.getType() == 0){ //看看 resourceList = Arrays.asList(1,2,12,13,14); }else if(param.getType()!= null && param.getType() == 1){ //看见 resourceList = Collections.singletonList(3); }else if(param.getType()!=null && param.getType() == 4){ resourceList = Collections.singletonList(4); List plusExtList = scenePlusExtService.getSsObj(); List plusIds = plusExtList.stream().map(ScenePlusExt::getPlusId).collect(Collectors.toList()); if(plusIds.size() >0){ wrapper.in(ScenePlus::getId,plusIds); } } if(param.getStatus() !=null && param.getStatus() == 2){ wrapper.eq(ScenePlus::getSceneStatus,-2); //计算成功 wrapper.eq(ScenePlus::getPayStatus,1); } if(resourceList.size() >0){ wrapper.in(ScenePlus::getSceneSource,resourceList); } if(StringUtils.isNotBlank(param.getSceneName())){ wrapper.like(ScenePlus::getTitle,param.getSceneName()); } if(param.getHaveVoid() !=null && param.getHaveVoid() == 0 && param.getNumList()!= null && param.getNumList().size() >0){ wrapper.in(ScenePlus::getNum, param.getNumList()); } if(param.getHaveVoid() !=null && param.getHaveVoid() == 1 && param.getNumList()!= null && param.getNumList().size() >0){ wrapper.notIn(ScenePlus::getNum, param.getNumList()); } wrapper.orderByDesc(ScenePlus::getCreateTime); Page page = scenePlusService.page(new Page<>(param.getPageNum(), param.getPageSize()), wrapper); if(page.getTotal() <=0){ return PageInfo.PageInfo(page); } List plusIds = page.getRecords().parallelStream().map(ScenePlus::getId).collect(Collectors.toList()); List cameraIds = page.getRecords().parallelStream().map(ScenePlus::getCameraId).collect(Collectors.toList()); List list = new ArrayList<>(); HashMap extMap = scenePlusExtService.getByPlusIds(plusIds); HashMap voidMap = scenePlusVoidService.getByPlusIds(plusIds); HashMap cameraMap = cameraService.getByIds(cameraIds); for (ScenePlus record : page.getRecords()) { ScenePlusVo scenePlusVo = new ScenePlusVo(); BeanUtils.copyProperties(record,scenePlusVo); String snCode = cameraMap.get(scenePlusVo.getCameraId()) == null ? "" :cameraMap.get(scenePlusVo.getCameraId()).getSnCode(); scenePlusVo.setPlusExt(extMap.get(record.getId())); scenePlusVo.setSnCode(snCode); scenePlusVo.setSceneType(param.getType()); scenePlusVo.setPlusVoid(voidMap.get(record.getId())); list.add(scenePlusVo); } Page pageVo = new Page<>(param.getPageNum(),param.getPageSize()); pageVo.setRecords(list); pageVo.setTotal(page.getTotal()); return PageInfo.PageInfo(pageVo); } }