123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- package com.fdkankan.fusion.service.impl;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
- import com.fdkankan.fusion.common.ResultCode;
- import com.fdkankan.fusion.entity.CaseFusion;
- import com.fdkankan.fusion.entity.FusionNum;
- import com.fdkankan.fusion.entity.Model;
- import com.fdkankan.fusion.entity.jsonEntity.Transform;
- import com.fdkankan.fusion.exception.BusinessException;
- import com.fdkankan.fusion.mapper.IFusionNumMapper;
- import com.fdkankan.fusion.request.CaseParam;
- import com.fdkankan.fusion.request.FusionParam;
- import com.fdkankan.fusion.response.FusionNumVo;
- import com.fdkankan.fusion.response.SceneVo;
- import com.fdkankan.fusion.service.*;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- 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;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author
- * @since 2022-08-04
- */
- @Service
- public class FusionNumServiceImpl extends ServiceImpl<IFusionNumMapper, FusionNum> implements IFusionNumService {
- @Autowired
- ICaseFusionService caseFusionService;
- @Autowired
- ICaseService caseService;
- @Autowired
- IModelService modelService;
- @Autowired
- IFusionMeterService fusionMeterService;
- @Autowired
- ICaseTagPointService caseTagPointService;
- @Override
- public List<FusionNum> getByNum(String num) {
- LambdaQueryWrapper<FusionNum> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(FusionNum::getModelId,num);
- return this.list(wrapper);
- }
- @Override
- public List<FusionNum> getListByFusionIdList(List<Integer> fusionIdList) {
- LambdaQueryWrapper<FusionNum> wrapper = new LambdaQueryWrapper<>();
- wrapper.in(FusionNum::getFusionId,fusionIdList);
- wrapper.orderByDesc(FusionNum::getCreateTime);
- return this.list(wrapper);
- }
- @Override
- public List<FusionNumVo> getListByCaseId(Integer caseId, Integer fusionNumId,String token) {
- List<FusionNum> fusionNumList = new ArrayList<>();
- if(fusionNumId!=null){
- FusionNum fusionNum = this.getById(fusionNumId);
- if(fusionNum!=null){
- fusionNumList = Collections.singletonList(fusionNum);
- }
- }else {
- List<CaseFusion> fusionList = caseFusionService.getListByCaseId(caseId);
- if(fusionList.size()<=0){
- return new ArrayList<>();
- }
- List<Integer> fusionIdList = fusionList.parallelStream().map(CaseFusion::getFusionId).collect(Collectors.toList());
- fusionNumList = getListByFusionIdList(fusionIdList);
- }
- if(fusionNumList.size() <=0){
- return new ArrayList<>();
- }
- CaseParam param =new CaseParam();
- HashMap<Integer, List<String>> typeMap = this.getTypeMap(fusionNumList);
- param.setTypeMap(typeMap);
- param.setCaseId(caseId);
- List<SceneVo> sceneVos = caseService.sceneList(param, token);
- HashMap<Integer,SceneVo> sceneMap = new HashMap<>();
- sceneVos.forEach(entity -> sceneMap.put(entity.getModelId(),entity));
- List<FusionNumVo> numVoList = new ArrayList<>();
- for (FusionNum fusionNum : fusionNumList) {
- SceneVo sceneVo = sceneMap.get(fusionNum.getModelId());
- if(sceneVo == null ){
- continue;
- }
- if(sceneVo.getStatus() == null){
- sceneVo.setStatus(2);
- }
- FusionNumVo fusionNumVo = new FusionNumVo();
- BeanUtils.copyProperties(fusionNum,fusionNumVo);
- Transform transform = JSONObject.parseObject(fusionNum.getTransform(), Transform.class);
- fusionNumVo.setTransform(transform);
- fusionNumVo.setSceneData(sceneVo);
- numVoList.add(fusionNumVo);
- }
- return numVoList;
- }
- private HashMap<Integer, List<String>> getTypeMap( List<FusionNum> list) {
- HashMap<Integer,List<String>> typeMap = new HashMap<>();
- List<Integer> modelIds = list.parallelStream().map(FusionNum::getModelId).collect(Collectors.toList());
- List<Model> modelList = modelService.getListByModelIds(modelIds);
- for (Model model : modelList) {
- List<String> numList ;
- if(typeMap.get(model.getType()) == null){
- numList = new ArrayList<>();
- }else {
- numList = typeMap.get(model.getType());
- }
- String num = StringUtils.isEmpty(model.getNum()) ? model.getModelId().toString(): model.getNum();
- numList.add(num);
- typeMap.put(model.getType(),numList);
- }
- return typeMap;
- }
- @Override
- public FusionNumVo add(FusionParam param) {
- if(param.getModelId()==null || param.getCaseId() == null){
- throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
- }
- Model model = modelService.getById(param.getModelId());
- if(model == null){
- throw new BusinessException(ResultCode.MODEL_NOT_EXIST);
- }
- List<CaseFusion> list = caseFusionService.getListByCaseId(param.getCaseId());
- CaseFusion caseFusion = null;
- if(list.size() <=0){
- caseFusion = new CaseFusion();
- caseFusion.setCaseId(param.getCaseId());
- caseFusionService.save(caseFusion);
- list.add(caseFusion);
- }
- caseFusion = list.get(0);
- FusionNum fusionNum = new FusionNum();
- BeanUtils.copyProperties(param,fusionNum);
- fusionNum.setFusionId(caseFusion.getFusionId());
- fusionNum.setTransform(JSONObject.toJSONString(param.getTransform()));
- this.save(fusionNum);
- List<FusionNumVo> numVoList = this.getListByCaseId(param.getCaseId(), fusionNum.getFusionNumId(), param.getToken());
- if(numVoList.size()<=0){
- throw new BusinessException(ResultCode.ERROR);
- }
- return numVoList.get(0);
- }
- @Override
- public void updateModel(FusionParam param) {
- if(param.getFusionNumId() == null){
- throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
- }
- LambdaUpdateWrapper<FusionNum> wrapper = new LambdaUpdateWrapper<>();
- wrapper.eq(FusionNum::getFusionNumId,param.getFusionNumId());
- if(param.getTransform()!=null){
- wrapper.set(FusionNum::getTransform,JSONObject.toJSONString(param.getTransform()));
- }
- if(param.getOpacity()!=null){
- wrapper.set(FusionNum::getOpacity,param.getOpacity());
- }
- if(param.getBottom()!=null){
- wrapper.set(FusionNum::getBottom,param.getBottom());
- }
- if(param.getHide()!=null){
- wrapper.set(FusionNum::getHide,param.getHide());
- }
- this.update(wrapper);
- }
- @Override
- public void deleteByCaseId(Integer caseId) {
- List<CaseFusion> caseFusionList = caseFusionService.getListByCaseId(caseId);
- if(caseFusionList.size() >0){
- List<Integer> fusionIds = caseFusionList.parallelStream().map(CaseFusion::getFusionId).collect(Collectors.toList());
- if(fusionIds.size() >0){
- LambdaQueryWrapper<FusionNum> wrapper = new LambdaQueryWrapper<>();
- wrapper.in(FusionNum::getFusionId,fusionIds);
- this.remove(wrapper);
- }
- }
- }
- /**
- * 删除视图不存在的场景码
- */
- @Override
- public void deleteByNumList(Integer caseId,List<String> deleteNum) {
- if(deleteNum.size() <=0){
- return;
- }
- List<CaseFusion> caseFusionList = caseFusionService.getListByCaseId(caseId);
- if(caseFusionList.size() >0){
- List<Integer> fusionIds = caseFusionList.parallelStream().map(CaseFusion::getFusionId).collect(Collectors.toList());
- if(fusionIds.size() >0){
- LambdaQueryWrapper<Model> wrapper = new LambdaQueryWrapper<>();
- wrapper.in(Model::getNum,deleteNum);
- List<Model> list = modelService.list(wrapper);
- LambdaQueryWrapper<Model> wrapper2 = new LambdaQueryWrapper<>();
- wrapper2.in(Model::getModelId,deleteNum);
- List<Model> list2 = modelService.list(wrapper);
- list.addAll(list2);
- if(list.size()<=0){
- return;
- }
- List<Integer> modelIds = list.parallelStream().map(Model::getModelId).collect(Collectors.toList());
- LambdaQueryWrapper<FusionNum> deleteWr = new LambdaQueryWrapper<>();
- deleteWr.in(FusionNum::getFusionId,fusionIds);
- deleteWr.in(FusionNum::getModelId,modelIds);
- List<FusionNum> list1 = this.list(deleteWr);
- for (FusionNum fusionNum : list1) {
- fusionMeterService.deleteByModelId(fusionNum.getModelId());
- }
- List<Integer> models = list1.parallelStream().map(FusionNum::getModelId).collect(Collectors.toList());
- caseTagPointService.deleteByModelIds(models);
- this.remove(deleteWr);
- }
- }
- }
- @Override
- public void deleteByModelId(Integer modelId) {
- LambdaQueryWrapper<FusionNum> wrapper = new LambdaQueryWrapper<>();
- wrapper.eq(FusionNum::getModelId,modelId);
- this.remove(wrapper);
- }
- }
|