|
|
|
@ -8,10 +8,15 @@ import com.thing.qingyuan.carbon.entity.QyCcerInfoEntity; |
|
|
|
import com.thing.qingyuan.carbon.entity.QyGreenCertificateInfoEntity; |
|
|
|
import com.thing.qingyuan.carbon.mapper.QyCarbonAssetMapper; |
|
|
|
import com.thing.qingyuan.carbon.service.QyCarbonAssetService; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.web.bind.annotation.RequestMapping; |
|
|
|
|
|
|
|
import javax.annotation.Resource; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.math.RoundingMode; |
|
|
|
import java.time.LocalDate; |
|
|
|
import java.time.format.DateTimeFormatter; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
@ -22,6 +27,7 @@ import static com.thing.qingyuan.carbon.entity.table.QyGreenCertificateInfoEntit |
|
|
|
|
|
|
|
@Service |
|
|
|
public class QyCarbonAssetServiceImpl extends BaseServiceImpl<QyCarbonAssetMapper, QyCarbonAssetEntity> implements QyCarbonAssetService { |
|
|
|
|
|
|
|
@Override |
|
|
|
public QueryWrapper getWrapper(Map<String, Object> params) { |
|
|
|
return null; |
|
|
|
@ -139,4 +145,221 @@ public class QyCarbonAssetServiceImpl extends BaseServiceImpl<QyCarbonAssetMappe |
|
|
|
temMap.put("greenPercent",new BigDecimal(sum3).divide(sumTotal,2, RoundingMode.HALF_UP).toString()); |
|
|
|
return temMap; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 获取碳资产对应标签的单价,数量,余额,账户总余额 |
|
|
|
* @return 返回一个Map |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public Map<String, String> calculateAsset() { |
|
|
|
/* |
|
|
|
==================================碳配额数量和金额 ===================================================================== |
|
|
|
*/ |
|
|
|
//查询碳配额量总量 |
|
|
|
QueryWrapper queryWrapper = QueryWrapper.create() |
|
|
|
.select(sum(QY_CARBON_QUOTA_INFO_ENTITY.CARBON_QUOTA).as("total")) |
|
|
|
.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")) |
|
|
|
.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")) |
|
|
|
.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")) |
|
|
|
.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")) |
|
|
|
.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")) |
|
|
|
.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")) |
|
|
|
.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")) |
|
|
|
.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")) |
|
|
|
.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<String, String> 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()); |
|
|
|
|
|
|
|
//碳配额数量(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("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()); |
|
|
|
|
|
|
|
|
|
|
|
return temMap; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 统计买入,发放,核销三种状态共计碳资产量 |
|
|
|
* @return 返回一个map |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public Map<String, String> countCarbonAssetState() { |
|
|
|
/* |
|
|
|
==============================统计买入量============================================================== |
|
|
|
*/ |
|
|
|
//查询碳配额买入碳资产 |
|
|
|
QueryWrapper queryWrapper = QueryWrapper.create() |
|
|
|
.select(sum(QY_CARBON_QUOTA_INFO_ENTITY.CARBON_QUOTA).as("total")) |
|
|
|
.from(QY_CARBON_QUOTA_INFO_ENTITY) |
|
|
|
.eq(QyCarbonQuotaInfoEntity::getAssetState,"1"); |
|
|
|
//numTotal 为碳配额中买入碳资产量 |
|
|
|
String carbonTotal = mapper.selectOneByQueryAs(queryWrapper, String.class); |
|
|
|
|
|
|
|
//查询ccer买入碳资产 |
|
|
|
QueryWrapper queryWrapper1 = QueryWrapper.create() |
|
|
|
.select(sum(QY_CCER_INFO_ENTITY.RECORD_EMISSION).as("total")) |
|
|
|
.from(QY_CCER_INFO_ENTITY) |
|
|
|
.eq(QyCarbonQuotaInfoEntity::getAssetState,"1"); |
|
|
|
//ccerTotal 为ccer中买入碳资产量 |
|
|
|
String ccerTotal = mapper.selectOneByQueryAs(queryWrapper1, String.class); |
|
|
|
|
|
|
|
//查询绿证买入碳资产 |
|
|
|
QueryWrapper queryWrapper2 = QueryWrapper.create() |
|
|
|
.select(sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.GREEN_TOTAL).as("total")) |
|
|
|
.from(QY_GREEN_CERTIFICATE_INFO_ENTITY) |
|
|
|
.eq(QyCarbonQuotaInfoEntity::getAssetState,"1"); |
|
|
|
//greenTotal 为绿证买入碳资产量 |
|
|
|
String greenTotal = mapper.selectOneByQueryAs(queryWrapper2, String.class); |
|
|
|
|
|
|
|
/* |
|
|
|
==============================统计核销量===================================================================== |
|
|
|
*/ |
|
|
|
//查询碳配额核销量 |
|
|
|
QueryWrapper queryWrapper3 = QueryWrapper.create() |
|
|
|
.select(sum(QY_CARBON_QUOTA_INFO_ENTITY.VERIFICATION_VOLUME).as("total")) |
|
|
|
.from(QY_CARBON_QUOTA_INFO_ENTITY) |
|
|
|
.eq(QyCarbonQuotaInfoEntity::getAssetState,"2"); |
|
|
|
//carbonVolume 为碳配额核销量 |
|
|
|
String carbonVolume = mapper.selectOneByQueryAs(queryWrapper3, String.class); |
|
|
|
|
|
|
|
//查询ccer核销量 |
|
|
|
QueryWrapper queryWrapper4 = QueryWrapper.create() |
|
|
|
.select(sum(QY_CCER_INFO_ENTITY.VERIFICATION_VOLUME).as("total")) |
|
|
|
.from(QY_CCER_INFO_ENTITY) |
|
|
|
.eq(QyCarbonQuotaInfoEntity::getAssetState,"2"); |
|
|
|
//ccerVolume 为ccer核销量 |
|
|
|
String ccerVolume = mapper.selectOneByQueryAs(queryWrapper4, String.class); |
|
|
|
|
|
|
|
//查询绿证核销量 |
|
|
|
QueryWrapper queryWrapper5 = QueryWrapper.create() |
|
|
|
.select(sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.VERIFICATION_VOLUME).as("total")) |
|
|
|
.from(QY_GREEN_CERTIFICATE_INFO_ENTITY) |
|
|
|
.eq(QyCarbonQuotaInfoEntity::getAssetState,"2"); |
|
|
|
//greenVolume 为绿证核销量 |
|
|
|
String greenVolume = mapper.selectOneByQueryAs(queryWrapper5, String.class); |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
==============================统计发放量===================================================================== |
|
|
|
*/ |
|
|
|
//查询碳配额卖出量 |
|
|
|
QueryWrapper queryWrapper6 = QueryWrapper.create() |
|
|
|
.select(sum(QY_CARBON_QUOTA_INFO_ENTITY.CARBON_QUOTA).as("total")) |
|
|
|
.from(QY_CARBON_QUOTA_INFO_ENTITY) |
|
|
|
.eq(QyCarbonQuotaInfoEntity::getAssetState,"3"); |
|
|
|
//carbonSell 为碳配额卖出 |
|
|
|
String carbonSell = mapper.selectOneByQueryAs(queryWrapper6, String.class); |
|
|
|
|
|
|
|
//查询ccer卖出量 |
|
|
|
QueryWrapper queryWrapper7 = QueryWrapper.create() |
|
|
|
.select(sum(QY_CCER_INFO_ENTITY.RECORD_EMISSION).as("total")) |
|
|
|
.from(QY_CCER_INFO_ENTITY) |
|
|
|
.eq(QyCarbonQuotaInfoEntity::getAssetState,"3"); |
|
|
|
//ccerSell 为ccer卖出 |
|
|
|
String ccerSell = mapper.selectOneByQueryAs(queryWrapper7, String.class); |
|
|
|
|
|
|
|
//查询绿证卖出量 |
|
|
|
QueryWrapper queryWrapper8 = QueryWrapper.create() |
|
|
|
.select(sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.GREEN_TOTAL).as("total")) |
|
|
|
.from(QY_GREEN_CERTIFICATE_INFO_ENTITY) |
|
|
|
.eq(QyCarbonQuotaInfoEntity::getAssetState,"3"); |
|
|
|
//greenSell 为绿证卖出 |
|
|
|
String greenSell = mapper.selectOneByQueryAs(queryWrapper8, String.class); |
|
|
|
|
|
|
|
//总买入碳资产 |
|
|
|
BigDecimal buyTotal = new BigDecimal(carbonTotal).add(new BigDecimal(ccerTotal)).add(new BigDecimal(greenTotal)).multiply(new BigDecimal("0.5703")); |
|
|
|
//总核销碳资产 |
|
|
|
BigDecimal verTotal = new BigDecimal(carbonVolume).add(new BigDecimal(ccerVolume)).add(new BigDecimal(greenVolume)).multiply(new BigDecimal("0.5703")); |
|
|
|
//总卖出碳资产 |
|
|
|
BigDecimal sellTotal = new BigDecimal(carbonSell).add(new BigDecimal(ccerSell)).add(new BigDecimal(greenSell)).multiply(new BigDecimal("0.5703")); |
|
|
|
//存入结果 |
|
|
|
HashMap<String, String> temMap = new HashMap<>(); |
|
|
|
//返回结果 买入 核销 卖出 |
|
|
|
temMap.put("buy", buyTotal.compareTo(BigDecimal.ZERO) == 0 ? "0" : buyTotal.toString()); |
|
|
|
temMap.put("ver", verTotal.compareTo(BigDecimal.ZERO) == 0 ? "0" : verTotal.toString()); |
|
|
|
temMap.put("sell", sellTotal.compareTo(BigDecimal.ZERO) == 0 ? "0" : sellTotal.toString()); |
|
|
|
return temMap; |
|
|
|
} |
|
|
|
} |