Browse Source

Merge remote-tracking branch 'origin/dev' into dev

dev
25604 2 weeks ago
parent
commit
ea3599fb55
  1. 8
      user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java
  2. 11
      user-service/src/main/java/com/mh/user/service/impl/EnergyServiceImpl.java
  3. 122
      user-service/src/main/java/com/mh/user/service/impl/SummaryServiceImpl.java
  4. 22
      user-service/src/main/java/com/mh/user/strategy/WtMeterStrategy.java

8
user-service/src/main/java/com/mh/user/service/impl/DataResultServiceImpl.java

@ -36,6 +36,7 @@ public class DataResultServiceImpl implements DataResultService {
double initValue=0; double initValue=0;
double curValue=0; double curValue=0;
double dayValue=0; double dayValue=0;
double newCurValue = 0;
int days=0; int days=0;
try{ try{
Date date=new Date(); //获取系统日期 Date date=new Date(); //获取系统日期
@ -47,9 +48,16 @@ public class DataResultServiceImpl implements DataResultService {
double ratio=deviceInstallEntity.getRatio(); //倍率 double ratio=deviceInstallEntity.getRatio(); //倍率
initValue=deviceInstallEntity.getInitValue(); initValue=deviceInstallEntity.getInitValue();
dayValue=deviceInstallEntity.getDayValue(); dayValue=deviceInstallEntity.getDayValue();
newCurValue = deviceInstallEntity.getLastValue();
if(dataResultEntity.getDeviceType().equals("电表")){ if(dataResultEntity.getDeviceType().equals("电表")){
if (dataResultEntity.getCurValue() - newCurValue > 2000) {
return;
}
dayValue=1000; dayValue=1000;
}else{ }else{
if (dataResultEntity.getCurValue() - newCurValue > 300) {
return;
}
dayValue=100; dayValue=100;
} }
//判断是否有记录 //判断是否有记录

11
user-service/src/main/java/com/mh/user/service/impl/EnergyServiceImpl.java

@ -119,7 +119,15 @@ public class EnergyServiceImpl implements EnergyService {
buildingId = "所有"; buildingId = "所有";
} else if (level == 1) { } else if (level == 1) {
// 根据区域id获取所有楼栋 id // 根据区域id获取所有楼栋 id
List<String> buildingIds = buildingService.queryBuildingIdListByAreaId(buildingId); // 如果是属于华夏的,只需要对应area_id
String customName = dealDataService.customName();
List<String> buildingIds = new ArrayList<>();
if (customName.contains(Constant.CUSTOM_NAME_HUAXIA)) {
String areaId = areaService.selectById(buildingId).getAreaId();
buildingIds.add(areaId);
} else {
buildingIds = buildingService.queryBuildingIdListByAreaId(buildingId);
}
if(type==1) { if(type==1) {
r=energyMapper.getAreaEnergyDayCount(buildingIds,startDate,endDate, page, limit); r=energyMapper.getAreaEnergyDayCount(buildingIds,startDate,endDate, page, limit);
}else if (type==2){ }else if (type==2){
@ -127,6 +135,7 @@ public class EnergyServiceImpl implements EnergyService {
} else if (type==3){ } else if (type==3){
r=energyMapper.getAreaEnergyYearCount(buildingIds,startDate,endDate, page, limit); r=energyMapper.getAreaEnergyYearCount(buildingIds,startDate,endDate, page, limit);
} }
return r;
} }
if(type==1) { if(type==1) {
r=energyMapper.getEnergyDayCount(buildingId,startDate,endDate, page, limit); r=energyMapper.getEnergyDayCount(buildingId,startDate,endDate, page, limit);

122
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.BuildingService;
import com.mh.user.service.DealDataService; import com.mh.user.service.DealDataService;
import com.mh.user.service.SummaryService; import com.mh.user.service.SummaryService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.Year; import java.time.Year;
import java.time.YearMonth; import java.time.YearMonth;
@ -23,6 +25,7 @@ import java.util.List;
import static java.lang.Double.parseDouble; import static java.lang.Double.parseDouble;
@Slf4j
@Service @Service
public class SummaryServiceImpl implements SummaryService { public class SummaryServiceImpl implements SummaryService {
@ -45,10 +48,10 @@ public class SummaryServiceImpl implements SummaryService {
@Override @Override
public EnergySumEntity queryEnergySum(String buildingId, String curDate, int type, int level) { public EnergySumEntity queryEnergySum(String buildingId, String curDate, int type, int level) {
// 判断层级属于校区 // 判断层级属于校区
if (level == 1) { String customName = dealDataService.customName();
if (level == 1 && !customName.contains(Constant.CUSTOM_NAME_HUAXIA)) {
// 根据buildingId查询对应的所有楼栋id // 根据buildingId查询对应的所有楼栋id
// 如果是属于华夏的,只需要对应area_id // 如果是属于华夏的,只需要对应area_id
String customName = dealDataService.customName();
List<String> strings = new ArrayList<>(); List<String> strings = new ArrayList<>();
if (customName.contains(Constant.CUSTOM_NAME_HUAXIA)) { if (customName.contains(Constant.CUSTOM_NAME_HUAXIA)) {
String areaId = areaMapper.selectById(buildingId).getAreaId(); String areaId = areaMapper.selectById(buildingId).getAreaId();
@ -120,59 +123,70 @@ public class SummaryServiceImpl implements SummaryService {
} }
// curList每一个参数求和,得出 EnergySumEntity // curList每一个参数求和,得出 EnergySumEntity
EnergySumEntity curSum = new EnergySumEntity(); EnergySumEntity result = null;
if (curList.isEmpty()) { try {
curSum.setWaterValue("0"); EnergySumEntity curSum = new EnergySumEntity();
curSum.setElectValue("0"); if (curList.isEmpty()) {
curSum.setElectWater("0"); curSum.setWaterValue("0");
} else { curSum.setElectValue("0");
curSum.setFillWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getFillWater())).sum())); curSum.setElectWater("0");
curSum.setWaterValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getWaterValue())).sum())); } else {
curSum.setElectValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum())); curSum.setFillWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getFillWater())).sum()));
curSum.setElectWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum())); curSum.setWaterValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getWaterValue())).sum()));
} curSum.setElectValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum()));
curSum.setElectWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum()));
}
// lastList每一个参数求和,得出 EnergySumEntity // lastList每一个参数求和,得出 EnergySumEntity
EnergySumEntity lastSum = new EnergySumEntity(); EnergySumEntity lastSum = new EnergySumEntity();
if (lastList.isEmpty()) { if (lastList.isEmpty()) {
lastSum.setFillWater("0"); lastSum.setFillWater("0");
lastSum.setWaterValue("0"); lastSum.setWaterValue("0");
lastSum.setElectValue("0"); lastSum.setElectValue("0");
lastSum.setElectWater("0"); lastSum.setElectWater("0");
} else { } else {
lastSum.setFillWater(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getFillWater())).sum())); lastSum.setFillWater(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getFillWater())).sum()));
lastSum.setWaterValue(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getWaterValue())).sum())); lastSum.setWaterValue(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getWaterValue())).sum()));
lastSum.setElectValue(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum())); lastSum.setElectValue(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum()));
lastSum.setElectWater(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum())); lastSum.setElectWater(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum()));
} }
// 昨日的EnergySumEntity和今日的EnergySumEntity,对比计算出补水昨日比、用水与昨日比、用电与昨日比、单耗与昨日比 // 昨日的EnergySumEntity和今日的EnergySumEntity,对比计算出补水昨日比、用水与昨日比、用电与昨日比、单耗与昨日比
EnergySumEntity result = new EnergySumEntity(); result = new EnergySumEntity();
if (curList.isEmpty()) { if (curList.isEmpty()) {
result.setWaterValue("0"); result.setWaterValue("0");
result.setElectValue("0"); result.setElectValue("0");
result.setElectWater("0"); result.setElectWater("0");
} else { } else {
result.setFillWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getFillWater())).sum())); result.setFillWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getFillWater())).sum()));
result.setWaterValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getWaterValue())).sum())); result.setWaterValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getWaterValue())).sum()));
result.setElectValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum())); result.setElectValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum()));
result.setElectWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum())); result.setElectWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum()));
} }
// 计算与昨日的比较百分比 // 计算与昨日的比较百分比
result.setFillWaterP(calculateRatio(curSum.getFillWater(), lastSum.getFillWater())); result.setFillWaterP(calculateRatio(curSum.getFillWater(), lastSum.getFillWater()));
result.setWaterP(calculateRatio(curSum.getWaterValue(), lastSum.getWaterValue())); result.setWaterP(calculateRatio(curSum.getWaterValue(), lastSum.getWaterValue()));
result.setElectP(calculateRatio(curSum.getElectValue(), lastSum.getElectValue())); 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";
result.setElectWaterP(calculateRatio(curPerElect, lastPerElect)); 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; return result;
} else if (level == 0) {
buildingId = "所有";
}
if (customName.contains(Constant.CUSTOM_NAME_HUAXIA) && level != 0) {
buildingId = areaMapper.selectById(buildingId).getAreaId();
} }
if (type == 1) { if (type == 1) {
return summaryMapper.queryEnergyDaySum(buildingId, curDate); //日 return summaryMapper.queryEnergyDaySum(buildingId, curDate); //日
} else if (type == 2) { } else if (type == 2) {
@ -200,15 +214,25 @@ public class SummaryServiceImpl implements SummaryService {
* @param previous 前一个值 * @param previous 前一个值
* @return 比率百分比形式 * @return 比率百分比形式
*/ */
/**
* 计算比率的方法
*
* @param current 当前值
* @param previous 前一个值
* @return 比率百分比形式保留两位小数
*/
private String calculateRatio(String current, String previous) { private String calculateRatio(String current, String previous) {
if (parseDouble(previous) == 0) { 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 @Override
public MaintainSumEntity queryMaintainSum(String buildingId, String curDate) { public MaintainSumEntity queryMaintainSum(String buildingId, String curDate) {
return summaryMapper.queryMaintainSum(buildingId,curDate); return summaryMapper.queryMaintainSum(buildingId,curDate);

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

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

Loading…
Cancel
Save