1.典型负荷统计算法数据调整

This commit is contained in:
wr
2024-03-13 20:21:52 +08:00
parent 6288e6902c
commit 9b16afff28
2 changed files with 109 additions and 17 deletions

View File

@@ -4,7 +4,6 @@
<select id="selectAvgMonth" resultType="com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO"> <select id="selectAvgMonth" resultType="com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO">
select select
avg(interferenceSourceNum) as interferenceSourceNum,
avg(averageOvDays) as averageOvDays, avg(averageOvDays) as averageOvDays,
avg(flickerAvgOvRate) as flickerAvgOvRate, avg(flickerAvgOvRate) as flickerAvgOvRate,
avg(flickerOvNum) as flickerOvNum, avg(flickerOvNum) as flickerOvNum,
@@ -15,7 +14,6 @@
avg(inseqAvgOvRate) as inseqAvgOvRate, avg(inseqAvgOvRate) as inseqAvgOvRate,
avg(inseqOvNum) as inseqOvNum, avg(inseqOvNum) as inseqOvNum,
avg(inseqOvRate) as inseqOvRate, avg(inseqOvRate) as inseqOvRate,
avg(monitorNum) as monitorNum,
avg(monitoringRate) as monitoringRate, avg(monitoringRate) as monitoringRate,
avg(ovNum) as ovNum, avg(ovNum) as ovNum,
avg(ovRate) as ovRate, avg(ovRate) as ovRate,
@@ -32,10 +30,8 @@
sum(inseqOvCount) as inseqOvCount, sum(inseqOvCount) as inseqOvCount,
sum(unbanOvCount) as unbanOvCount, sum(unbanOvCount) as unbanOvCount,
sum(harmvOvCount) as harmvOvCount, sum(harmvOvCount) as harmvOvCount,
sum(monitorCount) as monitorCount,
voltageLevel, voltageLevel,
sum(ovCount) as ovCount, sum(ovCount) as ovCount
sum(interferenceSourceCount) as interferenceSourceCount
FROM FROM
pq_typical_source_create pq_typical_source_create
<where> <where>
@@ -88,7 +84,6 @@
</select> </select>
<select id="selectAvgYear" resultType="com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO"> <select id="selectAvgYear" resultType="com.njcn.harmonic.pojo.po.send.PqTypicalSourceCreatePO">
select select
avg(interferenceSourceNum) as interferenceSourceNum,
avg(averageOvDays) as averageOvDays, avg(averageOvDays) as averageOvDays,
avg(flickerAvgOvRate) as flickerAvgOvRate, avg(flickerAvgOvRate) as flickerAvgOvRate,
avg(flickerOvNum) as flickerOvNum, avg(flickerOvNum) as flickerOvNum,
@@ -99,7 +94,6 @@
avg(inseqAvgOvRate) as inseqAvgOvRate, avg(inseqAvgOvRate) as inseqAvgOvRate,
avg(inseqOvNum) as inseqOvNum, avg(inseqOvNum) as inseqOvNum,
avg(inseqOvRate) as inseqOvRate, avg(inseqOvRate) as inseqOvRate,
avg(monitorNum) as monitorNum,
avg(monitoringRate) as monitoringRate, avg(monitoringRate) as monitoringRate,
avg(ovNum) as ovNum, avg(ovNum) as ovNum,
avg(ovRate) as ovRate, avg(ovRate) as ovRate,
@@ -116,10 +110,8 @@
sum(inseqOvCount) as inseqOvCount, sum(inseqOvCount) as inseqOvCount,
sum(unbanOvCount) as unbanOvCount, sum(unbanOvCount) as unbanOvCount,
sum(harmvOvCount) as harmvOvCount, sum(harmvOvCount) as harmvOvCount,
sum(monitorCount) as monitorCount,
voltageLevel, voltageLevel,
sum(ovCount) as ovCount, sum(ovCount) as ovCount
sum(interferenceSourceCount) as interferenceSourceCount
FROM FROM
pq_typical_source_create pq_typical_source_create
<where> <where>

View File

@@ -1,10 +1,9 @@
package com.njcn.prepare.harmonic.service.mysql.send.impl; package com.njcn.prepare.harmonic.service.mysql.send.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil; import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -39,7 +38,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -288,33 +286,81 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl<PqTypicalSou
String end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString(); String end = DateUtil.endOfMonth(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString();
String date = begin.substring(0, 7); String date = begin.substring(0, 7);
List<SysDicTreePO> sysdictreepo = dictTreeFeignClient.queryAll().getData();
List<String> windfarm_user = Stream.of(
DicDataEnum.WINDPOWER_STATION.getCode()).collect(Collectors.toList());
List<String> photovoltaicsit_eusers = Stream.of(
DicDataEnum.PHOTOVOLTAIC_POWER_STATION.getCode()).collect(Collectors.toList());
List<String> tractionstation = Stream.of(
DicDataEnum.ELECTRIFIED_RAILWAY.getCode()).collect(Collectors.toList());
DictTreeVO dictTreeVO = dictTreeFeignClient.queryByCode(DicTreeEnum.Imp_Users.getCode()).getData();
List<DictTreeVO> dictTreeVOList = dictTreeFeignClient.query(dictTreeVO.getId()).getData();
List<String> importUser = dictTreeVOList.stream().map(DictTreeVO::getCode).distinct().collect(Collectors.toList());
importUser.add(dictTreeVO.getCode());
/*3.45 典型源荷用户类型*/ /*3.45 典型源荷用户类型*/
List<String> collect = Stream.of(DicDataEnum.TRACTIONSTATION.getCode(), List<String> collect = Stream.of(DicDataEnum.TRACTIONSTATION.getCode(),
DicDataEnum.WINDFARM_USER.getCode(), DicDataEnum.WINDFARM_USER.getCode(),
DicDataEnum.PHOTOVOLTAICSIT_EUSERS.getCode(), DicDataEnum.PHOTOVOLTAICSIT_EUSERS.getCode(),
DicDataEnum.OTHER_INTERFERENCESOURCE_USERS.getCode()).collect(Collectors.toList()); DicDataEnum.OTHER_INTERFERENCESOURCE_USERS.getCode()).collect(Collectors.toList());
List<SysDicTreePO> windfarm_user_dict = sysdictreepo.stream().filter(temp -> windfarm_user.contains(temp.getCode())).collect(Collectors.toList());
List<SysDicTreePO> photovoltaicsit_eusers_dict = sysdictreepo.stream().filter(temp -> photovoltaicsit_eusers.contains(temp.getCode())).collect(Collectors.toList());
List<SysDicTreePO> tractionstation_dict = sysdictreepo.stream().filter(temp -> tractionstation.contains(temp.getCode())).collect(Collectors.toList());
List<SysDicTreePO> import_dict = sysdictreepo.stream().filter(temp -> importUser.contains(temp.getCode())).collect(Collectors.toList());
List<SysDicTreePO> un_other_interferencesource_users_dict = new ArrayList<>();
un_other_interferencesource_users_dict.addAll(photovoltaicsit_eusers_dict);
un_other_interferencesource_users_dict.addAll(tractionstation_dict);
un_other_interferencesource_users_dict.addAll(windfarm_user_dict);
un_other_interferencesource_users_dict.addAll(import_dict);
List<PvTerminalTreeVO> deptList = deptFeignClient.allDeptList().getData(); List<PvTerminalTreeVO> deptList = deptFeignClient.allDeptList().getData();
Map<String, PvTerminalTreeVO> mapCode = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getCode, Function.identity())); Map<String, PvTerminalTreeVO> mapCode = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getCode, Function.identity()));
Map<String, PvTerminalTreeVO> mapList = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getId, Function.identity())); Map<String, PvTerminalTreeVO> mapList = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getId, Function.identity()));
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) {
List<String> collect1 = deptGetChildrenMoreDTO.getLineBaseList().stream().filter(temp->Objects.equals(temp.getIsUpToGrid(),1)).map(LineDevGetDTO::getPointId).collect(Collectors.toList());
List<Monitor> monitorList;
if (!CollectionUtils.isEmpty(collect1)) {
monitorList = monitorClient.getMonitorList(collect1).getData();
} else {
monitorList = new ArrayList<>();
}
collect.stream().forEach(temp->{ collect.stream().forEach(temp->{
PqTypicalSourceCreatePO pqTypicalSourceCreatePO = new PqTypicalSourceCreatePO(); PqTypicalSourceCreatePO pqTypicalSourceCreatePO = new PqTypicalSourceCreatePO();
List<Monitor> tempList = new ArrayList<>();
if (temp.equals(DicDataEnum.TRACTIONSTATION.getCode())){ if (temp.equals(DicDataEnum.TRACTIONSTATION.getCode())){
List<String> idList = tractionstation_dict.stream().map(SysDicTreePO::getId).collect(Collectors.toList());
tempList = monitorList.stream().filter(tempmonitor -> idList.contains(tempmonitor.getObjType())).collect(Collectors.toList());
pqTypicalSourceCreatePO.setIndustryType("99"); pqTypicalSourceCreatePO.setIndustryType("99");
} else if (temp.equals(DicDataEnum.WINDFARM_USER.getCode())) { } else if (temp.equals(DicDataEnum.WINDFARM_USER.getCode())) {
List<String> idList = windfarm_user_dict.stream().map(SysDicTreePO::getId).collect(Collectors.toList());
tempList = monitorList.stream().filter(tempmonitor -> idList.contains(tempmonitor.getObjType())).collect(Collectors.toList());
pqTypicalSourceCreatePO.setIndustryType("99"); pqTypicalSourceCreatePO.setIndustryType("99");
}else if(temp.equals(DicDataEnum.PHOTOVOLTAICSIT_EUSERS.getCode())) { }else if(temp.equals(DicDataEnum.PHOTOVOLTAICSIT_EUSERS.getCode())) {
List<String> idList = photovoltaicsit_eusers_dict.stream().map(SysDicTreePO::getId).collect(Collectors.toList());
tempList = monitorList.stream().filter(tempmonitor -> idList.contains(tempmonitor.getObjType())).collect(Collectors.toList());
pqTypicalSourceCreatePO.setIndustryType("99"); pqTypicalSourceCreatePO.setIndustryType("99");
}else if(temp.equals(DicDataEnum.OTHER_INTERFERENCESOURCE_USERS.getCode())) { }else if(temp.equals(DicDataEnum.OTHER_INTERFERENCESOURCE_USERS.getCode())) {
List<String> idList = un_other_interferencesource_users_dict.stream().map(SysDicTreePO::getId).collect(Collectors.toList());
tempList = monitorList.stream().filter(tempmonitor -> !idList.contains(tempmonitor.getObjType())).collect(Collectors.toList());
pqTypicalSourceCreatePO.setIndustryType("00"); pqTypicalSourceCreatePO.setIndustryType("00");
} }
if(CollectionUtils.isEmpty(tempList)){
return;
}
List<String> monitorIds = tempList.stream().map(Monitor::getId).collect(Collectors.toList());
if (mapCode.containsKey(deptGetChildrenMoreDTO.getUnitId())) { if (mapCode.containsKey(deptGetChildrenMoreDTO.getUnitId())) {
PvTerminalTreeVO pvTerminalTreeVO = mapCode.get(deptGetChildrenMoreDTO.getUnitId()); PvTerminalTreeVO pvTerminalTreeVO = mapCode.get(deptGetChildrenMoreDTO.getUnitId());
String[] split = (pvTerminalTreeVO.getPids() + StrUtil.COMMA + pvTerminalTreeVO.getId()) String[] split = (pvTerminalTreeVO.getPids() + StrUtil.COMMA + pvTerminalTreeVO.getId())
@@ -363,6 +409,10 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl<PqTypicalSou
po.setIndexType(temp); po.setIndexType(temp);
po.setStatisticalDate(date); po.setStatisticalDate(date);
po.setComputeDate(calculatedParam.getDataDate()); po.setComputeDate(calculatedParam.getDataDate());
po.setInterferenceSourceNum(monitorIds.size());
po.setInterferenceSourceCount(monitorIds.size());
po.setMonitorNum(monitorIds.size());
po.setMonitorCount(monitorIds.size());
po.setProvinceName(pqTypicalSourceCreatePO.getProvinceName()); po.setProvinceName(pqTypicalSourceCreatePO.getProvinceName());
po.setProvinceId(pqTypicalSourceCreatePO.getProvinceId()); po.setProvinceId(pqTypicalSourceCreatePO.getProvinceId());
po.setCityName(pqTypicalSourceCreatePO.getCityName()); po.setCityName(pqTypicalSourceCreatePO.getCityName());
@@ -374,6 +424,7 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl<PqTypicalSou
po.setId(deptGetChildrenMoreDTO.getUnitId()+"-"+po.getIndexType()+"-"+po.getStatisticalType()+"-"+date); po.setId(deptGetChildrenMoreDTO.getUnitId()+"-"+po.getIndexType()+"-"+po.getStatisticalType()+"-"+date);
pqTypicalSourceCreatePOList.add(po); pqTypicalSourceCreatePOList.add(po);
} }
}); });
@@ -391,33 +442,81 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl<PqTypicalSou
String end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString(); String end = DateUtil.endOfYear(DateUtil.parse(calculatedParam.getDataDate(), DatePattern.NORM_DATE_PATTERN)).toString();
String date = begin.substring(0, 4); String date = begin.substring(0, 4);
List<SysDicTreePO> sysdictreepo = dictTreeFeignClient.queryAll().getData();
List<String> windfarm_user = Stream.of(
DicDataEnum.WINDPOWER_STATION.getCode()).collect(Collectors.toList());
List<String> photovoltaicsit_eusers = Stream.of(
DicDataEnum.PHOTOVOLTAIC_POWER_STATION.getCode()).collect(Collectors.toList());
List<String> tractionstation = Stream.of(
DicDataEnum.ELECTRIFIED_RAILWAY.getCode()).collect(Collectors.toList());
DictTreeVO dictTreeVO = dictTreeFeignClient.queryByCode(DicTreeEnum.Imp_Users.getCode()).getData();
List<DictTreeVO> dictTreeVOList = dictTreeFeignClient.query(dictTreeVO.getId()).getData();
List<String> importUser = dictTreeVOList.stream().map(DictTreeVO::getCode).distinct().collect(Collectors.toList());
importUser.add(dictTreeVO.getCode());
/*3.45 典型源荷用户类型*/ /*3.45 典型源荷用户类型*/
List<String> collect = Stream.of(DicDataEnum.TRACTIONSTATION.getCode(), List<String> collect = Stream.of(DicDataEnum.TRACTIONSTATION.getCode(),
DicDataEnum.WINDFARM_USER.getCode(), DicDataEnum.WINDFARM_USER.getCode(),
DicDataEnum.PHOTOVOLTAICSIT_EUSERS.getCode(), DicDataEnum.PHOTOVOLTAICSIT_EUSERS.getCode(),
DicDataEnum.OTHER_INTERFERENCESOURCE_USERS.getCode()).collect(Collectors.toList()); DicDataEnum.OTHER_INTERFERENCESOURCE_USERS.getCode()).collect(Collectors.toList());
List<SysDicTreePO> windfarm_user_dict = sysdictreepo.stream().filter(temp -> windfarm_user.contains(temp.getCode())).collect(Collectors.toList());
List<SysDicTreePO> photovoltaicsit_eusers_dict = sysdictreepo.stream().filter(temp -> photovoltaicsit_eusers.contains(temp.getCode())).collect(Collectors.toList());
List<SysDicTreePO> tractionstation_dict = sysdictreepo.stream().filter(temp -> tractionstation.contains(temp.getCode())).collect(Collectors.toList());
List<SysDicTreePO> import_dict = sysdictreepo.stream().filter(temp -> importUser.contains(temp.getCode())).collect(Collectors.toList());
List<SysDicTreePO> un_other_interferencesource_users_dict = new ArrayList<>();
un_other_interferencesource_users_dict.addAll(photovoltaicsit_eusers_dict);
un_other_interferencesource_users_dict.addAll(tractionstation_dict);
un_other_interferencesource_users_dict.addAll(windfarm_user_dict);
un_other_interferencesource_users_dict.addAll(import_dict);
List<PvTerminalTreeVO> deptList = deptFeignClient.allDeptList().getData(); List<PvTerminalTreeVO> deptList = deptFeignClient.allDeptList().getData();
Map<String, PvTerminalTreeVO> mapCode = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getCode, Function.identity())); Map<String, PvTerminalTreeVO> mapCode = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getCode, Function.identity()));
Map<String, PvTerminalTreeVO> mapList = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getId, Function.identity())); Map<String, PvTerminalTreeVO> mapList = deptList.stream().collect(Collectors.toMap(PvTerminalTreeVO::getId, Function.identity()));
for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) { for (DeptGetChildrenMoreDTO deptGetChildrenMoreDTO : calculatedParam.getIdList()) {
List<String> collect1 = deptGetChildrenMoreDTO.getLineBaseList().stream().filter(temp->Objects.equals(temp.getIsUpToGrid(),1)).map(LineDevGetDTO::getPointId).collect(Collectors.toList());
List<Monitor> monitorList;
if (!CollectionUtils.isEmpty(collect1)) {
monitorList = monitorClient.getMonitorList(collect1).getData();
} else {
monitorList = new ArrayList<>();
}
collect.stream().forEach(temp->{ collect.stream().forEach(temp->{
PqTypicalSourceCreatePO pqTypicalSourceCreatePO = new PqTypicalSourceCreatePO(); PqTypicalSourceCreatePO pqTypicalSourceCreatePO = new PqTypicalSourceCreatePO();
List<Monitor> tempList = new ArrayList<>();
if (temp.equals(DicDataEnum.TRACTIONSTATION.getCode())){ if (temp.equals(DicDataEnum.TRACTIONSTATION.getCode())){
List<String> idList = tractionstation_dict.stream().map(SysDicTreePO::getId).collect(Collectors.toList());
tempList = monitorList.stream().filter(tempmonitor -> idList.contains(tempmonitor.getObjType())).collect(Collectors.toList());
pqTypicalSourceCreatePO.setIndustryType("99"); pqTypicalSourceCreatePO.setIndustryType("99");
} else if (temp.equals(DicDataEnum.WINDFARM_USER.getCode())) { } else if (temp.equals(DicDataEnum.WINDFARM_USER.getCode())) {
List<String> idList = windfarm_user_dict.stream().map(SysDicTreePO::getId).collect(Collectors.toList());
tempList = monitorList.stream().filter(tempmonitor -> idList.contains(tempmonitor.getObjType())).collect(Collectors.toList());
pqTypicalSourceCreatePO.setIndustryType("99"); pqTypicalSourceCreatePO.setIndustryType("99");
}else if(temp.equals(DicDataEnum.PHOTOVOLTAICSIT_EUSERS.getCode())) { }else if(temp.equals(DicDataEnum.PHOTOVOLTAICSIT_EUSERS.getCode())) {
List<String> idList = photovoltaicsit_eusers_dict.stream().map(SysDicTreePO::getId).collect(Collectors.toList());
tempList = monitorList.stream().filter(tempmonitor -> idList.contains(tempmonitor.getObjType())).collect(Collectors.toList());
pqTypicalSourceCreatePO.setIndustryType("99"); pqTypicalSourceCreatePO.setIndustryType("99");
}else if(temp.equals(DicDataEnum.OTHER_INTERFERENCESOURCE_USERS.getCode())) { }else if(temp.equals(DicDataEnum.OTHER_INTERFERENCESOURCE_USERS.getCode())) {
List<String> idList = un_other_interferencesource_users_dict.stream().map(SysDicTreePO::getId).collect(Collectors.toList());
tempList = monitorList.stream().filter(tempmonitor -> !idList.contains(tempmonitor.getObjType())).collect(Collectors.toList());
pqTypicalSourceCreatePO.setIndustryType("00"); pqTypicalSourceCreatePO.setIndustryType("00");
} }
if(CollectionUtils.isEmpty(tempList)){
return;
}
List<String> monitorIds = tempList.stream().map(Monitor::getId).collect(Collectors.toList());
if (mapCode.containsKey(deptGetChildrenMoreDTO.getUnitId())) { if (mapCode.containsKey(deptGetChildrenMoreDTO.getUnitId())) {
PvTerminalTreeVO pvTerminalTreeVO = mapCode.get(deptGetChildrenMoreDTO.getUnitId()); PvTerminalTreeVO pvTerminalTreeVO = mapCode.get(deptGetChildrenMoreDTO.getUnitId());
String[] split = (pvTerminalTreeVO.getPids() + StrUtil.COMMA + pvTerminalTreeVO.getId()) String[] split = (pvTerminalTreeVO.getPids() + StrUtil.COMMA + pvTerminalTreeVO.getId())
@@ -466,6 +565,10 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl<PqTypicalSou
po.setIndexType(temp); po.setIndexType(temp);
po.setStatisticalDate(date); po.setStatisticalDate(date);
po.setComputeDate(calculatedParam.getDataDate()); po.setComputeDate(calculatedParam.getDataDate());
po.setInterferenceSourceNum(monitorIds.size());
po.setInterferenceSourceCount(monitorIds.size());
po.setMonitorNum(monitorIds.size());
po.setMonitorCount(monitorIds.size());
po.setProvinceName(pqTypicalSourceCreatePO.getProvinceName()); po.setProvinceName(pqTypicalSourceCreatePO.getProvinceName());
po.setProvinceId(pqTypicalSourceCreatePO.getProvinceId()); po.setProvinceId(pqTypicalSourceCreatePO.getProvinceId());
po.setCityName(pqTypicalSourceCreatePO.getCityName()); po.setCityName(pqTypicalSourceCreatePO.getCityName());
@@ -582,10 +685,7 @@ public class PqTypicalSourceCreatePOServiceImpl extends ServiceImpl<PqTypicalSou
if (b == 0) { if (b == 0) {
return BigDecimal.valueOf(0.00); return BigDecimal.valueOf(0.00);
} }
BigDecimal num1 = new BigDecimal(a); return NumberUtil.round(a*100.0/b,2);
BigDecimal num2 = new BigDecimal(b);
BigDecimal result = num1.divide(num2, 2, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100));
return result;
} }