From db8a628d7cc673b530c1a1cf6710b79660bfeccb Mon Sep 17 00:00:00 2001 From: lishuai Date: Tue, 3 Dec 2024 08:38:32 +0800 Subject: [PATCH] =?UTF-8?q?Bexcel=E5=8A=9F=E8=83=BD=E5=BC=80=E5=8F=91=2020?= =?UTF-8?q?24=E5=B9=B412=E6=9C=883=E6=97=A508:38:27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/CbamProcessMaterialEntity.java | 4 + .../CbamCarbonDirectController.java | 11 ++- .../CbamCarbonMaterialController.java | 2 +- ...a => CbamProcessAllocationController.java} | 83 ++++++------------ .../directCarbon/dto/CbamCarbonBurnDTO.java | 44 ---------- .../directCarbon/dto/CbamCarbonDirectDTO.java | 6 ++ .../dto/CbamProcessAllocationDTO.java | 35 ++++++++ ....java => CbamProcessAllocationEntity.java} | 47 ++++------ .../mapper/CbamCarbonBurnMapper.java | 17 ---- .../mapper/CbamCarbonProgressMapper.java | 1 - .../mapper/CbamProcessAllocationMapper.java | 16 ++++ .../service/CbamCarbonBurnService.java | 26 ------ .../service/CbamCarbonDirectService.java | 7 ++ .../service/CbamProcessAllocationService.java | 14 +++ .../impl/CbamCarbonBurnServiceImpl.java | 87 ------------------- .../impl/CbamCarbonDirectServiceImpl.java | 79 ++++++++++++++++- .../CbamProcessAllocationServiceImpl.java | 28 ++++++ .../util/BurningDischargeUtil.java | 85 ++++++++++++++++++ .../util/MaterialBalanceUtil.java | 55 ++++++++++++ .../util/ProcessDischargeUtil.java | 61 +++++++++++++ 20 files changed, 444 insertions(+), 264 deletions(-) rename modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/{CbamCarbonBurnController.java => CbamProcessAllocationController.java} (52%) delete mode 100644 modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamCarbonBurnDTO.java create mode 100644 modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamProcessAllocationDTO.java rename modules/cbam/src/main/java/com/thing/cbam/directCarbon/entity/{CbamCarbonBurnEntity.java => CbamProcessAllocationEntity.java} (50%) delete mode 100644 modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamCarbonBurnMapper.java create mode 100644 modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamProcessAllocationMapper.java delete mode 100644 modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamCarbonBurnService.java create mode 100644 modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamProcessAllocationService.java delete mode 100644 modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamCarbonBurnServiceImpl.java create mode 100644 modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamProcessAllocationServiceImpl.java create mode 100644 modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/BurningDischargeUtil.java create mode 100644 modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/MaterialBalanceUtil.java create mode 100644 modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/ProcessDischargeUtil.java diff --git a/modules/cbam/src/main/java/com/thing/cbam/baesInfoExcel/entity/CbamProcessMaterialEntity.java b/modules/cbam/src/main/java/com/thing/cbam/baesInfoExcel/entity/CbamProcessMaterialEntity.java index bdc8d95..e3f2605 100644 --- a/modules/cbam/src/main/java/com/thing/cbam/baesInfoExcel/entity/CbamProcessMaterialEntity.java +++ b/modules/cbam/src/main/java/com/thing/cbam/baesInfoExcel/entity/CbamProcessMaterialEntity.java @@ -85,4 +85,8 @@ public class CbamProcessMaterialEntity implements Serializable { * 类型1.生产过程 2.原材料 */ private Integer type; + /** + * 生产过程分配量 + */ +// private String processAllocation; } \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonDirectController.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonDirectController.java index 1129fc2..943d2bd 100644 --- a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonDirectController.java +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonDirectController.java @@ -29,7 +29,7 @@ import java.util.Map; * @since 3.0 2024-12-02 */ @RestController -@RequestMapping("v2/cbam/carbonDirect") +@RequestMapping("v2/cbam/carbon/direct") @Tag(name="直接排放量B-Excel") @RequiredArgsConstructor public class CbamCarbonDirectController { @@ -80,6 +80,15 @@ public class CbamCarbonDirectController { return new Result<>(); } + @PostMapping("batchSave") + @Operation(summary="保存") + @LogOperation("保存") + public Result saveList(@RequestBody List carbonDirectDTOList){ + //效验数据 + cbamCarbonDirectService.saveList(carbonDirectDTOList); + return new Result<>(); + } + @PutMapping @Operation(summary="修改") @LogOperation("修改") diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonMaterialController.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonMaterialController.java index 3004269..e55dc37 100644 --- a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonMaterialController.java +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonMaterialController.java @@ -23,7 +23,7 @@ import java.util.Map; @RestController @RequestMapping("v2/cbam/carbon/material") -@Tag(name = "原材料") +@Tag(name = "产品原材料") @RequiredArgsConstructor public class CbamCarbonMaterialController { private final CbamCarbonMaterialService cbamCarbonMaterialService; diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonBurnController.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamProcessAllocationController.java similarity index 52% rename from modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonBurnController.java rename to modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamProcessAllocationController.java index f06051c..d5096c3 100644 --- a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamCarbonBurnController.java +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/controller/CbamProcessAllocationController.java @@ -1,8 +1,7 @@ -/* package com.thing.cbam.directCarbon.controller; -import com.thing.cbam.directCarbon.dto.CbamCarbonBurnDTO; -import com.thing.cbam.directCarbon.service.CbamCarbonBurnService; +import com.thing.cbam.directCarbon.dto.CbamProcessAllocationDTO; +import com.thing.cbam.directCarbon.service.CbamProcessAllocationService; import com.thing.common.core.annotation.LogOperation; import com.thing.common.core.constants.Constant; import com.thing.common.core.validator.AssertUtils; @@ -13,7 +12,6 @@ import com.thing.common.core.validator.group.UpdateGroup; import com.thing.common.core.web.response.PageData; import com.thing.common.core.web.response.Result; - import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; @@ -21,25 +19,21 @@ import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import java.math.BigDecimal; -import java.util.List; import java.util.Map; -*/ /** -* 直接排放量 +* 生产过程分配量 * -* @author xc -* @since 3.0 2024-11-27 -*//* - +* @author xc +* @since 3.0 2024-12-02 +*/ @RestController -@RequestMapping("v2/cbam/carbon1") -@Tag(name="直接排放量--燃烧排放") +@RequestMapping("v2/cbam/allocation") +@Tag(name="生产过程分配量") @RequiredArgsConstructor -public class CbamCarbonBurnController { - - private final CbamCarbonBurnService cbamCarbonBurnService; +public class CbamProcessAllocationController { + + private final CbamProcessAllocationService cbamProcessAllocationService; @GetMapping("page") @Operation(summary="分页") @@ -49,45 +43,35 @@ public class CbamCarbonBurnController { @Parameter(name = Constant.ORDER_FIELD, description = "排序字段") , @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)") }) - public Result> page(@Parameter(hidden = true) @RequestParam Map params){ - PageData page = cbamCarbonBurnService.getPageData(params, CbamCarbonBurnDTO.class); - return new Result>().ok(page); + public Result> page(@Parameter(hidden = true) @RequestParam Map params){ + PageData page = cbamProcessAllocationService.getPageData(params, CbamProcessAllocationDTO.class); + return new Result>().ok(page); } @GetMapping("{id}") @Operation(summary="信息") - public Result get(@PathVariable("id") Long id){ - CbamCarbonBurnDTO data = cbamCarbonBurnService.getByIdAs(id, CbamCarbonBurnDTO.class); - return new Result().ok(data); + public Result get(@PathVariable("id") Long id){ + CbamProcessAllocationDTO data = cbamProcessAllocationService.getByIdAs(id, CbamProcessAllocationDTO.class); + return new Result().ok(data); } @PostMapping @Operation(summary="保存") @LogOperation("保存") - public Result save(@RequestBody CbamCarbonBurnDTO dto){ + public Result save(@RequestBody CbamProcessAllocationDTO dto){ //效验数据 ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); - cbamCarbonBurnService.saveDto(dto); - return new Result<>(); - } - - - @PostMapping - @Operation(summary="批量保存") - @LogOperation("批量保存") - public Result batchSave(@RequestBody List dtoList){ - //效验数据 - cbamCarbonBurnService.batchSave(dtoList); + cbamProcessAllocationService.saveDto(dto); return new Result<>(); } @PutMapping @Operation(summary="修改") @LogOperation("修改") - public Result update(@RequestBody CbamCarbonBurnDTO dto){ + public Result update(@RequestBody CbamProcessAllocationDTO dto){ //效验数据 ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); - cbamCarbonBurnService.updateDto(dto); + cbamProcessAllocationService.updateDto(dto); return new Result<>(); } @@ -97,31 +81,18 @@ public class CbamCarbonBurnController { public Result delete(@RequestBody Long[] ids){ //效验数据 AssertUtils.isArrayEmpty(ids, "id"); - cbamCarbonBurnService.batchDelete(ids); + cbamProcessAllocationService.batchDelete(ids); return new Result<>(); } - @PostMapping - @Operation(summary="计算燃烧排放量") - @LogOperation("计算燃烧排放量") - public Result> calculate(Long fuelId,BigDecimal consumeAmount,BigDecimal biomassContent){ - //效验数据 - return new Result>().ok(cbamCarbonBurnService.calculate(fuelId, consumeAmount,biomassContent)); - } - - - - - */ -/** + /** *@GetMapping("export") *@Operation(summary="导出") *@LogOperation("导出") *public void export(@Parameter(hidden = true) @RequestParam Map params, HttpServletResponse response) throws Exception { - * List list = cbamCarbonBurnService.listAs(params, CbamCarbonBurnDTO.class); - * //ExcelUtils.exportExcelToTarget(response, null, "直接排放量", list, CbamCarbonBurnExcel.class); + * List list = cbamProcessAllocationService.listAs(params, CbamProcessAllocationDTO.class); + * //ExcelUtils.exportExcelToTarget(response, null, "生产过程分配量", list, CbamProcessAllocationExcel.class); *} - *//* - + */ -}*/ +} \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamCarbonBurnDTO.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamCarbonBurnDTO.java deleted file mode 100644 index 33f4487..0000000 --- a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamCarbonBurnDTO.java +++ /dev/null @@ -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; - - -} \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamCarbonDirectDTO.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamCarbonDirectDTO.java index a0c5a22..9afbffc 100644 --- a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamCarbonDirectDTO.java +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamCarbonDirectDTO.java @@ -1,11 +1,13 @@ package com.thing.cbam.directCarbon.dto; +import com.thing.cbam.baesInfoExcel.dto.CbamProcessMaterialDTO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serial; import java.io.Serializable; +import java.util.List; /** * 直接排放量B-Excel @@ -81,4 +83,8 @@ public class CbamCarbonDirectDTO implements Serializable { "4.是否有连续排放测量系统(CEMS)") private Integer type; private Long sort; + @Schema(description = "生产过程分配量") + private String processAllocation; + + } \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamProcessAllocationDTO.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamProcessAllocationDTO.java new file mode 100644 index 0000000..de52162 --- /dev/null +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/dto/CbamProcessAllocationDTO.java @@ -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; + +} \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/entity/CbamCarbonBurnEntity.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/entity/CbamProcessAllocationEntity.java similarity index 50% rename from modules/cbam/src/main/java/com/thing/cbam/directCarbon/entity/CbamCarbonBurnEntity.java rename to modules/cbam/src/main/java/com/thing/cbam/directCarbon/entity/CbamProcessAllocationEntity.java index 237bb30..9209fe9 100644 --- a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/entity/CbamCarbonBurnEntity.java +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/entity/CbamProcessAllocationEntity.java @@ -1,8 +1,10 @@ package com.thing.cbam.directCarbon.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; @@ -11,55 +13,42 @@ import java.io.Serial; import java.io.Serializable; /** - * 燃烧排放量 + * 生产过程分配量 * * @author xc - * @since 3.0 2024-11-27 + * @since 3.0 2024-12-02 */ @Data @Accessors(chain = true) @EqualsAndHashCode(callSuper=false) -@Table("cbam_carbon_burn") -public class CbamCarbonBurnEntity implements Serializable { +@Table("cbam_process_allocation") +public class CbamProcessAllocationEntity implements Serializable { @Serial private static final long serialVersionUID = 1L; - @Id - private Long id; - /** - * 名称 - */ - private String name; - /** - * 消耗量 - */ - private String consumeAmount; /** - * 消耗量单位 + * 主键 */ - private String consumeUnit; - /** - * 低位发热量 - */ - private String lowHeatVal; + @Id(keyType = KeyType.Generator,value = KeyGenerators.snowFlakeId) + private Long id; /** * 排放源名称 */ - private String emissionName; + private String name; /** - * 排放因子 + * 排放源类型:1 和 2 */ - private String emissionFactors; + private Integer type; /** - * 氧化因子 + * 关联cbam_industry_info的主键id */ - private String oxidationFactor; + private Long industryId; /** - * 生物量含量 + * 关联cbam_process_material的id */ - private String biomassContent; + private Long prodId; /** - * 关联cbam_industry_information的主键id + * 生产过程分配量 */ - private Long industryId; + private String processAllocation; } \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamCarbonBurnMapper.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamCarbonBurnMapper.java deleted file mode 100644 index 3a038ed..0000000 --- a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamCarbonBurnMapper.java +++ /dev/null @@ -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 { - -} \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamCarbonProgressMapper.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamCarbonProgressMapper.java index 971efab..569b635 100644 --- a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamCarbonProgressMapper.java +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamCarbonProgressMapper.java @@ -1,6 +1,5 @@ package com.thing.cbam.directCarbon.mapper; -import com.thing.cbam.directCarbon.entity.CbamCarbonBurnEntity; import com.thing.cbam.directCarbon.entity.CbamCarbonProgressEntity; import com.thing.common.orm.mapper.PowerBaseMapper; import org.apache.ibatis.annotations.Mapper; diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamProcessAllocationMapper.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamProcessAllocationMapper.java new file mode 100644 index 0000000..6e180e8 --- /dev/null +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/mapper/CbamProcessAllocationMapper.java @@ -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 { + +} \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamCarbonBurnService.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamCarbonBurnService.java deleted file mode 100644 index 32c068f..0000000 --- a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamCarbonBurnService.java +++ /dev/null @@ -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 { - - - void batchSave(List dtoList); - - Map calculate(Long fuelId, BigDecimal consumeAmount,BigDecimal biomassContent); - - -} \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamCarbonDirectService.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamCarbonDirectService.java index 7484518..5469a7c 100644 --- a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamCarbonDirectService.java +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamCarbonDirectService.java @@ -3,8 +3,11 @@ package com.thing.cbam.directCarbon.service; import com.thing.cbam.directCarbon.dto.CbamCarbonDirectDTO; import com.thing.cbam.directCarbon.entity.CbamCarbonDirectEntity; import com.thing.common.orm.service.IBaseService; +import org.springframework.web.bind.annotation.RequestBody; +import java.math.BigDecimal; import java.util.List; +import java.util.Map; /** * 直接排放量B-Excel @@ -16,4 +19,8 @@ public interface CbamCarbonDirectService extends IBaseService listByIndustryId(Long industryId); + void saveList(List carbonDirectDTOList); + + Map calculate(Long fuelId, String consumeAmount, String biomassContent); + } \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamProcessAllocationService.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamProcessAllocationService.java new file mode 100644 index 0000000..45e5fd9 --- /dev/null +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/CbamProcessAllocationService.java @@ -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 { + +} \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamCarbonBurnServiceImpl.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamCarbonBurnServiceImpl.java deleted file mode 100644 index 77085b5..0000000 --- a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamCarbonBurnServiceImpl.java +++ /dev/null @@ -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 implements CbamCarbonBurnService { - - private final CbamFuelDictService cbamFuelDictService; - - @Override - public QueryWrapper getWrapper(Map params){ - QueryWrapper wrapper = new QueryWrapper(); - return wrapper; - } - - @Transactional(rollbackFor = Exception.class) - @Override - public void batchSave(List dtoList) { - List cbamCarbonBurnEntities = ConvertUtils.sourceToTarget(dtoList, CbamCarbonBurnEntity.class); - mapper.insertBatch(cbamCarbonBurnEntities); - } - - @Override - public Map calculate(Long fuelId, BigDecimal consumeAmount,BigDecimal biomassContent) { - Map 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; - } -} \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamCarbonDirectServiceImpl.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamCarbonDirectServiceImpl.java index 3b51e6f..cddd291 100644 --- a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamCarbonDirectServiceImpl.java +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamCarbonDirectServiceImpl.java @@ -1,15 +1,28 @@ package com.thing.cbam.directCarbon.service.impl; import com.mybatisflex.core.query.QueryWrapper; +import com.thing.cbam.baesInfoExcel.service.CbamProcessMaterialService; +import com.thing.cbam.dict.entity.CbamFuelDictEntity; +import com.thing.cbam.dict.service.CbamFuelDictService; import com.thing.cbam.directCarbon.dto.CbamCarbonDirectDTO; import com.thing.cbam.directCarbon.entity.CbamCarbonDirectEntity; +import com.thing.cbam.directCarbon.entity.CbamProcessAllocationEntity; import com.thing.cbam.directCarbon.mapper.CbamCarbonDirectMapper; import com.thing.cbam.directCarbon.service.CbamCarbonDirectService; +import com.thing.cbam.directCarbon.service.CbamProcessAllocationService; +import com.thing.cbam.directCarbon.util.BurningDischargeUtil; +import com.thing.common.core.utils.ConvertUtils; import com.thing.common.orm.service.impl.BaseServiceImpl; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; /** * 直接排放量B-Excel @@ -18,8 +31,14 @@ import java.util.Map; * @since 3.0 2024-12-02 */ @Service +@RequiredArgsConstructor public class CbamCarbonDirectServiceImpl extends BaseServiceImpl implements CbamCarbonDirectService { + + private final CbamFuelDictService cbamFuelDictService; + private final CbamProcessMaterialService cbamProcessMaterialService; + private final CbamProcessAllocationService cbamProcessAllocationService; + @Override public QueryWrapper getWrapper(Map params){ QueryWrapper wrapper = new QueryWrapper(); @@ -32,7 +51,63 @@ public class CbamCarbonDirectServiceImpl extends BaseServiceImpl cbamCarbonDirectDTOS = mapper.selectListByQueryAs(queryWrapper, CbamCarbonDirectDTO.class); - return cbamCarbonDirectDTOS; + return mapper.selectListByQueryAs(queryWrapper, CbamCarbonDirectDTO.class); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void saveList(List carbonDirectDTOList) { + //插入 是否涉及燃烧排放 && 是否涉及过程排放 && 是否涉及物料平衡 && 是否有连续排放测量系统(CEMS),即排除type=5的类型 + List list = carbonDirectDTOList.stream().filter(carbonDirectDTO -> !Objects.equals(carbonDirectDTO.getType(), 5)).toList(); + List cbamCarbonDirectEntities = ConvertUtils.sourceToTarget(list, CbamCarbonDirectEntity.class); + mapper.insertBatch(cbamCarbonDirectEntities); + // type=5的类型 单独 更新生产过程中的分配量 + List fiveList = carbonDirectDTOList.stream().filter(carbonDirectDTO -> Objects.equals(carbonDirectDTO.getType(), 5)).toList(); + List cbamProcessAllocationList = fiveList.stream().map(f -> { + CbamProcessAllocationEntity cbamProcessAllocationEntity = new CbamProcessAllocationEntity(); + cbamProcessAllocationEntity.setName(f.getName()); + cbamProcessAllocationEntity.setType(f.getType()); + cbamProcessAllocationEntity.setIndustryId(f.getIndustryId()); + cbamProcessAllocationEntity.setProcessAllocation(f.getProcessAllocation()); + // 根据排放源名字,排放源类型和顺序获取id + cbamCarbonDirectEntities.stream() + .filter(cbamCarbonDirectEntity -> + StringUtils.equals(cbamCarbonDirectEntity.getName(), f.getName()) + && Objects.equals(cbamCarbonDirectEntity.getType(), f.getType()) + && Objects.equals(cbamCarbonDirectEntity.getSort(), f.getSort()) + ) + .findFirst() + .ifPresent(cbamCarbonDirectEntity -> { + cbamProcessAllocationEntity.setProdId(cbamCarbonDirectEntity.getId()); + }); + return cbamProcessAllocationEntity; + }).toList(); + cbamProcessAllocationService.saveBatch(cbamProcessAllocationList); + } + + @Override + public Map calculate(Long fuelId, String consumeAmount, String biomassContent) { + Map resMap = new HashMap<>(); + //获取燃料系数字典信息 + CbamFuelDictEntity cbamFuelDict = cbamFuelDictService.getById(fuelId); + if(Objects.isNull(cbamFuelDict)){ + throw new RuntimeException("燃料系数字典信息不存在"); + } + //公用计算:消耗量*低位发热量 + String lowHeatAmount = cbamFuelDict.getLowHeatAmount(); + //1.首先先计算(第四个)----能量含量(生物质燃料),工J =消耗量*低位发热量*生物量含量/100/1000 + BigDecimal energyBiologyNum = + BurningDischargeUtil.energyBiologyNumCalculate(consumeAmount, lowHeatAmount, biomassContent); + resMap.put("energyBiologyNum",energyBiologyNum); + //2.其次计算第三个:能量含量(化石燃料),TJ =消耗量*低位发热量/1000-能量含量(生物质燃料) + BigDecimal energyFossilNum = BurningDischargeUtil.energyHsNumCalculate(consumeAmount, lowHeatAmount, energyBiologyNum.toPlainString()); + resMap.put("energyFossilNum",energyFossilNum); + //3.生物质燃料排放量 =消耗量*低位发热量*生物量含量*排放因子/100/1000 + BigDecimal biomassFuelNum = BurningDischargeUtil.biomassFuelNumCalculate(consumeAmount, lowHeatAmount, biomassContent, cbamFuelDict.getEmissionFactor()); + resMap.put("biomassFuelNum",biomassFuelNum); + //4.直接碳排放量 =消耗量*低位发热量*氧化因子*排放因子/100/1000-生物质燃料排放量 + BigDecimal directCarbonNum = BurningDischargeUtil.directCarbonCalculate(consumeAmount, lowHeatAmount, biomassContent, cbamFuelDict.getEmissionFactor(), cbamFuelDict.getCarbonOxdRate()); + resMap.put("directCarbonNum",directCarbonNum); + return resMap; } } \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamProcessAllocationServiceImpl.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamProcessAllocationServiceImpl.java new file mode 100644 index 0000000..8fe5ef4 --- /dev/null +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/service/impl/CbamProcessAllocationServiceImpl.java @@ -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 implements CbamProcessAllocationService { + + @Override + public QueryWrapper getWrapper(Map params){ + QueryWrapper wrapper = new QueryWrapper(); + return wrapper; + } + + +} \ No newline at end of file diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/BurningDischargeUtil.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/BurningDischargeUtil.java new file mode 100644 index 0000000..85bdd4d --- /dev/null +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/BurningDischargeUtil.java @@ -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)); + } + + + +} diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/MaterialBalanceUtil.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/MaterialBalanceUtil.java new file mode 100644 index 0000000..a52e5e6 --- /dev/null +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/MaterialBalanceUtil.java @@ -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)); + } + + + +} diff --git a/modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/ProcessDischargeUtil.java b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/ProcessDischargeUtil.java new file mode 100644 index 0000000..402cb71 --- /dev/null +++ b/modules/cbam/src/main/java/com/thing/cbam/directCarbon/util/ProcessDischargeUtil.java @@ -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)); + } + + + +}