whycxzp
2021-03-04 6195e70334232c589f12b6fc0b091cf0be7cc583
update afe/rectifier api
7个文件已修改
5个文件已添加
423 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/AFECtrlController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/AFEInverterController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/AFERectifierController.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/TestController.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/binaryTree/BinaryTree.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/multiTree/MultiTree.java 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/AFERectifierHistoryMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/AFECtrlService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/AFEInverterService.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/AFERectifierService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/AFEInverterHistoryMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/AFERecitfierHistoryMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/AFECtrlController.java
@@ -1,15 +1,15 @@
package com.whyc.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
import com.whyc.pojo.AFEInverterControl;
import com.whyc.service.AFECtrlService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
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;
@RestController
@RequestMapping("afeCtrl")
src/main/java/com/whyc/controller/AFEInverterController.java
@@ -17,7 +17,7 @@
@RestController
@RequestMapping("afeInverter")
@Api(tags = "afe变频器-逆变器的实时数据信息")
@Api(tags = "afe变频器-逆变器的数据信息")
public class AFEInverterController {
    @Autowired
@@ -36,7 +36,7 @@
    }
    @GetMapping("tableNames")
    @ApiOperation(value = "查询历史记录存在的表格")
    @ApiOperation(value = "查询历史记录存在的表")
    public Response<String> getTableNames(){
        return service.getTableNames();
    }
@@ -44,11 +44,12 @@
    /**
     * ======History======
     * 历史查询时,因为历史记录是按照日期分表的,如果查询所有的日期表(union)后再分页,会导致速度极慢,故查询按照单个日期查询
     * TODO 待确定是否需要加上日期
     * */
    @GetMapping("history/all")
    @ApiOperation(value = "获取所有历史记录")
    public Response<PageInfo<AFEInverterState>> getHistory(@RequestParam int pageNum, int pageSize,String tablePrefixTime){
        return service.getHistory(pageNum,pageSize,tablePrefixTime);
    @ApiOperation(value = "查询历史记录")
    public Response<PageInfo<AFEInverterState>> getHistory(@RequestParam int pageNum, int pageSize,int devId){
        return service.getHistory(pageNum,pageSize,devId);
    }
}
src/main/java/com/whyc/controller/AFERectifierController.java
@@ -1,7 +1,9 @@
package com.whyc.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
import com.whyc.pojo.AFEInverterState;
import com.whyc.pojo.AFERectifierState;
import com.whyc.service.AFERectifierService;
import io.swagger.annotations.Api;
@@ -21,15 +23,26 @@
    AFERectifierService service;
    @GetMapping("all")
    @ApiOperation(value = "获取所有数据信息")
    @ApiOperation(value = "查询所有数据信息")
    public Response<IPage<AFERectifierState>> getAll(@RequestParam int pageNum, int pageSize){
        return service.getAll(pageNum,pageSize);
    }
    @GetMapping("infoByDevId")
    @ApiOperation(value = "获取单个数据信息:根据设备id")
    @ApiOperation(value = "查询单个数据信息:根据设备id")
    public Response<AFERectifierState> getInfoByDevId(@RequestParam int devId){
        return service.getInfoByDevId(devId);
    }
    /**
     * ======History======
     * 历史查询时,因为历史记录是按照日期分表的,如果查询所有的日期表(union)后再分页,会导致速度极慢,故查询按照单个日期查询
     * TODO 待确定是否需要加上日期
     * */
    @GetMapping("history/all")
    @ApiOperation(value = "查询历史记录")
    public Response<PageInfo<AFERectifierState>> getHistory(@RequestParam int pageNum, int pageSize, int devId){
        return service.getHistory(pageNum,pageSize,devId);
    }
}
src/main/java/com/whyc/controller/TestController.java
New file
@@ -0,0 +1,30 @@
package com.whyc.controller;
import com.whyc.dto.Response;
import com.whyc.dto.multiTree.MultiTree;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;
/**
 * 作为功能测试接口,实际项目不可调用!
 */
@RestController
@RequestMapping("test")
@ApiIgnore
public class TestController {
    @GetMapping("test")
    public Response<MultiTree> test(){
        MultiTree multiTree = new MultiTree();
        String dates = "2020-01-02,2020-01-03,2020-02-03,2021-06-06,2021-05-06";
        String[] dateArr = dates.split(",");
        MultiTree tree = new MultiTree().saveAsTree(dateArr);
        return new Response<MultiTree>().set(1,tree);
    }
}
src/main/java/com/whyc/dto/binaryTree/BinaryTree.java
New file
@@ -0,0 +1,113 @@
package com.whyc.dto.binaryTree;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/**
 * 二叉树
 */
public class BinaryTree {
    TreeNode root =null;
    public BinaryTree() {
        this.root = new TreeNode(0,"A");
    }
    public BinaryTree(TreeNode root) {
        this.root = root;
    }
    @Override
    public String toString() {
        return "BinaryTree{" +
                "root=" + root +
                '}';
    }
    /**
     * 创建二叉树,手动传统
     */
    public BinaryTree createBinaryTree(){
        TreeNode nodeB = new TreeNode(2, "B");
        TreeNode nodeC = new TreeNode(3, "C");
        TreeNode nodeD = new TreeNode(4, "D");
        TreeNode nodeE = new TreeNode(5, "E");
        TreeNode nodeF = new TreeNode(6, "F");
        root.leftChild = nodeB;
        root.rightChild = nodeC;
        nodeB.leftChild = nodeD;
        nodeB.rightChild =nodeF;
        BinaryTree binaryTree = new BinaryTree(root);
        return binaryTree;
    }
    public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException {
        Class<BinaryTree> binaryTreeClass = BinaryTree.class;
        Method method = binaryTreeClass.getDeclaredMethod("createBinaryTree");
        BinaryTree root = (BinaryTree) method.invoke(binaryTreeClass.newInstance());
    }
    class TreeNode{
        private int index;
        private String data;
        private TreeNode leftChild;
        private TreeNode rightChild;
        public TreeNode(int index, String data) {
            this.index = index;
            this.data = data;
        }
        public int getIndex() {
            return index;
        }
        public void setIndex(int index) {
            this.index = index;
        }
        public String getData() {
            return data;
        }
        public void setData(String data) {
            this.data = data;
        }
        public TreeNode getLeftChild() {
            return leftChild;
        }
        public void setLeftChild(TreeNode leftChild) {
            this.leftChild = leftChild;
        }
        public TreeNode getRightChild() {
            return rightChild;
        }
        public void setRightChild(TreeNode rightChild) {
            this.rightChild = rightChild;
        }
        @Override
        public String toString() {
            return "TreeNode{" +
                    "index=" + index +
                    ", data='" + data + '\'' +
                    ", leftChild=" + leftChild +
                    ", rightChild=" + rightChild +
                    '}';
        }
    }
}
src/main/java/com/whyc/dto/multiTree/MultiTree.java
New file
@@ -0,0 +1,184 @@
package com.whyc.dto.multiTree;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
 * 多叉树之三层
 */
public class MultiTree {
    TreeNode root = null;
    public MultiTree(TreeNode root) {
        this.root = root;
    }
    public MultiTree() {
    }
    TreeNode getIndex(TreeNode node,int index){
        if(node==null){
            return null;
        }else{
            List<TreeNode> node1 = node.getNode();
            for (int i = 0; i < node1.size(); i++) {
                if(node1.get(i).getIndex()==index){
                    return node1.get(i);
                }else{
                    getIndex(node1.get(i),index);
                }
            }
        }
        return null;
    }
    class TreeNode {
        private int index;
        private String data;
        private List<TreeNode> node;
        public TreeNode(int index, String data) {
            this.index = index;
            this.data = data;
        }
        public int getIndex() {
            return index;
        }
        public void setIndex(int index) {
            this.index = index;
        }
        public String getData() {
            return data;
        }
        public void setData(String data) {
            this.data = data;
        }
        public List<TreeNode> getNode() {
            return node;
        }
        public void setNode(List<TreeNode> node) {
            this.node = node;
        }
    }
    public TreeNode getRoot() {
        return root;
    }
    public void setRoot(TreeNode root) {
        this.root = root;
    }
    public static void main(String[] args) {
        String dates = "2020-01-02,2020-01-03,2020-02-03,2021-06-06,2021-05-06";
        String[] dateArr = dates.split(",");
        MultiTree tree = new MultiTree().saveAsTree(dateArr);
        System.out.println(tree);
    }
    /**
     * 处理3层数据结构
     * @param dateArr
     * @return
     */
    public MultiTree saveAsTree(String[] dateArr) {
        root = new TreeNode(0,"0");
        int index = 0;
        for (int i = 0; i < dateArr.length; i++) {
            //dataArr[i]="2020-01-02"
            String[] date = dateArr[i].split("-");
            String year = date[0];
            String month = date[1];
            String day = date[2];
            //查看第一层year层是否存在,不存在则添加节点到year节点list中
            TreeNode currTreeNode = null;
            if(root.getNode()==null){
                ArrayList<TreeNode> level1Nodes = new ArrayList<>();
                level1Nodes.add(new TreeNode(++index, year));
                root.setNode(level1Nodes);
                //直接存储第二层month
                ArrayList<TreeNode> level2Nodes = new ArrayList<>();
                level2Nodes.add(new TreeNode(++index, month));
                level1Nodes.get(0).setNode(level2Nodes);
                //直接存储第三层day
                ArrayList<TreeNode> level3Nodes = new ArrayList<>();
                level3Nodes.add(new TreeNode(++index, day));
                level2Nodes.get(0).setNode(level3Nodes);
            }else{
                List<TreeNode> level1Nodes = root.getNode();
                boolean lv1Exist = false;
                //int lv1ExistIndex = 0;
                for (int j = 0; j < level1Nodes.size(); j++) {
                    //第一层year层
                    if(level1Nodes.get(j).getData().equals(year)){
                        lv1Exist = true;
                        //lv1ExistIndex = level1Nodes.get(j).getIndex();
                        currTreeNode = level1Nodes.get(j);
                        break;
                    }
                }
                //第一层year层存在
                if(lv1Exist){
                    //判断第二层month是否存在
                    TreeNode level1TreeNode = currTreeNode;
                    List<TreeNode> level2Nodes = level1TreeNode.getNode();
                    boolean lv2Exist = false;
                    //int lv2ExistIndex = 0;
                    for (int j = 0; j < level2Nodes.size(); j++) {
                        //第二层month层
                        if(level2Nodes.get(j).getData().equals(month)){
                            lv2Exist = true;
                            //lv2ExistIndex = level2Nodes.get(j).getIndex();
                            currTreeNode = level2Nodes.get(j);
                            break;
                        }
                    }
                    //第二层month层存在
                    if(lv2Exist){
                        //判断第三层day层直接添加
                        //TreeNode level3TreeNode = level2Nodes.get(lv2ExistIndex);
                        TreeNode level2TreeNode = currTreeNode;
                        List<TreeNode> level3Nodes = level2TreeNode.getNode();
                        level3Nodes.add(new TreeNode(++index,day));
                        level2TreeNode.setNode(level3Nodes);
                    }else{
                        //month层不存在
                        level2Nodes.add(new TreeNode(++index,month));
                        //直接存储第二层month层
                        //直接存储第三层day
                        level2Nodes.get(level2Nodes.size()-1).setNode(Arrays.asList(new TreeNode(++index,day)));
                    }
                }else{
                    //year层不存在
                    level1Nodes.add(new TreeNode(++index,year));
                    //直接存储第二层month层
                    ArrayList<TreeNode> level2Nodes = new ArrayList<>();
                    level2Nodes.add(new TreeNode(++index, month));
                    level1Nodes.get(level1Nodes.size()-1).setNode(level2Nodes);
                    //直接存储第三层day
                    ArrayList<TreeNode> level3Nodes = new ArrayList<>();
                    level3Nodes.add(new TreeNode(++index,day));
                    level2Nodes.get(0).setNode(level3Nodes);
                }
            }
        }
        return this;
    }
}
src/main/java/com/whyc/mapper/AFERectifierHistoryMapper.java
New file
@@ -0,0 +1,11 @@
package com.whyc.mapper;
import com.whyc.pojo.AFERectifierState;
import java.util.List;
public interface AFERectifierHistoryMapper {
    List<AFERectifierState> getHistory(List<String> tableNames);
}
src/main/java/com/whyc/service/AFECtrlService.java
@@ -1,8 +1,6 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
src/main/java/com/whyc/service/AFEInverterService.java
@@ -3,7 +3,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.Page;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
@@ -31,7 +31,7 @@
    /**分页*/
    public Response getAll(int pageNum,int pageSize) {
        IPage<AFEInverterState> afeInverterStateIPage = mapper.selectPage(new Page<>(pageNum, pageSize), null);
        IPage<AFEInverterState> afeInverterStateIPage = mapper.selectPage(new Page(pageNum, pageSize), null);
        return new Response().set(1,afeInverterStateIPage);
    }
@@ -46,18 +46,17 @@
    /**======History======*/
    public Response<PageInfo<AFEInverterState>> getHistory(int pageNum, int pageSize,String tablePrefixTime) {
    public Response<PageInfo<AFEInverterState>> getHistory(int pageNum, int pageSize,int devId) {
        List<String> tableNames = commonMapper.getTableName("db_3.5mw_motor_history", "tb_afe_inverter_state_" + devId);
        PageHelper.startPage(pageNum,pageSize);
        List<AFEInverterState> afeInverterStates = historyMapper.getHistory(tableNames);
        PageInfo<AFEInverterState> afeInverterStatePageInfo = new PageInfo<>(afeInverterStates);
        return new Response<PageInfo<AFEInverterState>>().set(1,afeInverterStatePageInfo);
    }
    /**采用二叉树*/
    /**采用N叉树(二叉树的特殊版)*/
    public Response<String> getTableNames() {
        List<String> tableNames = commonMapper.getTableName("`db_3.5mw_motor`", "tb_afe_inverter_state");
        List<String> tableNames = commonMapper.getTableName("db_3.5mw_motor_history", "tb_afe_inverter_state");
        for (int i = 0; i < tableNames.size(); i++) {
            String tableName = tableNames.get(i);
            String year = tableName.split("_")[4];
src/main/java/com/whyc/service/AFERectifierService.java
@@ -4,19 +4,31 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
import com.whyc.mapper.AFERectifierHistoryMapper;
import com.whyc.mapper.AFERectifierMapper;
import com.whyc.mapper.CommonMapper;
import com.whyc.pojo.AFEInverterState;
import com.whyc.pojo.AFERectifierState;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.sql.Wrapper;
import java.util.List;
@Service
public class AFERectifierService {
    @Resource
    private AFERectifierMapper mapper;
    @Resource
    private AFERectifierHistoryMapper historyMapper;
    @Resource
    private CommonMapper commonMapper;
    /**分页*/
    public Response<IPage<AFERectifierState>> getAll(int pageNum,int pageSize) {
@@ -30,4 +42,12 @@
        AFERectifierState afeRectifierState = mapper.selectOne(query);
        return new Response<AFERectifierState>().set(1,afeRectifierState);
    }
    public Response<PageInfo<AFERectifierState>> getHistory(int pageNum, int pageSize, int devId) {
        List<String> tableNames = commonMapper.getTableName("db_3.5mw_motor_history", "tb_afe_rectifier_state_" + devId);
        PageHelper.startPage(pageNum,pageSize);
        List<AFERectifierState> afeInverterStates = historyMapper.getHistory(tableNames);
        PageInfo<AFERectifierState> afeInverterStatePageInfo = new PageInfo<>(afeInverterStates);
        return new Response<PageInfo<AFERectifierState>>().set(1,afeInverterStatePageInfo);
    }
}
src/main/resources/mapper/AFEInverterHistoryMapper.xml
@@ -4,6 +4,8 @@
    <select id="getHistory" resultType="com.whyc.pojo.AFEInverterState">
        <foreach collection="list" item="tableName" separator="union all">
            select * from `db_3.5mw_motor_history`.${tableName}
        </foreach>
    </select>
</mapper>
src/main/resources/mapper/AFERecitfierHistoryMapper.xml
New file
@@ -0,0 +1,10 @@
<?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.whyc.mapper.AFERectifierHistoryMapper" >
    <select id="getHistory" resultType="com.whyc.pojo.AFERectifierState">
        <foreach collection="list" item="tableName" separator="union all">
            select * from `db_3.5mw_motor_history`.${tableName}
        </foreach>
    </select>
</mapper>