Browse Source

总余额 2025年2月25日17:47:25

qingyuan_dev_new
jiangc 11 months ago
parent
commit
5db5f921e3
  1. 7
      modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonAssetDTO.java
  2. 4
      modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonQuotaInfoDTO.java
  3. 4
      modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCcerInfoDTO.java
  4. 4
      modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyGreenCertificateInfoDTO.java
  5. 56
      modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCarbonAssetServiceImpl.java

7
modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonAssetDTO.java

@ -37,4 +37,11 @@ public class QyCarbonAssetDTO implements Serializable {
this.total = total;
this.state = state;
}
public QyCarbonAssetDTO(Long issueDate, BigDecimal total, String state, BigDecimal balance) {
this.issueDate = issueDate;
this.total = total;
this.state = state;
this.balance = balance;
}
}

4
modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonQuotaInfoDTO.java

@ -59,5 +59,9 @@ public class QyCarbonQuotaInfoDTO implements Serializable {
private BigDecimal price;
@Schema(description = "所属标签")
private String tag="碳配额";
public String getTag() {
// 确保tag永远有默认值如果为null或 ""则返回 "碳配额"
return tag == null || tag.isEmpty() ? "碳配额" : tag;
}
}

4
modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCcerInfoDTO.java

@ -56,4 +56,8 @@ public class QyCcerInfoDTO implements Serializable {
private Long deptId;
@Schema(description = "所属标签")
private String tag="CCER";
public String getTag() {
// 确保tag永远有默认值如果为null或 ""则返回 "CCER"
return tag == null || tag.isEmpty() ? "CCER" : tag;
}
}

4
modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyGreenCertificateInfoDTO.java

@ -55,5 +55,9 @@ public class QyGreenCertificateInfoDTO implements Serializable {
private BigDecimal price;
@Schema(description = "所属标签")
private String tag="绿证";
public String getTag() {
// 确保tag永远有默认值如果为null或 ""则返回 "绿证"
return tag == null || tag.isEmpty() ? "绿证" : tag;
}
}

56
modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCarbonAssetServiceImpl.java

@ -212,6 +212,58 @@ public class QyCarbonAssetServiceImpl implements QyCarbonAssetService {
resList.addAll(carbonList);
resList.addAll(ccerInfoList);
resList.addAll(greenList);
// 计算每个账户的总余额
BigDecimal totalCarbonBalance = BigDecimal.ZERO;
BigDecimal totalCcerBalance = BigDecimal.ZERO;
BigDecimal totalGreenBalance = BigDecimal.ZERO;
// 计算碳配额的余额
BigDecimal carbonTotal = carbonList.stream()
.filter(s -> "2".equals(s.getState()) || "3".equals(s.getState())) // 状态为 2 3
.map(QyCarbonAssetDTO::getTotal)
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal carbonSell = carbonList.stream()
.filter(s -> "4".equals(s.getState()) || "5".equals(s.getState())) // 状态为 4 5
.map(QyCarbonAssetDTO::getTotal)
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal carbonBalance = carbonTotal.subtract(carbonSell);
totalCarbonBalance = totalCarbonBalance.add(carbonBalance);
// 计算CCER的余额
BigDecimal ccerTotal = ccerInfoList.stream()
.filter(s -> "2".equals(s.getState()) || "3".equals(s.getState())) // 状态为 2 3
.map(QyCarbonAssetDTO::getTotal)
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal ccerSell = ccerInfoList.stream()
.filter(s -> "4".equals(s.getState()) || "5".equals(s.getState())) // 状态为 4 5
.map(QyCarbonAssetDTO::getTotal)
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal ccerBalance = ccerTotal.subtract(ccerSell);
totalCcerBalance = totalCcerBalance.add(ccerBalance);
// 计算绿证的余额
BigDecimal greenTotal = greenList.stream()
.filter(s -> "2".equals(s.getState()) || "3".equals(s.getState())) // 状态为 2 3
.map(QyCarbonAssetDTO::getTotal)
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal greenSell = greenList.stream()
.filter(s -> "4".equals(s.getState()) || "5".equals(s.getState())) // 状态为 4 5
.map(QyCarbonAssetDTO::getTotal)
.reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal greenBalance = greenTotal.subtract(greenSell);
totalGreenBalance = totalGreenBalance.add(greenBalance);
// 计算所有账户的总余额
BigDecimal totalBalance = totalCarbonBalance.add(totalCcerBalance).add(totalGreenBalance);
System.out.println("Total Balance : " + totalBalance);
//不超过6个月的查询每天的超过的查询每个月的
if(!sixMonth){
Map<String, Map<Long, BigDecimal>> grouped = resList.stream()
@ -225,7 +277,7 @@ public class QyCarbonAssetServiceImpl implements QyCarbonAssetService {
resList.clear();
grouped.forEach((state, dateMap) -> {
dateMap.forEach((date, total) -> {
resList.add(new QyCarbonAssetDTO(date, total,state));
resList.add(new QyCarbonAssetDTO(date, total,state,totalBalance));
});
});
}else {
@ -248,7 +300,7 @@ public class QyCarbonAssetServiceImpl implements QyCarbonAssetService {
try {
Date dateObj = sdf.parse(date);
long issueDate = dateObj.getTime();
resList.add(new QyCarbonAssetDTO(issueDate, total,state));
resList.add(new QyCarbonAssetDTO(issueDate, total,state,totalBalance));
} catch (Exception e) {
log.error("日期转换错误",e);
}

Loading…
Cancel
Save