package com.fdkankan.contro.service.impl; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fdkankan.contro.constant.DetectType; import com.fdkankan.contro.entity.SceneMarkShape; import com.fdkankan.contro.entity.SceneShapeEnum; import com.fdkankan.contro.mapper.MarkShapeMapper; import com.fdkankan.contro.service.ISceneMarkShapeService; import com.fdkankan.contro.service.SceneShapeEnumService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; /** * Created by Xiewj on 2021/11/23 0026 10:14 */ @Slf4j @Service public class SceneMarkShapeServiceImpl extends ServiceImpl implements ISceneMarkShapeService { @Autowired private SceneShapeEnumService sceneShapeEnumService; @Override public SceneMarkShape readDetectJson(String jsonPath) { String strings = FileUtil.readString(jsonPath, "UTF-8"); JSONObject bbbb = JSONObject.parseObject(strings); SceneMarkShape parse = JSONObject.toJavaObject(bbbb, SceneMarkShape.class); System.out.println(parse); if (ObjectUtil.isNull(parse.getShapes())){ return null; } List shapes = parse.getShapes(); for (JSONObject shape : shapes) { SceneShapeEnum category = sceneShapeEnumService.findByClassName(shape.getString("category")); if (ObjectUtil.isNull(category)){ SceneShapeEnum sceneShapeEnum = new SceneShapeEnum(); sceneShapeEnum.setName(shape.getString("name")); sceneShapeEnum.setClassName(shape.getString("category")); sceneShapeEnumService.save(sceneShapeEnum); } } return parse; } @Override public List readDetectJsonStr(String num,String context) { JSONObject bbbb = JSONObject.parseObject(context); JSONArray imgBoxsList = bbbb.getJSONArray("imgBoxsList"); List list = new ArrayList<>(); for (Object o : imgBoxsList) { SceneMarkShape parse = JSONObject.toJavaObject(JSONObject.parseObject(String.valueOf(o)), SceneMarkShape.class); System.out.println(parse); if (ObjectUtil.isNull(parse.getShapes())){ return null; } parse.setType(DetectType.PANO.getCode()); parse.setNum(num); List shapes = parse.getShapes(); for (JSONObject shape : shapes) { shape.remove("name"); } list.add(parse); } return list; } @Override public SceneMarkShape findByNumAndImagePathAndType(String num, String imagePath, Integer type) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.eq(SceneMarkShape::getNum,num); wrapper.eq(SceneMarkShape::getImagePath,imagePath); wrapper.eq(SceneMarkShape::getType,type); return getOne(wrapper); } @Override public List findByNumAndType(String num,Integer type) { LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); wrapper.eq(SceneMarkShape::getNum,num); wrapper.eq(SceneMarkShape::getType,type); return list(wrapper); } }