package com.fdkankan.fusion.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fdkankan.fusion.common.FilePath; import com.fdkankan.fusion.common.util.OBJToGLBUtil; import com.fdkankan.fusion.entity.CaseNumEntity; import com.fdkankan.fusion.mapper.ICaseNumMapper; import com.fdkankan.fusion.request.SceneNumParam; import com.fdkankan.fusion.service.ICaseNumService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.fyun.oss.UploadToOssUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; /** *

* 服务实现类 *

* * @author * @since 2022-07-27 */ @Service public class CaseNumServiceImpl extends ServiceImpl implements ICaseNumService { @Autowired UploadToOssUtil uploadToOssUtil; @Value("${local.obj_path}") private String OBJ_PATH; @Value("${local.glb_path}") private String GLB_PATH; @Override public List getByCaseId(Integer caseId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(CaseNumEntity::getCaseId,caseId); return this.list(wrapper); } @Override public void addBatch(Integer caseId, SceneNumParam sceneNumParam) { List caseNumEntityList = this.getByCaseId(caseId); List newCaseNums = new ArrayList<>(); for (String num : sceneNumParam.getNumList()) { if(caseNumEntityList.size() >0){ List inNums = caseNumEntityList.parallelStream().map(CaseNumEntity::getNum).collect(Collectors.toList()); if(inNums.contains(num)){ continue; } } CaseNumEntity caseNumEntity = new CaseNumEntity(); caseNumEntity.setCaseId(caseId); caseNumEntity.setNumType(sceneNumParam.getType()); caseNumEntity.setNum(num); caseNumEntity.setGlbUrl(getGlbUrl(sceneNumParam.getType(),num)); newCaseNums.add(caseNumEntity); } if(newCaseNums.size() >0){ this.saveBatch(newCaseNums); } } private String getGlbUrl(Integer type, String num) { if(type == 0 || type == 1){ //看看,看见 String objPath = String.format(OBJ_PATH ,num); String glbPath = String.format(GLB_PATH,num); String glbOssPath = FilePath.GLB_OSS_PATH +"/" + num; List fileList = uploadToOssUtil.listKeysFromAli(String.format(FilePath.OBJ_OSS_PATH, num)); for (String fileName : fileList) { File file = new File(objPath); if(!file.exists()){ file.mkdirs(); } String[] split = fileName.split("/"); uploadToOssUtil.downFormAli(fileName,objPath +"/"+split[split.length-1]); } OBJToGLBUtil.objToGlb(objPath,glbPath); uploadToOssUtil.upload(glbPath,glbOssPath); return glbOssPath; } return null; } @Override public void deleteByCaseId(Integer caseId) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(CaseNumEntity::getCaseId,caseId); this.remove(wrapper); } @Override public HashMap> getTypeMap(Integer caseId) { List caseNumList = this.getByCaseId(caseId); HashMap> typeMap = new HashMap<>(); for (CaseNumEntity caseNumEntity : caseNumList) { List numList ; if(typeMap.get(caseNumEntity.getNumType()) == null){ numList = new ArrayList<>(); }else { numList = typeMap.get(caseNumEntity.getNumType()); } numList.add(caseNumEntity.getNum()); typeMap.put(caseNumEntity.getNumType(),numList); } return typeMap; } @Override public List getByNum(String num) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(CaseNumEntity::getNum,num); return this.list(wrapper); } }