whycxzp
2021-03-22 4e4ec01a74b48ef4b9060868b8f9d82312cf4b77
更新 部分电池数据统计接口
4个文件已修改
4个文件已添加
365 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/BatteryDataController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/BatteryInfo.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BatteryDataMapper.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BatteryResDataMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/BatteryTestDataMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/BatteryDataService.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BatteryResDataMapper.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/BatteryTestDataMapper.xml 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/BatteryDataController.java
@@ -34,11 +34,16 @@
        return service.getBatteryCap(userId);
    }
    /**这个接口后续需要考虑是否分开电压统计和温度统计*/
    @GetMapping("monVolAndTemp")
    @ApiOperation(value = "单体电压和温度统计")
    public Response getMonVolAndTemp(@RequestParam Integer userId){
        return service.getMonVolAndTemp(userId);
    @GetMapping("monVol")
    @ApiOperation(value = "单体电压统计")
    public Response getMonVol(@RequestParam Integer userId){
        return service.getMonVol(userId);
    }
    @GetMapping("monTemp")
    @ApiOperation(value = "单体温度统计")
    public Response getMonTemp(@RequestParam Integer userId){
        return service.getMonTemp(userId);
    }
    @GetMapping("monRes")
src/main/java/com/whyc/dto/BatteryInfo.java
@@ -5,9 +5,47 @@
 */
public class BatteryInfo {
    private String stationName;
    private String batteryGroupIds;
    private Integer batteryStatus;
    private Integer count;
    private Integer batteryGroupId;
    private Float monVolStd;
    private Float monCapStd;
    private Float maxTestCurr;
    private Float minTestCurr;
    private Float avgTestCurr;
    private Float maxTestCap;
    private Float minTestCap;
    private Float avgTestCap;
    private Float maxTestVol;
    private Float minTestVol;
    private Float avgTestVol;
    public String getStationName() {
        return stationName;
    }
    public void setStationName(String stationName) {
        this.stationName = stationName;
    }
    public String getBatteryGroupIds() {
        return batteryGroupIds;
    }
    public void setBatteryGroupIds(String batteryGroupIds) {
        this.batteryGroupIds = batteryGroupIds;
    }
    public Integer getBatteryStatus() {
        return batteryStatus;
@@ -24,4 +62,100 @@
    public void setCount(Integer count) {
        this.count = count;
    }
    public Integer getBatteryGroupId() {
        return batteryGroupId;
    }
    public void setBatteryGroupId(Integer batteryGroupId) {
        this.batteryGroupId = batteryGroupId;
    }
    public Float getMonVolStd() {
        return monVolStd;
    }
    public void setMonVolStd(Float monVolStd) {
        this.monVolStd = monVolStd;
    }
    public Float getMonCapStd() {
        return monCapStd;
    }
    public void setMonCapStd(Float monCapStd) {
        this.monCapStd = monCapStd;
    }
    public Float getMaxTestCurr() {
        return maxTestCurr;
    }
    public void setMaxTestCurr(Float maxTestCurr) {
        this.maxTestCurr = maxTestCurr;
    }
    public Float getMinTestCurr() {
        return minTestCurr;
    }
    public void setMinTestCurr(Float minTestCurr) {
        this.minTestCurr = minTestCurr;
    }
    public Float getAvgTestCurr() {
        return avgTestCurr;
    }
    public void setAvgTestCurr(Float avgTestCurr) {
        this.avgTestCurr = avgTestCurr;
    }
    public Float getMaxTestCap() {
        return maxTestCap;
    }
    public void setMaxTestCap(Float maxTestCap) {
        this.maxTestCap = maxTestCap;
    }
    public Float getMinTestCap() {
        return minTestCap;
    }
    public void setMinTestCap(Float minTestCap) {
        this.minTestCap = minTestCap;
    }
    public Float getAvgTestCap() {
        return avgTestCap;
    }
    public void setAvgTestCap(Float avgTestCap) {
        this.avgTestCap = avgTestCap;
    }
    public Float getMaxTestVol() {
        return maxTestVol;
    }
    public void setMaxTestVol(Float maxTestVol) {
        this.maxTestVol = maxTestVol;
    }
    public Float getMinTestVol() {
        return minTestVol;
    }
    public void setMinTestVol(Float minTestVol) {
        this.minTestVol = minTestVol;
    }
    public Float getAvgTestVol() {
        return avgTestVol;
    }
    public void setAvgTestVol(Float avgTestVol) {
        this.avgTestVol = avgTestVol;
    }
}
src/main/java/com/whyc/mapper/BatteryDataMapper.java
@@ -1,5 +1,6 @@
package com.whyc.mapper;
import com.whyc.dto.BatteryInfo;
import com.whyc.dto.DataAnalysisFloatDTO;
import com.whyc.pojo.BatteryEndurance;
import com.whyc.pojo.BatteryRTState;
@@ -12,12 +13,4 @@
    List<BatteryRTState> getBatteryCap(Integer userId);
    //TODO
    List<DataAnalysisFloatDTO> getMonVolAndTemp(Integer userId);
    //TODO
    DataAnalysisFloatDTO getMonRes(Integer userId);
    //TODO
    DataAnalysisFloatDTO getMonCap(Integer userId);
}
src/main/java/com/whyc/mapper/BatteryResDataMapper.java
New file
@@ -0,0 +1,12 @@
package com.whyc.mapper;
import com.whyc.dto.BatteryInfo;
import com.whyc.dto.DataAnalysisFloatDTO;
import java.util.List;
public interface BatteryResDataMapper {
    List<BatteryInfo> getResStationAndBatteryGroupIds(Integer userId);
    DataAnalysisFloatDTO getResStatisticsByBattGroupIds(Integer[] batteryGroupIds);
}
src/main/java/com/whyc/mapper/BatteryTestDataMapper.java
New file
@@ -0,0 +1,16 @@
package com.whyc.mapper;
import com.whyc.dto.BatteryInfo;
import com.whyc.dto.DataAnalysisFloatDTO;
import java.util.List;
public interface BatteryTestDataMapper {
    List<BatteryInfo> getStationAndBatteryGroupIds(Integer userId);
    DataAnalysisFloatDTO getStatisticsByBattGroupIds(Integer[] ids,String field);
    List<BatteryInfo> getCapStatisticsByBattGroupIds(Integer[] ids);
    List<BatteryInfo> getVolAndCapStd(Integer[] ids);
}
src/main/java/com/whyc/service/BatteryDataService.java
@@ -1,8 +1,11 @@
package com.whyc.service;
import com.whyc.dto.BatteryInfo;
import com.whyc.dto.DataAnalysisFloatDTO;
import com.whyc.dto.Response;
import com.whyc.mapper.BatteryDataMapper;
import com.whyc.mapper.BatteryResDataMapper;
import com.whyc.mapper.BatteryTestDataMapper;
import com.whyc.pojo.BatteryEndurance;
import com.whyc.pojo.BatteryRTState;
import com.whyc.util.MathUtil;
@@ -16,6 +19,12 @@
    @Resource
    private BatteryDataMapper mapper;
    @Resource
    private BatteryResDataMapper resMapper;
    @Resource
    private BatteryTestDataMapper testDataMapper;
    public Response getEndurance(Integer userId) {
        List<BatteryEndurance> enduranceList = mapper.endurance(userId);
@@ -98,19 +107,71 @@
        return maps;
    }
    public Response getMonVolAndTemp(Integer userId) {
        List<DataAnalysisFloatDTO> dataList= mapper.getMonVolAndTemp(userId);
        return new Response<>().set(1,dataList);
    public Response getMonVol(Integer userId) {
        HashMap<String, Object> resMap = new HashMap<>();
        List<BatteryInfo> batteryInfos =  testDataMapper.getStationAndBatteryGroupIds(userId);
        for (BatteryInfo temp:batteryInfos) {
            //根据BattGroupIds查询到对应的数值
            String[] batteryGroupIds = temp.getBatteryGroupIds().split(",");
            Integer[] ids = new Integer[batteryGroupIds.length];
            for (int i = 0; i < batteryGroupIds.length; i++) {
                ids[i] = Integer.parseInt(batteryGroupIds[i]);
            }
            DataAnalysisFloatDTO dataStatistics = testDataMapper.getStatisticsByBattGroupIds(ids,"mon_vol");
            resMap.put(temp.getStationName(),dataStatistics);
        }
        return new Response<>().set(1,resMap);
    }
    public Response getMonTemp(Integer userId) {
        HashMap<String, Object> resMap = new HashMap<>();
        List<BatteryInfo> batteryInfos =  testDataMapper.getStationAndBatteryGroupIds(userId);
        for (BatteryInfo temp:batteryInfos) {
            //根据BattGroupIds查询到对应的数值
            String[] batteryGroupIds = temp.getBatteryGroupIds().split(",");
            Integer[] ids = new Integer[batteryGroupIds.length];
            for (int i = 0; i < batteryGroupIds.length; i++) {
                ids[i] = Integer.parseInt(batteryGroupIds[i]);
            }
            DataAnalysisFloatDTO dataStatistics = testDataMapper.getStatisticsByBattGroupIds(ids,"mon_tmp");
            resMap.put(temp.getStationName(),dataStatistics);
        }
        return new Response<>().set(1,resMap);
    }
    public Response getMonRes(Integer userId) {
        DataAnalysisFloatDTO data= mapper.getMonRes(userId);
        return new Response<>().set(1,data);
        HashMap<String, Object> resMap = new HashMap<>();
        List<BatteryInfo> batteryInfos =  resMapper.getResStationAndBatteryGroupIds(userId);
        for (BatteryInfo temp:batteryInfos) {
            //根据BattGroupIds查询到对应的数值
            String[] batteryGroupIds = temp.getBatteryGroupIds().split(",");
            Integer[] ids = new Integer[batteryGroupIds.length];
            for (int i = 0; i < batteryGroupIds.length; i++) {
                ids[i] = Integer.parseInt(batteryGroupIds[i]);
            }
            DataAnalysisFloatDTO dataStatistics = resMapper.getResStatisticsByBattGroupIds(ids);
            resMap.put(temp.getStationName(),dataStatistics);
        }
        return new Response<>().set(1,resMap);
    }
    public Response getMonCap(Integer userId) {
        DataAnalysisFloatDTO data= mapper.getMonCap(userId);
        return new Response<>().set(1,data);
        HashMap<String, Object> resMap = new HashMap<>();
        List<BatteryInfo> batteryInfos =  testDataMapper.getStationAndBatteryGroupIds(userId);
        for (BatteryInfo temp:batteryInfos) {
            String[] batteryGroupIds = temp.getBatteryGroupIds().split(",");
            Integer[] ids = new Integer[batteryGroupIds.length];
            for (int i = 0; i < batteryGroupIds.length; i++) {
                ids[i] = Integer.parseInt(batteryGroupIds[i]);
            }
            //查询标准
            List<BatteryInfo> batteryStdList = testDataMapper.getVolAndCapStd(ids);
            //查询最值
            List<BatteryInfo> batteryStatisticList = testDataMapper.getCapStatisticsByBattGroupIds(ids);
        }
        return new Response<>().set(1,resMap);
    }
src/main/resources/mapper/BatteryResDataMapper.xml
New file
@@ -0,0 +1,38 @@
<?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.BatteryResDataMapper" >
    <select id="getResStationAndBatteryGroupIds" resultType="com.whyc.dto.BatteryInfo">
        SELECT
            stationName,
            GROUP_Concat( DISTINCT resDataInf.battGroupId ) AS batteryGroupIds
        FROM
            db_batt_testdata.tb_battresdata_inf resDataInf,
            db_battinf.tb_battinf battInf
        WHERE
            resDataInf.BattGroupId = battInf.BattGroupId
            AND resDataInf.BattgroupId IN (
                SELECT DISTINCT
                    db_battinf.tb_battinf.battgroupid
                FROM
                    db_battinf.tb_battinf,
                    db_user.tb_user_battgroup_baojigroup_battgroup,
                    db_user.tb_user_battgroup_baojigroup_usr,
                    db_user.tb_user_inf
                WHERE
                    db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId = db_battinf.tb_battinf.BattGroupId
                    AND db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id = db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id
                    AND db_user.tb_user_inf.uid = db_user.tb_user_battgroup_baojigroup_usr.uid
                    AND db_user.tb_user_inf.uid =#{userId}
            )
        GROUP BY
            StationId
    </select>
    <select id="getResStatisticsByBattGroupIds" resultType="com.whyc.dto.DataAnalysisFloatDTO">
        select min(mon_res) as 'min',max(mon_res) as 'max',avg(mon_res) as 'average' from
        <foreach collection="array" item="batteryGroupId" separator="union" open="(" close=")temp">
            select mon_res  from db_batt_testdata.tb_battresdata_#{batteryGroupId}
        </foreach>
    </select>
</mapper>
src/main/resources/mapper/BatteryTestDataMapper.xml
New file
@@ -0,0 +1,66 @@
<?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.BatteryTestDataMapper" >
    <select id="getStationAndBatteryGroupIds" resultType="com.whyc.dto.BatteryInfo">
        SELECT
            stationName,
            GROUP_Concat( DISTINCT testDataInf.battGroupId ) AS batteryGroupIds
        FROM
            db_batt_testdata.tb_batttestdata_inf testDataInf,
            db_battinf.tb_battinf battInf
        WHERE
            testDataInf.BattGroupId = battInf.BattGroupId
            AND testDataInf.BattgroupId IN (
                SELECT DISTINCT
                    db_battinf.tb_battinf.battgroupid
                FROM
                    db_battinf.tb_battinf,
                    db_user.tb_user_battgroup_baojigroup_battgroup,
                    db_user.tb_user_battgroup_baojigroup_usr,
                    db_user.tb_user_inf
                WHERE
                    db_user.tb_user_battgroup_baojigroup_battgroup.BattGroupId = db_battinf.tb_battinf.BattGroupId
                    AND db_user.tb_user_battgroup_baojigroup_usr.baoji_group_id = db_user.tb_user_battgroup_baojigroup_battgroup.baoji_group_id
                    AND db_user.tb_user_inf.uid = db_user.tb_user_battgroup_baojigroup_usr.uid
                    AND db_user.tb_user_inf.uid =#{userId}
            )
        GROUP BY
            StationId
    </select>
    <select id="getStatisticsByBattGroupIds" resultType="com.whyc.dto.DataAnalysisFloatDTO">
        select min(${field}) as 'min',max(${field}) as 'max',avg(${field}) as 'average' from
        <foreach collection="ids" item="batteryGroupId" separator="union" open="(" close=")temp">
            select ${field}  from db_batt_testdata.tb_batttestdata_#{batteryGroupId}
        </foreach>
    </select>
    <select id="getVolAndCapStd" resultType="com.whyc.dto.BatteryInfo">
        select BattGroupId,MonVolStd,MonCapStd from db_battinf.tb_battinf where BattGroupId in
        <foreach collection="array" item="id" open="(" close=")" separator=",">
            #{id}
        </foreach>
    </select>
    <select id="getCapStatisticsByBattGroupIds" resultType="com.whyc.dto.BatteryInfo">
        <foreach collection="array" item="id" separator=")union(" open="(" close=")">
            SELECT
                BattGroupId,
                max( abs( test_curr ) ) maxTestCurr,
                min( abs( test_curr ) ) minTestCurr,
                avg( abs( test_curr ) ) avgTestCurr,
                max( abs( test_cap ) ) maxTestCap,
                min( abs( test_cap ) ) minTestCap,
                avg( abs( test_cap ) ) avgTestCap,
                min( abs( mon_vol ) ) minMonVol,
                max( mon_vol ) maxMonVol
            FROM
                db_batt_testdata.tb_batttestdata_#{id}
            where
                test_type=3
            group by
                mon_num
            order by null
        </foreach>
    </select>
</mapper>