| | |
| | | |
| | | import com.whyc.dto.Response; |
| | | import com.whyc.mapper.BattGroupDataMapper; |
| | | import com.whyc.pojo.BattgroupData; |
| | | import com.whyc.pojo.BattgroupInfo; |
| | | import com.whyc.pojo.FileInfo; |
| | | import com.whyc.pojo.FileParam; |
| | | import com.whyc.pojo.*; |
| | | import com.whyc.util.MathUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | @Autowired |
| | | private BattGroupInfoService battGroupInfoService; |
| | | |
| | | @Autowired |
| | | private TestParamService testParamService; |
| | | |
| | | public List<BattgroupData> getListWithTestTime(String fileId) { |
| | | String battGroupId = battGroupInfoService.getByFileId(fileId).getBattgroupId(); |
| | | List<BattgroupData> dataList = mapper.getListWithTestTime(battGroupId); |
| | | //查询系数和阈值是否禁用 |
| | | //BattgroupInfo info = battGroupInfoService.getByBattGroupId(fileId); |
| | | FileParam param = fileParamService.getFactorsAndThreshold(fileId); |
| | | if(param.getFactorDisabled() == 1){ //系数和阈值禁用,不需要判断处理阈值 |
| | | FileParam param = fileParamService.getByFileId(fileId); |
| | | TestParam param2 = testParamService.getFactorsAndThreshold(); |
| | | if(param2.getEnabled() == 0){ //系数和阈值禁用,不需要判断处理阈值 |
| | | return dataList; |
| | | } |
| | | Float stdVol = param.getBattVol(); |
| | | Float stdRes = param.getBattRes(); |
| | | Float volLowCoeK1 = param.getVolLowCoeK1(); |
| | | Float volHighCoeK2 = param.getVolHighCoeK2(); |
| | | Float resGoodCoeK3 = param.getResGoodCoeK3(); |
| | | Float resBadCoeK4 = param.getResBadCoeK4(); |
| | | Float chainRes = param.getChainRes(); |
| | | Float volLowCoeK1 = param2.getVolLowCoeK1(); |
| | | Float volHighCoeK2 = param2.getVolHighCoeK2(); |
| | | Float resGoodCoeK3 = param2.getResGoodCoeK3(); |
| | | Float resBadCoeK4 = param2.getResBadCoeK4(); |
| | | Float chainRes = param2.getChainRes(); |
| | | dataList.forEach(data->{ |
| | | //判断处理阈值 |
| | | Float br = data.getBr(); |
| | |
| | | float stdDevBr = MathUtil.getStandardDeviation(brList); |
| | | float stdDevCr = MathUtil.getStandardDeviation(crList); |
| | | float stdDevBs = MathUtil.getStandardDeviation(bsList); |
| | | map.put("stdDevBv",stdDevBv*100+"%"); |
| | | map.put("stdDevBr",stdDevBr*100+"%"); |
| | | map.put("stdDevCr",stdDevCr*100+"%"); |
| | | map.put("stdDevBs",stdDevBs*100+"%"); |
| | | map.put("stdDevBv",stdDevBv*10000/100+"%"); |
| | | map.put("stdDevBr",stdDevBr*10000/100+"%"); |
| | | map.put("stdDevCr",stdDevCr*10000/100+"%"); |
| | | map.put("stdDevBs",stdDevBs*10000/100+"%"); |
| | | return map; |
| | | } |
| | | |
| | |
| | | float sdBr = MathUtil.getStandardDeviation(dataList.stream().map(BattgroupData::getBr).collect(Collectors.toList())); |
| | | float sdBv = MathUtil.getStandardDeviation(dataList.stream().map(BattgroupData::getBv).collect(Collectors.toList())); |
| | | |
| | | resBalanceRate.add(sdBaseBr*100+"%"); |
| | | resBalanceRate.add(sdBr*100+"%"); |
| | | resBalanceRate.add(sdBaseBr*10000/100+"%"); |
| | | resBalanceRate.add(sdBr*10000/100+"%"); |
| | | |
| | | volBalanceRate.add(sdBaseBv*100+"%"); |
| | | volBalanceRate.add(sdBv*100+"%"); |
| | | volBalanceRate.add(sdBaseBv*10000/100+"%"); |
| | | volBalanceRate.add(sdBv*10000/100+"%"); |
| | | |
| | | for (int i = 0; i < dataList.size(); i++) { |
| | | BattgroupData data = dataList.get(i); |
| | |
| | | } |
| | | }else { |
| | | float brFloat = BigDecimal.valueOf(br).subtract(BigDecimal.valueOf(baseBr)).divide(BigDecimal.valueOf(baseBr), 4, BigDecimal.ROUND_HALF_UP).floatValue(); |
| | | resChangeRate.add(brFloat * 100 + "%"); |
| | | resChangeRate.add(brFloat * 10000/100 + "%"); |
| | | } |
| | | |
| | | Float bv = data.getBv(); |
| | |
| | | } |
| | | }else { |
| | | float bvFloat = BigDecimal.valueOf(bv).subtract(BigDecimal.valueOf(baseBv)).divide(BigDecimal.valueOf(baseBv), 4, BigDecimal.ROUND_HALF_UP).floatValue(); |
| | | volChangeRate.add(bvFloat * 100 + "%"); |
| | | volChangeRate.add(bvFloat * 10000/100 + "%"); |
| | | } |
| | | } |
| | | } |
| | | //将均一性值,也进行变化率计算 |
| | | float brFloat = BigDecimal.valueOf(sdBr).subtract(BigDecimal.valueOf(sdBaseBr)).divide(BigDecimal.valueOf(sdBaseBr),4, BigDecimal.ROUND_HALF_UP).floatValue(); |
| | | resChangeRate.add(brFloat*100+"%"); |
| | | resChangeRate.add(brFloat*10000/100+"%"); |
| | | |
| | | float bvFloat = BigDecimal.valueOf(sdBv).subtract(BigDecimal.valueOf(sdBaseBv)).divide(BigDecimal.valueOf(sdBaseBv),4, BigDecimal.ROUND_HALF_UP).floatValue(); |
| | | volChangeRate.add(bvFloat*100+"%"); |
| | | volChangeRate.add(bvFloat*10000/100+"%"); |
| | | |
| | | map.put("resChangeRate",resChangeRate); |
| | | map.put("volChangeRate",volChangeRate); |
| | |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | Float bv = 0.353f; |
| | | Float baseBv = 0.354f; |
| | | float bvFloat = BigDecimal.valueOf(bv).subtract(BigDecimal.valueOf(baseBv)).divide(BigDecimal.valueOf(baseBv),4,BigDecimal.ROUND_HALF_UP).floatValue(); |
| | | System.out.println((bvFloat * 100 + "%")); |
| | | |
| | | } |
| | | } |