whyclxw
2024-01-27 cf2df97ee7c5bb861526ef0ec9beaa174c04c872
测试视频转换
3个文件已修改
1个文件已删除
17个文件已添加
786 ■■■■■ 已修改文件
pom.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/FFM/Contants.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/FFM/ConverVideoTest.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/FFM/ConverVideoUtils.java 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/FFM/FfmpegMAviToMp4.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/Service/BattGroupDataService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/Service/SocketCmdService.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/Test3dApplication.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/config/MybatisPlusConfig.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/controller/BattGroupDataController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/controller/SocketController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/injector/CustomSqlInjector.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/mapper/BattGroupDataMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/mapper/CustomMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/mapper/SocketCmdMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/pojo/BattgroupData.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/lxw/test3d/pojo/SocketCmd.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/config/application-dev.yml 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/0Mapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/lxw/test3d/Test3dApplicationTests.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
test3d.db 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -48,12 +48,16 @@
            <classifier>jdk15</classifier>
        </dependency>
        <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
        </dependency>
        <!--mybatis 及mybatis-plus-->
        <!--<dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.1.2</version>
        </dependency>-->
        </dependency>
        <!--websocket-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
@@ -74,11 +78,11 @@
        </dependency>
        <!--连接池-->
        <!--<dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>3.1.2</version>
        </dependency>-->
        </dependency>
        <!--pageHelper分页-->
        <dependency>
src/main/java/com/lxw/test3d/FFM/Contants.java
New file
@@ -0,0 +1,21 @@
package com.lxw.test3d.FFM;
public class Contants {
    /**
     * @Description:(3.工具类主类)设置转码工具的各个路径
     * @param:@param args
     * @return:void
     * @author:Zoutao
     * @date:2018-6-22
     * @version:V1.0
     */
    //public static final String ffmpegpath = "D:/ffmpeg-20171225-be2da4c-win64-static/bin/ffmpeg.exe";        // ffmpeg工具安装位置
    public static final String ffmpegpath = "E:/2软件下载包/ffmpeg/ffmpeg-4.3.1-2021-01-01-essentials_build/bin/ffmpeg.exe";        // ffmpeg工具安装位置
    public static final String videofolder = "E:/ffmpeg/file/"; // 需要被转换格式的视频目录
    public static final String targetfolder = "E:/ffmpeg/temp/"; // 转码后视频保存的目录
}
src/main/java/com/lxw/test3d/FFM/ConverVideoTest.java
New file
@@ -0,0 +1,51 @@
package com.lxw.test3d.FFM;
/**
 * @ClassName ConverVideoTest
 * @Desecription TODO
 * @Author tkk
 * @Date 2019/11/13 9:43
 **/
public class ConverVideoTest {
    /**
     * @Description:(1.转码功能调用)
     * @param:@param yuanPATH
     * @return:void
     * @author:Zoutao
     * @date:2018-6-23
     * @version:V1.0
     */
    /*本地测试专用--zoutao*/
    public static void main(String[] args) {
        //System.out.println(DateUtils.getCurrentDateTime());
        ConverVideoTest c = new ConverVideoTest();
        //String yuanPATH = "D:/file/IMG_4141.MP4";  //本地源视频
        String yuanPATH = "E:\\ffmpeg\\2.avi";  //本地源视频
        c.run(yuanPATH);
        //System.out.println(DateUtils.getCurrentDateTime());
    }
    //web调用
    public void run(String yuanPATH) {
        try {
            // 转码开始
            //String filePath = "D:/testfile/video/rmTest.rm";  //本地源视频测试
            String filePath = yuanPATH;                //web传入的源视频
            System.out.println("ConverVideoTest说:传入工具类的源视频为:"+filePath);
            ConverVideoUtils zout = new ConverVideoUtils(filePath);  //传入path
            String targetExtension = ".mp4";                  //设置转换的格式
            boolean isDelSourseFile = true; //删除源文件
            boolean beginConver = zout.beginConver(targetExtension,isDelSourseFile);
            System.out.println(beginConver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
src/main/java/com/lxw/test3d/FFM/ConverVideoUtils.java
New file
@@ -0,0 +1,338 @@
package com.lxw.test3d.FFM;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * @Title: ConverVideoUtils.java
 * @Package:com.resource.mytools
 * @Description:(2.转码和截图功能)
 * @see:接收Contants实体的路径
 * @author:Zoutao
 * @date:2018-7-15
 * @version:V1.0
 */
public class ConverVideoUtils {
    private String sourceVideoPath;                            //源视频路径
    private String filerealname;                             //文件名不包括后缀名
    private String filename;                                 //包括后缀名
    private String videofolder = Contants.videofolder;         // 别的格式视频的目录
    private String targetfolder = Contants.targetfolder;     // flv视频的目录
    private String ffmpegpath = Contants.ffmpegpath;         // ffmpeg.exe的目录
    public ConverVideoUtils() {
    }
    //重构构造方法,传入源视频
    public ConverVideoUtils(String path) {
        sourceVideoPath = path;
    }
    //set和get方法传递path
    public String getPATH() {
        return sourceVideoPath;
    }
    public void setPATH(String path) {
        sourceVideoPath = path;
    }
    /**
     * 转换视频格式
     * @param  targetExtension 目标视频后缀名 .xxx
     * @param  isDelSourseFile 转换完成后是否删除源文件
     * @return
     */
    public boolean beginConver(String targetExtension, boolean isDelSourseFile) {
        File fi = new File(sourceVideoPath);
        filename = fi.getName();//获取文件名+后缀名
        filerealname = filename.substring(0, filename.lastIndexOf(".")); //获取不带后缀的文件名-后面加.toLowerCase()小写
        System.out.println("----接收到文件("+sourceVideoPath+")需要转换-------");
        //检测本地是否存在
        /*if (checkfile(sourceVideoPath)) {
            System.out.println(sourceVideoPath + "========该文件存在哟 ");
            return false;
        }*/
        System.out.println("----开始转文件(" + sourceVideoPath + ")-------------------------- ");
        //执行转码机制
        if (process(targetExtension,isDelSourseFile)) {
            System.out.println("视频转码结束================= ");
            //删除原视频+临时视频
            /*if (isDelSourseFile) {
                deleteFile(sourceVideoPath);
            }*/
            /*File file1 = new File(sourceVideoPath);
             if (file1.exists()){
                 System.out.println("删除原文件-可用:"+sourceVideoPath);
                 file1.delete();
              }*/
            String temppath=videofolder + filerealname + ".avi";
            File file2 = new File(temppath);
            if (file2.exists()){
                System.out.println("删除临时文件:"+temppath);
                file2.delete();
            }
            sourceVideoPath = null;
            return true;
        } else {
            sourceVideoPath = null;
            return false;
        }
    }
    /**
     * 检查文件是否存在-多处都有判断
     * @param path
     * @return
     */
    /*private boolean checkfile(String path) {
        path = sourceVideoPath;
        File file = new File(path);
        try {
            if (file.exists()) {
                System.out.println("视频文件不存在============="+path);
                return true;
            } else {
                System.out.println("视频文件存在"+path);
                return false;
            }
        } catch (Exception e) {
            // TODO: handle exception
            System.out.println("拒绝对文件进行读访问");
        }
        return false;
    }*/
    /**
     * 实际转换视频格式的方法
     * @param targetExtension 目标视频后缀名
     * @param isDelSourseFile 转换完成后是否删除源文件
     * @return
     */
    private boolean process(String targetExtension, boolean isDelSourseFile) {
        //先判断视频的类型-返回状态码
        int type = checkContentType();
        boolean status = false;
        //根据状态码处理
        if (type == 0) {
            System.out.println("ffmpeg可以转换,统一转为mp4文件");
            status = processVideoFormat(sourceVideoPath,targetExtension,isDelSourseFile);//可以指定转换为什么格式的视频
        } /*else if (type == 1) {
            //如果type为1,将其他文件先转换为avi,然后在用ffmpeg转换为指定格式
            System.out.println("ffmpeg不可以转换,先调用mencoder转码avi");
            String avifilepath = processAVI(type);
            if (avifilepath == null){
                // 转码失败--avi文件没有得到
                System.out.println("mencoder转码失败,未生成AVI文件");
                return false;
            }else {
                System.out.println("生成AVI文件成功,ffmpeg开始转码:");
                status = processVideoFormat(avifilepath,targetExtension,isDelSourseFile);
            }
        }*/
        return status;   //执行完成返回布尔类型true
    }
    /**
     * 检查文件类型
     * @return
     */
    private int checkContentType() {
        //取得视频后缀-
        String type = sourceVideoPath.substring(sourceVideoPath.lastIndexOf(".") + 1, sourceVideoPath.length()).toLowerCase();
        System.out.println("源视频类型为:"+type);
        // 如果是ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
        if (type.equals("avi")) {
            return 0;
        } else if (type.equals("mpg")) {
            return 0;
        } else if (type.equals("wmv")) {
            return 0;
        } else if (type.equals("3gp")) {
            return 0;
        } else if (type.equals("mov")) {
            return 0;
        } else if (type.equals("mp4")) {
            return 0;
        } else if (type.equals("asf")) {
            return 0;
        } else if (type.equals("asx")) {
            return 0;
        } else if (type.equals("flv")) {
            return 0;
        }else if (type.equals("mkv")) {
            return 0;
        }
        System.out.println("上传视频格式异常");
        return 9;
    }
    /**
     * 转换为指定格式--zoutao
     * ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等)
     * @param oldfilepath
     * @param targetExtension 目标格式后缀名 .xxx
     * @param isDelSourceFile 转换完成后是否删除源文件
     * @return
     */
    private boolean processVideoFormat(String oldfilepath, String targetExtension, boolean isDelSourceFile) {
        System.out.println("调用了ffmpeg.exe工具");
        //先确保保存转码后的视频的文件夹存在
        File TempFile = new File(targetfolder);
        if (TempFile.exists()) {
            if (TempFile.isDirectory()) {
                System.out.println("该文件夹存在。");
            }else {
                System.out.println("同名的文件存在,不能创建文件夹。");
            }
        }else {
            System.out.println("文件夹不存在,创建该文件夹。");
            TempFile.mkdir();
        }
        List<String> commend = new ArrayList<String>();
        commend.add(ffmpegpath);
        commend.add("-i");
        commend.add(oldfilepath);
        commend.add("-c:v");
        commend.add("libx264");
        commend.add("-y");
        commend.add("-s");
        commend.add("1280x720");
        commend.add("-pix_fmt");
        commend.add("yuv420p");
        commend.add("-b:a");
        commend.add("63k");
        commend.add("-b:v");
        commend.add("753k");
        commend.add("-r");
        commend.add("18");
        /*commend.add(ffmpegpath);         //ffmpeg.exe工具地址
        commend.add("-i");
        commend.add(oldfilepath);            //源视频路径
        commend.add("-vf");             //视频分辨率处理
        commend.add("scale=320:240,setdar=4:3");   //9:16
        commend.add("-vcodec");
        commend.add("h263");  //
        commend.add("-ab");        //新增4条
        commend.add("128");      //高品质:128 低品质:64
        commend.add("-acodec");
        commend.add("mp3");      //音频编码器:原libmp3lame
        commend.add("-ac");
        commend.add("2");       //原1
        commend.add("-ar");
        commend.add("22050");   //音频采样率22.05kHz
        commend.add("-r");
        commend.add("29.97");  //高品质:29.97 低品质:15
        commend.add("-c:v");
        commend.add("libx264");    //视频编码器:视频是h.264编码格式
        commend.add("-strict");
        commend.add("-2");*/
        String newMp4Filepath=targetfolder + filerealname + targetExtension;
        commend.add(newMp4Filepath);  // //转码后的路径+名称,是指定后缀的视频
        //先确保保存转码后的视频的文件夹存在
        File oldFile = new File(newMp4Filepath);
        if (oldFile.exists()) {
            oldFile.delete();
        }
        //打印命令--zoutao
        StringBuffer test = new StringBuffer();
        for (int i = 0; i < commend.size(); i++) {
            test.append(commend.get(i) + " ");
        }
        System.out.println("ffmpeg输入的命令:"+test);
        try {
            //多线程处理加快速度-解决rmvb数据丢失builder名称要相同
            ProcessBuilder builder = new ProcessBuilder();
            builder.command(commend);
            Process p = builder.start();   //多线程处理加快速度-解决数据丢失
            final InputStream is1 = p.getInputStream();
            final InputStream is2 = p.getErrorStream();
            new Thread() {
                public void run() {
                    BufferedReader br = new BufferedReader(
                            new InputStreamReader(is1));
                    try {
                        String lineB = null;
                        while ((lineB = br.readLine()) != null) {
                            if (lineB != null)
                                System.out.println(lineB);    //打印mencoder转换过程代码
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }.start();
            new Thread() {
                public void run() {
                    BufferedReader br2 = new BufferedReader(
                            new InputStreamReader(is2));
                    try {
                        String lineC = null;
                        while ((lineC = br2.readLine()) != null) {
                            if (lineC != null)
                                System.out.println(lineC);    //打印mencoder转换过程代码
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }.start();
            p.waitFor();        //进程等待机制,必须要有,否则不生成mp4!!!
            System.out.println("生成mp4视频为:"+videofolder + filerealname + ".mp4");
            return true;
        }
        catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
}
src/main/java/com/lxw/test3d/FFM/FfmpegMAviToMp4.java
New file
@@ -0,0 +1,6 @@
package com.lxw.test3d.FFM;
public class FfmpegMAviToMp4 {
}
src/main/java/com/lxw/test3d/Service/BattGroupDataService.java
New file
@@ -0,0 +1,33 @@
package com.lxw.test3d.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lxw.test3d.dto.Response;
import com.lxw.test3d.mapper.BattGroupDataMapper;
import com.lxw.test3d.pojo.BattgroupData;
import com.lxw.test3d.pojo.SocketCmd;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class BattGroupDataService {
    @Resource
    private BattGroupDataMapper mapper;
    //获取
    public Response getBattGroupData() {
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.last("limit 1");
        BattgroupData data=mapper.selectOne(wrapper);
        return new Response().setII(1,true,data,"");
    }
}
src/main/java/com/lxw/test3d/Service/SocketCmdService.java
New file
@@ -0,0 +1,50 @@
package com.lxw.test3d.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lxw.test3d.dto.Response;
import com.lxw.test3d.mapper.SocketCmdMapper;
import com.lxw.test3d.pojo.SocketCmd;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class SocketCmdService {
    @Autowired(required = false)
    private SocketCmdMapper mapper;
    //启动socket通讯
    public Response startSocket(String ip, int port) {
        new Thread(){
            @Override
            public void run() {
                while (true){
                    int cmd=getCmd();
                    if(cmd==72){
                        break;
                    }else{
                        System.out.println(1111);
                    }
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }.start();
        return new Response().set(1);
    }
    public int getCmd(){
        int cmd=0;
        QueryWrapper wrapper=new QueryWrapper();
        wrapper.last("limit 1");
        SocketCmd socketCmd=mapper.selectOne(wrapper);
        if(socketCmd!=null){
            cmd=socketCmd.getSocketCmd();
        }
        return cmd;
    }
}
src/main/java/com/lxw/test3d/Test3dApplication.java
@@ -2,14 +2,15 @@
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@EnableWebMvc
@SpringBootApplication(exclude=DataSourceAutoConfiguration.class )
@SpringBootApplication
@ServletComponentScan(basePackages = {"com.lxw.test3d.filter"})
public class Test3dApplication {
public class Test3dApplication extends WebMvcConfigurerAdapter implements WebMvcConfigurer {
    public static void main(String[] args) {
        SpringApplication.run(Test3dApplication.class, args);
src/main/java/com/lxw/test3d/config/MybatisPlusConfig.java
New file
@@ -0,0 +1,22 @@
package com.lxw.test3d.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.lxw.test3d.injector.CustomSqlInjector;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.lxw.test3d.mapper")
public class MybatisPlusConfig {
    @Bean
    public CustomSqlInjector customSqlInjector(){
        return new CustomSqlInjector();
    }
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }
}
src/main/java/com/lxw/test3d/controller/BattGroupDataController.java
New file
@@ -0,0 +1,26 @@
package com.lxw.test3d.controller;
import com.lxw.test3d.Service.BattGroupDataService;
import com.lxw.test3d.dto.Response;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "电池组数据")
@RestController
@RequestMapping("battGroupData")
public class BattGroupDataController {
    @Autowired
    private BattGroupDataService service;
    @ApiOperation("获取")
    @GetMapping("getBattGroupData")
    public Response getBattGroupData(){
        return service.getBattGroupData();
    }
}
src/main/java/com/lxw/test3d/controller/SocketController.java
New file
@@ -0,0 +1,32 @@
package com.lxw.test3d.controller;
import com.lxw.test3d.Service.SocketCmdService;
import com.lxw.test3d.dto.Response;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "socket数据通讯")
@RestController
@RequestMapping("socket")
public class SocketController {
    @Autowired
    private SocketCmdService service;
    @ApiOperation("启动socket通讯")
    @GetMapping("startSocket")
    public Response startSocket(@RequestParam String ip,@RequestParam int port){
        return  service.startSocket(ip,port);
    }
    @ApiOperation("获取socket命令")
    @GetMapping("getSocket")
    public Response getSocket(){
        int cmd= service.getCmd();
        return new Response().set(1,cmd);
    }
}
src/main/java/com/lxw/test3d/injector/CustomSqlInjector.java
New file
@@ -0,0 +1,24 @@
package com.lxw.test3d.injector;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector;
import com.baomidou.mybatisplus.extension.injector.methods.additional.AlwaysUpdateSomeColumnById;
import com.baomidou.mybatisplus.extension.injector.methods.additional.InsertBatchSomeColumn;
import java.util.List;
/**
 * 自定义sql注入器,使得mybatis-plus能自动识别执行
 */
public class CustomSqlInjector extends DefaultSqlInjector {
    @Override
    public List<AbstractMethod> getMethodList(Class<?> mapperClass) {
        //这是默认的父类方法列表
        List<AbstractMethod> methodList = super.getMethodList(mapperClass);
        //新增批量插入方法
        methodList.add(new InsertBatchSomeColumn());
        methodList.add(new AlwaysUpdateSomeColumnById());
        return methodList;
    }
}
src/main/java/com/lxw/test3d/mapper/BattGroupDataMapper.java
New file
@@ -0,0 +1,10 @@
package com.lxw.test3d.mapper;
import com.lxw.test3d.pojo.BattgroupData;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
public interface BattGroupDataMapper extends CustomMapper<BattgroupData>{
}
src/main/java/com/lxw/test3d/mapper/CustomMapper.java
New file
@@ -0,0 +1,17 @@
package com.lxw.test3d.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.Collection;
@SuppressWarnings("all")
public interface CustomMapper<T> extends BaseMapper<T> {
    /**
     * 批量插入
     * @param entityList
     * @return
     */
    Integer insertBatchSomeColumn(Collection<T> entityList);
}
src/main/java/com/lxw/test3d/mapper/SocketCmdMapper.java
New file
@@ -0,0 +1,6 @@
package com.lxw.test3d.mapper;
import com.lxw.test3d.pojo.SocketCmd;
public interface SocketCmdMapper extends CustomMapper<SocketCmd>{
}
src/main/java/com/lxw/test3d/pojo/BattgroupData.java
New file
@@ -0,0 +1,60 @@
package com.lxw.test3d.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
 *
 * </p>
 *
 * @author lxw
 * @since 2022-09-06
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("tb_battgroup_data")
@ApiModel(value="BattgroupData对象", description="")
@ToString
public class BattgroupData implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "num", type = IdType.AUTO)
    private Long num;
    @ApiModelProperty(value = "电池组id")
    @TableField("battGroup_id")
    private String battgroupId;
    @ApiModelProperty(value = "节数")
    private Integer monNum;
    @ApiModelProperty(value = "电压(V)")
    private String bv;
    @ApiModelProperty(value = "内阻(mΩ)")
    private String br;
    @ApiModelProperty(value = "电导")
    private String bs;
    @ApiModelProperty(value = "连接条阻抗(mΩ)")
    private String cr;
    @ApiModelProperty(value = "异常标记 0:无异常 1:鼓包 2:漏液 4:开裂 8:内阻超标")
    private int er;
}
src/main/java/com/lxw/test3d/pojo/SocketCmd.java
New file
@@ -0,0 +1,20 @@
package com.lxw.test3d.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("tb_socket_cmd")
@ApiModel(value="SocketCmd", description="")
@ToString
public class SocketCmd {
    private int num;
    private int socketCmd;
}
src/main/resources/config/application-dev.yml
@@ -14,6 +14,38 @@
  max-http-header-size: 10000000
#数据库
spring:
  datasource:
    driver-class-name: org.sqlite.JDBC
    #    url: jdbc:sqlite:C:\Users\29550\Downloads\sqlite-tools-win32-x86-3390400\res.db
    url: jdbc:sqlite:test3d.db?date_string_format=yyyy-MM-dd HH:mm:ss
  servlet:
    multipart:
      max-file-size: 200MB
      max-request-size: 200MB
mybatis-plus:
  typeAliasesPackage: com.lxw.test3d.pojo,com.lxw.test3d.dto
  mapper-locations: classpath:mapper/**/*Mapper.xml
  global-config:
    db-config:
      #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
      id-type: AUTO
      #驼峰下划线转换
      table-underline: true
      #数据库大写下划线转换
      capital-mode: true
      #mp2.3+ 全局表前缀 tb_
      table-prefix: tb_
      #刷新mapper 调试神器
  #      refresh-mapper: true
  configuration:
    #配置返回数据库(column下划线命名&&返回java实体是驼峰命名),自动匹配无需as(没开启这个,SQL需要写as: select user_id as userId)
    map-underscore-to-camel-case: true
    cache-enabled: false
    #mybatis日志输出
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#数据库
pagehelper:
  helper-dialect: mysql
  reasonable: true
src/main/resources/mapper/0Mapper.xml
New file
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lxw.test3d.mapper" >
</mapper>
src/test/java/com/lxw/test3d/Test3dApplicationTests.java
File was deleted
test3d.db
Binary files differ