From f8479e6f138343b091b3ceeb7b232e75b3247946 Mon Sep 17 00:00:00 2001
From: whyclxw <810412026@qq.com>
Date: 星期四, 27 六月 2024 16:41:31 +0800
Subject: [PATCH] 蓄电池组后评估测试版

---
 src/main/java/com/whyc/pojo/BattTestInf.java                 |    3 
 src/main/java/com/whyc/mapper/BattTestInfMapper.java         |    9 
 src/main/java/com/whyc/util/PageInfoUtils.java               |   49 +
 src/main/resources/mapper/BattInfMapper.xml                  |    8 
 src/main/java/com/whyc/pojo/AlarmParam.java                  |   68 +
 src/main/java/com/whyc/dto/ReportBattDTO.java                |   54 +
 src/main/java/com/whyc/mapper/BattAlarmMapper.java           |    2 
 src/main/resources/mapper/BattTestInfMapper.xml              |   41 +
 src/main/java/com/whyc/service/BattTestInfService.java       |  255 +++++++
 src/main/java/com/whyc/dto/AlarmDaoFactory.java              | 1382 +++++++++++++++++++++++++++++++++++++++
 src/main/java/com/whyc/dto/BattCapFactory.java               |  162 ++++
 src/main/java/com/whyc/mapper/BattInfMapper.java             |    5 
 src/main/resources/mapper/BattAlarmMapper.xml                |    9 
 src/main/java/com/whyc/controller/BattTestInfController.java |   17 
 src/main/java/com/whyc/mapper/AlarmParamMapper.java          |    6 
 15 files changed, 2,065 insertions(+), 5 deletions(-)

diff --git a/src/main/java/com/whyc/controller/BattTestInfController.java b/src/main/java/com/whyc/controller/BattTestInfController.java
index 94b17ca..38b389b 100644
--- a/src/main/java/com/whyc/controller/BattTestInfController.java
+++ b/src/main/java/com/whyc/controller/BattTestInfController.java
@@ -1,15 +1,14 @@
 package com.whyc.controller;
 
+import com.whyc.dto.ReportBattDTO;
 import com.whyc.dto.Response;
 import com.whyc.service.BattTestInfDataService;
 import com.whyc.service.BattTestInfService;
+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.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @Api(tags = "鐢垫睜缁勫厖鏀剧數璁板綍")
@@ -34,4 +33,14 @@
         Response res=dataService.getTDataHis(binfId,testRecordCount);
         return res;
     }
+
+    /**
+     * 钃勭數姹犵粍鍚庤瘎浼�
+     */
+    @PostMapping("searchGroupAssess")
+    @ApiOperation(notes = "searchByCondition ", value = "钃勭數姹犵粍鍚庤瘎浼�")
+    public Response searchByCondition(@RequestParam int pageNum,@RequestParam int pageSize, @RequestBody ReportBattDTO tinf) {
+        //UserInf userInf = ActionUtil.getUser();
+        return service.searchGroupAssess(pageNum,pageSize,tinf,1001);
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/dto/AlarmDaoFactory.java b/src/main/java/com/whyc/dto/AlarmDaoFactory.java
new file mode 100644
index 0000000..d6d8070
--- /dev/null
+++ b/src/main/java/com/whyc/dto/AlarmDaoFactory.java
@@ -0,0 +1,1382 @@
+package com.whyc.dto;
+
+public class AlarmDaoFactory {
+
+
+	public static final int Alarm_All = 0;                //--鍏ㄩ儴
+	public static final int Alarm_vol_Online = 119001;    //--鍦ㄧ嚎鐢靛帇
+	public static final int Alarm_vol_Group = 119002;     //--缁勭鐢靛帇
+	public static final int Alarm_curr_Charge = 119003;   //--鍏呯數鐢垫祦
+	public static final int Alarm_curr_Discharge = 119004;//--鏀剧數鐢垫祦
+	public static final int Alarm_vol_Monomer = 119005;   //--鍗曚綋鐢靛帇
+	public static final int Alarm_tmp_Monomer = 119006;   //--鍗曚綋娓╁害
+	public static final int Alarm_res_Monomer = 119007;   //--鍗曚綋鍐呴樆
+	public static final int Alarm_res_Conn = 119008;      //--杩炴帴鏉¢樆鎶�
+
+	public final static int ALM_TYPE_DisChargeMonVol_ID = 119009; //--鏀剧數杩囩▼涓惤鍚庡崟浣撳憡璀�
+
+	public static final int Alarm_CapAlarm = 119010;      //--瀹归噺鍛婅鍛婅
+	public static final int Alarm_CapChange = 119011;      //--瀹归噺鏇存崲鍛婅
+	public final static int ALM_TYPE_MONLYVOL_ID = 119012;       //婕忔恫鐢靛帇鍛婅
+	public final static int ALM_TYPE_MONREALCAP_ID = 119013;      //鍗曚綋棰勪及瀹归噺鍛婅
+
+	public final static int ALM_SIGNAL_ID_Null = 0;
+	public final static int ALM_SIGNAL_ID_OnlineVolHigh = 1;
+	public final static int ALM_SIGNAL_ID_OnlineVolLow = 2;
+	public final static int ALM_SIGNAL_ID_GroupVolHigh = 3;
+	public final static int ALM_SIGNAL_ID_GroupVolLow = 4;
+	public final static int ALM_SIGNAL_ID_ChargeCurrHigh = 5;
+	public final static int ALM_SIGNAL_ID_ChargeCurrLow = 6;
+	public final static int ALM_SIGNAL_ID_DisChargeCurrHigh = 7;
+	public final static int ALM_SIGNAL_ID_DisChargeCurrLow = 8;
+	public final static int ALM_SIGNAL_ID_MonVolHigh = 9;
+	public final static int ALM_SIGNAL_ID_MonVolLow = 10;
+	public final static int ALM_SIGNAL_ID_MonTmpHigh = 11;
+	public final static int ALM_SIGNAL_ID_MonTmpLow = 12;
+	public final static int ALM_SIGNAL_ID_MonResHigh = 13;
+	public final static int ALM_SIGNAL_ID_MonResLow = 14;
+	public final static int ALM_SIGNAL_ID_ConnResHigh = 15;
+	public final static int ALM_SIGNAL_ID_ConnResLow = 16;
+	public final static int ALM_SIGNAL_ID_DischargeMonVolHigh = 17;
+	public final static int ALM_SIGNAL_ID_DischargeMonVolLow = 18;
+	public static final int Alarm_IGNAL_ID_CapAlarmLow =19;    
+	public static final int Alarm_IGNAL_ID_CapAlarmHigh =20;     
+	public static final int Alarm_IGNAL_ID_CapChangeLow =21;    
+	public static final int Alarm_IGNAL_ID_CapChangeHigh =22;
+
+	/**鐢垫簮鍛婅 */
+	public static final int acIn1_over_volA			=110001;
+	public static final int acIn1_under_volA		=110002;
+	public static final int acIn1_less_A			=110003;
+	public static final int acIn1_over_volB			=110004;
+	public static final int acIn1_under_volB		=110005;
+	public static final int acIn1_less_B			=110006;
+	public static final int acIn1_over_volC			=110007;
+	public static final int acIn1_under_volC		=110008;
+	public static final int acIn1_less_C			=110009;
+	public static final int acIn1_powerdown			=110010;
+	public static final int acIn1_thunder_err		=110011;
+	public static final int dcOut_over_vol			=110012;
+	public static final int dcOut_under_vol			=110013;
+	public static final int loader_fuse				=110014;
+	public static final int battgroup1_fuse			=110015;
+	public static final int battgroup2_fuse			=110016;
+	public static final int acdcMod1_err			=110017;
+	public static final int acdcMod2_err			=110018;
+	public static final int acdcMod3_err			=110019;
+	public static final int acdcMod4_err			=110020;
+	public static final int acdcMod5_err			=110021;
+	public static final int acdcMod6_err			=110022;
+	public static final int acdcMod7_err			=110023;
+	public static final int acdcMod8_err			=110024;
+	public static final int acdcMod9_err			=110025;
+	public static final int acdcMod10_err			=110026;
+	public static final int acdcMod11_err			=110027;
+	public static final int acdcMod12_err			=110028;
+	public static final int acdcMod13_err			=110029;
+	public static final int acdcMod14_err			=110030;
+	public static final int acdcMod15_err			=110031;
+	public static final int acdcMod16_err			=110032;
+	public static final int acIn_total_alarm		=110033;
+	public static final int dcOut_total_alarm		=110034;
+	public static final int acb1_over_currA			=110035;
+	public static final int acb1_over_currB			=110036;
+	public static final int acb1_over_currC			=110037;
+	public static final int acIn_monitorerr			=110038;
+	public static final int dcOut_over_curr			=110039;
+	public static final int total_alarm				=110040;
+	public static final int battgroup1_volLow		=110041;
+	public static final int battgroup2_volLow		=110042;
+	public static final int battgroup1_down			=110043;
+	public static final int battgroup2_down			=110044;
+	public static final int battgroup1_overChgCurr	=110045;
+	public static final int battgroup2_overChgCurr	=110046;
+	public static final int acdcMod1_overVol		=110047;
+	public static final int acdcMod2_overVol		=110048;
+	public static final int acdcMod3_overVol		=110049;
+	public static final int acdcMod4_overVol		=110050;
+	public static final int acdcMod5_overVol		=110051;
+	public static final int acdcMod6_overVol		=110052;
+	public static final int acdcMod7_overVol		=110053;
+	public static final int acdcMod8_overVol		=110054;
+	public static final int acdcMod9_overVol		=110055;
+	public static final int acdcMod10_overVol		=110056;
+	public static final int acdcMod11_overVol		=110057;
+	public static final int acdcMod12_overVol		=110058;
+	public static final int acdcMod13_overVol		=110059;
+	public static final int acdcMod14_overVol		=110060;
+	public static final int acdcMod15_overVol		=110061;
+	public static final int acdcMod16_overVol		=110062;
+	public static final int acdcMod1_underVol		=110063;
+	public static final int acdcMod2_underVol		=110064;
+	public static final int acdcMod3_underVol		=110065;
+	public static final int acdcMod4_underVol		=110066;
+	public static final int acdcMod5_underVol		=110067;
+	public static final int acdcMod6_underVol		=110068;
+	public static final int acdcMod7_underVol		=110069;
+	public static final int acdcMod8_underVol		=110070;
+	public static final int acdcMod9_underVol		=110071;
+	public static final int acdcMod10_underVol		=110072;
+	public static final int acdcMod11_underVol		=110073;
+	public static final int acdcMod12_underVol		=110074;
+	public static final int acdcMod13_underVol		=110075;
+	public static final int acdcMod14_underVol		=110076;
+	public static final int acdcMod15_underVol		=110077;
+	public static final int acdcMod16_underVol		=110078;
+	public static final int acdcMod1_overCurr		=110079;
+	public static final int acdcMod2_overCurr		=110080;
+	public static final int acdcMod3_overCurr		=110081;
+	public static final int acdcMod4_overCurr		=110082;
+	public static final int acdcMod5_overCurr		=110083;
+	public static final int acdcMod6_overCurr		=110084;
+	public static final int acdcMod7_overCurr		=110085;
+	public static final int acdcMod8_overCurr		=110086;
+	public static final int acdcMod9_overCurr		=110087;
+	public static final int acdcMod10_overCurr		=110088;
+	public static final int acdcMod11_overCurr		=110089;
+	public static final int acdcMod12_overCurr		=110090;
+	public static final int acdcMod13_overCurr		=110091;
+	public static final int acdcMod14_overCurr		=110092;
+	public static final int acdcMod15_overCurr		=110093;
+	public static final int acdcMod16_overCurr		=110094;
+	public static final int acdcMod1_acErr			=110095;
+	public static final int acdcMod2_acErr			=110096;
+	public static final int acdcMod3_acErr			=110097;
+	public static final int acdcMod4_acErr			=110098;
+	public static final int acdcMod5_acErr			=110099;
+	public static final int acdcMod6_acErr			=110100;
+	public static final int acdcMod7_acErr			=110101;
+	public static final int acdcMod8_acErr			=110102;
+	public static final int acdcMod9_acErr			=110103;
+	public static final int acdcMod10_acErr			=110104;
+	public static final int acdcMod11_acErr			=110105;
+	public static final int acdcMod12_acErr			=110106;
+	public static final int acdcMod13_acErr			=110107;
+	public static final int acdcMod14_acErr			=110108;
+	public static final int acdcMod15_acErr			=110109;
+	public static final int acdcMod16_acErr			=110110;
+	public static final int acIn1_trip				=110111;
+	public static final int acIn2_trip				=110112;
+	public static final int acIn1_fuse				=110113;
+	public static final int acIn2_fuse				=110114;
+	public static final int acIn1_unbanlance		=110115;
+	public static final int acIn2_unbanlance		=110116;
+	public static final int acIn1_freqerr = 110117;
+	public static final int acIn2_freqerr = 110118;
+	public static final int comm_err = 110119;
+	public static final int powerdev_commErr = 110120;
+	public static final int userAcIn1_PowerDown = 110121;
+	public static final int userAcIn2_PowerDown = 110122;
+	public static final int userAcIn1_CommErr = 110123;
+	public static final int userAcIn2_CommErr = 110124;
+	public static final int temp_CommErr1 = 110125;
+	public static final int temp_CommErr2 = 110126;
+	public static final int temp_CommErr3 = 110127;
+	public static final int humi_CommErr1 = 110128;
+	public static final int humi_CommErr2 = 110129;
+	public static final int humi_CommErr3 = 110130;
+	public static final int smoke_Alarm1 = 110131;
+	public static final int smoke_Alarm2 = 110132;
+	public static final int smoke_Alarm3 = 110133;
+	public static final int smoke_CommErr1 = 110134;
+	public static final int smoke_CommErr2 = 110135;
+	public static final int smoke_CommErr3 = 110136;
+	public static final int acIn2_over_volA = 110137;
+	public static final int acIn2_under_volA = 110138;
+	public static final int acIn2_less_A = 110139;
+	public static final int acIn2_over_volB = 110140;
+	public static final int acIn2_under_volB = 110141;
+	public static final int acIn2_less_B = 110142;
+	public static final int acIn2_over_volC = 110143;
+	public static final int acIn2_under_volC = 110144;
+	public static final int acIn2_less_C = 110145;
+	public static final int power_alm = 110146;
+	public static final int powerdown_commErr = 110147;
+
+
+	/*public static String getAlarmName(int type)
+	{
+		String Alarm_name = "鏈煡";
+		switch(type)                       //鍛婅鍚嶇О
+        {
+             case 1 :  Alarm_name = "鍦ㄧ嚎鐢靛帇楂�";break;
+             case 2 :  Alarm_name = "鍦ㄧ嚎鐢靛帇浣�"; break;
+             case 3 :  Alarm_name = "缁勭鐢靛帇楂�";break;
+             case 4 :  Alarm_name = "缁勭鐢靛帇浣�"; break;
+             case 5 :  Alarm_name = "鍏呯數鐢垫祦澶�";break;
+             case 6 :  Alarm_name = "鍏呯數鐢垫祦浣�"; break;
+             case 7 :  Alarm_name = "鏀剧數鐢垫祦澶�";break;
+             case 8 :  Alarm_name = "鏀剧數鐢垫祦浣�"; break;
+             case 9 :  Alarm_name = "鍗曚綋鐢靛帇楂�";break;
+             case 10 : Alarm_name = "鍗曚綋鐢靛帇浣�"; break;
+             case 11 : Alarm_name = "鍗曚綋娓╁害楂�";break;
+             case 12 : Alarm_name = "鍗曚綋娓╁害浣�";break;
+             case 13 : Alarm_name = "鍗曚綋鍐呴樆楂�";break;
+             case 14 : Alarm_name = "鍗曚綋鍐呴樆浣�"; break;
+             case 15 : Alarm_name = "杩炴帴鏉¢樆鎶楅珮";break;
+             case 16 : Alarm_name = "杩炴帴鏉¢樆鎶椾綆"; break;
+             case 17 : Alarm_name = "鏀剧數鍗曚綋鐢靛帇楂�";break;
+             case 18 : Alarm_name = "鏀剧數鍗曚綋鐢靛帇浣�";break;
+             case 19 : Alarm_name = "瀹归噺鍛婅瀹归噺浣�";break;
+             case 20 : Alarm_name = "瀹归噺鍛婅瀹归噺楂�";break;
+             case 21 : Alarm_name = "瀹归噺鏇存崲瀹归噺浣�";break;
+             case 22 : Alarm_name = "瀹归噺鏇存崲瀹归噺楂�";break;
+             case 23 : Alarm_name = "鐢垫睜姝f瀬婕忔恫";break;
+             case 24 : Alarm_name = "鐢垫睜璐熸瀬婕忔恫 ";break;
+        }
+
+		return Alarm_name;
+	}*/
+	public static String getAlarmName(int type) {
+		String Alarm_name = "NONE";
+		switch (type)                       //鍛婅鍚嶇О
+		{
+			case 1:
+				Alarm_name = "HighOnlineVoltage";
+				break;
+			case 2:
+				Alarm_name = "LowOnlineVoltage";
+				break;
+			case 3:
+				Alarm_name = "HighGroupVoltage";
+				break;
+			case 4:
+				Alarm_name = "LowGroupVoltage";
+				break;
+			case 5:
+				Alarm_name = "HighChargingCurrent";
+				break;
+			case 6:
+				Alarm_name = "LowChargingCurrent";
+				break;
+			case 7:
+				Alarm_name = "HighDischargCurrent";
+				break;
+			case 8:
+				Alarm_name = "LowDischargCurrent";
+				break;
+			case 9:
+				Alarm_name = "HighIndividualVoltage";
+				break;
+			case 10:
+				Alarm_name = "LowIndividualVoltage";
+				break;
+			case 11:
+				Alarm_name = "HighMonomerTemperature";
+				break;
+			case 12:
+				Alarm_name = "LowMonomerTemperature";
+				break;
+			case 13:
+				Alarm_name = "HighIndividualResistance";
+				break;
+			case 14:
+				Alarm_name = "LowIndividualResistance";
+				break;
+			case 15:
+				Alarm_name = "HighConnectionBarImpedance";
+				break;
+			case 16:
+				Alarm_name = "LowConnectionBarImpedance";
+				break;
+			case 17:
+				Alarm_name = "HighDischargeUnitVoltage";
+				break;
+			case 18:
+				Alarm_name = "LowDischargeUnitVoltage";
+				break;
+			case 19:
+				Alarm_name = "LowCapacityAlarmCapacity";
+				break;
+			case 20:
+				Alarm_name = "HighCapacityAlarmCapacity";
+				break;
+			case 21:
+				Alarm_name = "LowCapacityReplaceCapacity";
+				break;
+			case 22:
+				Alarm_name = "HighCapacityReplaceCapacity";
+				break;
+			case 23:
+				Alarm_name = "BatteryPositiveElectrodeLeakage";
+				break;
+			case 24:
+				Alarm_name = "BatteryNegativeElectrodeLeakage";
+				break;
+		}
+		return Alarm_name;
+	}
+
+	/*public static String getAlarmType(int type) {
+		String Alarm_Type = "鏈煡";
+		switch (type) {
+			case 1:
+				Alarm_Type = "涓�绾у憡璀�";
+				break;
+			case 2:
+				Alarm_Type = "浜岀骇鍛婅";
+				break;
+			case 3:
+				Alarm_Type = "涓夌骇鍛婅";
+				break;
+			case 4:
+				Alarm_Type = "鍥涚骇鍛婅";
+				break;
+			case 5:
+				Alarm_Type = "浜旂骇鍛婅";
+				break;
+			case 6:
+				Alarm_Type = "鍏骇鍛婅";
+				break;
+			case 7:
+				Alarm_Type = "涓冪骇鍛婅";
+				break;
+			case 8:
+				Alarm_Type = "鍏骇鍛婅";
+				break;
+			case 9:
+				Alarm_Type = "涔濈骇鍛婅";
+				break;
+			case 10:
+				Alarm_Type = "鍗佺骇鍛婅";
+				break;
+		}
+		return Alarm_Type;
+		
+	}*/
+	public static String getAlarmType(int type) {
+		String Alarm_Type = "NONE";
+		switch (type) {
+			case 1:
+				Alarm_Type = "level1Alarm";
+				break;
+			case 2:
+				Alarm_Type = "level2Alarm";
+				break;
+			case 3:
+				Alarm_Type = "level3Alarm";
+				break;
+			case 4:
+				Alarm_Type = "level4Alarm";
+				break;
+			case 5:
+				Alarm_Type = "level5Alarm";
+				break;
+			case 6:
+				Alarm_Type = "level6Alarm";
+				break;
+			case 7:
+				Alarm_Type = "level7Alarm";
+				break;
+			case 8:
+				Alarm_Type = "level8Alarm";
+				break;
+			case 9:
+				Alarm_Type = "level9Alarm";
+				break;
+			case 10:
+				Alarm_Type = "level10Alarm";
+				break;
+		}
+		return Alarm_Type;
+
+	}
+
+	
+	/*public static String getdevName(int type)
+	{
+		String dev_name = "鏈煡";
+		switch(type)                       //鍛婅鍚嶇О
+        {
+			case 119020:
+				dev_name = "閫氳鏁呴殰";
+				break;
+			case 618501:
+				dev_name = "缁х數鍣ㄥ憡璀�";
+				break;
+			case 618502:
+				dev_name = "閫氳鍛婅";
+				break;
+			case 618503:
+				dev_name = "璁惧杩囨俯鍛婅";
+				break;
+			case 618504:
+				dev_name = "浜屾瀬绠1鍛婅";
+				break;
+			case 618505:
+				dev_name = "骞叉帴鐐瑰憡璀�";
+				break;
+			case 618506:
+				dev_name = "寮傚父鏍稿鎴栧吇鎶ょ粓姝㈠憡璀�";
+				break;
+			case 119023:
+				dev_name = "缁埅涓嶈冻鍛婅";
+				break;
+			case 119024:
+				dev_name = "鍩虹珯鍋滅數鍛婅";
+				break;
+			case 119025:
+				dev_name = "鍩虹珯鍙戠數鍛婅";
+				break;
+			case 119026:
+				dev_name = "鍩虹珯鎺夌珯鍛婅";
+				break;
+			case 119027:
+				dev_name = "鍩虹珯寮�闂ㄥ憡璀�";
+				break;
+			case 119028:
+				dev_name = "璁惧楂樻俯鍛婅";
+				break;
+			case 119032:
+				dev_name = "璁惧SD鍗℃晠闅�";
+				break;
+			case 119033:
+				dev_name = "閲囬泦绾垮憡璀�";
+				break;
+			case 119034:
+				dev_name = "鍋滅數鐢垫祦鍧囪 鍛婅";
+				break;
+
+		}
+
+		return dev_name;
+	}*/
+
+	public static String getdevName(int type) {
+		String dev_name = "NONE";
+		switch (type)                       //鍛婅鍚嶇О
+		{
+			case 119020:
+				dev_name = "CommunicationFailure";
+				break;
+			case 618501:
+				dev_name = "RelayAlarm";
+				break;
+			case 618502:
+				dev_name = "CommunicationAlarm";
+				break;
+			case 618503:
+				dev_name = "EquipmentOverTemperatureAlarm";
+				break;
+			case 618504:
+				dev_name = "DiodeD1Alarm";
+				break;
+			case 618505:
+				dev_name = "DryContactAlarm";
+				break;
+			case 618506:
+				dev_name = "AbnormalNuclearCapacityOrMaintenanceTerminationAlarm";
+				break;
+			case 119023:
+				dev_name = "InsufficientBatteryLifeAlarm";
+				break;
+			case 119024:
+				dev_name = "BaseStationPowerOutageAlarm";
+				break;
+			case 119025:
+				dev_name = "BaseStationPowerGenerationAlarm";
+				break;
+			case 119026:
+				dev_name = "BaseStationDropAlarm";
+				break;
+			case 119027:
+				dev_name = "BaseStationDoorOpeningAlarm";
+				break;
+			case 119028:
+				dev_name = "EquipmentHighTemperatureAlarm";
+				break;
+			case 119032:
+				dev_name = "DeviceSDCardFailure";
+				break;
+			case 119033:
+				dev_name = "AcquisitionLineAlarm";
+				break;
+			case 119034:
+				dev_name = "PowerOutageCurrentBalanceAlarm";
+				break;
+
+		}
+
+		return dev_name;
+	}
+
+	/**
+	 * 璁惧alm_type鍜岀數姹燼lm_signal_id,鐢垫簮鍛婅鐨刟larmType鑾峰彇瀵瑰簲鐨勫憡璀︾被鍨�
+	 *
+	 * @param type
+	 * @return
+	 */
+	public static String getAllAlarmName(int type) {
+		String Alarm_name = "鏈煡";
+		switch (type)                       //鍛婅鍚嶇О
+		{
+			//鐢垫睜鍛婅
+			case 1:
+				Alarm_name = "鍦ㄧ嚎鐢靛帇楂�";
+				break;
+			case 2:
+				Alarm_name = "鍦ㄧ嚎鐢靛帇浣�";
+				break;
+			case 3:
+				Alarm_name = "缁勭鐢靛帇楂�";
+				break;
+			case 4:
+				Alarm_name = "缁勭鐢靛帇浣�";
+				break;
+			case 5:
+				Alarm_name = "鍏呯數鐢垫祦澶�";
+				break;
+			case 6:
+				Alarm_name = "鍏呯數鐢垫祦浣�";
+				break;
+			case 7:
+				Alarm_name = "鏀剧數鐢垫祦澶�";
+				break;
+			case 8:
+				Alarm_name = "鏀剧數鐢垫祦浣�";
+				break;
+			case 9:
+				Alarm_name = "鍗曚綋鐢靛帇楂�";
+				break;
+			case 10:
+				Alarm_name = "鍗曚綋鐢靛帇浣�";
+				break;
+			case 11:
+				Alarm_name = "鍗曚綋娓╁害楂�";
+				break;
+			case 12:
+				Alarm_name = "鍗曚綋娓╁害浣�";
+				break;
+			case 13:
+				Alarm_name = "鍗曚綋鍐呴樆楂�";
+				break;
+			case 14:
+				Alarm_name = "鍗曚綋鍐呴樆浣�";
+				break;
+			case 15:
+				Alarm_name = "杩炴帴鏉¢樆鎶楅珮";
+				break;
+			case 16:
+				Alarm_name = "杩炴帴鏉¢樆鎶椾綆";
+				break;
+			case 17:
+				Alarm_name = "鏀剧數鍗曚綋鐢靛帇楂�";
+				break;
+			case 18:
+				Alarm_name = "鏀剧數鍗曚綋鐢靛帇浣�";
+				break;
+			case 19:
+				Alarm_name = "瀹归噺鍛婅瀹归噺浣�";
+				break;
+			case 20:
+				Alarm_name = "瀹归噺鍛婅瀹归噺楂�";
+				break;
+			case 21:
+				Alarm_name = "瀹归噺鏇存崲瀹归噺浣�";
+				break;
+			case 22:
+				Alarm_name = "瀹归噺鏇存崲瀹归噺楂�";
+				break;
+			case 23:
+				Alarm_name = "婕忔恫鐢靛帇楂�";
+				break;
+			case 24:
+				Alarm_name = "婕忔恫鐢靛帇浣� ";
+				break;
+			//璁惧鍛婅
+			case 119020:
+				Alarm_name = "閫氳鏁呴殰";
+				break;
+			case 618501:
+				Alarm_name = "缁х數鍣ㄥ憡璀�";
+				break;
+			case 618502:
+				Alarm_name = "閫氳鍛婅";
+				break;
+			case 618503:
+				Alarm_name = "璁惧杩囨俯鍛婅";
+				break;
+			case 618504:
+				Alarm_name = "浜屾瀬绠1鍛婅";
+				break;
+			case 618505:
+				Alarm_name = "骞叉帴鐐瑰憡璀�";
+				break;
+			case 618506:
+				Alarm_name = "寮傚父鏍稿鎴栧吇鎶ょ粓姝㈠憡璀�";
+				break;
+			case 119023:
+				Alarm_name = "缁埅涓嶈冻鍛婅";
+				break;
+			case 119024:
+				Alarm_name = "鍩虹珯鍋滅數鍛婅";
+				break;
+			case 119025:
+				Alarm_name = "鍩虹珯鍙戠數鍛婅";
+				break;
+			case 119026:
+				Alarm_name = "鍩虹珯鎺夌珯鍛婅";
+				break;
+			case 119027:
+				Alarm_name = "鍩虹珯寮�闂ㄥ憡璀�";
+				break;
+			case 119028:
+				Alarm_name = "璁惧楂樻俯鍛婅";
+				break;
+			case 119032:
+				Alarm_name = "璁惧SD鍗℃晠闅�";
+				break;
+			case 119033:
+				Alarm_name = "閲囬泦绾垮憡璀�";
+				break;
+			case 119034:
+				Alarm_name = "鍋滅數鐢垫祦鍧囪 鍛婅";
+				break;
+			//鐢垫簮鍛婅
+			case acIn1_over_volA:
+				Alarm_name = "1璺氦娴丄鐩歌繃鍘�";
+				break;
+			case acIn1_under_volA:
+				Alarm_name = "1璺氦娴丄鐩告瑺鍘�";
+				break;
+			case acIn1_less_A:
+				Alarm_name = "1璺氦娴丄鐩哥己鐩�";
+				break;
+			case acIn1_over_volB:
+				Alarm_name = "1璺氦娴丅鐩歌繃鍘�";
+				break;
+			case acIn1_under_volB:
+				Alarm_name = "1璺氦娴丅鐩告瑺鍘�";
+				break;
+			case acIn1_less_B:
+				Alarm_name = "1璺氦娴丅鐩哥己鐩�";
+				break;
+			case acIn1_over_volC:
+				Alarm_name = "1璺氦娴丆鐩歌繃鍘�";
+				break;
+			case acIn1_under_volC:
+				Alarm_name = "1璺氦娴丆鐩告瑺鍘�";
+				break;
+			case acIn1_less_C:
+				Alarm_name = "1璺氦娴丆鐩哥己鐩�";
+				break;
+			case acIn1_powerdown:
+				Alarm_name = "浜ゆ祦鍋滅數";
+				break;
+			case acIn1_thunder_err:
+				Alarm_name = "闃查浄鍣ㄦ晠闅�";
+				break;
+			case dcOut_over_vol:
+				Alarm_name = "鐩存祦鐢靛帇杩囬珮";
+				break;
+			case dcOut_under_vol:
+				Alarm_name = "鐩存祦鐢靛帇杩囦綆";
+				break;
+			case loader_fuse:
+				Alarm_name = "璐熻浇鐔旀柇";
+				break;
+			case battgroup1_fuse:
+				Alarm_name = "鐢垫睜缁�1鐔旀柇";
+				break;
+			case battgroup2_fuse:
+				Alarm_name = "鐢垫睜缁�2鐔旀柇";
+				break;
+			case acdcMod1_err:
+				Alarm_name = "鏁存祦鍣�1鎬绘晠闅�";
+				break;
+			case acdcMod2_err:
+				Alarm_name = "鏁存祦鍣�2鎬绘晠闅�";
+				break;
+			case acdcMod3_err:
+				Alarm_name = "鏁存祦鍣�3鎬绘晠闅�";
+				break;
+			case acdcMod4_err:
+				Alarm_name = "鏁存祦鍣�4鎬绘晠闅�";
+				break;
+			case acdcMod5_err:
+				Alarm_name = "鏁存祦鍣�5鎬绘晠闅�";
+				break;
+			case acdcMod6_err:
+				Alarm_name = "鏁存祦鍣�6鎬绘晠闅�";
+				break;
+			case acdcMod7_err:
+				Alarm_name = "鏁存祦鍣�7鎬绘晠闅�";
+				break;
+			case acdcMod8_err:
+				Alarm_name = "鏁存祦鍣�8鎬绘晠闅�";
+				break;
+			case acdcMod9_err:
+				Alarm_name = "鏁存祦鍣�9鎬绘晠闅�";
+				break;
+			case acdcMod10_err:
+				Alarm_name = "鏁存祦鍣�10鎬绘晠闅�";
+				break;
+			case acdcMod11_err:
+				Alarm_name = "鏁存祦鍣�11鎬绘晠闅�";
+				break;
+			case acdcMod12_err:
+				Alarm_name = "鏁存祦鍣�12鎬绘晠闅�";
+				break;
+			case acdcMod13_err:
+				Alarm_name = "鏁存祦鍣�13鎬绘晠闅�";
+				break;
+			case acdcMod14_err:
+				Alarm_name = "鏁存祦鍣�14鎬绘晠闅�";
+				break;
+			case acdcMod15_err:
+				Alarm_name = "鏁存祦鍣�15鎬绘晠闅�";
+				break;
+			case acdcMod16_err:
+				Alarm_name = "鏁存祦鍣�16鎬绘晠闅�";
+				break;
+			case acIn_total_alarm:
+				Alarm_name = "浜ゆ祦鎬绘晠闅�";
+				break;
+			case dcOut_total_alarm:
+				Alarm_name = "鐩存祦鎬绘晠闅�";
+				break;
+			case acb1_over_currA:
+				Alarm_name = "浜ゆ祦A鐩歌繃娴�";
+				break;
+			case acb1_over_currB:
+				Alarm_name = "浜ゆ祦B鐩歌繃娴�";
+				break;
+			case acb1_over_currC:
+				Alarm_name = "浜ゆ祦C鐩歌繃娴�";
+				break;
+			case acIn_monitorerr:
+				Alarm_name = "鐩戞帶鍣ㄦ晠闅�";
+				break;
+			case dcOut_over_curr:
+				Alarm_name = "鐩存祦杩囨祦";
+				break;
+			case total_alarm:
+				Alarm_name = "寮�鍏虫煖鎬绘姤璀�";
+				break;
+			case battgroup1_volLow:
+				Alarm_name = "鐢垫睜缁�1鐢靛帇浣�";
+				break;
+			case battgroup2_volLow:
+				Alarm_name = "鐢垫睜缁�2鐢靛帇浣�";
+				break;
+			case battgroup1_down:
+				Alarm_name = "鐢垫睜缁�1涓嬬數";
+				break;
+			case battgroup2_down:
+				Alarm_name = "鐢垫睜缁�2涓嬬數";
+				break;
+			case battgroup1_overChgCurr:
+				Alarm_name = "鐢垫睜缁�1鍏呯數杩囨祦";
+				break;
+			case battgroup2_overChgCurr:
+				Alarm_name = "鐢垫睜缁�2鍏呯數杩囨祦";
+				break;
+			case acdcMod1_overVol:
+				Alarm_name = "鏁存祦鍣�1杩囧帇";
+				break;
+			case acdcMod2_overVol:
+				Alarm_name = "鏁存祦鍣�2杩囧帇";
+				break;
+			case acdcMod3_overVol:
+				Alarm_name = "鏁存祦鍣�3杩囧帇";
+				break;
+			case acdcMod4_overVol:
+				Alarm_name = "鏁存祦鍣�4杩囧帇";
+				break;
+			case acdcMod5_overVol:
+				Alarm_name = "鏁存祦鍣�5杩囧帇";
+				break;
+			case acdcMod6_overVol:
+				Alarm_name = "鏁存祦鍣�6杩囧帇";
+				break;
+			case acdcMod7_overVol:
+				Alarm_name = "鏁存祦鍣�7杩囧帇";
+				break;
+			case acdcMod8_overVol:
+				Alarm_name = "鏁存祦鍣�8杩囧帇";
+				break;
+			case acdcMod9_overVol:
+				Alarm_name = "鏁存祦鍣�9杩囧帇";
+				break;
+			case acdcMod10_overVol:
+				Alarm_name = "鏁存祦鍣�10杩囧帇";
+				break;
+			case acdcMod11_overVol:
+				Alarm_name = "鏁存祦鍣�11杩囧帇";
+				break;
+			case acdcMod12_overVol:
+				Alarm_name = "鏁存祦鍣�12杩囧帇";
+				break;
+			case acdcMod13_overVol:
+				Alarm_name = "鏁存祦鍣�13杩囧帇";
+				break;
+			case acdcMod14_overVol:
+				Alarm_name = "鏁存祦鍣�14杩囧帇";
+				break;
+			case acdcMod15_overVol:
+				Alarm_name = "鏁存祦鍣�15杩囧帇";
+				break;
+			case acdcMod16_overVol:
+				Alarm_name = "鏁存祦鍣�16杩囧帇";
+				break;
+			case acdcMod1_underVol:
+				Alarm_name = "鏁存祦鍣�1娆犲帇";
+				break;
+			case acdcMod2_underVol:
+				Alarm_name = "鏁存祦鍣�2娆犲帇";
+				break;
+			case acdcMod3_underVol:
+				Alarm_name = "鏁存祦鍣�3娆犲帇";
+				break;
+			case acdcMod4_underVol:
+				Alarm_name = "鏁存祦鍣�4娆犲帇";
+				break;
+			case acdcMod5_underVol:
+				Alarm_name = "鏁存祦鍣�5娆犲帇";
+				break;
+			case acdcMod6_underVol:
+				Alarm_name = "鏁存祦鍣�6娆犲帇";
+				break;
+			case acdcMod7_underVol:
+				Alarm_name = "鏁存祦鍣�7娆犲帇";
+				break;
+			case acdcMod8_underVol:
+				Alarm_name = "鏁存祦鍣�8娆犲帇";
+				break;
+			case acdcMod9_underVol:
+				Alarm_name = "鏁存祦鍣�9娆犲帇";
+				break;
+			case acdcMod10_underVol:
+				Alarm_name = "鏁存祦鍣�10娆犲帇";
+				break;
+			case acdcMod11_underVol:
+				Alarm_name = "鏁存祦鍣�11娆犲帇";
+				break;
+			case acdcMod12_underVol:
+				Alarm_name = "鏁存祦鍣�12娆犲帇";
+				break;
+			case acdcMod13_underVol:
+				Alarm_name = "鏁存祦鍣�13娆犲帇";
+				break;
+			case acdcMod14_underVol:
+				Alarm_name = "鏁存祦鍣�14娆犲帇";
+				break;
+			case acdcMod15_underVol:
+				Alarm_name = "鏁存祦鍣�15娆犲帇";
+				break;
+			case acdcMod16_underVol:
+				Alarm_name = "鏁存祦鍣�16娆犲帇";
+				break;
+			case acdcMod1_overCurr:
+				Alarm_name = "鏁存祦鍣�1杩囨祦";
+				break;
+			case acdcMod2_overCurr:
+				Alarm_name = "鏁存祦鍣�2杩囨祦";
+				break;
+			case acdcMod3_overCurr:
+				Alarm_name = "鏁存祦鍣�3杩囨祦";
+				break;
+			case acdcMod4_overCurr:
+				Alarm_name = "鏁存祦鍣�4杩囨祦";
+				break;
+			case acdcMod5_overCurr:
+				Alarm_name = "鏁存祦鍣�5杩囨祦";
+				break;
+			case acdcMod6_overCurr:
+				Alarm_name = "鏁存祦鍣�6杩囨祦";
+				break;
+			case acdcMod7_overCurr:
+				Alarm_name = "鏁存祦鍣�7杩囨祦";
+				break;
+			case acdcMod8_overCurr:
+				Alarm_name = "鏁存祦鍣�8杩囨祦";
+				break;
+			case acdcMod9_overCurr:
+				Alarm_name = "鏁存祦鍣�9杩囨祦";
+				break;
+			case acdcMod10_overCurr:
+				Alarm_name = "鏁存祦鍣�10杩囨祦";
+				break;
+			case acdcMod11_overCurr:
+				Alarm_name = "鏁存祦鍣�11杩囨祦";
+				break;
+			case acdcMod12_overCurr:
+				Alarm_name = "鏁存祦鍣�12杩囨祦";
+				break;
+			case acdcMod13_overCurr:
+				Alarm_name = "鏁存祦鍣�13杩囨祦";
+				break;
+			case acdcMod14_overCurr:
+				Alarm_name = "鏁存祦鍣�14杩囨祦";
+				break;
+			case acdcMod15_overCurr:
+				Alarm_name = "鏁存祦鍣�15杩囨祦";
+				break;
+			case acdcMod16_overCurr:
+				Alarm_name = "鏁存祦鍣�16杩囨祦";
+				break;
+			case acdcMod1_acErr:
+				Alarm_name = "鏁存祦鍣�1浜ゆ祦寮傚父";
+				break;
+			case acdcMod2_acErr:
+				Alarm_name = "鏁存祦鍣�2浜ゆ祦寮傚父";
+				break;
+			case acdcMod3_acErr:
+				Alarm_name = "鏁存祦鍣�3浜ゆ祦寮傚父";
+				break;
+			case acdcMod4_acErr:
+				Alarm_name = "鏁存祦鍣�4浜ゆ祦寮傚父";
+				break;
+			case acdcMod5_acErr:
+				Alarm_name = "鏁存祦鍣�5浜ゆ祦寮傚父";
+				break;
+			case acdcMod6_acErr:
+				Alarm_name = "鏁存祦鍣�6浜ゆ祦寮傚父";
+				break;
+			case acdcMod7_acErr:
+				Alarm_name = "鏁存祦鍣�7浜ゆ祦寮傚父";
+				break;
+			case acdcMod8_acErr:
+				Alarm_name = "鏁存祦鍣�8浜ゆ祦寮傚父";
+				break;
+			case acdcMod9_acErr:
+				Alarm_name = "鏁存祦鍣�9浜ゆ祦寮傚父";
+				break;
+			case acdcMod10_acErr:
+				Alarm_name = "鏁存祦鍣�10浜ゆ祦寮傚父";
+				break;
+			case acdcMod11_acErr:
+				Alarm_name = "鏁存祦鍣�11浜ゆ祦寮傚父";
+				break;
+			case acdcMod12_acErr:
+				Alarm_name = "鏁存祦鍣�12浜ゆ祦寮傚父";
+				break;
+			case acdcMod13_acErr:
+				Alarm_name = "鏁存祦鍣�13浜ゆ祦寮傚父";
+				break;
+			case acdcMod14_acErr:
+				Alarm_name = "鏁存祦鍣�14浜ゆ祦寮傚父";
+				break;
+			case acdcMod15_acErr:
+				Alarm_name = "鏁存祦鍣�15浜ゆ祦寮傚父";
+				break;
+			case acdcMod16_acErr:
+				Alarm_name = "鏁存祦鍣�16浜ゆ祦寮傚父";
+				break;
+			case acIn1_trip:
+				Alarm_name = "浜ゆ祦杈撳叆1璺抽椄";
+				break;
+			case acIn2_trip:
+				Alarm_name = "浜ゆ祦杈撳叆2璺抽椄";
+				break;
+			case acIn1_fuse:
+				Alarm_name = "浜ゆ祦杈撳叆1鐔斾笣鍛婅";
+				break;
+			case acIn2_fuse:
+				Alarm_name = "浜ゆ祦杈撳叆2鐔斾笣鍛婅";
+				break;
+			case acIn1_unbanlance:
+				Alarm_name = "浜ゆ祦杈撳叆1涓夌浉涓嶅钩琛�";
+				break;
+			case acIn2_unbanlance:
+				Alarm_name = "浜ゆ祦杈撳叆2涓夌浉涓嶅钩琛�";
+				break;
+			case acIn1_freqerr:
+				Alarm_name = "浜ゆ祦杈撳叆1棰戠巼寮傚父";
+				break;
+			case acIn2_freqerr:
+				Alarm_name = "浜ゆ祦杈撳叆2棰戠巼寮傚父";
+				break;
+			case comm_err:
+				Alarm_name = "鍗忚浆閫氫俊鏁呴殰";
+				break;
+			case powerdev_commErr:
+				Alarm_name = "鐢垫簮閫氫俊鏁呴殰";
+				break;
+			case userAcIn1_PowerDown:
+				Alarm_name = "浜ゆ祦杈撳叆1鍋滅數";
+				break;
+			case userAcIn2_PowerDown:
+				Alarm_name = "浜ゆ祦杈撳叆2鍋滅數";
+				break;
+			case userAcIn1_CommErr:
+				Alarm_name = "浜ゆ祦1閲囬泦閫氫俊鏁呴殰";
+				break;
+			case userAcIn2_CommErr:
+				Alarm_name = "浜ゆ祦2閲囬泦閫氫俊鏁呴殰";
+				break;
+			case temp_CommErr1		 : Alarm_name =	"娓╂劅1閫氫俊鏁呴殰";break;
+			case temp_CommErr2		 : Alarm_name =	"娓╂劅2閫氫俊鏁呴殰";break;
+			case temp_CommErr3:
+				Alarm_name = "娓╂劅3閫氫俊鏁呴殰";
+				break;
+			case humi_CommErr1:
+				Alarm_name = "婀挎劅1閫氫俊鏁呴殰";
+				break;
+			case humi_CommErr2:
+				Alarm_name = "婀挎劅2閫氫俊鏁呴殰";
+				break;
+			case humi_CommErr3:
+				Alarm_name = "婀挎劅3閫氫俊鏁呴殰";
+				break;
+			case smoke_Alarm1:
+				Alarm_name = "鐑熸劅1鎶ヨ";
+				break;
+			case smoke_Alarm2:
+				Alarm_name = "鐑熸劅2鎶ヨ";
+				break;
+			case smoke_Alarm3:
+				Alarm_name = "鐑熸劅3鎶ヨ";
+				break;
+			case smoke_CommErr1:
+				Alarm_name = "鐑熸劅1閫氫俊鏁呴殰";
+				break;
+			case smoke_CommErr2:
+				Alarm_name = "鐑熸劅2閫氫俊鏁呴殰";
+				break;
+			case smoke_CommErr3:
+				Alarm_name = "鐑熸劅3閫氫俊鏁呴殰";
+				break;
+			case acIn2_over_volA:
+				Alarm_name = "2璺氦娴丄鐩歌繃鍘�";
+				break;
+			case acIn2_under_volA:
+				Alarm_name = "2璺氦娴丄鐩告瑺鍘�";
+				break;
+			case acIn2_less_A:
+				Alarm_name = "2璺氦娴丄鐩哥己鐩�";
+				break;
+			case acIn2_over_volB:
+				Alarm_name = "2璺氦娴丅鐩歌繃鍘�";
+				break;
+			case acIn2_under_volB:
+				Alarm_name = "2璺氦娴丅鐩告瑺鍘�";
+				break;
+			case acIn2_less_B:
+				Alarm_name = "2璺氦娴丅鐩哥己鐩�";
+				break;
+			case acIn2_over_volC:
+				Alarm_name = "2璺氦娴丆鐩歌繃鍘�";
+				break;
+			case acIn2_under_volC:
+				Alarm_name = "2璺氦娴丆鐩告瑺鍘�";
+				break;
+			case acIn2_less_C:
+				Alarm_name = "2璺氦娴丆鐩哥己鐩�";
+				break;
+			case power_alm:
+				Alarm_name = "鐢垫簮鍛婅";
+				break;
+			case powerdown_commErr:
+				Alarm_name = "浜ゆ祦鍋滅數閫氫俊鏁呴殰";
+				break;
+
+			default:
+				Alarm_name = "鏈煡鍛婅";
+				break;
+		}
+
+		return Alarm_name;
+	}
+
+
+	/*
+	* ups鍛婅瀵瑰簲鍏崇郴*/
+	public static String getUpsAlarmName(int type) {
+		String Alarm_name = "鏈煡";
+		switch (type)                       //鍛婅鍚嶇О
+		{
+			//鐢垫睜鍛婅
+			case 116001:
+				Alarm_name = "閫嗗彉鍣ㄤ笉鍚屾";
+				break;
+			case 116002:
+				Alarm_name = "涓昏矾鐢靛帇寮傚父";
+				break;
+			case 116003:
+				Alarm_name = "鏁存祦鍣ㄥ紓甯�";
+				break;
+			case 116004:
+				Alarm_name = "閫嗗彉鍣ㄥ紓甯�";
+				break;
+			case 116005:
+				Alarm_name = "鏃佽矾寮傚父";
+				break;
+			case 116006:
+				Alarm_name = "鐢垫睜鐢靛帇浣庝簬涓嬮檺";
+				break;
+			case 116007:
+				Alarm_name = "鐢垫睜鐢靛帇杩囬珮";
+				break;
+			case 116008:
+				Alarm_name = "鐢垫睜鏈帴鍏�";
+				break;
+			case 116009:
+				Alarm_name = "鐢垫睜鐢靛帇浣庨鍛婅";
+				break;
+			case 116010:
+				Alarm_name = "鐢垫睜鎺ュ弽";
+				break;
+			case 116011:
+				Alarm_name = "ParaMonCAN閫氳寮傚父";
+				break;
+			case 116012:
+				Alarm_name = "PowerCAN閫氳寮傚父";
+				break;
+			case 116013:
+				Alarm_name = "鏁存祦DSP绋嬪簭閿欒";
+				break;
+			case 116014:
+				Alarm_name = "鏁存祦FPGA绋嬪簭閿欒";
+				break;
+			case 116015:
+				Alarm_name = "閫嗗彉DSP绋嬪簭閿欒";
+				break;
+			case 116016:
+				Alarm_name = "閫嗗彉FPGA绋嬪簭閿欒";
+				break;
+			case 116017:
+				Alarm_name = "鏃佽矾DSP绋嬪簭閿欒";
+				break;
+			case 116018:
+				Alarm_name = "鏃佽矾FPGA绋嬪簭閿欒";
+				break;
+			case 116019:
+				Alarm_name = "鏈烘灦鍐呯鏁f�荤嚎閫氳寮傚父";
+				break;
+			case 116020:
+				Alarm_name = "鏈烘灦闂寸鏁f�荤嚎閫氳寮傚父";
+				break;
+			case 116021:
+				Alarm_name = "涓绘帶妯″潡璁剧疆涓嶅尮閰�";
+				break;
+			case 116022:
+				Alarm_name = "LBS寮傚父";
+				break;
+			case 116023:
+				Alarm_name = "绱ф�ュ叧鏈�";
+				break;
+			case 116024:
+				Alarm_name = "鏃佽矾鏅堕椄绠℃晠闅� ";
+				break;
+			case 116025:
+				Alarm_name = "鏃佽矾鐩稿簭鍙�";
+				break;
+			case 116026:
+				Alarm_name = "鏃佽矾杩囨祦";
+				break;
+			case 116027:
+				Alarm_name = "鏃佽矾寮傚父鍏虫満";
+				break;
+			case 116028:
+				Alarm_name = "鍒囨崲娆℃暟闄愬埗";
+				break;
+			case 116029:
+				Alarm_name = "ECO鍒囨崲娆℃暟闄愬埗";
+				break;
+			case 116030:
+				Alarm_name = "ParaPowerCan閫氳寮傚父";
+				break;
+			case 116031:
+				Alarm_name = "鐢垫睜鏀剧數闄愭祦";
+				break;
+			case 116032:
+				Alarm_name = "鏀剧數鍣ㄦ晠闅�";
+				break;
+			case 116033:
+				Alarm_name = "鍏呯數鍣ㄦ晠闅�";
+				break;
+			case 116034:
+				Alarm_name = "LBS杩炴帴绾垮紓甯�";
+				break;
+			case 116035:
+				Alarm_name = "鐢垫睜闇�缁存姢";
+				break;
+			case 116036:
+				Alarm_name = "鐢垫睜杩囨俯";
+				break;
+			case 116037:
+				Alarm_name = "鐢垫睜鎺ュ湴鏁呴殰";
+				break;
+			case 116038:
+				Alarm_name = "涓昏矾棰戠巼寮傚父";
+				break;
+			case 116039:
+				Alarm_name = "妯″潡杩囨俯";
+				break;
+			case 116040:
+				Alarm_name = "浠庢帶妯″潡璁剧疆涓嶅尮閰�";
+				break;
+			case 116041:
+				Alarm_name = "鎺ュ彛妯″潡璁剧疆涓嶅尮閰�";
+				break;
+			case 116042:
+				Alarm_name = "鍧囧厖瓒呮椂";
+				break;
+			case 116043:
+				Alarm_name = "杈呭姪鐢垫簮鎺夌數";
+				break;
+			case 116044:
+				Alarm_name = "涓昏矾鐩稿簭鍙� ";
+				break;
+			case 116045:
+				Alarm_name = "鏁存祦鍣ㄨ蒋鍚姩澶辫触 ";
+				break;
+			case 116046:
+				Alarm_name = "鐢ㄦ埛鎿嶄綔閿欒";
+				break;
+			case 116047:
+				Alarm_name = "杈撳嚭鐔斾笣鏂�";
+				break;
+			case 116048:
+				Alarm_name = "杈撳嚭杩囪浇";
+				break;
+			case 116049:
+				Alarm_name = "绯荤粺杩囪浇";
+				break;
+			case 116050:
+				Alarm_name = "杈撳嚭杩囪浇瓒呮椂";
+				break;
+			case 116051:
+				Alarm_name = "璐熻浇鍐插嚮杞梺璺�";
+				break;
+			case 116052:
+				Alarm_name = "骞舵満鍧囨祦寮傚父";
+				break;
+			case 116053:
+				Alarm_name = "姣嶇嚎寮傚父鍏虫満";
+				break;
+			case 116054:
+				Alarm_name = "涓存満璇锋眰杞梺璺� ";
+				break;
+			case 116055:
+				Alarm_name = "鐩存祦姣嶇嚎杩囧帇 ";
+				break;
+			case 116056:
+				Alarm_name = "MonCAN閫氳寮傚父 ";
+				break;
+			case 116057:
+				Alarm_name = "杈撳叆缂洪浂鏁呴殰";
+				break;
+			case 116058:
+				Alarm_name = "閫嗗彉缁х數鍣ㄦ晠闅�";
+				break;
+			case 116059:
+				Alarm_name = "涓昏矾鍙嶇亴";
+				break;
+			case 116060:
+				Alarm_name = "杈撳叆鐢垫祦寮傚父";
+				break;
+			case 116061:
+				Alarm_name = "杈撳嚭鐢靛帇寮傚父";
+				break;
+			case 116062:
+				Alarm_name = "杈撳叆鐢垫祦瓒呴檺";
+				break;
+			case 116063:
+				Alarm_name = "鏃佽矾杩囨俯";
+				break;
+			case 116064:
+				Alarm_name = "閭绘満鏃佽矾鏅堕椄绠℃晠闅� ";
+				break;
+			case 116065:
+				Alarm_name = "骞舵満杩炴帴绾垮紓甯� ";
+				break;
+			case 116066:
+				Alarm_name = "鍏呯數鍣ㄨ繃娓�";
+				break;
+			case 116067:
+				Alarm_name = "鐢垫睜绔彛鐭矾";
+				break;
+			case 116068:
+				Alarm_name = "鐢垫睜鎴跨幆澧冨紓甯�";
+				break;
+			case 116069:
+				Alarm_name = "椋庢墖寮傚父";
+				break;
+			case 116070:
+				Alarm_name = "鏃佽矾缂洪浂鏁呴殰";
+				break;
+			case 116071:
+				Alarm_name = "鏃佽矾鎺ョ";
+				break;
+			case 116072:
+				Alarm_name = "BCB1 鐘舵�佸紓甯�";
+				break;
+			case 116073:
+				Alarm_name = "BCB2 鐘舵�佸紓甯�";
+				break;
+			case 116074:
+				Alarm_name = "BCB3 鐘舵�佸紓甯� ";
+				break;
+			case 116075:
+				Alarm_name = "BCB4 鐘舵�佸紓甯� ";
+				break;
+			case 116076:
+				Alarm_name = "鏃佽矾SCR椋庢墖寮傚父 ";
+				break;
+			case 116077:
+				Alarm_name = "骞宠 鐢佃矾鏁呴殰";
+				break;
+			case 116078:
+				Alarm_name = "骞宠 鐢佃矾杩囨祦";
+				break;
+			case 116079:
+				Alarm_name = "骞宠 鐢佃矾杩囨俯";
+				break;
+			case 116080:
+				Alarm_name = "澶卞幓鍐椾綑";
+				break;
+			case 116081:
+				Alarm_name = "瀹归噺杩囪浇";
+				break;
+			case 116082:
+				Alarm_name = "鍔熺巼鏉胯缃笉鍖归厤";
+				break;
+			case 116083:
+				Alarm_name = "鏃佽矾璁剧疆涓嶅尮閰�";
+				break;
+			case 116084:
+				Alarm_name = "涓婃娊椋庨鎵囧紓甯� ";
+				break;
+			case 116085:
+				Alarm_name = "绯荤粺A鐩歌緭鍑虹啍涓濇柇 ";
+				break;
+			case 116086:
+				Alarm_name = "绯荤粺B鐩歌緭鍑虹啍涓濇柇";
+				break;
+			case 116087:
+				Alarm_name = "绯荤粺C鐩歌緭鍑虹啍涓濇柇";
+				break;
+			case 116088:
+				Alarm_name = "鏃佽矾鏃犳晥";
+				break;
+			case 116089:
+				Alarm_name = "鏁存祦鍣ㄨ繃娴�";
+				break;
+			case 116090:
+				Alarm_name = "鏃佽矾杩囨祦瓒呮椂";
+				break;
+			case 116091:
+				Alarm_name = "杈撳嚭闆跺湴杩囧帇";
+				break;
+			case 116092:
+				Alarm_name = "杈撳叆鐔斾笣鏂�";
+				break;
+			case 116093:
+				Alarm_name = "鏃佽矾鐔斾笣鏂�";
+				break;
+			case 116120:
+				Alarm_name = "鍗忚浆涓嶶PS閫氫俊鏁呴殰 ";
+				break;
+			case 116121:
+				Alarm_name = "骞冲彴涓庡崗杞�氫俊鏁呴殰 ";
+				break;
+			default:
+				Alarm_name = "鏈煡鍛婅";
+				break;
+		}
+
+		return Alarm_name;
+	}
+}
diff --git a/src/main/java/com/whyc/dto/BattCapFactory.java b/src/main/java/com/whyc/dto/BattCapFactory.java
new file mode 100644
index 0000000..3907ab3
--- /dev/null
+++ b/src/main/java/com/whyc/dto/BattCapFactory.java
@@ -0,0 +1,162 @@
+package com.whyc.dto;
+
+public class BattCapFactory {
+	public static int  CapType_Rest = 0;			//褰撴煡璇㈠墿浣欏閲忔椂浼犻��
+	public static int  CapType_Real = 1;			//褰撴煡璇㈠疄闄呭閲忔椂浼犻��
+	
+	public static int  CapType_type=2;       //瀹归噺
+	public static int  CapType_name=1;       //娆′綆
+	public static int  CapType_method=0;     //鏍囩О
+	// 鑾峰彇鏍囩函鐢垫祦
+	public static double GetFDCurrent(double stdcap, int hourrate)
+	{
+		double res = 0.055;
+	    switch(hourrate)
+	    {
+	        case 1: res = 0.514; break;
+	        case 2: res = 0.306; break;
+	        case 3: res = 0.250; break;
+	        case 4: res = 0.200; break;
+	        case 5: res = 0.166; break;
+	        case 6: res = 0.146; break;
+	        case 7: res = 0.131; break;
+	        case 8: res = 0.118; break;
+	        case 9: res = 0.108; break;
+	        case 10: res = 0.100; break;
+	        case 20: res = 0.055; break;
+	        default: res = 0.055; break;
+	    }
+	    
+	    return (stdcap * res);
+	}
+	//------------------------------------------------------------------------------
+	//------------------------------------------------------------------------------
+	// 鑾峰彇鏀剧數灏忔椂鐜�		stdah锛氭爣绾閲�          current:褰撳墠鐢垫祦
+	public static int GetHourRate(double stdah, double current)
+	{
+		int index = 0;
+		double value[]={5.14, 3.06, 2.50, 2.00, 1.66, 1.46, 1.31, 1.18, 1.08, 1.00, 0.55, 0.40};
+	    double res;
+	    current = Math.abs(current);
+		res = current/(stdah/10);
+	    if(res >= 5.14) return 1;
+	    else if(res <= 0.55) return 20;
+	    else
+	    {
+			for(index=0; index<10; index++)
+	        {
+				if((res<=value[index]) && (res>value[index+1]))
+					break;
+	            else continue;
+	        }
+	        if((value[index]-res) < (res-value[index+1]))
+	        {
+				return (index+1);
+	        }
+			else
+	        {
+				if(index+2 > 10) return (20);
+				else return (index+2);
+	        }
+	    }  
+	}
+	//------------------------------------------------------------------------------
+	//------------------------------------------------------------------------------
+	public static double N_TO_10H(int n_H)
+	{
+	    switch(n_H)
+	    {
+	        case  1 : return(1/0.55);
+	        case  2 : return(1/0.61);
+	        case  3 : return(1/0.75);
+	        case  4 : return(1/0.79);
+	        case  5 : return(1/0.833);
+	        case  6 : return(1/0.876);
+	        case  7 : return(1/0.917);
+	        case  8 : return(1/0.944);
+	        case  9 : return(1/0.974);
+	        case  10: return(1/1);
+	        case  20: return(1/1.1);
+	    }
+	    return 1.0;
+	}
+	//-------------------------------------------------------------------------------
+	//-------------------------------------------------------------------------------
+	//鑾峰彇鍓╀綑瀹归噺	STDAH锛氭爣绉板閲�		HourRate锛氭斁鐢靛皬鏃剁巼	SumAH锛氭祴璇曞閲�		MaxMonomerVol锛氭渶澶х數姹犵數鍘�		MonomerVol锛氬綋鍓嶇數姹犵粍鐨勬渶浣庡崟浣撶數鍘�
+	//MonomerVolType:鐢垫睜鐢靛帇绫诲瀷 鐢垫睜鏍囩О鐢靛帇	2v,6v,12v	CapType:瀹归噺绫诲瀷锛堝畾鍊兼槸甯搁噺锛�
+	
+	                                                     //灏忔椂鐜�		宸叉祴璇曞閲�			鏈�瀹归噺
+	public static double GetMonomerCap(double STDAH, int HourRate, double SumAH, double MaxMonomerVol,
+																
+	                    				double MonomerVol, double MonomerVolType, int CapType)
+	{
+		if((MaxMonomerVol - MonomerVolType*0.9) <= 0)
+	        return 0;
+
+	    if(SumAH < 0)
+	        SumAH *= (-1);
+
+	    double tmp_cap;
+	    tmp_cap = MonomerVol - MonomerVolType * 0.9;
+	    tmp_cap *= (STDAH - SumAH * N_TO_10H(HourRate));
+	    double dt_vol = MaxMonomerVol - MonomerVolType*0.9;
+	    if(dt_vol < 0.01)
+	    	dt_vol = 0.01;
+	    tmp_cap = tmp_cap/dt_vol;
+	    if(tmp_cap < 0)
+	        tmp_cap = 0;
+
+	    if(CapType == CapType_Rest)
+	        return tmp_cap;
+	    else if(CapType == CapType_Real)
+	        return (tmp_cap + SumAH * N_TO_10H(HourRate));
+	    else
+	        return ((tmp_cap + SumAH * N_TO_10H(HourRate))*100 / STDAH);
+	}
+	//----------------------------------------------------------------------------------
+	//----------------------------------------------------------------------------------
+	//鑾峰彇鍚庡鏃堕棿
+	public static int GetRestTimeSecond(double restcap, double curr)
+	{
+		double tmp_curr = Math.abs(curr);
+		if(tmp_curr < 0.1)
+			tmp_curr = 0.1;
+			
+		int rest_time = (int)((restcap / tmp_curr) * 3600);
+		if(rest_time > (99*3600))
+			rest_time = (99*3600);
+			
+		return rest_time;
+	}
+	//鍒ゆ柇閫氳繃瀹為檯瀹归噺鍒ゆ柇鏌愭鏀剧數娴嬭瘯鏄惁鏈夋晥
+	/*
+	 * STDAH:鏍囧瓨瀹归噺
+	 * param:瀹归噺鏈夋晥鍙傛暟*/
+	public static  int Judge(double realCap,float param,double STDAH){
+		int flag=0;
+		if(Math.abs(realCap)>(param*STDAH)){
+			flag=1;
+		}else{
+			flag=0;
+		}
+		return flag;
+		}
+	//鍒ゆ柇閫氳繃瀹為檯瀹归噺鍒ゆ柇鏌愭鏀剧數娴嬭瘯鏄惁鏈夋晥
+		/*
+		 * STDAH:鏍囧瓨瀹归噺
+		 * param:瀹归噺鍛婅鍙傛暟*/
+	public static  int JudgeAlarm(double realCap,float param,float Cparam,double STDAH){
+		int flag=0;
+		if(realCap>(param*STDAH)){
+			flag=1;
+		}else{
+			if(realCap<(Cparam*STDAH)){
+				flag=AlarmDaoFactory.Alarm_CapChange;
+			}else{
+				flag=AlarmDaoFactory.Alarm_CapAlarm;
+			}
+			
+		}
+		return flag;
+ }
+}
diff --git a/src/main/java/com/whyc/dto/ReportBattDTO.java b/src/main/java/com/whyc/dto/ReportBattDTO.java
new file mode 100644
index 0000000..a136844
--- /dev/null
+++ b/src/main/java/com/whyc/dto/ReportBattDTO.java
@@ -0,0 +1,54 @@
+package com.whyc.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class ReportBattDTO {
+    /**绔欑偣淇℃伅*/
+    private String stationName;
+    private String stationName1;//鐪�
+    private Integer battGroupId;
+    /**
+     * 鐢垫睜娴嬭瘯绫诲瀷
+     */
+    @ApiModelProperty("0:鏃狅紱1:娴厖锛�2:鍏呯數锛�3:鏀剧數锛�4:鍧囧厖;5:鐢靛/鍐呴樆;6:鐢靛;7:娓╁害;8:杩炴帴鏉�;9:鍦ㄧ嚎鐩戞祴")
+    private Integer testType;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date recordStartTime;
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date recordEndTime;
+    /**
+     * 鏀剧數绫诲瀷
+     */
+    @ApiModelProperty("娴嬭瘯浠〃绫诲瀷锛氬仠鐢垫斁鐢碉紱鍋囪礋杞芥斁鐢�2锛涜妭鑳芥斁鐢�3")
+    private Integer testStartType;
+
+    private Integer monNum;
+
+    /**
+     * 鎬ц兘绛涢��
+     */
+    @ApiModelProperty("鍏ㄩ儴锛�-1锛涙湭鏀剧數锛�0锛涗紭绉�锛�1锛涘姡鍖栵細2锛屾崯鍧忥細3")
+    private Integer assess;
+
+    /**
+     * 鎬ц兘绛涢��
+     */
+    @ApiModelProperty("鍏ㄩ儴锛�-1锛涙湰骞达細0锛涘線骞达細1")
+    private Integer wj;
+
+    /**
+     * 缁熻鏂瑰紡
+     */
+    @ApiModelProperty("瀹归噺+鍐呴樆锛�0锛涘閲忥細1")
+    private Integer statictype;
+}
diff --git a/src/main/java/com/whyc/mapper/AlarmParamMapper.java b/src/main/java/com/whyc/mapper/AlarmParamMapper.java
new file mode 100644
index 0000000..35da4f7
--- /dev/null
+++ b/src/main/java/com/whyc/mapper/AlarmParamMapper.java
@@ -0,0 +1,6 @@
+package com.whyc.mapper;
+
+import com.whyc.pojo.AlarmParam;
+
+public interface AlarmParamMapper extends CustomMapper<AlarmParam>{
+}
\ No newline at end of file
diff --git a/src/main/java/com/whyc/mapper/BattAlarmMapper.java b/src/main/java/com/whyc/mapper/BattAlarmMapper.java
index 12d81ad..87a444a 100644
--- a/src/main/java/com/whyc/mapper/BattAlarmMapper.java
+++ b/src/main/java/com/whyc/mapper/BattAlarmMapper.java
@@ -12,4 +12,6 @@
     List<BattAlarm> getBattAlarm(int almLevel, Date startTime, Date endTime);
     //鍦ㄧ敤鐢垫睜缁勫疄鏃舵帹閫佸憡璀︿俊鎭�
     List<BattAlarm> getResBattAlm(int binfId);
+    //鏌ヨ鐢垫睜鍛婅(2024銆�4.15淇敼)
+    List<BattAlarm> getAlm2(Integer battGroupId);
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/mapper/BattInfMapper.java b/src/main/java/com/whyc/mapper/BattInfMapper.java
index cd40bed..bdb759d 100644
--- a/src/main/java/com/whyc/mapper/BattInfMapper.java
+++ b/src/main/java/com/whyc/mapper/BattInfMapper.java
@@ -2,5 +2,10 @@
 
 import com.whyc.pojo.BattInf;
 
+import java.util.List;
+
 public interface BattInfMapper extends CustomMapper<BattInf>{
+
+    //鏌ヨ绗﹀悎鏉′欢鐨勭數姹犵粍
+    List<BattInf> searchGroupAssess();
 }
diff --git a/src/main/java/com/whyc/mapper/BattTestInfMapper.java b/src/main/java/com/whyc/mapper/BattTestInfMapper.java
index c4750f5..1773405 100644
--- a/src/main/java/com/whyc/mapper/BattTestInfMapper.java
+++ b/src/main/java/com/whyc/mapper/BattTestInfMapper.java
@@ -2,5 +2,14 @@
 
 import com.whyc.pojo.BattTestInf;
 
+import java.util.Date;
+import java.util.List;
+
 public interface BattTestInfMapper extends CustomMapper<BattTestInf>{
+
+    List<BattTestInf> searchDischargeTest(Integer battGroupId, Date recordStartTime, Date recordEndTime);
+
+
+    //鏌ュ線骞寸殑鏀剧數璁板綍
+    List<BattTestInf> searchDischargeTest_WJ(Integer battGroupId, Date recordStartTime);
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/pojo/AlarmParam.java b/src/main/java/com/whyc/pojo/AlarmParam.java
new file mode 100644
index 0000000..924f85b
--- /dev/null
+++ b/src/main/java/com/whyc/pojo/AlarmParam.java
@@ -0,0 +1,68 @@
+package com.whyc.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.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author lxw
+ * @since 2021-12-14
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName(schema ="db_param",value = "alarm_param")
+@ApiModel(value="AlarmParam瀵硅薄", description="")
+public class AlarmParam implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableField("num")
+    @ApiModelProperty("涓婚敭缂栧彿")
+    private Integer num;
+
+    @TableField("alm_id")
+    @ApiModelProperty("鍛婅id")
+    private Integer almId;
+
+    @TableField("alm_name")
+    @ApiModelProperty("鍛婅鍚嶇О")
+    private String almName;
+
+    @TableField("alm_high_coe")
+    @ApiModelProperty("涓婇檺鍛婅闃堝��")
+    private Float almHighCoe;
+
+    @TableField("alm_low_coe")
+    @ApiModelProperty("涓嬮檺鍛婅闃堝��")
+    private Float almLowCoe;
+
+    @TableField("alm_high_en")
+    @ApiModelProperty("涓婇檺鍛婅浣胯兘")
+    private Integer almHighEn;
+
+    @TableField("alm_low_en")
+    @ApiModelProperty("涓嬮檺鍛婅浣胯兘")
+    private Integer almLowEn;
+
+    @TableField("alm_high_level")
+    @ApiModelProperty("涓婇檺鍛婅绛夌骇")
+    private Integer almHighLevel;
+
+    @TableField("alm_low_level")
+    @ApiModelProperty("涓嬮檺鍛婅绛夌骇")
+    private Integer almLowLevel;
+
+}
diff --git a/src/main/java/com/whyc/pojo/BattTestInf.java b/src/main/java/com/whyc/pojo/BattTestInf.java
index 4cdd776..210dfa0 100644
--- a/src/main/java/com/whyc/pojo/BattTestInf.java
+++ b/src/main/java/com/whyc/pojo/BattTestInf.java
@@ -92,4 +92,7 @@
     @TableField("min_monvol")
     @ApiModelProperty("鏈�灏忓崟浣撶數鍘�")
     private Float minMonvol;
+
+    @TableField(exist = false)
+    private float realCap;
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/service/BattTestInfService.java b/src/main/java/com/whyc/service/BattTestInfService.java
index 05a4a89..290849e 100644
--- a/src/main/java/com/whyc/service/BattTestInfService.java
+++ b/src/main/java/com/whyc/service/BattTestInfService.java
@@ -4,18 +4,36 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.whyc.dto.BattCapFactory;
+import com.whyc.dto.ReportBattDTO;
 import com.whyc.dto.Response;
+import com.whyc.mapper.AlarmParamMapper;
+import com.whyc.mapper.BattAlarmMapper;
+import com.whyc.mapper.BattInfMapper;
 import com.whyc.mapper.BattTestInfMapper;
+import com.whyc.pojo.AlarmParam;
+import com.whyc.pojo.BattAlarm;
+import com.whyc.pojo.BattInf;
 import com.whyc.pojo.BattTestInf;
+import com.whyc.util.PageInfoUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
+import java.util.*;
 
 @Service
 public class BattTestInfService {
     @Autowired(required = false)
     private BattTestInfMapper mapper;
+
+    @Autowired(required = false)
+    private BattInfMapper binfMapper;
+
+    @Autowired(required = false)
+    private AlarmParamMapper alarmParamMapper;
+
+    @Autowired(required = false)
+    private BattAlarmMapper alarmMapper;
 
     //鏌ヨ鍏呮斁鐢佃褰�
     public Response getTinfHis(int binfId, int pageNum, int pageSize) {
@@ -26,4 +44,239 @@
         PageInfo pageInfo=new PageInfo(list);
         return new Response().setII(1,list!=null,pageInfo,"鏌ヨ鍏呮斁鐢佃褰�");
     }
+
+    //1.4鐢垫睜鎬ц兘璇勪及
+    public Response searchGroupAssess(int pageNum, int pageSize, ReportBattDTO tinf, int userId){
+        //List<BattInf> battinfList = binfMapper.searchGroupAssess(tinf, userId);
+        List<BattInf> battinfList = binfMapper.searchGroupAssess();
+        List<Map> result = new ArrayList<>();
+        Integer assess = tinf.getAssess();//鎬ц兘绛涢��
+        Integer wj = tinf.getWj();//寰�骞磋繕鏄湰骞�
+        Integer statictype= tinf.getStatictype();//缁熻鏂瑰紡
+        if (assess == null) {
+            assess = -1;
+        }
+        if (wj == null) {
+            wj = -1;
+        }
+        if (battinfList != null && battinfList.size() > 0) {
+            for (BattInf binf : battinfList) {
+                Integer battGroupId = binf.getBinfId();
+                Map<String, Object> map=new HashMap<>();
+                Map<String, Object> batttestdataInfList = searchDischargeTest(battGroupId, binf.getMonCap(), binf.getMonVol(), tinf.getRecordStartTime(), tinf.getRecordEndTime(),wj);
+                if(statictype==0){
+                    //瀵规瘡涓數姹犵粍鐘舵�佽繘琛屽垽鏂紙瀹归噺+鍐呴樆锛�
+                    map = getAssess2(binf, batttestdataInfList,assess);
+                }else{
+                    //瀵规瘡涓數姹犵粍鐘舵�佽繘琛屽垽鏂紙瀹归噺锛�
+                    map = getAssess3(binf, batttestdataInfList,assess);
+                }
+                if (assess == -1) {
+                    result.add(map);
+                } else {
+                    if (map.get("flag") == assess) {
+                        result.add(map);
+                    }
+                }
+            }
+        }
+        PageInfo pageInfo = PageInfoUtils.list2PageInfo(result, pageNum, pageSize);
+        return new Response().set(1, pageInfo, "鏌ヨ鎴愬姛");
+    }
+
+    //1.4鐢垫睜缁勬�ц兘璇勪及(鏍规嵁鐢垫睜缁刬d鏌ヨ鎵�鏈夌殑鏀剧數璁板綍姹傚嚭鏀剧數鎬绘鏁帮紝鏈�楂樺巻鍙插閲�,鏈�浣庡巻鍙插閲忥紝骞冲潎瀹归噺锛屾渶鏂版祴璇曞閲�)
+    public Map<String, Object> searchDischargeTest(Integer battGroupId, float monCapStd, float monVolStd, Date recordStartTime, Date recordEndTime, int wj) {
+        List<BattTestInf> list = new ArrayList<>();
+        Map<String, Object> map = new HashMap<>();
+        if(wj==0){//鏈勾
+            list=mapper.searchDischargeTest(battGroupId, recordStartTime, recordEndTime);
+            if( list.size()==0){
+                map.put("wj", "N");
+            }else{
+                map.put("wj", "J");
+            }
+        }else if(wj==1){//寰�骞�
+            list = mapper.searchDischargeTest_WJ(battGroupId, recordStartTime);
+            if( list.size()==0){
+                map.put("wj", "N");
+            }else{
+                map.put("wj", "W");
+            }
+        }else if(wj==-1){//鍏ㄩ儴
+            list=mapper.searchDischargeTest(battGroupId, recordStartTime, recordEndTime);
+            if( list.size()==0){
+                list = mapper.searchDischargeTest_WJ(battGroupId, recordStartTime);
+                if( list.size()==0){
+                    map.put("wj", "N");
+                }else{
+                    map.put("wj", "W");
+                }
+            }else{
+                map.put("wj", "J");
+            }
+        }
+        List<BattTestInf> testList = new LinkedList<>();
+        int sum = 0;//鎬绘祴璇曟鏁�
+        float cap = 0f;//瀹為檯瀹归噺
+        float allCap = 0f;//鎬诲閲�
+        float maxCap = 0f;//鏈�楂樺閲�
+        float minCap = 10000f;//鏈�浣庡閲�
+        float avgCap = 0f;//骞冲潎瀹归噺
+        float lastCap = 0f;//鏈�杩戞祴璇曞閲�
+        for (int i = 0; i < list.size(); i++) {
+            BattTestInf binf = list.get(i);
+            int hourRate = BattCapFactory.GetHourRate(monCapStd, binf.getTestCurr());
+            cap = (float) BattCapFactory.GetMonomerCap(monCapStd, hourRate, binf.getTestCap(), binf.getMaxMonvol(), binf.getMinMonvol(), monVolStd, BattCapFactory.CapType_Real);
+            binf.setRealCap(cap);
+            testList.add(binf);
+            if (sum == 0) {
+                lastCap = cap;
+            }
+            if (maxCap <= cap) {
+                maxCap = cap;//鏈�澶�
+            }
+            if (minCap >= cap) {
+                minCap = cap;//鏈�灏�
+            }
+            allCap += cap;
+            sum++;
+        }
+        if (sum != 0) {
+            avgCap = allCap / sum;//骞冲潎瀹归噺
+        } else {
+            avgCap = 0;
+            minCap = 0;
+        }
+        map.put("battGroupid", battGroupId);
+        map.put("sum", sum);
+        map.put("maxCap", maxCap);
+        map.put("avgCap", avgCap);
+        map.put("minCap", minCap);
+        map.put("lastCap", lastCap);
+        map.put("testList", testList);
+        return map;
+    }
+
+    //绛涢�夎搫鐢垫睜缁勫悗璇勬�ц兘(2024銆�4.15淇敼)
+    public Map<String, Object> getAssess2(BattInf binf, Map<String, Object> mapList,int assess) {
+        Map<String, Object> map = new HashMap();
+        map.put("battinf", binf);
+        map.put("battTestDataInf", mapList);
+        map.put("wj",mapList.get("wj"));
+        //鐩存帴鍘婚泦鍚堢2涓暟锛堟斁鐢垫鏁帮級锛岀6涓暟锛堝疄闄呴浼板閲忥細鏈�杩戜竴娆℃牳瀹圭殑瀹為檯瀹归噺锛�
+        int battGroupId = (int) mapList.get("battGroupid");
+        int disNum = (int) mapList.get("sum");
+        float realCap = (Float) mapList.get("lastCap");
+        float monCapStd = binf.getMonCap();
+        //0.鏌ヨ鍔e寲(鍛婅)鍜屾崯鍧�(鏇存崲)鐨勯槇鍊�
+        QueryWrapper<AlarmParam> alarmWrapper = new QueryWrapper();
+        alarmWrapper.and(wrapper -> {
+            return wrapper.eq("alm_name", "Batt_Alarm_Type_CapAlarm").or().eq("alm_name", "Batt_Alarm_Type_CapChange");
+        });
+        alarmWrapper.orderByAsc("alm_id");
+        List<AlarmParam> paramList = alarmParamMapper.selectList(alarmWrapper);
+        float capAlarm = 0f;
+        float capChange = 0f;
+        if (paramList != null && paramList.size() > 0) {
+            capAlarm = paramList.get(0).getAlmLowCoe();//鍔e寲鍙傛暟0.8
+            capChange = paramList.get(1).getAlmLowCoe();//鎹熷潖鍙傛暟0.6
+        } else {
+            capAlarm = 0.8f;
+            capChange = 0.6f;
+        }
+        //鏌ヨ鐢垫睜鍛婅锛堝唴闃诲憡璀︼級
+        List listALmRes = getAlm2(battGroupId);
+        map.put("noDisAlmSH",listALmRes);
+        //鏈斁鐢碉細鏈勾搴︽湭鏀剧數
+        if( (disNum==0) ){
+            map.put("flag",0);
+        }
+        //浼樼锛氭湰骞村害宸叉斁鐢碉紝涓斿閲忓仴搴凤紝鏃犲唴闃诲憡璀︼紙棰勫憡璀︼紙閲嶈锛夛紝鍛婅锛堢揣鎬ワ級锛�
+        if( (disNum>0)&&(realCap > capAlarm * monCapStd)&&(listALmRes.size()<=0)){
+            map.put("flag",1);
+        }
+
+        /*鍔e寲锛氭湰骞村害鏈斁鐢碉紝鍐呴樆鍛婅锛堥鍛婅锛堥噸瑕侊級锛屽憡璀︼紙绱ф�ワ級锛�
+         *瀹归噺灏忎簬鍔e寲闃堝�硷紝澶т簬鎹熷潖闃堝�硷紝鍐呴樆鍛婅(棰勫憡璀︼紝鍛婅)
+         *     瀹归噺灏忎簬鍔e寲闃堝�硷紝鍐呴樆姝e父
+         *     瀹归噺姝e父锛屽唴闃诲憡璀�(棰勫憡璀︼紝鍛婅)
+         */
+        if (((disNum==0)&&(listALmRes.size()>0))
+                ||((disNum>0)&&(realCap <= capAlarm * monCapStd && realCap >= capChange * monCapStd)&&(listALmRes.size()>0))
+                ||((disNum>0)&&(realCap <= capAlarm * monCapStd)&&(listALmRes.size()<=0))
+                ||(disNum>0)&&(realCap > capAlarm * monCapStd)&&(listALmRes.size()>0)){
+            if((assess==0)&&(disNum==0)){
+                map.put("flag",0);
+            }else{
+                map.put("flag",2);
+            }
+        }
+        //鎹熷潖锛氬閲忎綆锛屽唴闃诲憡璀�
+        if((disNum!=0)&&(realCap< capChange * monCapStd)&&(listALmRes.size()>0)){
+            map.put("flag",3);
+        }
+        return map;
+    }
+    //鏌ヨ鐢垫睜鍛婅(2024銆�4.15淇敼)
+    /*鏈斁鐢碉細鏈勾搴︽湭鏀剧數
+     *浼樼锛氭湰骞村害宸叉斁鐢碉紝涓斿閲忓仴搴凤紝鏃犲唴闃诲憡璀︼紙棰勫憡璀︼紙閲嶈锛夛紝鍛婅锛堢揣鎬ワ級锛�
+     *鍔e寲锛氭湰骞村害鏈斁鐢碉紝鍐呴樆鍛婅锛堥鍛婅锛堥噸瑕侊級锛屽憡璀︼紙绱ф�ワ級锛�
+     *     瀹归噺灏忎簬鍔e寲闃堝�硷紝澶т簬鎹熷潖闃堝�硷紝鍐呴樆鍛婅(棰勫憡璀︼紝鍛婅)
+     *     瀹归噺灏忎簬鍔e寲闃堝�硷紝鍐呴樆姝e父
+     *     瀹归噺姝e父锛屽唴闃诲憡璀�(棰勫憡璀︼紝鍛婅)
+     * 鎹熷潖锛氬閲忎綆锛屽唴闃诲憡璀�
+     * */
+    private List getAlm2(Integer battGroupId) {
+        List list = alarmMapper.getAlm2(battGroupId);
+        return list;
+    }
+    //绛涢�夎搫鐢垫睜缁勫悗璇勬�ц兘(2024銆�4.15淇敼)
+    public Map<String, Object> getAssess3(BattInf binf, Map<String, Object> mapList,int assess) {
+        Map<String, Object> map = new HashMap();
+        map.put("battinf", binf);
+        map.put("battTestDataInf", mapList);
+        map.put("wj", mapList.get("wj"));
+        //鐩存帴鍘婚泦鍚堢2涓暟锛堟斁鐢垫鏁帮級锛岀6涓暟锛堝疄闄呴浼板閲忥細鏈�杩戜竴娆℃牳瀹圭殑瀹為檯瀹归噺锛�
+        int battGroupId = (int) mapList.get("battGroupid");
+        int disNum = (int) mapList.get("sum");
+        float realCap = (Float) mapList.get("lastCap");
+        float monCapStd = binf.getMonCap();
+        //0.鏌ヨ鍔e寲(鍛婅)鍜屾崯鍧�(鏇存崲)鐨勯槇鍊�
+        QueryWrapper<AlarmParam> alarmWrapper = new QueryWrapper();
+        alarmWrapper.and(wrapper -> {
+            return wrapper.eq("alm_name", "Batt_Alarm_Type_CapAlarm").or().eq("alm_name", "Batt_Alarm_Type_CapChange");
+        });
+        alarmWrapper.orderByAsc("alm_id");
+        List<AlarmParam> paramList = alarmParamMapper.selectList(alarmWrapper);
+        float capAlarm = 0f;
+        float capChange = 0f;
+        if (paramList != null && paramList.size() > 0) {
+            capAlarm = paramList.get(0).getAlmLowCoe();//鍔e寲鍙傛暟0.8
+            capChange = paramList.get(1).getAlmLowCoe();//鎹熷潖鍙傛暟0.6
+        } else {
+            capAlarm = 0.8f;
+            capChange = 0.6f;
+        }
+        //鏈斁鐢碉細鏈勾搴︽湭鏀剧數
+        if ((disNum == 0)) {
+            map.put("flag", 0);
+        }
+        //浼樼锛氭湰骞村害宸叉斁鐢碉紝涓斿閲忓仴搴凤級
+        if ((disNum > 0) && (realCap > capAlarm * monCapStd)) {
+            map.put("flag", 1);
+        }
+        /*鍔e寲锛�
+         *瀹归噺灏忎簬鍔e寲闃堝�硷紝澶т簬鎹熷潖闃堝��
+         */
+        if (((disNum > 0) && (realCap <= capAlarm * monCapStd && realCap >= capChange * monCapStd))) {
+            map.put("flag", 2);
+        }
+        //鎹熷潖锛氬閲忎綆
+        if ((disNum > 0) && (realCap < capChange * monCapStd)) {
+            map.put("flag", 3);
+        }
+        return map;
+    }
+
+
 }
\ No newline at end of file
diff --git a/src/main/java/com/whyc/util/PageInfoUtils.java b/src/main/java/com/whyc/util/PageInfoUtils.java
new file mode 100644
index 0000000..5129d76
--- /dev/null
+++ b/src/main/java/com/whyc/util/PageInfoUtils.java
@@ -0,0 +1,49 @@
+package com.whyc.util;
+
+import com.github.pagehelper.PageInfo;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class PageInfoUtils {
+
+    public static <T> PageInfo<T> list2PageInfo(List<T> arrayList, Integer pageNum, Integer pageSize) {
+        //瀹炵幇list鍒嗛〉
+        //PageHelper.startPage(pageNum, pageSize);
+        int pageStart = pageNum == 1 ? 0 : (pageNum - 1) * pageSize;
+        int pageEnd = arrayList.size() < pageSize * pageNum ? arrayList.size() : pageSize * pageNum;
+        List<T> pageResult = new LinkedList<T>();
+        if (arrayList.size() > pageStart) {
+            pageResult = arrayList.subList(pageStart, pageEnd);
+        }
+        PageInfo<T> pageInfo = new PageInfo<T>(pageResult);
+        //鑾峰彇PageInfo鍏朵粬鍙傛暟
+        pageInfo.setTotal(arrayList.size());
+        int endRow = pageInfo.getEndRow() == 0 ? 0 : (pageNum - 1) * pageSize + pageInfo.getEndRow() + 1;
+        pageInfo.setEndRow(endRow);
+        boolean hasNextPage = arrayList.size() <= pageSize * pageNum ? false : true;
+        pageInfo.setHasNextPage(hasNextPage);
+        boolean hasPreviousPage = pageNum == 1 ? false : true;
+        pageInfo.setHasPreviousPage(hasPreviousPage);
+        pageInfo.setIsFirstPage(!hasPreviousPage);
+        boolean isLastPage = (arrayList.size() > pageSize * (pageNum - 1) && arrayList.size() <= pageSize * pageNum) ? true : false;
+        pageInfo.setIsLastPage(isLastPage);
+        int pages = arrayList.size() % pageSize == 0 ? arrayList.size() / pageSize : (arrayList.size() / pageSize) + 1;
+        pageInfo.setNavigateLastPage(pages);
+        int[] navigatePageNums = new int[pages];
+        for (int i = 1; i < pages; i++) {
+            navigatePageNums[i - 1] = i;
+        }
+        pageInfo.setNavigatepageNums(navigatePageNums);
+        int nextPage = pageNum < pages ? pageNum + 1 : 0;
+        pageInfo.setNextPage(nextPage);
+        pageInfo.setPageNum(pageNum);
+        pageInfo.setPageSize(pageSize);
+        pageInfo.setPages(pages);
+        pageInfo.setPrePage(pageNum - 1);
+        pageInfo.setSize(pageInfo.getList().size());
+        int starRow = arrayList.size() < pageSize * pageNum ? 1 + pageSize * (pageNum - 1) : 0;
+        pageInfo.setStartRow(starRow);
+        return pageInfo;
+    }
+}
\ No newline at end of file
diff --git a/src/main/resources/mapper/BattAlarmMapper.xml b/src/main/resources/mapper/BattAlarmMapper.xml
index d13d281..404d5fd 100644
--- a/src/main/resources/mapper/BattAlarmMapper.xml
+++ b/src/main/resources/mapper/BattAlarmMapper.xml
@@ -22,4 +22,13 @@
             order by batt_alarm.alm_start_time asc
         </where>
     </select>
+    <select id="getAlm2" resultType="com.whyc.pojo.BattAlarm">
+        SELECT distinct *
+        from db_alarm.tb_battalarm_data
+        <where>
+            BattGroupId=#{battGroupId}
+            and alm_signal_id in(13)
+            and alm_severity=1
+        </where>
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/BattInfMapper.xml b/src/main/resources/mapper/BattInfMapper.xml
new file mode 100644
index 0000000..4221ae5
--- /dev/null
+++ b/src/main/resources/mapper/BattInfMapper.xml
@@ -0,0 +1,8 @@
+<?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.BattInfMapper">
+
+    <select id="searchGroupAssess" resultType="com.whyc.pojo.BattInf">
+        select * from db_batt.batt_inf order by binf_id asc
+    </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/BattTestInfMapper.xml b/src/main/resources/mapper/BattTestInfMapper.xml
new file mode 100644
index 0000000..ab24377
--- /dev/null
+++ b/src/main/resources/mapper/BattTestInfMapper.xml
@@ -0,0 +1,41 @@
+<?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.BattTestInfMapper">
+
+    <select id="searchDischargeTest" resultType="com.whyc.pojo.BattTestInf">
+        select
+        battgroupid,test_curr,max_monvol,min_monvol,test_cap,test_starttime,record_time,test_timelong,test_stoptype
+        from db_batt_testdata.tb_batttestdata_inf
+        <where>
+            db_batt_testdata.tb_batttestdata_inf.data_available=1
+            and test_starttype=3 and test_type=3
+            and (test_stoptype in (3, 4, 6)
+            or (test_stoptype=2 and test_timelong>=7200))
+            <if test="battGroupId!=null">
+                and battgroupid=#{battGroupId}
+            </if>
+            <if test="recordStartTime!=null and recordEndTime!=null">
+                and record_time>=#{recordStartTime} and record_time&lt;=#{recordEndTime}
+            </if>
+        </where>
+        ORDER BY tb_batttestdata_inf.BattGroupId asc, test_starttime desc
+    </select>
+    <select id="searchDischargeTest_WJ" resultType="com.whyc.pojo.BattTestInf">
+        select
+        battgroupid,test_curr,max_monvol,min_monvol,test_cap,test_starttime,record_time,test_timelong,test_stoptype
+        from db_batt_testdata.tb_batttestdata_inf
+        <where>
+            db_batt_testdata.tb_batttestdata_inf.data_available=1
+            and test_starttype=3 and test_type=3
+            and (test_stoptype in (3, 4, 6)
+            or (test_stoptype=2 and test_timelong>=7200))
+            <if test="battGroupId!=null">
+                and battgroupid=#{battGroupId}
+            </if>
+            <if test="recordStartTime!=null">
+                and record_time&lt;#{recordStartTime}
+            </if>
+        </where>
+        ORDER BY tb_batttestdata_inf.BattGroupId asc, test_starttime desc
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.1