123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- package com.fdkankan.fusion.controller;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.fdkankan.fusion.common.ResultCode;
- import com.fdkankan.fusion.common.ResultData;
- import com.fdkankan.fusion.common.ai.BBoxHierarchyBuilder;
- import com.fdkankan.fusion.common.ai.FloorUser;
- import com.fdkankan.fusion.common.ai.Floors;
- import com.fdkankan.fusion.common.util.Openai;
- import com.fdkankan.fusion.common.util.UploadToOssUtil;
- import com.fdkankan.fusion.config.FusionConfig;
- import com.fdkankan.fusion.entity.*;
- import com.fdkankan.fusion.exception.BusinessException;
- import com.fdkankan.fusion.request.AiParam;
- import com.fdkankan.fusion.response.FloorPathVo;
- import com.fdkankan.fusion.service.*;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.ibatis.annotations.Param;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.*;
- import scala.Int;
- import java.io.File;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- /**
- * <p>
- * 前端控制器
- * </p>
- *
- * @author
- * @since 2024-12-10
- */
- @RestController
- @RequestMapping("/ai")
- @Slf4j
- public class AiController {
- @Autowired
- FusionConfig fusionConfig;
- @Autowired
- AiService aiService;
- @PostMapping("/test")
- public ResultData test(@RequestParam(required = false) String path ) throws IOException {
- FloorUser floorPlanResults = aiService.coverFloorPlanJson(path);
- // BBoxHierarchy.buildHierarchy(floorPlanResults.getFloors());
- JSONArray jsonArray = BBoxHierarchyBuilder.buildHierarchyStart(floorPlanResults.getFloors());
- return ResultData.ok(jsonArray);
- }
- @PostMapping("/getByImage")
- public ResultData getByImage(@RequestBody AiParam param){
- if(StringUtils.isBlank(param.getImageUrl())){
- throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
- }
- try {
- return ResultData.ok(Openai.gptVision(param.getImageUrl(),fusionConfig.getAiUrl(),null));
- } catch (Exception e) {
- log.info("Openai-error:{}",e);
- throw new BusinessException(ResultCode.AI_ERROR);
- }
- }
- @Autowired
- ICaseNumService caseNumService;
- @Autowired
- IScenePlusService scenePlusService;
- @Autowired
- IAiContentService aiContentService;
- @GetMapping("/getFloor/{caseId}")
- public ResultData getFloor(@PathVariable Integer caseId){
- String foorPath = "/oss/4dkankan/scene_view_data/%s/user";
- String fileName = "floorplan-ai";
- String extName = "json";
- List<CaseNumEntity> byCaseId = caseNumService.getByCaseId(caseId);
- List<String> numList = byCaseId.stream().filter(e -> e.getNumType() != 3 && e.getNumType() != 2 && e.getNumType()!=5).map(CaseNumEntity::getNum).collect(Collectors.toList());
- List<ScenePlus> scenePluses = scenePlusService.getByNumListAndAi(numList);
- AiContent aiContent = aiContentService.getById(1);
- List<FloorPathVo> pathVos = new ArrayList<>();
- for (ScenePlus caseNumEntity : scenePluses) {
- String path = String.format(foorPath, caseNumEntity.getNum());
- File file = new File(path);
- File[] files = file.listFiles();
- if(files == null || files.length <=0){
- continue;
- }
- for (File file1 : files) {
- if(file1.getName().contains(fileName) && file1.getName().contains(extName)){
- try {
- FloorUser floorPlanResults = aiService.coverFloorPlanJson(file1.getPath());
- for (Floors floor : floorPlanResults.getFloors()) {
- if(floor == null ){
- continue;
- }
- JSONObject jsonObject = BBoxHierarchyBuilder.buildHierarchyStart(floor);
- if(jsonObject == null ){
- continue;
- }
- FloorPathVo pathVo = new FloorPathVo();
- pathVo.setNum(caseNumEntity.getNum());
- pathVo.setTitle(caseNumEntity.getTitle() + floor.getFloorsName());
- pathVo.setParams(jsonObject);
- pathVo.setUrl(path.replace("4dkankan/","")+"/cad-style-3-"+floor.getSubgroup()+".jpg");
- if(aiContent!= null && StringUtils.isNotBlank(aiContent.getContent())){
- pathVo.setParamContent(aiContent.getContent());
- }
- pathVos.add(pathVo);
- }
- }catch (Exception e){
- log.info("getFloor-error:{}",e);
- }
- }
- }
- }
- return ResultData.ok(pathVos);
- }
- }
|