20 changed files with 444 additions and 264 deletions
-
4modules/cbam/src/main/java/com/thing/cbam/baesInfoExcel/entity/CbamProcessMaterialEntity.java
-
11modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonDirectController.java
-
2modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonMaterialController.java
-
83modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamProcessAllocationController.java
-
44modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamCarbonBurnDTO.java
-
6modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamCarbonDirectDTO.java
-
35modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamProcessAllocationDTO.java
-
47modules/cbam/src/main/java/com/thing/cbam/directCarbon/entity/CbamProcessAllocationEntity.java
-
17modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamCarbonBurnMapper.java
-
1modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamCarbonProgressMapper.java
-
16modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamProcessAllocationMapper.java
-
26modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamCarbonBurnService.java
-
7modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamCarbonDirectService.java
-
14modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamProcessAllocationService.java
-
87modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamCarbonBurnServiceImpl.java
-
79modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamCarbonDirectServiceImpl.java
-
28modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamProcessAllocationServiceImpl.java
-
85modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/BurningDischargeUtil.java
-
55modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/MaterialBalanceUtil.java
-
61modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/ProcessDischargeUtil.java
@ -1,44 +0,0 @@ |
|||
package com.thing.cbam.directCarbon.dto; |
|||
|
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
import java.util.List; |
|||
|
|||
/** |
|||
* 直接排放量 |
|||
* |
|||
* @author xc |
|||
* @since 3.0 2024-11-27 |
|||
*/ |
|||
@Data |
|||
@Schema(description = "直接排放量") |
|||
public class CbamCarbonBurnDTO implements Serializable { |
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
private Long id; |
|||
@Schema(description = "名称") |
|||
private String name; |
|||
@Schema(description = "消耗量") |
|||
private String consumeAmount; |
|||
@Schema(description = "消耗量单位") |
|||
private String consumeUnit; |
|||
@Schema(description = "低位发热量") |
|||
private String lowHeatVal; |
|||
@Schema(description = "排放源名称") |
|||
private String emissionName; |
|||
@Schema(description = "排放因子") |
|||
private String emissionFactors; |
|||
@Schema(description = "氧化因子") |
|||
private String oxidationFactor; |
|||
@Schema(description = "生物量含量") |
|||
private String biomassContent; |
|||
@Schema(description = "关联cbam_industry_information的主键id") |
|||
private Long industryId; |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,35 @@ |
|||
package com.thing.cbam.directCarbon.dto; |
|||
|
|||
import io.swagger.v3.oas.annotations.media.Schema; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serial; |
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* 生产过程分配量 |
|||
* |
|||
* @author xc |
|||
* @since 3.0 2024-12-02 |
|||
*/ |
|||
@Data |
|||
@Schema(description = "生产过程分配量") |
|||
public class CbamProcessAllocationDTO implements Serializable { |
|||
@Serial |
|||
private static final long serialVersionUID = 1L; |
|||
|
|||
@Schema(description = "主键") |
|||
private Long id; |
|||
@Schema(description = "排放源名称") |
|||
private String name; |
|||
@Schema(description = "排放源类型:1 和 2") |
|||
private Integer type; |
|||
@Schema(description = "关联cbam_industry_info的主键id") |
|||
private Long industryId; |
|||
@Schema(description = "关联cbam_process_material的id") |
|||
private Long prodId; |
|||
@Schema(description = "生产过程分配量") |
|||
private String processAllocation; |
|||
|
|||
} |
|||
@ -1,17 +0,0 @@ |
|||
package com.thing.cbam.directCarbon.mapper; |
|||
|
|||
import com.thing.cbam.directCarbon.entity.CbamCarbonBurnEntity; |
|||
import com.thing.common.orm.mapper.PowerBaseMapper; |
|||
|
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
/** |
|||
* 直接排放量 |
|||
* |
|||
* @author xc |
|||
* @since 3.0 2024-11-27 |
|||
*/ |
|||
@Mapper |
|||
public interface CbamCarbonBurnMapper extends PowerBaseMapper<CbamCarbonBurnEntity> { |
|||
|
|||
} |
|||
@ -0,0 +1,16 @@ |
|||
package com.thing.cbam.directCarbon.mapper; |
|||
|
|||
import com.thing.cbam.directCarbon.entity.CbamProcessAllocationEntity; |
|||
import com.thing.common.orm.mapper.PowerBaseMapper; |
|||
import org.apache.ibatis.annotations.Mapper; |
|||
|
|||
/** |
|||
* 生产过程分配量 |
|||
* |
|||
* @author xc |
|||
* @since 3.0 2024-12-02 |
|||
*/ |
|||
@Mapper |
|||
public interface CbamProcessAllocationMapper extends PowerBaseMapper<CbamProcessAllocationEntity> { |
|||
|
|||
} |
|||
@ -1,26 +0,0 @@ |
|||
package com.thing.cbam.directCarbon.service; |
|||
|
|||
import com.thing.cbam.directCarbon.dto.CbamCarbonBurnDTO; |
|||
import com.thing.cbam.directCarbon.entity.CbamCarbonBurnEntity; |
|||
import com.thing.common.orm.service.IBaseService; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
|
|||
|
|||
/** |
|||
* 直接排放量 |
|||
* |
|||
* @author xc |
|||
* @since 3.0 2024-11-27 |
|||
*/ |
|||
public interface CbamCarbonBurnService extends IBaseService<CbamCarbonBurnEntity> { |
|||
|
|||
|
|||
void batchSave(List<CbamCarbonBurnDTO> dtoList); |
|||
|
|||
Map<String, BigDecimal> calculate(Long fuelId, BigDecimal consumeAmount,BigDecimal biomassContent); |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,14 @@ |
|||
package com.thing.cbam.directCarbon.service; |
|||
|
|||
import com.thing.cbam.directCarbon.entity.CbamProcessAllocationEntity; |
|||
import com.thing.common.orm.service.IBaseService; |
|||
|
|||
/** |
|||
* 生产过程分配量 |
|||
* |
|||
* @author xc |
|||
* @since 3.0 2024-12-02 |
|||
*/ |
|||
public interface CbamProcessAllocationService extends IBaseService<CbamProcessAllocationEntity> { |
|||
|
|||
} |
|||
@ -1,87 +0,0 @@ |
|||
package com.thing.cbam.directCarbon.service.impl; |
|||
|
|||
import com.mybatisflex.core.query.QueryWrapper; |
|||
import com.thing.cbam.dict.entity.CbamFuelDictEntity; |
|||
import com.thing.cbam.dict.service.CbamFuelDictService; |
|||
import com.thing.cbam.directCarbon.dto.CbamCarbonBurnDTO; |
|||
import com.thing.cbam.directCarbon.entity.CbamCarbonBurnEntity; |
|||
import com.thing.cbam.directCarbon.mapper.CbamCarbonBurnMapper; |
|||
import com.thing.cbam.directCarbon.service.CbamCarbonBurnService; |
|||
import com.thing.common.core.utils.ConvertUtils; |
|||
import com.thing.common.orm.service.impl.BaseServiceImpl; |
|||
|
|||
import lombok.RequiredArgsConstructor; |
|||
import org.springframework.stereotype.Service; |
|||
import org.springframework.transaction.annotation.Transactional; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.math.RoundingMode; |
|||
import java.util.HashMap; |
|||
import java.util.List; |
|||
import java.util.Map; |
|||
import java.util.Objects; |
|||
|
|||
/** |
|||
* 直接排放量 |
|||
* |
|||
* @author xc |
|||
* @since 3.0 2024-11-27 |
|||
*/ |
|||
@Service |
|||
@RequiredArgsConstructor |
|||
public class CbamCarbonBurnServiceImpl extends BaseServiceImpl<CbamCarbonBurnMapper, CbamCarbonBurnEntity> implements CbamCarbonBurnService { |
|||
|
|||
private final CbamFuelDictService cbamFuelDictService; |
|||
|
|||
@Override |
|||
public QueryWrapper getWrapper(Map<String, Object> params){ |
|||
QueryWrapper wrapper = new QueryWrapper(); |
|||
return wrapper; |
|||
} |
|||
|
|||
@Transactional(rollbackFor = Exception.class) |
|||
@Override |
|||
public void batchSave(List<CbamCarbonBurnDTO> dtoList) { |
|||
List<CbamCarbonBurnEntity> cbamCarbonBurnEntities = ConvertUtils.sourceToTarget(dtoList, CbamCarbonBurnEntity.class); |
|||
mapper.insertBatch(cbamCarbonBurnEntities); |
|||
} |
|||
|
|||
@Override |
|||
public Map<String, BigDecimal> calculate(Long fuelId, BigDecimal consumeAmount,BigDecimal biomassContent) { |
|||
Map<String, BigDecimal> resMap = new HashMap<>(); |
|||
//获取燃料系数字典信息 |
|||
CbamFuelDictEntity cbamFuelDict = cbamFuelDictService.getById(fuelId); |
|||
if(Objects.isNull(cbamFuelDict)){ |
|||
throw new RuntimeException("燃料系数字典信息不存在"); |
|||
} |
|||
//公用计算:消耗量*低位发热量 |
|||
String lowHeatAmount = cbamFuelDict.getLowHeatAmount(); |
|||
BigDecimal commonResult = consumeAmount.multiply(new BigDecimal(lowHeatAmount)); |
|||
//1.首先先计算(第四个)----能量含量(生物质燃料),工J =消耗量*低位发热量*生物量含量/100/1000 |
|||
BigDecimal energySwNum = commonResult.multiply(biomassContent) |
|||
.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP) |
|||
.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP); |
|||
resMap.put("energyBiologyNum",energySwNum); |
|||
//2.其次计算第三个:能量含量(化石燃料),TJ =消耗量*低位发热量/1000-能量含量(生物质燃料) |
|||
BigDecimal energyHsNum = commonResult |
|||
.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP) |
|||
.subtract(energySwNum); |
|||
resMap.put("energyFossilNum",energyHsNum); |
|||
//3.生物质燃料排放量 =消耗量*低位发热量*生物量含量*排放因子/100/1000 |
|||
BigDecimal biomassFuelNum = commonResult |
|||
.multiply(commonResult) |
|||
.multiply(new BigDecimal(cbamFuelDict.getEmissionFactor())) |
|||
.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP) |
|||
.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP); |
|||
resMap.put("biomassFuelNum",biomassFuelNum); |
|||
//4.直接碳排放量 =消耗量*低位发热量*氧化因子*排放因子/100/1000-生物质燃料排放量 |
|||
BigDecimal directCarbonNum = commonResult |
|||
.multiply(new BigDecimal(cbamFuelDict.getCarbonOxdRate())) |
|||
.multiply(new BigDecimal(cbamFuelDict.getEmissionFactor())) |
|||
.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP) |
|||
.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP) |
|||
.subtract(biomassFuelNum); |
|||
resMap.put("directCarbonNum",directCarbonNum); |
|||
return resMap; |
|||
} |
|||
} |
|||
@ -0,0 +1,28 @@ |
|||
package com.thing.cbam.directCarbon.service.impl; |
|||
|
|||
import com.mybatisflex.core.query.QueryWrapper; |
|||
import com.thing.cbam.directCarbon.entity.CbamProcessAllocationEntity; |
|||
import com.thing.cbam.directCarbon.mapper.CbamProcessAllocationMapper; |
|||
import com.thing.cbam.directCarbon.service.CbamProcessAllocationService; |
|||
import com.thing.common.orm.service.impl.BaseServiceImpl; |
|||
import org.springframework.stereotype.Service; |
|||
|
|||
import java.util.Map; |
|||
|
|||
/** |
|||
* 生产过程分配量 |
|||
* |
|||
* @author xc |
|||
* @since 3.0 2024-12-02 |
|||
*/ |
|||
@Service |
|||
public class CbamProcessAllocationServiceImpl extends BaseServiceImpl<CbamProcessAllocationMapper, CbamProcessAllocationEntity> implements CbamProcessAllocationService { |
|||
|
|||
@Override |
|||
public QueryWrapper getWrapper(Map<String, Object> params){ |
|||
QueryWrapper wrapper = new QueryWrapper(); |
|||
return wrapper; |
|||
} |
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,85 @@ |
|||
package com.thing.cbam.directCarbon.util; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.math.RoundingMode; |
|||
|
|||
/** |
|||
* 燃烧排放的计算工具类 |
|||
*/ |
|||
public class BurningDischargeUtil { |
|||
|
|||
/** |
|||
* 公用计算:消耗量*低位发热量 |
|||
* @param consumeAmount 消耗量 |
|||
* @param lowHeatAmount 低位发热量 |
|||
* @return 公用计算结果 |
|||
*/ |
|||
public static BigDecimal commonCalculate(String consumeAmount,String lowHeatAmount) { |
|||
return new BigDecimal(consumeAmount).multiply(new BigDecimal(lowHeatAmount)); |
|||
} |
|||
|
|||
/** |
|||
* 能量含量(生物质燃料),工J =消耗量*低位发热量*生物量含量/100/1000 |
|||
* @param consumeAmount 消耗量 |
|||
* @param lowHeatAmount 低位发热量 |
|||
* @param biomassContent 生物量含量 |
|||
* @return 公用计算结果 |
|||
*/ |
|||
public static BigDecimal energyBiologyNumCalculate(String consumeAmount, String lowHeatAmount, String biomassContent) { |
|||
return commonCalculate(consumeAmount,lowHeatAmount) |
|||
.multiply(new BigDecimal(biomassContent)) |
|||
.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP) |
|||
.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP); |
|||
} |
|||
|
|||
/** |
|||
* 能量含量(化石燃料),TJ =消耗量*低位发热量/1000-能量含量(生物质燃料) |
|||
* @param consumeAmount 消耗量 |
|||
* @param lowHeatAmount 低位发热量 |
|||
* @param energyBiologyNum 能量含量(生物质燃料) |
|||
* @return 公用计算结果 |
|||
*/ |
|||
public static BigDecimal energyHsNumCalculate(String consumeAmount,String lowHeatAmount,String energyBiologyNum) { |
|||
return commonCalculate(consumeAmount,lowHeatAmount) |
|||
.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP) |
|||
.subtract(energyBiologyNumCalculate(consumeAmount,lowHeatAmount,energyBiologyNum)); |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 生物质燃料排放量 =消耗量*低位发热量*生物量含量*排放因子/100/1000 |
|||
* @param consumeAmount 消耗量 |
|||
* @param lowHeatAmount 低位发热量 |
|||
* @param biomassContent 生物量含量 |
|||
* @param emissionFactor 排放因子 |
|||
* @return 公用计算结果 |
|||
*/ |
|||
public static BigDecimal biomassFuelNumCalculate(String consumeAmount,String lowHeatAmount,String biomassContent,String emissionFactor) { |
|||
return commonCalculate(consumeAmount,lowHeatAmount) |
|||
.multiply(new BigDecimal(biomassContent)) |
|||
.multiply(new BigDecimal(emissionFactor)) |
|||
.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP) |
|||
.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP); |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 直接碳排放量 =消耗量*低位发热量*氧化因子*排放因子/100/1000-生物质燃料排放量 |
|||
* @param consumeAmount 消耗量 |
|||
* @param lowHeatAmount 低位发热量 |
|||
* @param biomassContent 生物量含量 |
|||
* @param emissionFactor 排放因子 |
|||
* @return 公用计算结果 |
|||
*/ |
|||
public static BigDecimal directCarbonCalculate(String consumeAmount,String lowHeatAmount,String biomassContent,String emissionFactor,String carbonOxdRate) { |
|||
return commonCalculate(consumeAmount,lowHeatAmount) |
|||
.multiply(new BigDecimal(carbonOxdRate)) |
|||
.multiply(new BigDecimal(emissionFactor)) |
|||
.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP) |
|||
.divide(new BigDecimal(1000), 2, RoundingMode.HALF_UP) |
|||
.subtract(biomassFuelNumCalculate(consumeAmount,lowHeatAmount,biomassContent,emissionFactor)); |
|||
} |
|||
|
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,55 @@ |
|||
package com.thing.cbam.directCarbon.util; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.math.RoundingMode; |
|||
|
|||
/** |
|||
* 物料平衡计算工具类 |
|||
*/ |
|||
public class MaterialBalanceUtil { |
|||
|
|||
|
|||
/** |
|||
* 公用计算:消耗量*含碳量*44/12 |
|||
* @param consumeAmount 消耗量 |
|||
* @param carbonContent 碳含量 |
|||
* @return 公用计算结果 |
|||
*/ |
|||
public static BigDecimal commonCalculate(String consumeAmount,String carbonContent) { |
|||
return new BigDecimal(consumeAmount) |
|||
.multiply(new BigDecimal(carbonContent)) |
|||
.multiply(new BigDecimal(44)) |
|||
.divide(new BigDecimal(12), 2, RoundingMode.HALF_UP) |
|||
; |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 生物质燃料排放量 =消耗量*含碳量*44/12*生物量含量/100 |
|||
* @param consumeAmount 消耗量 |
|||
* @param carbonContent 碳含量 |
|||
* @param biomassContent 生物量含量 |
|||
* @return 公用计算结果 |
|||
*/ |
|||
public static BigDecimal biomassFuelNumCalculate(String consumeAmount,String carbonContent, String biomassContent) { |
|||
return commonCalculate(consumeAmount, carbonContent) |
|||
.multiply(new BigDecimal(biomassContent)) |
|||
.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP); |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 直接碳排放量 ==消耗量*含碳量*44/12-生物质燃料排放量 |
|||
* @param consumeAmount 消耗量 |
|||
* @param carbonContent 碳含量 |
|||
* @param biomassContent 生物量含量 |
|||
* @return 公用计算结果 |
|||
*/ |
|||
public static BigDecimal directCarbonCalculate(String consumeAmount,String carbonContent, String biomassContent) { |
|||
return commonCalculate(consumeAmount, carbonContent) |
|||
.subtract(biomassFuelNumCalculate(consumeAmount,carbonContent,biomassContent)); |
|||
} |
|||
|
|||
|
|||
|
|||
} |
|||
@ -0,0 +1,61 @@ |
|||
package com.thing.cbam.directCarbon.util; |
|||
|
|||
import java.math.BigDecimal; |
|||
import java.math.RoundingMode; |
|||
|
|||
/** |
|||
* 过程排放的计算工具类 |
|||
*/ |
|||
public class ProcessDischargeUtil { |
|||
|
|||
|
|||
/** |
|||
* 公用计算:消耗量*排放因子*转化因子/100 |
|||
* @param consumeAmount 消耗量 |
|||
* @param emissionFactor 排放因子 |
|||
* @param conversionFactor 转换因子 |
|||
* @return 公用计算结果 |
|||
*/ |
|||
public static BigDecimal commonCalculate(String consumeAmount,String emissionFactor,String conversionFactor) { |
|||
return new BigDecimal(consumeAmount) |
|||
.multiply(new BigDecimal(emissionFactor)) |
|||
.multiply(new BigDecimal(conversionFactor)) |
|||
.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP) |
|||
; |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 生物质燃料排放量 ==消耗量*排放因子*转化因子/100*生物量含量/100 |
|||
* @param consumeAmount 消耗量 |
|||
* @param emissionFactor 排放因子 |
|||
* @param conversionFactor 转换因子 |
|||
* @param biomassContent 生物量含量 |
|||
* @return 公用计算结果 |
|||
*/ |
|||
public static BigDecimal biomassFuelNumCalculate(String consumeAmount,String emissionFactor,String conversionFactor, String biomassContent) { |
|||
return commonCalculate( consumeAmount, emissionFactor,conversionFactor) |
|||
.multiply(new BigDecimal(biomassContent)) |
|||
.multiply(new BigDecimal(emissionFactor)) |
|||
.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP) |
|||
.multiply(new BigDecimal(biomassContent)) |
|||
.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP); |
|||
} |
|||
|
|||
|
|||
/** |
|||
* 直接碳排放量 ==消耗量"排放因子*转化因子/100-生物质燃料排成量 |
|||
* @param consumeAmount 消耗量 |
|||
* @param emissionFactor 排放因子 |
|||
* @param conversionFactor 转换因子 |
|||
* @param biomassContent 生物量含量 |
|||
* @return 公用计算结果 |
|||
*/ |
|||
public static BigDecimal directCarbonCalculate(String consumeAmount,String emissionFactor,String conversionFactor, String biomassContent) { |
|||
return commonCalculate( consumeAmount, emissionFactor,conversionFactor) |
|||
.subtract(biomassFuelNumCalculate(consumeAmount,emissionFactor,conversionFactor,biomassContent)); |
|||
} |
|||
|
|||
|
|||
|
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue