| | |
| | | import com.whyc.pojo.BattgroupData; |
| | | import com.whyc.pojo.FileParam; |
| | | import com.whyc.pojo.StationInfo; |
| | | import com.whyc.pojo.TestParam; |
| | | import com.whyc.util.MathUtil; |
| | | import org.apache.poi.ss.usermodel.Workbook; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | @Autowired |
| | | private StationInfoService stationInfoService; |
| | | |
| | | @Autowired |
| | | private TestParamService testParamService; |
| | | |
| | | public void resTestReport(BattGroupStationInfoWithFileParam info, HttpServletResponse response) throws IOException { |
| | | HashMap<String, Object> map = Maps.newHashMap(); |
| | | //总体评价:内阻/电压/连接条/?容量 |
| | | int resGoodCount = 0; |
| | | int volGoodCount = 0; |
| | | int chainResGoodCount = 0; |
| | | FileParam fileParam = info.getFileParam(); |
| | | //总体评价:有效的电阻/电压/连接条 数 |
| | | int battVolTestCount = 0; |
| | | int battResTestCount = 0; |
| | | int battChainResTestCount = 0; |
| | | FileParam param = info.getFileParam(); |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | fileParam.setTestTimeStr(format.format(fileParam.getTestTime())); |
| | | param.setTestTimeStr(format.format(param.getTestTime())); |
| | | //查询全局的测试系数和参数 |
| | | TestParam param2 = testParamService.getFactorsAndThreshold(); |
| | | //判断测试数据告警范围 |
| | | Float stdRes = param.getBattRes(); |
| | | Float volLowCoeK1 = null; |
| | | Float volHighCoeK2 = null; |
| | | //电压不同,电压阈值不同 |
| | | if(param.getBattVol() == 2){ |
| | | volLowCoeK1 = param2.getVol2LowCoeK1(); |
| | | volHighCoeK2 = param2.getVol2HighCoeK2(); |
| | | } |
| | | else if(param.getBattVol() == 1.2){ |
| | | volLowCoeK1 = param2.getVol1d2LowCoeK1(); |
| | | volHighCoeK2 = param2.getVol1d2HighCoeK2(); |
| | | } |
| | | else if(param.getBattVol() == 6){ |
| | | volLowCoeK1 = param2.getVol6LowCoeK1(); |
| | | volHighCoeK2 = param2.getVol6HighCoeK2(); |
| | | } |
| | | else if(param.getBattVol() == 12){ |
| | | volLowCoeK1 = param2.getVol12LowCoeK1(); |
| | | volHighCoeK2 = param2.getVol12HighCoeK2(); |
| | | }else{ //电压非常规值,则默认设置为2v的电压阈值 |
| | | volLowCoeK1 = param2.getVol2LowCoeK1(); |
| | | volHighCoeK2 = param2.getVol2HighCoeK2(); |
| | | } |
| | | Float resGoodCoeK3 = param2.getResGoodCoeK3(); |
| | | Float resBadCoeK4 = param2.getResBadCoeK4(); |
| | | Float chainRes = param.getVersion().toUpperCase().contains("V2.0")?param.getChainRes():param.getConnRes(); |
| | | Float finalVolLowCoeK = volLowCoeK1; |
| | | Float finalVolHighCoeK = volHighCoeK2; |
| | | List<BattgroupData> dataList = info.getDataList(); |
| | | for(BattgroupData data : dataList){ |
| | | //计算电压,内阻,连接条数值是否有效,被测试过 |
| | | float bv = Float.parseFloat(data.getBv()); |
| | | float br = Float.parseFloat(data.getBr()); |
| | | float cr = Float.parseFloat(data.getCr()); |
| | | if (bv!=0.0){ |
| | | battVolTestCount++; |
| | | } |
| | | if(br!=0.0){ |
| | | battResTestCount++; |
| | | } |
| | | if (cr!=0.0){ |
| | | battChainResTestCount++; |
| | | } |
| | | |
| | | data.setMonNumStr("#"+data.getMonNum()); |
| | | if(!data.isHighResFlag1() && !data.isHighResFlag2()){ |
| | | if(br==0.0){ |
| | | data.setResEvaluation("—"); |
| | | } |
| | | /*else if(!data.isHighResFlag1() && !data.isHighResFlag2()){ |
| | | resGoodCount +=1; |
| | | data.setResEvaluation("优"); |
| | | }else if(data.isHighResFlag1()){ |
| | | data.setResEvaluation("差"); |
| | | data.setResEvaluation("良"); |
| | | }else{ |
| | | data.setResEvaluation("很差"); |
| | | data.setResEvaluation("差"); |
| | | }*/ |
| | | else if(br >= stdRes*resGoodCoeK3/100){ |
| | | if(br >= stdRes*resBadCoeK4/100){ |
| | | // data.setHighResFlag2(true); |
| | | data.setResEvaluation("差"); |
| | | }else{ |
| | | // data.setHighResFlag1(true); |
| | | data.setResEvaluation("良"); |
| | | } |
| | | }else{ |
| | | resGoodCount +=1; |
| | | data.setResEvaluation("优"); |
| | | } |
| | | if(!data.isLowVolFlag() && !data.isHighVolFlag()){ |
| | | /*if(bv!=0.0 && !data.isLowVolFlag() && !data.isHighVolFlag()){ |
| | | volGoodCount +=1; |
| | | }*/ |
| | | if(bv!=0.0 && bv > finalVolLowCoeK && bv < finalVolHighCoeK){ |
| | | volGoodCount +=1; |
| | | } |
| | | if(!data.isHighChainResFlag()){ |
| | | /*if(cr!=0.0 && !data.isHighChainResFlag1() && !data.isHighChainResFlag2()){ |
| | | chainResGoodCount +=1; |
| | | }*/ |
| | | if(cr!=0.0 && cr < chainRes*param2.getChainResCoeK5()/100){ |
| | | chainResGoodCount +=1; |
| | | } |
| | | }; |
| | |
| | | info.setVolGoodCount(volGoodCount); |
| | | info.setChainResGoodCount(chainResGoodCount); |
| | | |
| | | info.setBattVolTestCount(battVolTestCount); |
| | | info.setBattResTestCount(battResTestCount); |
| | | info.setBattChainResTestCount(battChainResTestCount); |
| | | |
| | | StationInfo stationInfo = info.getStationInfo(); |
| | | if(stationInfo!=null) { |
| | | if (stationInfo.getStationName2().equals("-")) { |
| | | stationInfo.setStationName(stationInfo.getStationName1()); |
| | | } else { |
| | | stationInfo.setStationName(stationInfo.getStationName1() + "-" + stationInfo.getStationName2()); |
| | | } |
| | | } |
| | | map.put("dto", info); |
| | | //图片 |
| | | //电压柱状图 |
| | | BASE64Decoder decoder = new BASE64Decoder(); |
| | | if(!info.getVolPic().equals("")) { |
| | | ImageEntity volImage = new ImageEntity(); |
| | |
| | | |
| | | map.put("volImage",volImage); |
| | | } |
| | | //内阻柱状图 |
| | | if(!info.getResPic().equals("")) { |
| | | ImageEntity resImage = new ImageEntity(); |
| | | resImage.setData(decoder.decodeBuffer(info.getResPic().substring(info.getResPic().indexOf(",") + 1))); |
| | |
| | | resImage.setRowspan(16); |
| | | |
| | | map.put("resImage", resImage); |
| | | } |
| | | //电导柱状图 |
| | | if(!info.getCondPic().equals("")) { |
| | | ImageEntity condImage = new ImageEntity(); |
| | | condImage.setData(decoder.decodeBuffer(info.getCondPic().substring(info.getCondPic().indexOf(",") + 1))); |
| | | condImage.setColspan(6); |
| | | condImage.setRowspan(16); |
| | | |
| | | map.put("condImage", condImage); |
| | | } |
| | | //链接条柱状图 |
| | | if(!info.getChainPic().equals("")) { |
| | | ImageEntity chainImage = new ImageEntity(); |
| | | chainImage.setData(decoder.decodeBuffer(info.getChainPic().substring(info.getChainPic().indexOf(",") + 1))); |
| | | chainImage.setColspan(6); |
| | | chainImage.setRowspan(16); |
| | | |
| | | map.put("chainImage", chainImage); |
| | | } |
| | | |
| | | //map.put("volImage","volImage"); |
| | |
| | | List<BattgroupData> dataList = (List<BattgroupData>) comparedList.getData(); |
| | | List<BattgroupData> dataList2 = (List<BattgroupData>) comparedList.getData2(); |
| | | Map<String,List<String>> data3 = (Map<String, List<String>>) comparedList.getData3(); |
| | | |
| | | int baseSize = dataList.size(); |
| | | int size = dataList2.size(); |
| | | if(baseSize > size){ |
| | | dataList = dataList.subList(0,size); |
| | | }else{ |
| | | dataList2 = dataList2.subList(0,baseSize); |
| | | } |
| | | |
| | | |
| | | //变化率 |
| | | List<String> resChangeRateList = data3.get("resChangeRate"); |
| | | List<String> volChangeRateList = data3.get("volChangeRate"); |
| | | map.put("resChangeRateList",resChangeRateList.subList(0,resChangeRateList.size()-1)); |
| | | map.put("volChangeRateList",volChangeRateList.subList(0,volChangeRateList.size()-1)); |
| | | /*map.put("resChangeRateList",resChangeRateList.subList(0,resChangeRateList.size()-1)); |
| | | map.put("volChangeRateList",volChangeRateList.subList(0,volChangeRateList.size()-1));*/ |
| | | |
| | | map.put("resChangeRateList",resChangeRateList); |
| | | map.put("volChangeRateList",volChangeRateList); |
| | | |
| | | map.put("volBalanceRateChangeRate",volChangeRateList.get(volChangeRateList.size()-1)); |
| | | map.put("resBalanceRateChangeRate",resChangeRateList.get(resChangeRateList.size()-1)); |
| | |
| | | map.put("resImage",resImage); |
| | | } |
| | | |
| | | if(stationInfo.getStationName2().equals("-")){ |
| | | stationInfo.setStationName(stationInfo.getStationName1()); |
| | | }else{ |
| | | stationInfo.setStationName(stationInfo.getStationName1()+"-"+stationInfo.getStationName2()); |
| | | } |
| | | |
| | | map.put("fileParam",param); |
| | | map.put("stationInfo",stationInfo); |
| | | //总体评价:内阻/电压/连接条/?容量 |
| | | int resGoodCount = 0; |
| | | int volGoodCount = 0; |
| | | int chainResGoodCount = 0; |
| | | |
| | | //总体评价:有效的电阻/电压/连接条 数 |
| | | int battVolTestCount = 0; |
| | | int battResTestCount = 0; |
| | | int battChainResTestCount = 0; |
| | | |
| | | for(BattgroupData data : dataList2){ |
| | | //计算电压,内阻,连接条数值是否有效,被测试过 |
| | | float bv = Float.parseFloat(data.getBv()); |
| | | float br = Float.parseFloat(data.getBr()); |
| | | float cr = Float.parseFloat(data.getCr()); |
| | | if (bv!=0.0){ |
| | | battVolTestCount++; |
| | | } |
| | | if(br!=0.0){ |
| | | battResTestCount++; |
| | | } |
| | | if (cr!=0.0){ |
| | | battChainResTestCount++; |
| | | } |
| | | |
| | | data.setMonNumStr("#"+data.getMonNum()); |
| | | if(!data.isHighResFlag1() && !data.isHighResFlag2()){ |
| | | if(br==0.0){ |
| | | data.setResEvaluation("—"); |
| | | } |
| | | else if(!data.isHighResFlag1() && !data.isHighResFlag2() ){ |
| | | resGoodCount +=1; |
| | | data.setResEvaluation("优"); |
| | | }else if(data.isHighResFlag1()){ |
| | | data.setResEvaluation("差"); |
| | | data.setResEvaluation("良"); |
| | | }else{ |
| | | data.setResEvaluation("很差"); |
| | | data.setResEvaluation("差"); |
| | | } |
| | | if(!data.isLowVolFlag() && !data.isHighVolFlag()){ |
| | | if(bv!=0.0 && !data.isLowVolFlag() && !data.isHighVolFlag()){ |
| | | volGoodCount +=1; |
| | | } |
| | | if(!data.isHighChainResFlag()){ |
| | | if(cr!=0.0 && !data.isHighChainResFlag1() && !data.isHighChainResFlag2()){ |
| | | chainResGoodCount +=1; |
| | | } |
| | | }; |
| | |
| | | map.put("volGoodCount",volGoodCount); |
| | | map.put("chainResGoodCount",chainResGoodCount); |
| | | |
| | | map.put("battVolTestCount",battVolTestCount); |
| | | map.put("battResTestCount",battResTestCount); |
| | | map.put("battChainResTestCount",battChainResTestCount); |
| | | |
| | | map.put("dataList",dataList); |
| | | map.put("dataList2",dataList2); |
| | | |