package com.fdkankan.fusion.service.impl; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; import cn.hutool.jwt.JWT; import cn.hutool.jwt.JWTUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fdkankan.fusion.common.ResultCode; import com.fdkankan.fusion.common.ResultData; import com.fdkankan.fusion.common.util.NumTypeUtils; import com.fdkankan.fusion.entity.*; import com.fdkankan.fusion.exception.BusinessException; import com.fdkankan.fusion.common.PageInfo; import com.fdkankan.fusion.httpClient.client.FdKKClient; import com.fdkankan.fusion.mapper.ICaseMapper; import com.fdkankan.fusion.request.CaseParam; import com.fdkankan.fusion.request.ScenePram; import com.fdkankan.fusion.response.CaseVo; import com.fdkankan.fusion.response.HotVo; import com.fdkankan.fusion.response.SceneVo; import com.fdkankan.fusion.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.lang.model.element.TypeElement; import java.time.Period; import java.util.*; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author * @since 2022-07-27 */ @Service @Slf4j public class CaseServiceImpl extends ServiceImpl implements ICaseService { @Autowired ISceneService sceneService; @Autowired ICaseNumService caseNumService; @Autowired ICaseFilesService caseFilesService; @Autowired IModelService modelService; @Autowired IFusionNumService fusionNumService; @Autowired ITmProjectService tmProjectService; @Autowired ITmDepartmentService tmDepartmentService; @Autowired ITmUserService tmUserService; @Autowired ITmCameraService tmCameraService; @Autowired IMapConfigService mapConfigService; @Autowired ICaseFusionService caseFusionService; @Autowired FdKKClient fdKKClient; @Override public PageInfo pageList(CaseParam param) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if(StringUtils.isNotBlank(param.getCaseTitle())){ wrapper.like(CaseEntity::getCaseTitle,param.getCaseTitle()); } //wrapper.eq(CaseEntity::getUserName,userName); wrapper.eq(CaseEntity::getType,0); wrapper.orderByDesc(CaseEntity::getCreateTime); Page page = this.page( new Page<>(param.getPageNum(), param.getPageSize()), wrapper); List mapIds = page.getRecords().stream().map(CaseEntity::getMapId).collect(Collectors.toList()); if(!mapIds.isEmpty()){ HashMap map = mapConfigService.getMapByIds(mapIds); for (CaseEntity caseEntity : page.getRecords()) { if(caseEntity.getMapId() != null && map.get(caseEntity.getMapId()) != null){ MapConfig mapConfig = map.get(caseEntity.getMapId()); caseEntity.setMapConfig(mapConfig); } } } return PageInfo.PageInfo(page); } @Override public List sceneList(CaseParam param) { if(param.getCaseId() == null){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } if(param.getTypeMap() == null){ HashMap> typeMap = caseNumService.getTypeMap(param.getCaseId()); param.setTypeMap(typeMap); } List listAll = new ArrayList<>(); for (Integer type : param.getTypeMap().keySet()) { List numList = param.getTypeMap().get(type); if(numList ==null || numList.size() <=0 || type ==3){ continue; } if(param.getTypeList() != null && !param.getTypeList().contains(type)){ continue; } ScenePram scenePram = new ScenePram(); scenePram.setType(type); scenePram.setPageNum(1); scenePram.setPageSize(99999); scenePram.setNumList(param.getTypeMap().get(type)); scenePram.setShare("1"); if(param.getTypeList() != null){ scenePram.setStatus(2); } scenePram.setSceneName(param.getSceneName()); PageInfo pageInfo = sceneService.pageList(scenePram); List list1 = (List) pageInfo.getList(); listAll.addAll(list1); } return listAll; } @Override public void addOrUpdate(CaseEntity param) { this.saveOrUpdate(param); } @Override public void addScene(CaseParam param) { if(param.getCaseId() == null){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } CaseEntity caseEntity = this.getById(param.getCaseId()); if(caseEntity == null){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } caseNumService.addBatch(param.getCaseId(),param.getSceneNumParam()); } @Override public void delete(Integer caseId) { if(caseId == null){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } //删除关联的场景 caseNumService.deleteByCaseId(caseId); caseFilesService.deleteByCaseId(caseId); this.removeById(caseId); } @Override public List getByIds(List caseIdIds) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(CaseEntity::getCaseId,caseIdIds); return this.list(wrapper); } @Override public CaseEntity getByTmProjectId(String projectId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(CaseEntity::getTmProjectId,projectId); return this.getOne(wrapper); } @Override public void updateIdenTityStatus(Integer caseId, Integer status) { CaseEntity caseEntity = this.getById(caseId); if(caseEntity != null && StringUtils.isNotBlank(caseEntity.getTmProjectId())){ tmProjectService.updateIdenTityStatus(caseEntity.getTmProjectId(),status); } } @Override public String getDeptId(Integer caseId) { CaseEntity caseEntity = this.getById(caseId); String deptId = caseEntity.getDeptId(); if(caseEntity.getType() ==1){ deptId = tmProjectService.getById(caseEntity.getTmProjectId()).getDeptId(); } return deptId; } @Override public CaseVo getInfo(Integer caseId) { CaseEntity caseEntity = this.getById(caseId); if(caseEntity == null){ throw new BusinessException(ResultCode.CASE_NOT_EXITS); } CaseVo caseVo = new CaseVo(); BeanUtil.copyProperties(caseEntity,caseVo); if(caseEntity.getTmProjectId() != null){ TmProject tmProject = tmProjectService.getById(caseEntity.getTmProjectId()); if(tmProject!= null && tmProject.getIsDelete()!=0){ throw new BusinessException(ResultCode.CASE_NOT_EXITS); } caseVo.setTmProject(tmProject); caseVo.setCaseTitle(tmProject.getProjectName()); } if(!StpUtil.isLogin()){ return caseVo; } if(Long.valueOf(StpUtil.getLoginId().toString()).equals(caseVo.getSysUserId())){ caseVo.setViewAuth(true); caseVo.setIsAuthor(true); caseVo.setEditAuth(true); return caseVo; } Integer platform_id = (Integer) StpUtil.getExtra("platformId"); String roleType = (String) StpUtil.getExtra("roleType"); if("super-admin".equals(roleType)){ caseVo.setViewAuth(true); caseVo.setEditAuth(true); caseVo.setIsAuthor(true); return caseVo; } if(roleType.contains("admin") && caseVo.getPlatformId().equals(platform_id)){ caseVo.setViewAuth(true); caseVo.setEditAuth(true); caseVo.setIsAuthor(true); return caseVo; } try { JSONObject jsonObject = fdKKClient.checkCaseAuth(caseId.toString(),"case",StpUtil.getTokenValue()); Integer code = jsonObject.getInteger("code"); String message = jsonObject.getString("message"); if(code != 0){ throw new BusinessException(code,message); } JSONObject data = jsonObject.getJSONObject("data"); caseVo.setViewAuth( data.getBoolean("viewAuth")); caseVo.setEditAuth( data.getBoolean("editAuth")); // redisUtil.set(format,data.toJSONString(),60); }catch (Exception e){ log.info("checkCaseAuth-error:",e); } return caseVo; } @Override public void addFusionIds(CaseParam param) { if(param.getCaseId() == null || param.getFusionIds() == null ){ throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS); } if(param.getFusionIds().isEmpty()){ List byCaseId = caseNumService.getByCaseId(param.getCaseId()); if(byCaseId.isEmpty()){ throw new BusinessException(ResultCode.REMOVE_ERROR); } } caseFusionService.addFusionIds(param.getFusionIds(),param.getCaseId()); } @Override public CaseEntity getKnumber(String kNumber) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(CaseEntity::getKNumber,kNumber); List list = this.list(wrapper); if(list != null && !list.isEmpty()){ return list.get(0); } return null; } }