|
|
|
|
@ -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,55 +123,62 @@ public class SummaryServiceImpl implements SummaryService {
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// curList每一个参数求和,得出 EnergySumEntity
|
|
|
|
|
EnergySumEntity curSum = new EnergySumEntity(); |
|
|
|
|
if (curList.isEmpty()) { |
|
|
|
|
curSum.setWaterValue("0"); |
|
|
|
|
curSum.setElectValue("0"); |
|
|
|
|
curSum.setElectWater("0"); |
|
|
|
|
} else { |
|
|
|
|
curSum.setFillWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getFillWater())).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())); |
|
|
|
|
} |
|
|
|
|
EnergySumEntity result = null; |
|
|
|
|
try { |
|
|
|
|
EnergySumEntity curSum = new EnergySumEntity(); |
|
|
|
|
if (curList.isEmpty()) { |
|
|
|
|
curSum.setWaterValue("0"); |
|
|
|
|
curSum.setElectValue("0"); |
|
|
|
|
curSum.setElectWater("0"); |
|
|
|
|
} else { |
|
|
|
|
curSum.setFillWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getFillWater())).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
|
|
|
|
|
EnergySumEntity lastSum = new EnergySumEntity(); |
|
|
|
|
if (lastList.isEmpty()) { |
|
|
|
|
lastSum.setFillWater("0"); |
|
|
|
|
lastSum.setWaterValue("0"); |
|
|
|
|
lastSum.setElectValue("0"); |
|
|
|
|
lastSum.setElectWater("0"); |
|
|
|
|
} else { |
|
|
|
|
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.setElectValue(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum())); |
|
|
|
|
lastSum.setElectWater(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum())); |
|
|
|
|
} |
|
|
|
|
// lastList每一个参数求和,得出 EnergySumEntity
|
|
|
|
|
EnergySumEntity lastSum = new EnergySumEntity(); |
|
|
|
|
if (lastList.isEmpty()) { |
|
|
|
|
lastSum.setFillWater("0"); |
|
|
|
|
lastSum.setWaterValue("0"); |
|
|
|
|
lastSum.setElectValue("0"); |
|
|
|
|
lastSum.setElectWater("0"); |
|
|
|
|
} else { |
|
|
|
|
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.setElectValue(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum())); |
|
|
|
|
lastSum.setElectWater(String.valueOf(lastList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 昨日的EnergySumEntity和今日的EnergySumEntity,对比计算出补水昨日比、用水与昨日比、用电与昨日比、单耗与昨日比
|
|
|
|
|
result = new EnergySumEntity(); |
|
|
|
|
if (curList.isEmpty()) { |
|
|
|
|
result.setWaterValue("0"); |
|
|
|
|
result.setElectValue("0"); |
|
|
|
|
result.setElectWater("0"); |
|
|
|
|
} else { |
|
|
|
|
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.setElectValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum())); |
|
|
|
|
result.setElectWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 昨日的EnergySumEntity和今日的EnergySumEntity,对比计算出补水昨日比、用水与昨日比、用电与昨日比、单耗与昨日比
|
|
|
|
|
EnergySumEntity result = new EnergySumEntity(); |
|
|
|
|
if (curList.isEmpty()) { |
|
|
|
|
result.setWaterValue("0"); |
|
|
|
|
result.setElectValue("0"); |
|
|
|
|
result.setElectWater("0"); |
|
|
|
|
} else { |
|
|
|
|
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.setElectValue(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectValue())).sum())); |
|
|
|
|
result.setElectWater(String.valueOf(curList.stream().mapToDouble(e -> parseDouble(e.getElectWater())).sum())); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 计算与昨日的比较百分比
|
|
|
|
|
result.setFillWaterP(calculateRatio(curSum.getFillWater(), lastSum.getFillWater())); |
|
|
|
|
result.setWaterP(calculateRatio(curSum.getWaterValue(), lastSum.getWaterValue())); |
|
|
|
|
result.setElectP(calculateRatio(curSum.getElectValue(), lastSum.getElectValue())); |
|
|
|
|
|
|
|
|
|
// 计算与昨日的比较百分比
|
|
|
|
|
result.setFillWaterP(calculateRatio(curSum.getFillWater(), lastSum.getFillWater())); |
|
|
|
|
result.setWaterP(calculateRatio(curSum.getWaterValue(), lastSum.getWaterValue())); |
|
|
|
|
result.setElectP(calculateRatio(curSum.getElectValue(), lastSum.getElectValue())); |
|
|
|
|
// 计算单耗比较
|
|
|
|
|
// 计算单耗比较
|
|
|
|
|
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)); |
|
|
|
|
|
|
|
|
|
// 计算单耗比较
|
|
|
|
|
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"; |
|
|
|
|
result.setElectWaterP(calculateRatio(curPerElect, lastPerElect)); |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
log.error("计算百分比异常", e); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return result; |
|
|
|
|
} else if (level == 0) { |
|
|
|
|
@ -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); |
|
|
|
|
|