Browse Source

1、优化用能查询

dev
v-lijf43 2 weeks ago
parent
commit
5d2f2b3f74
  1. 30
      user-service/src/main/java/com/mh/user/service/impl/SummaryServiceImpl.java
  2. 4
      user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java

30
user-service/src/main/java/com/mh/user/service/impl/SummaryServiceImpl.java

@ -10,10 +10,12 @@ import com.mh.user.mapper.SummaryMapper;
import com.mh.user.service.BuildingService;
import com.mh.user.service.DealDataService;
import com.mh.user.service.SummaryService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.Year;
import java.time.YearMonth;
@ -23,6 +25,7 @@ import java.util.List;
import static java.lang.Double.parseDouble;
@Slf4j
@Service
public class SummaryServiceImpl implements SummaryService {
@ -120,6 +123,8 @@ public class SummaryServiceImpl implements SummaryService {
}
// curList每一个参数求和,得出 EnergySumEntity
EnergySumEntity result = null;
try {
EnergySumEntity curSum = new EnergySumEntity();
if (curList.isEmpty()) {
curSum.setWaterValue("0");
@ -147,7 +152,7 @@ public class SummaryServiceImpl implements SummaryService {
}
// 昨日的EnergySumEntity和今日的EnergySumEntity,对比计算出补水昨日比、用水与昨日比、用电与昨日比、单耗与昨日比
EnergySumEntity result = new EnergySumEntity();
result = new EnergySumEntity();
if (curList.isEmpty()) {
result.setWaterValue("0");
result.setElectValue("0");
@ -166,10 +171,15 @@ public class SummaryServiceImpl implements SummaryService {
result.setElectP(calculateRatio(curSum.getElectValue(), lastSum.getElectValue()));
// 计算单耗比较
String curPerElect = count != 0 ? new BigDecimal(curSum.getElectValue()).divide(new BigDecimal(count)).toString() : "0";
String lastPerElect = count != 0 ? new BigDecimal(lastSum.getElectValue()).divide(new BigDecimal(count)).toString() : "0";
// 计算单耗比较
String curPerElect = count != 0 ? new BigDecimal(curSum.getElectValue()).divide(new BigDecimal(count), 2, RoundingMode.HALF_UP).toString() : "0";
String lastPerElect = count != 0 ? new BigDecimal(lastSum.getElectValue()).divide(new BigDecimal(count), 2, RoundingMode.HALF_UP).toString() : "0";
result.setElectWaterP(calculateRatio(curPerElect, lastPerElect));
} catch (Exception e) {
log.error("计算百分比异常", e);
}
return result;
} else if (level == 0) {
buildingId = "所有";
@ -204,15 +214,25 @@ public class SummaryServiceImpl implements SummaryService {
* @param previous 前一个值
* @return 比率百分比形式
*/
/**
* 计算比率的方法
*
* @param current 当前值
* @param previous 前一个值
* @return 比率百分比形式保留两位小数
*/
private String calculateRatio(String current, String previous) {
if (parseDouble(previous) == 0) {
return parseDouble(current) > 0 ? "100" : "0"; // 避免除零错误
return parseDouble(current) > 0 ? "100.00%" : "0.00%"; // 避免除零错误
}
return String.valueOf(((parseDouble(current) - parseDouble(previous)) / parseDouble(previous)) * 100);
double result = ((parseDouble(current) - parseDouble(previous)) / parseDouble(previous)) * 100;
return String.format("%.2f%%", result);
}
@Override
public MaintainSumEntity queryMaintainSum(String buildingId, String curDate) {
return summaryMapper.queryMaintainSum(buildingId,curDate);

4
user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java

@ -112,6 +112,7 @@ public class WtMeterStrategy implements DeviceStrategy {
}
log.info("水表表号: " + meterId + ",水表读数:" + data);
try {
if (!StringUtils.isBlank(data)) {
DataResultEntity dataResultEntity = new DataResultEntity();
dataResultEntity.setDeviceAddr(meterId);//通讯编号
dataResultEntity.setDeviceType("水表");
@ -121,11 +122,12 @@ public class WtMeterStrategy implements DeviceStrategy {
dataResultEntity.setBuildingId(buildingId);
dataResultService.saveDataResult(dataResultEntity);
log.info("水表数据保存数据库成功!楼栋名称:" + buildingName);
}
} catch (Exception e) {
e.printStackTrace();
log.error("水表数据保存数据库失败!楼栋名称:" + buildingName);
}
if (StringUtils.isBlank(data)) {
if (!StringUtils.isBlank(data)) {
data = String.valueOf(Double.valueOf(data));
}
return data;

Loading…
Cancel
Save