From 3bd9824f9140c3c42643806b454d3be23259f515 Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期二, 24 六月 2025 16:12:36 +0800
Subject: [PATCH] 点击右侧折线图画出电池组所有完整周期的实际容量,浮充电压变化,单体内阻图(1.2.15/16/17)

---
 src/main/java/com/whyc/service/BatttestdataInfService.java   |   49 +++++++++++++++
 src/main/java/com/whyc/service/BattresdataInfService.java    |   21 +++++++
 src/main/java/com/whyc/service/SubTablePageInfoService.java  |   26 ++++++++
 src/main/java/com/whyc/controller/BattCompareController.java |   37 ++++++-----
 src/main/java/com/whyc/dto/Statistic/ComPareChangeCurve.java |   13 ++++
 5 files changed, 127 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/whyc/controller/BattCompareController.java b/src/main/java/com/whyc/controller/BattCompareController.java
index 5fc0086..5ded782 100644
--- a/src/main/java/com/whyc/controller/BattCompareController.java
+++ b/src/main/java/com/whyc/controller/BattCompareController.java
@@ -3,15 +3,13 @@
 import com.whyc.dto.Response;
 import com.whyc.dto.Statistic.BattCompareStic;
 import com.whyc.pojo.db_user.User;
+import com.whyc.service.BattresdataInfService;
 import com.whyc.service.BatttestdataInfService;
 import com.whyc.util.ActionUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.text.ParseException;
 import java.util.Map;
@@ -24,8 +22,11 @@
     @Autowired
     private BatttestdataInfService battTinfService;
 
+    @Autowired
+    private BattresdataInfService battRinfService;
 
-    @ApiOperation(value = "钃勭數姹犵粍瀵规瘮鍒嗘瀽鐣岄潰锛堝悓涓�鍝佺墝鍚屼竴鏃堕棿锛�(1.2.15)")
+
+    @ApiOperation(value = "钃勭數姹犵粍瀵规瘮鍒嗘瀽鐣岄潰锛堝悓涓�鏃堕棿鍚屼竴鍝佺墝/鍚屼竴鏃堕棿涓嶅悓涓�鍝佺墝/涓嶅悓涓�鏃堕棿鍚屼竴鍝佺墝锛�(1.2.15/16/17)")
     @PostMapping("getBattCompare15Statistic")
     public Response getBattCompare15Statistic(@RequestBody BattCompareStic stic) throws ParseException {
         User uinf= ActionUtil.getUser();
@@ -38,19 +39,21 @@
         return battTinfService.getBattCompare15Statistic(stic);
     }
 
-    @ApiOperation(value = "钃勭數姹犵粍瀵规瘮鍒嗘瀽鐣岄潰锛堜笉鍚屽搧鐗屽悓涓�鏃堕棿锛�(1.2.16)")
-    @PostMapping("getBattCompare16Statistic")
-    public Response getBattCompare16Statistic(@RequestBody BattCompareStic stic){
-        User uinf= ActionUtil.getUser();
-        stic.setUid(uinf.getId());
-        return battTinfService.getBattCompare16Statistic(stic);
+    @ApiOperation(value = "鐐瑰嚮鍙充晶鎶樼嚎鍥剧敾鍑虹數姹犵粍鎵�鏈夊畬鏁村懆鏈熺殑瀹為檯瀹归噺鍙樺寲鍥�(1.2.15/16/17)")
+    @GetMapping("getRealCapChangeByBattgroupId")
+    public Response getRealCapChangeByBattgroupId(@RequestParam Integer battgroupId){
+        return battTinfService.getRealCapChangeByBattgroupId(battgroupId);
     }
 
-    @ApiOperation(value = "钃勭數姹犵粍瀵规瘮鍒嗘瀽鐣岄潰锛堝悓涓�鍝佺墝涓嶅悓鏃堕棿锛�(1.2.17)")
-    @PostMapping("getBattCompare17Statistic")
-    public Response getBattCompare17Statistic(@RequestBody BattCompareStic stic){
-        User uinf= ActionUtil.getUser();
-        stic.setUid(uinf.getId());
-        return battTinfService.getBattCompare17Statistic(stic);
+    @ApiOperation(value = "鐐瑰嚮鍙充晶鎶樼嚎鍥剧敾鍑虹數姹犵粍鎵�鏈夊畬鏁村懆鏈熺殑娴厖鐢靛帇鍙樺寲鍥�(1.2.15/16/17)")
+    @GetMapping("getFloatGroupVolChangeByBattgroupId")
+    public Response getFloatGroupVolChangeByBattgroupId(@RequestParam Integer battgroupId){
+        return battTinfService.getFloatGroupVolChangeByBattgroupId(battgroupId);
+    }
+
+    @ApiOperation(value = "鐐瑰嚮鍙充晶鎶樼嚎鍥剧敾鍑虹數姹犵粍鍗曚綋鐨勬墍鏈夊唴闃绘祴璇曞崟浣撳唴闃诲彉鍖栧浘(1.2.15/16/17)")
+    @GetMapping("getMonResChangeByBattgroupId")
+    public Response getMonResChangeByBattgroupId(@RequestParam Integer battgroupId,@RequestParam Integer monNum){
+        return battRinfService.getMonResChangeByBattgroupId(battgroupId,monNum);
     }
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/dto/Statistic/ComPareChangeCurve.java b/src/main/java/com/whyc/dto/Statistic/ComPareChangeCurve.java
new file mode 100644
index 0000000..e0bcf33
--- /dev/null
+++ b/src/main/java/com/whyc/dto/Statistic/ComPareChangeCurve.java
@@ -0,0 +1,13 @@
+package com.whyc.dto.Statistic;
+
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class ComPareChangeCurve {
+    private Integer battgroupId;
+    private Date startTime;
+    private Float curveValue;
+    private Integer monNum;
+}
\ No newline at end of file
diff --git a/src/main/java/com/whyc/service/BattresdataInfService.java b/src/main/java/com/whyc/service/BattresdataInfService.java
index f9fc71b..de45b7c 100644
--- a/src/main/java/com/whyc/service/BattresdataInfService.java
+++ b/src/main/java/com/whyc/service/BattresdataInfService.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.whyc.dto.Real.QuarterDto;
+import com.whyc.dto.Response;
+import com.whyc.dto.Statistic.ComPareChangeCurve;
 import com.whyc.dto.Statistic.ComPareChart;
 import com.whyc.mapper.BattresdataInfMapper;
 import com.whyc.mapper.CommonMapper;
@@ -87,4 +89,23 @@
         }
         return chart;
     }
+    //鐐瑰嚮鍙充晶鎶樼嚎鍥剧敾鍑虹數姹犵粍鍗曚綋鐨勬墍鏈夊唴闃绘祴璇曞崟浣撳唴闃诲彉鍖栧浘(1.2.15/16/17)
+    public Response getMonResChangeByBattgroupId(Integer battgroupId, Integer monNum) {
+        QueryWrapper wrapper = new QueryWrapper();
+        wrapper.eq("battgroup_id", battgroupId);
+        wrapper.last(" ORDER BY test_starttime asc ");
+        List<BattresdataInf> list = mapper.selectList(wrapper);
+        List<ComPareChangeCurve> curvelist=new ArrayList<>();
+        for (BattresdataInf rinf:list) {
+            String existTableName = commonMapper.existTable("db_batt_testdata", "tb_battresdata_"+battgroupId);
+            if(existTableName != null){
+                //鍙栧唴闃绘祴璇曟寚瀹氬崟浣撶殑鍗曚綋鐢靛帇
+                ComPareChangeCurve curve=subTablePageInfoService.getMonResChangeByBattgroupId(battgroupId,rinf.getTestRecordCount(),monNum);
+                if(curve!=null){
+                    curvelist.add(curve);
+                }
+            }
+        }
+        return new Response().setII(1,list.size()>0,curvelist,"鐐瑰嚮鍙充晶鎶樼嚎鍥剧敾鍑虹數姹犵粍鍗曚綋鐨勬墍鏈夊唴闃绘祴璇曞崟浣撳唴闃诲彉鍖栧浘(1.2.15/16/17)");
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/service/BatttestdataInfService.java b/src/main/java/com/whyc/service/BatttestdataInfService.java
index f2c8d87..6811e8c 100644
--- a/src/main/java/com/whyc/service/BatttestdataInfService.java
+++ b/src/main/java/com/whyc/service/BatttestdataInfService.java
@@ -289,6 +289,7 @@
         map.put("standCapDiff",0f);
         Float sumCap=0f;
         Float maxCap=0f;
+        Float minCap=0f;
         Float standCapDiff=0f;
         List<ComPareChart> capList=new ArrayList<>();
         List<ComPareChart> resList=new ArrayList<>();
@@ -354,9 +355,11 @@
                     String precentCap = String.format("%.5f",(grouprealCap/binf.getMoncapstd()*100));
                     res.setPrecentCap(precentCap);
                     sumCap+=grouprealCap;
-                    standCapDiff=grouprealCap-maxCap;
                     if(grouprealCap>=maxCap){
                         maxCap=grouprealCap;
+                    }
+                    if(grouprealCap<=minCap){
+                        minCap=grouprealCap;
                     }
                 }
             }
@@ -382,7 +385,7 @@
             resList.add(resChart);
         }
         map.put("avgCap",sumCap/binfList.size());
-        map.put("standCapDiff",standCapDiff);
+        map.put("standCapDiff",maxCap-minCap);
 
         PageInfo pageInfo=PageInfoUtils.list2PageInfo(comparelist, stic.getPageNum(), stic.getPageSize());
         return new Response().setIII(1,comparelist.size()>0,pageInfo,map,"钃勭數姹犵粍瀵规瘮鍒嗘瀽鐣岄潰锛堝悓涓�鍝佺墝鍚屼竴鏃堕棿锛�");
@@ -1045,4 +1048,46 @@
         wrapper.last(" limit 1");
         return mapper.selectOne(wrapper);
     }
+    //鐐瑰嚮鍙充晶鎶樼嚎鍥剧敾鍑虹數姹犵粍鎵�鏈夊畬鏁村懆鏈熺殑瀹為檯瀹归噺鍙樺寲鍥�(1.2.15/16/17)
+    public Response getRealCapChangeByBattgroupId(Integer battgroupId) {
+        QueryWrapper wrapper = new QueryWrapper();
+        wrapper.eq("battgroup_id", battgroupId);
+        wrapper.eq("test_type", 3);
+        wrapper.eq("test_starttype", 3);
+        wrapper.eq("data_available", 1);//涓�娆℃湁鏁堢殑璁板綍
+        wrapper.last("  ORDER BY test_starttime DESC ");
+        List<BatttestdataInf> list = mapper.selectList(wrapper);
+        //鑾峰彇鐢垫睜缁勭殑鏍囩О瀹归噺
+        BattInf binf=battInfService.getBattgroupIdInf(battgroupId);
+        List<ComPareChangeCurve> curvelist=new ArrayList<>();
+        for (BatttestdataInf tinf:list) {
+            int hourRate = BattCapFactory.GetHourRate(tinf.getTestCap(), tinf.getTestCurr());
+            Float realCap = (float) BattCapFactory.GetMonomerCap(binf.getMoncapstd(), hourRate, tinf.getTestCap(), tinf.getMaxMonvol(), tinf.getMinMonvol(), tinf.getGroupVol(), BattCapFactory.CapType_Real);
+            ComPareChangeCurve curve=new ComPareChangeCurve();
+            curve.setBattgroupId(battgroupId);
+            curve.setStartTime(tinf.getTestStarttime());
+            curve.setCurveValue(realCap);
+            curvelist.add(curve);
+        }
+        return new Response().setII(1,list.size()>0,curvelist,"鐐瑰嚮鍙充晶鎶樼嚎鍥剧敾鍑虹數姹犵粍鎵�鏈夊畬鏁村懆鏈熺殑瀹為檯瀹归噺鍙樺寲鍥�(1.2.15/16/17)");
+    }
+    //鐐瑰嚮鍙充晶鎶樼嚎鍥剧敾鍑虹數姹犵粍鎵�鏈夊畬鏁村懆鏈熺殑娴厖鐢靛帇鍙樺寲鍥�(1.2.15/16/17)
+    public Response getFloatGroupVolChangeByBattgroupId(Integer battgroupId) {
+        QueryWrapper wrapper = new QueryWrapper();
+        wrapper.eq("battgroup_id", battgroupId);
+        wrapper.eq("test_type", 3);
+        wrapper.eq("test_starttype", 3);
+        wrapper.eq("data_available", 1);//涓�娆℃湁鏁堢殑璁板綍
+        wrapper.last("  ORDER BY test_starttime asc ");
+        List<BatttestdataInf> list = mapper.selectList(wrapper);
+        List<ComPareChangeCurve> curvelist=new ArrayList<>();
+        for (BatttestdataInf tinf:list) {
+            ComPareChangeCurve curve=new ComPareChangeCurve();
+            curve.setBattgroupId(battgroupId);
+            curve.setStartTime(tinf.getTestStarttime());
+            curve.setCurveValue(tinf.getFloatGroupVol());
+            curvelist.add(curve);
+        }
+        return new Response().setII(1,list.size()>0,curvelist,"鐐瑰嚮鍙充晶鎶樼嚎鍥剧敾鍑虹數姹犵粍鎵�鏈夊畬鏁村懆鏈熺殑娴厖鐢靛帇鍙樺寲鍥�(1.2.15/16/17)");
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/service/SubTablePageInfoService.java b/src/main/java/com/whyc/service/SubTablePageInfoService.java
index f814cf7..d2fced7 100644
--- a/src/main/java/com/whyc/service/SubTablePageInfoService.java
+++ b/src/main/java/com/whyc/service/SubTablePageInfoService.java
@@ -5,6 +5,7 @@
 import com.whyc.dto.AlmHis.PwrAlmPar;
 import com.whyc.dto.AnalysisAlm.ResAnalysis;
 import com.whyc.dto.Real.*;
+import com.whyc.dto.Statistic.ComPareChangeCurve;
 import com.whyc.dto.Statistic.ComPareChart;
 import com.whyc.dto.Statistic.QuarterPwr7Res;
 import com.whyc.mapper.CallBack;
@@ -557,6 +558,30 @@
         });
         return list;
     }
+    //鍙栧唴闃绘祴璇曟寚瀹氬崟浣撶殑鍗曚綋鐢靛帇
+    public ComPareChangeCurve getMonResChangeByBattgroupId(Integer battgroupId, Integer testRecordCount, Integer monNum) {
+        String sql="select   distinct battgroup_id,mon_num,test_starttime,mon_res from db_batt_testdata.tb_battresdata_"+battgroupId
+                +" where test_record_count="+testRecordCount+" and monNum="+monNum;
+        List<ComPareChangeCurve> list = sqlExecuteService.executeQuery_call(sql, new CallBack() {
+            @Override
+            public List getResults(ResultSet rs) throws SQLException {
+                List<ComPareChangeCurve> list=new ArrayList<>();
+                while (rs.next()){
+                    ComPareChangeCurve data=new ComPareChangeCurve();
+                    data.setMonNum(rs.getInt("mon_num"));
+                    data.setCurveValue(rs.getFloat("mon_res"));
+                    data.setStartTime(rs.getTimestamp("test_starttime"));
+                    data.setBattgroupId(rs.getInt("battgroup_id"));
+                    list.add(data);
+                }
+                return list;
+            }
+        });
+        if(list!=null&&list.size()>0){
+            return list.get(0);
+        }
+        return null;
+    }
     //鎵捐繖娆℃斁鐢电殑鎸囧畾涓�绗旀暟鎹�
     public List<BatttestdataId> getLastDataByBattgroupId(Integer battgroupId, Integer testRecordCount, Integer recordNum) {
         String sql="select   distinct * from db_batt_testdata.tb_batttestdata_"+battgroupId
@@ -1104,4 +1129,5 @@
         });
         return list;
     }
+
 }

--
Gitblit v1.9.1