20 changed files with 558 additions and 56 deletions
-
68modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/controller/QyCarbonAssetController.java
-
10modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/controller/QyCarbonQuotaInfoController.java
-
10modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/controller/QyCcerInfoController.java
-
51modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/controller/QyGreenCertificateInfoController.java
-
19modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonAssetDTO.java
-
4modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCarbonQuotaInfoDTO.java
-
2modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyCcerSumInfoDTO.java
-
8modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyGreenCertificateInfoDTO.java
-
31modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/dto/QyGreenSumInfoDTO.java
-
24modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyCarbonAssetEntity.java
-
4modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyCarbonQuotaInfoEntity.java
-
12modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/entity/QyGreenCertificateInfoEntity.java
-
9modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/mapper/QyCarbonAssetMapper.java
-
23modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/QyCarbonAssetService.java
-
7modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/QyCarbonQuotaInfoService.java
-
22modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/QyGreenCertificateInfoService.java
-
142modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCarbonAssetServiceImpl.java
-
10modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCarbonQuotaInfoServiceImpl.java
-
10modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyCcerInfoServiceImpl.java
-
148modules/qingyuan/src/main/java/com/thing/qingyuan/carbon/service/impl/QyGreenCertificateInfoServiceImpl.java
@ -0,0 +1,68 @@ |
|||
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.*; |
|||
|
|||
import java.util.Map; |
|||
|
|||
@RestController |
|||
@RequestMapping("v2/carbon/asset") |
|||
@Tag(name = "碳资产") |
|||
@RequiredArgsConstructor |
|||
public class QyCarbonAssetController { |
|||
|
|||
private final QyCarbonAssetService qyCarbonAssetService; |
|||
|
|||
@GetMapping("page") |
|||
@Operation(summary="分页") |
|||
@Parameters({ |
|||
@Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true) , |
|||
@Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true) , |
|||
@Parameter(name = Constant.ORDER_FIELD, description = "排序字段") , |
|||
@Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)") |
|||
}) |
|||
public Result<PageData<QyCarbonAssetDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params){ |
|||
PageData<QyCarbonAssetDTO> pageData = qyCarbonAssetService.getPageData(params, QyCarbonAssetDTO.class); |
|||
return new Result<PageData<QyCarbonAssetDTO>>().ok(pageData); |
|||
} |
|||
|
|||
@GetMapping("{id}") |
|||
@Operation(summary="信息") |
|||
public Result<QyCarbonAssetDTO> get(@PathVariable("id") Long id){ |
|||
QyCarbonAssetDTO data = qyCarbonAssetService.getByIdAs(id, QyCarbonAssetDTO.class); |
|||
return new Result<QyCarbonAssetDTO>().ok(data); |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 计算当前碳资产,包括碳配额,CCER,绿证 |
|||
* @return 返回一个Map |
|||
*/ |
|||
@GetMapping("/current") |
|||
@Operation(summary = "统计当前碳资产占比") |
|||
public Result<Map<String, String>> getCarbonAssetPercentages() { |
|||
Map<String, String> resultMap = qyCarbonAssetService.countCarbonAsset(); |
|||
return new Result<Map<String, String>>().ok(resultMap); |
|||
} |
|||
|
|||
/** |
|||
* 获取累计碳资产的各项占比 |
|||
* @return 返回一个包含碳配额、CCER和绿证占比的Map |
|||
*/ |
|||
@GetMapping("/accumulate") |
|||
@Operation(summary = "统计累计碳资产占比") |
|||
public Result<Map<String, String>> getTotalCarbonAssetPercentages() { |
|||
Map<String, String> countResult = qyCarbonAssetService.countTotalCarbonAsset(); |
|||
return new Result<Map<String, String>>().ok(countResult); |
|||
} |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
package com.thing.qingyuan.carbon.dto; |
|||
|
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
@Data |
|||
@Schema(description = "碳资产") |
|||
public class QyCarbonAssetDTO implements Serializable { |
|||
|
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
@Schema(description = "主键") |
|||
private Long id; |
|||
|
|||
} |
|||
@ -0,0 +1,31 @@ |
|||
package com.thing.qingyuan.carbon.dto; |
|||
|
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
@Data |
|||
@Schema(description = "绿证总成交量和成交金额统计信息") |
|||
public class QyGreenSumInfoDTO implements Serializable { |
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
@Schema(description = "统计") |
|||
private String total; |
|||
@Schema(description = "状态") |
|||
private String state; |
|||
@Schema(description = "绿证能源总量") |
|||
private Double greenTotal; |
|||
@Schema(description = "绿证价格") |
|||
private Double price; |
|||
@Schema(description = "待发放绿证") |
|||
private Double pending; |
|||
@Schema(description = "已申请绿证") |
|||
private Double applied; |
|||
@Schema(description = "累计绿证") |
|||
private Double total1; |
|||
@Schema(description = "区域") |
|||
private String region; |
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
package com.thing.qingyuan.carbon.entity; |
|||
|
|||
import com.mybatisflex.annotation.Id; |
|||
import com.mybatisflex.annotation.KeyType; |
|||
import com.mybatisflex.annotation.Table; |
|||
import com.mybatisflex.core.keygen.KeyGenerators; |
|||
import lombok.Data; |
|||
import lombok.EqualsAndHashCode; |
|||
import lombok.experimental.Accessors; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
@Data |
|||
@Accessors(chain = true) |
|||
@EqualsAndHashCode(callSuper=false) |
|||
@Table("qy_carbon_asset") |
|||
public class QyCarbonAssetEntity implements Serializable { |
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
@Id(keyType = KeyType.Generator,value = KeyGenerators.snowFlakeId) |
|||
private Long id; |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
package com.thing.qingyuan.carbon.mapper; |
|||
|
|||
import com.thing.common.orm.mapper.PowerBaseMapper; |
|||
import com.thing.qingyuan.carbon.entity.QyCarbonAssetEntity; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
@Mapper |
|||
public interface QyCarbonAssetMapper extends PowerBaseMapper<QyCarbonAssetEntity> { |
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
package com.thing.qingyuan.carbon.service; |
|||
|
|||
|
|||
import com.thing.common.orm.service.IBaseService; |
|||
import com.thing.qingyuan.carbon.entity.QyCarbonAssetEntity; |
|||
|
|||
import java.util.Map; |
|||
|
|||
public interface QyCarbonAssetService extends IBaseService<QyCarbonAssetEntity>{ |
|||
|
|||
|
|||
/** |
|||
* 计算当前碳资产,包括碳配额,CCER,绿证 |
|||
* @return 返回一个Map |
|||
*/ |
|||
Map<String,String> countCarbonAsset(); |
|||
|
|||
/** |
|||
* 计算累计碳资产,包括碳配额、CCER和绿证的占比 |
|||
* @return 返回一个包含碳配额、CCER和绿证占比的Map |
|||
*/ |
|||
Map<String,String> countTotalCarbonAsset(); |
|||
} |
|||
@ -1,7 +1,29 @@ |
|||
package com.thing.qingyuan.carbon.service; |
|||
|
|||
import com.thing.common.orm.service.IBaseService; |
|||
import com.thing.qingyuan.carbon.dto.QyCcerSumInfoDTO; |
|||
import com.thing.qingyuan.carbon.dto.QyGreenSumInfoDTO; |
|||
import com.thing.qingyuan.carbon.entity.QyGreenCertificateInfoEntity; |
|||
|
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
public interface QyGreenCertificateInfoService extends IBaseService<QyGreenCertificateInfoEntity> { |
|||
/** |
|||
* 根据区域与小镇统计绿证,并计算每个小镇在所属区域内的绿证占比 |
|||
* @return 返回一个Map,包含每个区域下每个小镇的绿证占比 |
|||
*/ |
|||
List<Map<String, String>> getRegionGreenCertificatePercentage(); |
|||
|
|||
/** |
|||
* 获取今日的总成交量和今日总成交金额 |
|||
* @return 今日的总成交量和今日总成交金额 |
|||
*/ |
|||
QyGreenSumInfoDTO getTodayTotalTransactionVolumeAndPriceByTime(); |
|||
|
|||
/** |
|||
* 获取根据状态统计的绿证数量 |
|||
* @return 各状态的绿证数量 |
|||
*/ |
|||
Map<String, String> countGreenByState(); |
|||
} |
|||
@ -0,0 +1,142 @@ |
|||
package com.thing.qingyuan.carbon.service.impl; |
|||
|
|||
import com.mybatisflex.core.query.QueryWrapper; |
|||
import com.thing.common.orm.service.impl.BaseServiceImpl; |
|||
import com.thing.qingyuan.carbon.entity.QyCarbonAssetEntity; |
|||
import com.thing.qingyuan.carbon.entity.QyCarbonQuotaInfoEntity; |
|||
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.springframework.stereotype.Service; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.math.RoundingMode; |
|||
import java.util.HashMap; |
|||
import java.util.Map; |
|||
|
|||
import static com.mybatisflex.core.query.QueryMethods.sum; |
|||
import static com.thing.qingyuan.carbon.entity.table.QyCarbonQuotaInfoEntityTableDef.QY_CARBON_QUOTA_INFO_ENTITY; |
|||
import static com.thing.qingyuan.carbon.entity.table.QyCcerInfoEntityTableDef.QY_CCER_INFO_ENTITY; |
|||
import static com.thing.qingyuan.carbon.entity.table.QyGreenCertificateInfoEntityTableDef.QY_GREEN_CERTIFICATE_INFO_ENTITY; |
|||
|
|||
@Service |
|||
public class QyCarbonAssetServiceImpl extends BaseServiceImpl<QyCarbonAssetMapper, QyCarbonAssetEntity> implements QyCarbonAssetService { |
|||
@Override |
|||
public QueryWrapper getWrapper(Map<String, Object> params) { |
|||
return null; |
|||
} |
|||
|
|||
/** |
|||
* 计算当前碳资产,包括碳配额,CCER,绿证 |
|||
* @return 返回一个Map |
|||
*/ |
|||
@Override |
|||
public Map<String, String> countCarbonAsset() { |
|||
//查询待发放碳配额 |
|||
QueryWrapper queryWrapper = QueryWrapper.create() |
|||
.select(sum(QY_CARBON_QUOTA_INFO_ENTITY.CARBON_QUOTA).as("total")) |
|||
.from(QY_CARBON_QUOTA_INFO_ENTITY) |
|||
.eq(QyCarbonQuotaInfoEntity::getState,"1"); |
|||
// sum1 为待发放碳配额 |
|||
String sum1 = 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(QyCcerInfoEntity::getState,"1"); |
|||
// sum2 为待申请CCER |
|||
String sum2 = 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(QyGreenCertificateInfoEntity::getState,"1"); |
|||
// sum3 为待发放绿证 |
|||
String sum3 = mapper.selectOneByQueryAs(queryWrapper2, String.class); |
|||
|
|||
//统计当前状态下 碳配额,ccer,绿证总和 |
|||
BigDecimal addTotal = new BigDecimal(sum1).add(new BigDecimal(sum2)).add(new BigDecimal(sum3)); |
|||
|
|||
// 查询已发放碳配额 |
|||
QueryWrapper queryWrapper3 = QueryWrapper.create() |
|||
.select(sum(QY_CARBON_QUOTA_INFO_ENTITY.CARBON_QUOTA).as("total")) |
|||
.from(QY_CARBON_QUOTA_INFO_ENTITY) |
|||
.eq(QyCarbonQuotaInfoEntity::getState,"2"); |
|||
// sum4 为已发放碳配额 |
|||
String sum4 = mapper.selectOneByQueryAs(queryWrapper3, String.class); |
|||
|
|||
// 查询已申请ccer |
|||
QueryWrapper queryWrapper4 = QueryWrapper.create() |
|||
.select(sum(QY_CCER_INFO_ENTITY.RECORD_EMISSION).as("total")) |
|||
.from(QY_CCER_INFO_ENTITY) |
|||
.eq(QyCcerInfoEntity::getState,"2"); |
|||
// sum5 为已申请ccer |
|||
String sum5 = mapper.selectOneByQueryAs(queryWrapper4, String.class); |
|||
|
|||
// 查询已发放绿证 |
|||
QueryWrapper queryWrapper5 = QueryWrapper.create() |
|||
.select(sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.GREEN_TOTAL).as("total")) |
|||
.from(QY_GREEN_CERTIFICATE_INFO_ENTITY) |
|||
.eq(QyGreenCertificateInfoEntity::getState,"2"); |
|||
// sum6 为已发放绿证 |
|||
String sum6 = mapper.selectOneByQueryAs(queryWrapper5, String.class); |
|||
|
|||
//统计当前状态下,碳配额,ccer,绿证总和 |
|||
BigDecimal addTotal1 = new BigDecimal(sum4).add(new BigDecimal(sum5)).add(new BigDecimal(sum6)); |
|||
|
|||
//返回结果 |
|||
Map<String, String> temMap = new HashMap<>(); |
|||
//1.碳配额占比 |
|||
temMap.put("quotaPercent",new BigDecimal(sum1).divide(addTotal,2, RoundingMode.HALF_UP).toString()); |
|||
temMap.put("quotaPercent1",new BigDecimal(sum4).divide(addTotal1,2, RoundingMode.HALF_UP).toString()); |
|||
//CCER占比 |
|||
temMap.put("ccerPercent",new BigDecimal(sum2).divide(addTotal,2, RoundingMode.HALF_UP).toString()); |
|||
temMap.put("ccerPercent1",new BigDecimal(sum5).divide(addTotal1,2, RoundingMode.HALF_UP).toString()); |
|||
//绿证占比 |
|||
temMap.put("greenPercent",new BigDecimal(sum3).divide(addTotal,2, RoundingMode.HALF_UP).toString()); |
|||
temMap.put("greenPercent1",new BigDecimal(sum6).divide(addTotal1,2, RoundingMode.HALF_UP).toString()); |
|||
return temMap; |
|||
|
|||
} |
|||
|
|||
/** |
|||
* 计算累计碳资产,包括碳配额、CCER和绿证的占比 |
|||
* @return 返回一个包含碳配额、CCER和绿证占比的Map |
|||
*/ |
|||
@Override |
|||
public Map<String, String> countTotalCarbonAsset() { |
|||
QueryWrapper queryWrapper = QueryWrapper.create() |
|||
.select(sum(QY_CARBON_QUOTA_INFO_ENTITY.CARBON_QUOTA).as("total")) |
|||
.from(QY_CARBON_QUOTA_INFO_ENTITY); |
|||
//sum1 当前碳配额 |
|||
String sum1 = mapper.selectOneByQueryAs(queryWrapper, String.class); |
|||
|
|||
QueryWrapper queryWrapper1 = QueryWrapper.create() |
|||
.select(sum(QY_CCER_INFO_ENTITY.RECORD_EMISSION).as("total")) |
|||
.from(QY_CCER_INFO_ENTITY); |
|||
//sum2 当前CCER |
|||
String sum2 = 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); |
|||
//sum3 当前绿证 |
|||
String sum3 = mapper.selectOneByQueryAs(queryWrapper2, String.class); |
|||
|
|||
//资产综合 |
|||
BigDecimal sumTotal = new BigDecimal(sum1).add(new BigDecimal(sum2)).add(new BigDecimal(sum3)); |
|||
|
|||
//存储最终结果 |
|||
Map<String, String> temMap = new HashMap<>(); |
|||
//碳配额占比 |
|||
temMap.put("quotaPercent",new BigDecimal(sum1).divide(sumTotal,2, RoundingMode.HALF_UP).toString()); |
|||
//CCER占比 |
|||
temMap.put("ccerPercent",new BigDecimal(sum2).divide(sumTotal,2, RoundingMode.HALF_UP).toString()); |
|||
//绿证占比 |
|||
temMap.put("greenPercent",new BigDecimal(sum3).divide(sumTotal,2, RoundingMode.HALF_UP).toString()); |
|||
return temMap; |
|||
} |
|||
} |
|||
@ -1,20 +1,164 @@ |
|||
package com.thing.qingyuan.carbon.service.impl; |
|||
|
|||
|
|||
import cn.hutool.core.collection.CollectionUtil; |
|||
import com.google.common.collect.Lists; |
|||
import com.mybatisflex.core.query.QueryWrapper; |
|||
import com.thing.common.orm.service.impl.BaseServiceImpl; |
|||
import com.thing.qingyuan.carbon.dto.QyGreenSumInfoDTO; |
|||
import com.thing.qingyuan.carbon.entity.QyGreenCertificateInfoEntity; |
|||
import com.thing.qingyuan.carbon.mapper.QyGreenCertificateInfoMapper; |
|||
import com.thing.qingyuan.carbon.service.QyGreenCertificateInfoService; |
|||
import org.apache.commons.lang3.StringUtils; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.Map; |
|||
import java.math.BigDecimal; |
|||
import java.math.RoundingMode; |
|||
import java.time.LocalDate; |
|||
import java.time.ZoneId; |
|||
import java.util.*; |
|||
|
|||
import static com.mybatisflex.core.query.QueryMethods.sum; |
|||
import static com.thing.qingyuan.carbon.entity.table.QyGreenCertificateInfoEntityTableDef.QY_GREEN_CERTIFICATE_INFO_ENTITY; |
|||
|
|||
|
|||
@Service |
|||
public class QyGreenCertificateInfoServiceImpl extends BaseServiceImpl<QyGreenCertificateInfoMapper, QyGreenCertificateInfoEntity> implements QyGreenCertificateInfoService { |
|||
@Override |
|||
public QueryWrapper getWrapper(Map<String, Object> params) { |
|||
QueryWrapper qw = new QueryWrapper(); |
|||
// 根据 params 添加条件 |
|||
if (params.containsKey("state")) { |
|||
qw.eq("state", params.get("state")); |
|||
} |
|||
if (params.containsKey("powerType")) { |
|||
qw.eq("powerType", params.get("powerType")); |
|||
} |
|||
if (params.containsKey("region")) { |
|||
qw.eq("region", params.get("region")); |
|||
} |
|||
if (params.containsKey("applicationDate")) { |
|||
qw.ge("applicationDate", params.get("applicationDate")); |
|||
} |
|||
if (params.containsKey("dateIssue")) { |
|||
qw.ge("dateIssue", params.get("dateIssue")); |
|||
} |
|||
|
|||
return qw; |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 获取根据状态统计的绿证数量 |
|||
* @return 各状态的绿证数量 |
|||
*/ |
|||
@Override |
|||
public Map<String, String> countGreenByState() { |
|||
QueryWrapper queryWrapper1 = QueryWrapper.create() |
|||
.select(sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.GREEN_TOTAL).as("total")) |
|||
.from(QY_GREEN_CERTIFICATE_INFO_ENTITY) |
|||
.eq(QyGreenCertificateInfoEntity::getState,"1"); |
|||
//sum1 为待发放绿证 |
|||
String sum1 = 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(QyGreenCertificateInfoEntity::getState,"2"); |
|||
//sum1 为已申请绿证 |
|||
String sum2 = mapper.selectOneByQueryAs(queryWrapper2,String.class); |
|||
|
|||
QueryWrapper queryWrapper3 = QueryWrapper.create() |
|||
.select(sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.GREEN_TOTAL).as("total")) |
|||
.from(QY_GREEN_CERTIFICATE_INFO_ENTITY); |
|||
//sum1 为累计绿证 (sum=sum1+sum2) |
|||
String sum = mapper.selectOneByQueryAs(queryWrapper3,String.class); |
|||
|
|||
Map<String, String> temMap = new HashMap<>(); |
|||
//待发放绿证 |
|||
temMap.put("pending", StringUtils.isBlank(sum1) ? "0" : sum1); |
|||
//已申请绿证 |
|||
temMap.put("applied", StringUtils.isBlank(sum2) ? "0" : sum2); |
|||
//累计绿证 |
|||
temMap.put("total1", StringUtils.isBlank(sum) ? "0" : sum); |
|||
return temMap; |
|||
} |
|||
|
|||
/** |
|||
* 根据区域与小镇统计绿证,并计算每个小镇在所属区域内的绿证占比 |
|||
* @return 返回一个Map,包含每个区域下每个小镇的绿证占比 |
|||
*/ |
|||
@Override |
|||
public List<Map<String, String>> getRegionGreenCertificatePercentage() { |
|||
// 示例区域列表,可根据实际情况查询数据库中的区域列表 |
|||
List<String> regions = Arrays.asList("天玉镇", "河东街道", "富滩镇", "值夏镇", "文陂镇", "富田镇", "东固畲族乡", "新圩镇"); |
|||
// 根据区域查询成绿证总和 |
|||
QueryWrapper queryWrapper = QueryWrapper.create() |
|||
.select(QY_GREEN_CERTIFICATE_INFO_ENTITY.REGION,sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.GREEN_TOTAL).as("total")) |
|||
.from(QY_GREEN_CERTIFICATE_INFO_ENTITY) |
|||
.groupBy(QY_GREEN_CERTIFICATE_INFO_ENTITY.REGION); |
|||
// 查询符合条件的小镇绿证数据 |
|||
List<QyGreenSumInfoDTO> qyGreenSumInfoDTOList = mapper.selectListByQueryAs(queryWrapper, QyGreenSumInfoDTO.class); |
|||
//查询绿证总能源量 |
|||
QueryWrapper queryWrapper6 = QueryWrapper.create() |
|||
.select(sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.GREEN_TOTAL).as("total")) |
|||
.from(QY_GREEN_CERTIFICATE_INFO_ENTITY); |
|||
String sumTotal = mapper.selectOneByQueryAs(queryWrapper6, String.class); |
|||
//存储最终结果 |
|||
List<Map<String, String>> resultList = new ArrayList<>(); |
|||
List<String> tempRegions = Lists.newArrayList(); |
|||
for (QyGreenSumInfoDTO qyGreenSumInfoDTO : qyGreenSumInfoDTOList) { |
|||
Map<String, String> tempMap = new HashMap<>(); |
|||
//占比 |
|||
tempMap.put("percent", new BigDecimal(qyGreenSumInfoDTO.getTotal()).divide(new BigDecimal(sumTotal), 2, RoundingMode.HALF_UP).toString()); |
|||
tempMap.put("region", qyGreenSumInfoDTO.getRegion()); |
|||
resultList.add(tempMap); |
|||
tempRegions.add(qyGreenSumInfoDTO.getRegion()); |
|||
} |
|||
//差集 |
|||
Collection<String> disjunction = CollectionUtil.disjunction(regions, tempRegions); |
|||
for (String s : disjunction) { |
|||
Map<String, String> tempMap = new HashMap<>(); |
|||
tempMap.put("percent", "0"); |
|||
tempMap.put("region", s); |
|||
resultList.add(tempMap); |
|||
} |
|||
|
|||
|
|||
|
|||
return resultList; |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 获取今日的总成交量和今日总成交金额 |
|||
* @return 今日的总成交量和今日总成交金额 |
|||
*/ |
|||
@Override |
|||
public QyGreenSumInfoDTO getTodayTotalTransactionVolumeAndPriceByTime() { |
|||
// 获取今天的日期 |
|||
LocalDate today = LocalDate.now(); |
|||
// 将今天的日期转换为 Date 类型 |
|||
Long startOfDay = today.atStartOfDay(ZoneId.systemDefault()).toInstant().toEpochMilli(); |
|||
Long endOfDay = today.atTime(23, 59, 59, 999999999) |
|||
.atZone(ZoneId.systemDefault()) |
|||
.toInstant() |
|||
.toEpochMilli(); |
|||
// 查询今天的总成交量和总成交金额 |
|||
QueryWrapper queryWrapper = QueryWrapper.create() |
|||
.select(sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.GREEN_TOTAL).as("greenTotal"), |
|||
sum(QY_GREEN_CERTIFICATE_INFO_ENTITY.PRICE).as("price")) |
|||
.ge(QyGreenCertificateInfoEntity::getApplicationDate, startOfDay) |
|||
.le(QyGreenCertificateInfoEntity::getApplicationDate, endOfDay) |
|||
.from(QY_GREEN_CERTIFICATE_INFO_ENTITY); |
|||
|
|||
// 执行查询,返回结果 |
|||
QyGreenSumInfoDTO qyGreenSumInfoDTO = mapper.selectOneByQueryAs(queryWrapper, QyGreenSumInfoDTO.class); |
|||
if (qyGreenSumInfoDTO == null) { |
|||
qyGreenSumInfoDTO = new QyGreenSumInfoDTO(); |
|||
qyGreenSumInfoDTO.setGreenTotal(0.0); |
|||
qyGreenSumInfoDTO.setPrice(0.0); |
|||
} |
|||
return qyGreenSumInfoDTO; |
|||
} |
|||
} |
|||
|
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue