diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/controller/QyCarbonAssetController.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/controller/QyCarbonAssetController.java index 839e712..6bb46df 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/controller/QyCarbonAssetController.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/controller/QyCarbonAssetController.java @@ -1,10 +1,14 @@ package com.thing.qingyuan.carbon.controller; +import com.thing.common.core.constants.Constant; +import com.thing.common.core.web.response.PageData; import com.thing.common.core.web.response.Result; import com.thing.qingyuan.carbon.dto.QyCarbonAssetDTO; import com.thing.qingyuan.carbon.service.QyCarbonAssetService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; @@ -50,12 +54,18 @@ public class QyCarbonAssetController { * 获取碳资产对应标签的单价,数量,余额,账户总余额 * @return 返回一个Map */ - @GetMapping("list") - @Operation(summary = "获取碳资产对应标签的单价,数量,余额,账户总余额") - public Result> calculateAsset(@RequestParam("startTime") String startTime, - @RequestParam("endTime") String endTime) { - Map unitPrice = qyCarbonAssetService.calculateAsset(startTime,endTime); - return new Result>().ok(unitPrice); + @GetMapping("page") + @Parameters({ + @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true) , + @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true) , + @Parameter(name = "state", description = "状态", required = true) , + @Parameter(name = Constant.ORDER_FIELD, description = "排序字段") , + @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)") + }) + @Operation(summary = "分页获取碳资产对应标签的单价,数量,余额,账户总余额") + public Result> calculateAsset(@Parameter(hidden = true) @RequestParam Map params) { + PageData unitPrice = qyCarbonAssetService.calculateAsset(params); + return new Result>().ok(unitPrice); } diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonAssetDTO.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonAssetDTO.java index 69ae0d8..642d041 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonAssetDTO.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonAssetDTO.java @@ -16,8 +16,6 @@ public class QyCarbonAssetDTO implements Serializable { @Schema(description = "交易时间") private Long issueDate; - @Schema(description = "交易性质") - private String nature; @Schema(description = "碳资产标签") private String tag; @Schema(description = "单价") @@ -27,8 +25,8 @@ public class QyCarbonAssetDTO implements Serializable { @Schema(description = "价格") private BigDecimal price; @Schema(description = "账户余额") - private BigDecimal accountBalance; - @Schema(description = "碳资产状态:1.待发 2.已发 3.买入 4.核销 5.卖出 ") + private BigDecimal balance; + @Schema(description = "交易性质(碳资产状态:1.待发 2.已发 3.买入 4.核销 5.卖出) ") private String state; public QyCarbonAssetDTO() { diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonQuotaInfoDTO.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonQuotaInfoDTO.java index 9a691ba..697a610 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonQuotaInfoDTO.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonQuotaInfoDTO.java @@ -57,5 +57,7 @@ public class QyCarbonQuotaInfoDTO implements Serializable { private Long deptId; @Schema(description = "价格") private BigDecimal price; + @Schema(description = "所属标签") + private String tag="碳配额"; } \ No newline at end of file diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCcerInfoDTO.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCcerInfoDTO.java index a2a7bfa..547c60b 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCcerInfoDTO.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCcerInfoDTO.java @@ -54,4 +54,6 @@ public class QyCcerInfoDTO implements Serializable { private Long companyId; @Schema(description = "部门id") private Long deptId; + @Schema(description = "所属标签") + private String tag="CCER"; } \ No newline at end of file diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyGreenCertificateInfoDTO.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyGreenCertificateInfoDTO.java index 4b87d1e..43550a2 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyGreenCertificateInfoDTO.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyGreenCertificateInfoDTO.java @@ -53,6 +53,7 @@ public class QyGreenCertificateInfoDTO implements Serializable { private String company; @Schema(description = "绿证价格") private BigDecimal price; - + @Schema(description = "所属标签") + private String tag="绿证"; } \ No newline at end of file diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyCarbonQuotaInfoEntity.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyCarbonQuotaInfoEntity.java index 00434c7..ee0d89a 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyCarbonQuotaInfoEntity.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyCarbonQuotaInfoEntity.java @@ -70,5 +70,7 @@ public class QyCarbonQuotaInfoEntity extends BaseInfoEntity implements Serializ */ private BigDecimal price; + private String tag; + } \ No newline at end of file diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyCcerInfoEntity.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyCcerInfoEntity.java index 558978c..80014fc 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyCcerInfoEntity.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyCcerInfoEntity.java @@ -69,7 +69,7 @@ public class QyCcerInfoEntity extends BaseInfoEntity implements Serializable { * 价格 */ private BigDecimal price; - + private String tag; } \ No newline at end of file diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyGreenCertificateInfoEntity.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyGreenCertificateInfoEntity.java index c3627e9..0bffe0a 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyGreenCertificateInfoEntity.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyGreenCertificateInfoEntity.java @@ -62,6 +62,7 @@ public class QyGreenCertificateInfoEntity extends BaseInfoEntity implements Seri * 绿证价格 */ private BigDecimal price; + private String tag; } \ No newline at end of file diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/QyCarbonAssetService.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/QyCarbonAssetService.java index 65da71e..62f4b4f 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/QyCarbonAssetService.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/QyCarbonAssetService.java @@ -1,6 +1,7 @@ package com.thing.qingyuan.carbon.service; +import com.thing.common.core.web.response.PageData; import com.thing.qingyuan.carbon.dto.QyCarbonAssetDTO; import java.util.List; @@ -25,6 +26,6 @@ public interface QyCarbonAssetService { * 获取碳资产对应标签的单价,数量,余额,账户总余额 * @return 返回一个Map */ - Map calculateAsset(String startTime, String endTime); + PageData calculateAsset(Map params); } diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCarbonAssetServiceImpl.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCarbonAssetServiceImpl.java index aef4034..c5fb47c 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCarbonAssetServiceImpl.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCarbonAssetServiceImpl.java @@ -1,7 +1,10 @@ package com.thing.qingyuan.carbon.service.impl; +import cn.hutool.core.map.MapUtil; import com.google.common.collect.Lists; import com.mybatisflex.core.query.QueryWrapper; +import com.thing.common.core.utils.PageUtils; +import com.thing.common.core.web.response.PageData; import com.thing.qingyuan.carbon.dto.QyCarbonAssetDTO; import com.thing.qingyuan.carbon.dto.QyCarbonSumQuotaInfoDTO; import com.thing.qingyuan.carbon.entity.QyCarbonQuotaInfoEntity; @@ -284,158 +287,84 @@ public class QyCarbonAssetServiceImpl implements QyCarbonAssetService { * @return 返回一个Map */ @Override - public Map calculateAsset(String startTime, String endTime) { - - /* QueryWrapper queryWrapper = QueryWrapper.create() - .select( - QY_CARBON_QUOTA_INFO_ENTITY.ISSUE_DATE.as("deal_time"), - QY_CARBON_QUOTA_INFO_ENTITY.PRICE - ) - .where("issue_date >= '" + startTime + "' AND issue_date <= '" + endTime + "'") - .from(QY_CARBON_QUOTA_INFO_ENTITY); - List qyCarbonAssetDTOSTPE = mapper.selectListByQueryAs(queryWrapper, QyCarbonAssetDTO.class); - for (QyCarbonAssetDTO qyCarbonAssetDTO : qyCarbonAssetDTOSTPE) { + public PageData calculateAsset(Map params) { + Integer page = MapUtil.getInt(params, "page"); + Integer limit = MapUtil.getInt(params, "limit"); + Long startTime = MapUtil.getLong(params, "startTime"); + Long endTime = MapUtil.getLong(params, "endTime"); + List resList = Lists.newArrayList(); + List carbonList = qyCarbonQuotaInfoService.getMapper().selectListByQueryAs( + QueryWrapper.create().select(QY_CARBON_QUOTA_INFO_ENTITY.TOTAL, + QY_CARBON_QUOTA_INFO_ENTITY.STATE, + QY_CARBON_QUOTA_INFO_ENTITY.ISSUE_DATE, + QY_CARBON_QUOTA_INFO_ENTITY.TAG, + QY_CARBON_QUOTA_INFO_ENTITY.TOTAL, + QY_CARBON_QUOTA_INFO_ENTITY.PRICE + ) + .ge(QyCarbonQuotaInfoEntity::getIssueDate, startTime,!Objects.isNull(startTime)) + .lt(QyCarbonQuotaInfoEntity::getIssueDate, endTime,!Objects.isNull(endTime)) + , QyCarbonAssetDTO.class); + if(CollectionUtils.isNotEmpty(carbonList)){ + calBalanceAndUnitPrice(carbonList); } + //查询CCER这段时间的账户总额度 + List ccerInfoList = qyCcerInfoService.getMapper().selectListByQueryAs( + QueryWrapper.create().select( + QY_CCER_INFO_ENTITY.TOTAL, + QY_CCER_INFO_ENTITY.STATE, + QY_CCER_INFO_ENTITY.ISSUE_DATE, + QY_CCER_INFO_ENTITY.TAG, + QY_CCER_INFO_ENTITY.TOTAL, + QY_CCER_INFO_ENTITY.PRICE) + .ge(QyCcerInfoEntity::getIssueDate, startTime,!Objects.isNull(startTime)) + .lt(QyCcerInfoEntity::getIssueDate, endTime,!Objects.isNull(endTime)) + , QyCarbonAssetDTO.class); - List qyCarbonAssetDTOSccer = mapper.selectListByQueryAs(queryWrapper, QyCarbonAssetDTO.class); - - - - List qyCarbonAssetDTOlzr = mapper.selectListByQueryAs(queryWrapper, QyCarbonAssetDTO.class); - - - qyCarbonAssetDTOSTPE.addAll(qyCarbonAssetDTOSccer); - qyCarbonAssetDTOSTPE.addAll(qyCarbonAssetDTOlzr); - - List list = qyCarbonAssetDTOSTPE.stream().sorted(Comparator.comparing(QyCarbonAssetDTO::getDealTime).reversed()).toList(); - - - - - - - *//* - ==================================碳配额数量和金额 ===================================================================== - *//* - //查询碳配额量总量 - QueryWrapper queryWrapper = QueryWrapper.create() - .select(sum(QY_CARBON_QUOTA_INFO_ENTITY.CARBON_QUOTA).as("total")) - .where("issue_date >= '" + startTime + "' AND issue_date <= '" + endTime + "'") - .from(QY_CARBON_QUOTA_INFO_ENTITY); - //numTotal 为碳配额量总量 - String carbonTotal = mapper.selectOneByQueryAs(queryWrapper, String.class); - //查询碳配额总金额 - QueryWrapper queryWrapper1 = QueryWrapper.create() - .select(sum(QY_CARBON_QUOTA_INFO_ENTITY.PRICE).as("total")) - .where("issue_date >= '" + startTime + "' AND issue_date <= '" + endTime + "'") - .from(QY_CARBON_QUOTA_INFO_ENTITY); - // sum 为碳配额总金额 - String carbonPrice = mapper.selectOneByQueryAs(queryWrapper1, String.class); - *//* - ==================================CCER数量和金额==================================================================== - *//* - //查询ccer总量 - QueryWrapper queryWrapper2 = QueryWrapper.create() - .select(sum(QY_CCER_INFO_ENTITY.RECORD_EMISSION).as("total")) - .where("emission_time >= '" + startTime + "' AND emission_time <= '" + endTime + "'") - .from(QY_CCER_INFO_ENTITY); - //ccerNum 为ccer总量 - String ccerTotal= mapper.selectOneByQueryAs(queryWrapper2, String.class); - //查询ccer总金额 - QueryWrapper queryWrapper3 = QueryWrapper.create() - .select(sum(QY_CCER_INFO_ENTITY.PRICE).as("total")) - .where("emission_time >= '" + startTime + "' AND emission_time <= '" + endTime + "'") - .from(QY_CCER_INFO_ENTITY); - //sum1 为ccer总金额 - String ccerPrice= mapper.selectOneByQueryAs(queryWrapper3, String.class); - - *//* - ====================================绿证数量和金额===================================================================== - *//* - //查询绿证总量 - QueryWrapper queryWrapper4 = QueryWrapper.create() - .select(sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.GREEN_TOTAL).as("total")) - .where("date_issue >= '" + startTime + "' AND date_issue <= '" + endTime + "'") - .from(QY_GREEN_CERTIFICATE_INFO_ENTITY); - //greenTotal 为绿证总量 - String greenTotal = mapper.selectOneByQueryAs(queryWrapper4, String.class); - //查询绿证总金额 - QueryWrapper queryWrapper5 = QueryWrapper.create() - .select(sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.PRICE).as("total")) - .where("date_issue >= '" + startTime + "' AND date_issue <= '" + endTime + "'") - .from(QY_GREEN_CERTIFICATE_INFO_ENTITY); - // sum2 为绿证总金额 - String greenPrice = mapper.selectOneByQueryAs(queryWrapper5, String.class); - - *//* - ====================================核销量================================================================= - *//* - //查询碳配额核销量 - QueryWrapper queryWrapper6 = QueryWrapper.create() - .select(sum(QY_CARBON_QUOTA_INFO_ENTITY.VERIFICATION_VOLUME).as("total")) - .where("verification_date >= '" + startTime + "' AND verification_date <= '" + endTime + "'") - .eq(QyCarbonQuotaInfoEntity::getAssetState,"2") - .from(QY_CARBON_QUOTA_INFO_ENTITY); - //carbonVer 为碳配额核销量 - String carbonVer = mapper.selectOneByQueryAs(queryWrapper6, String.class); - //查询ccer核销量 - QueryWrapper queryWrapper7 = QueryWrapper.create() - .select(sum(QY_CCER_INFO_ENTITY.VERIFICATION_VOLUME).as("total")) - .eq(QyCcerInfoEntity::getAssetState,"2") - .where("verification_date >= '" + startTime + "' AND verification_date <= '" + endTime + "'") - .from(QY_CCER_INFO_ENTITY); - //ccerVer 为ccer核销量 - String ccerVer = mapper.selectOneByQueryAs(queryWrapper7, String.class); - //查询绿证核销量 - QueryWrapper queryWrapper8 = QueryWrapper.create() - .select(sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.VERIFICATION_VOLUME).as("total")) - .eq(QyGreenCertificateInfoEntity::getAssetState,"2") - .where("verification_date >= '" + startTime + "' AND verification_date <= '" + endTime + "'") - .from(QY_GREEN_CERTIFICATE_INFO_ENTITY); - //greenVer 为绿证核销量 - String greenVer = mapper.selectOneByQueryAs(queryWrapper8, String.class);*/ - - /* - ======================================统计账户总余额======================================================== - */ - //统计碳配额总余额 - /* BigDecimal carbonAccount = new BigDecimal(carbonTotal).subtract(new BigDecimal(carbonVer)); - //统计ccer总余额 - BigDecimal ccerAccount = new BigDecimal(ccerTotal).subtract(new BigDecimal(ccerVer)); - //统计绿证总余额 - BigDecimal greenAccount = (new BigDecimal(greenTotal).subtract(new BigDecimal(greenVer))).multiply(new BigDecimal("0.5703")); - - //存储最终结果 - HashMap temMap = new HashMap<>(); - //计算碳配额单价(元/tCO2) - temMap.put("carbonUnitPrice",new BigDecimal(carbonTotal).divide(new BigDecimal(carbonPrice),2, RoundingMode.HALF_UP).toString()); - //计算ccer单价 - temMap.put("ccerUnitPrice",new BigDecimal(ccerTotal).divide(new BigDecimal(ccerPrice),2, RoundingMode.HALF_UP).toString()); - //计算绿证单价 - temMap.put("greenUnitPrice",new BigDecimal(greenTotal).multiply(new BigDecimal("0.5703")).divide(new BigDecimal(greenPrice),2, RoundingMode.HALF_UP).toString()); + if(CollectionUtils.isNotEmpty(ccerInfoList)){ + calBalanceAndUnitPrice(ccerInfoList); + } - //碳配额数量(tCO2) - temMap.put("carbonNum", StringUtils.isBlank(carbonTotal) ? "0" : carbonTotal); - //ccer数量(tCO2) - temMap.put("ccerNum", StringUtils.isBlank(ccerTotal) ? "0" : ccerTotal); - //绿证数量(tCO2) - temMap.put("greenNum", StringUtils.isBlank(greenTotal) ? "0" : greenTotal); - //总数量 - temMap.put("totalNum",new BigDecimal(carbonTotal).add(new BigDecimal(ccerTotal)).add(new BigDecimal(greenTotal)).toString()); - //碳配额金额,总余额 - temMap.put("carbonPrice", StringUtils.isBlank(carbonPrice) ? "0" : carbonPrice); - temMap.put("carbonRemain",carbonAccount.toString()); - //ccer金额,总余额 - temMap.put("ccerPrice", StringUtils.isBlank(ccerPrice) ? "0" : ccerPrice); - temMap.put("ccerRemain",ccerAccount.toString()); - //绿证金额,总余额 - temMap.put("greenPrice", StringUtils.isBlank(greenPrice) ? "0" : greenPrice); - temMap.put("greenRemain",greenAccount.toString());*/ + //查询绿证这段时间的账户总额度 + List greenList = qyGreenCertificateInfoService.getMapper().selectListByQueryAs( + QueryWrapper.create().select( + QY_GREEN_CERTIFICATE_INFO_ENTITY.TOTAL, + QY_GREEN_CERTIFICATE_INFO_ENTITY.STATE, + QY_GREEN_CERTIFICATE_INFO_ENTITY.ISSUE_DATE, + QY_GREEN_CERTIFICATE_INFO_ENTITY.TAG, + QY_GREEN_CERTIFICATE_INFO_ENTITY.TOTAL, + QY_GREEN_CERTIFICATE_INFO_ENTITY.PRICE) + .ge(QyGreenCertificateInfoEntity::getIssueDate, startTime,!Objects.isNull(startTime)) + .lt(QyGreenCertificateInfoEntity::getIssueDate, endTime,!Objects.isNull(endTime)) + , QyCarbonAssetDTO.class); + if(CollectionUtils.isNotEmpty(greenList)){ + calBalanceAndUnitPrice(greenList); + } + resList.addAll(carbonList); + resList.addAll(ccerInfoList); + resList.addAll(greenList); + List list = resList.stream().sorted(Comparator.comparing(QyCarbonAssetDTO::getIssueDate).reversed()).toList(); + List qyCarbonAssetDTOS = PageUtils.startPage(list, page, limit); + return new PageData<>(qyCarbonAssetDTOS, CollectionUtils.size(list)); + } - return null; + private static void calBalanceAndUnitPrice(List carbonList) { + //总数 + BigDecimal sum = carbonList.stream().filter(s -> !"1".equals(s.getState())) + .map(QyCarbonAssetDTO::getTotal) + .reduce(BigDecimal.ZERO, BigDecimal::add); + //核销和卖出 + BigDecimal sellNum = carbonList.stream().filter(s -> "4".equals(s.getState()) || "5".equals(s.getState())) + .map(QyCarbonAssetDTO::getTotal) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + BigDecimal balance = sum.subtract(sellNum); + for (QyCarbonAssetDTO qyCarbonAssetDTO : carbonList) { + qyCarbonAssetDTO.setBalance(balance); + qyCarbonAssetDTO.setUnitPrice(qyCarbonAssetDTO.getTotal().divide(qyCarbonAssetDTO.getPrice(), 2, RoundingMode.HALF_UP)); + } } } diff --git a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCarbonQuotaInfoServiceImpl.java b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCarbonQuotaInfoServiceImpl.java index f0a9b33..facaea9 100644 --- a/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCarbonQuotaInfoServiceImpl.java +++ b/modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCarbonQuotaInfoServiceImpl.java @@ -9,6 +9,7 @@ import com.thing.qingyuan.carbon.entity.QyCarbonQuotaInfoEntity; import com.thing.qingyuan.carbon.mapper.QyCarbonQuotaInfoMapper; import com.thing.qingyuan.carbon.service.QyCarbonQuotaInfoService; import com.thing.qingyuan.carbon.util.Constant; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -72,14 +73,23 @@ public class QyCarbonQuotaInfoServiceImpl extends BaseServiceImpl tempMap = new HashMap<>(); //待发放碳配额 - tempMap.put("pendingPercent", new BigDecimal(sum1).divide(new BigDecimal(sum), 2, RoundingMode.HALF_UP).toString()); + tempMap.put("pendingPercent", new BigDecimal(sum1).divide(new BigDecimal(sum), 2, RoundingMode.HALF_UP).toPlainString()); //已发放碳配额 - tempMap.put("issuedPercent", new BigDecimal(sum2).divide(new BigDecimal(sum), 2, RoundingMode.HALF_UP).toString()); + tempMap.put("issuedPercent", new BigDecimal(sum2).divide(new BigDecimal(sum), 2, RoundingMode.HALF_UP).toPlainString()); tempMap.put("pending",sum1); tempMap.put("issued",sum2); tempMap.put("total",sum); + tempMap.put("balance",new BigDecimal(sum).subtract(new BigDecimal(StringUtils.isBlank(sumBalance)? "0" : sumBalance)).toPlainString()); return tempMap; } /**