|
@@ -2,11 +2,10 @@ package com.slibra.business.service.impl;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
+import com.alibaba.fastjson2.JSON;
|
|
|
import com.slibra.business.domain.TXinyiCarbonExtra;
|
|
|
import com.slibra.business.mapper.TXinyiCarbonExtraMapper;
|
|
|
import com.slibra.business.res.CarbonSmartQueryDB;
|
|
@@ -98,18 +97,241 @@ public class TXinyiCarbonMajorServiceImpl implements ITXinyiCarbonMajorService
|
|
|
//填报日期(只要年月日)
|
|
|
tXinyiCarbonMajor.setRemark(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD, nowDate));
|
|
|
int i = tXinyiCarbonMajorMapper.insertTXinyiCarbonMajor(tXinyiCarbonMajor);
|
|
|
+ Long id = tXinyiCarbonMajor.getId();
|
|
|
//处理关联表
|
|
|
List<TXinyiCarbonExtra> extraList = tXinyiCarbonMajor.getExtraList();
|
|
|
if(!CollectionUtils.isEmpty(extraList)){
|
|
|
for (TXinyiCarbonExtra tXinyiCarbonExtra : extraList) {
|
|
|
- tXinyiCarbonExtra.setMajorId(tXinyiCarbonMajor.getId());
|
|
|
+ tXinyiCarbonExtra.setMajorId(id);
|
|
|
tXinyiCarbonExtra.setVal(this.calculate(tXinyiCarbonExtra));//需要单独计算
|
|
|
tXinyiCarbonExtra.setCreateTime(nowDate);
|
|
|
tXinyiCarbonExtra.setCreateBy(username);
|
|
|
this.xinyiCarbonExtraMapper.insertTXinyiCarbonExtra(tXinyiCarbonExtra);
|
|
|
}
|
|
|
}
|
|
|
+ TXinyiCarbonMajor tXinyiCarbonMajorUpdate = new TXinyiCarbonMajor();
|
|
|
+ tXinyiCarbonMajorUpdate.setId(id);
|
|
|
+ //更新部分字段(计算相关:多条数据的)
|
|
|
+ Optional<BigDecimal> reduce0 = extraList.stream().filter(v -> v.getType() == BusinessEnum.CarbonExtraTeypEnum.ZERO.getCode()).map(TXinyiCarbonExtra::getVal).reduce(BigDecimal::add);
|
|
|
+ reduce0.ifPresent(tXinyiCarbonMajorUpdate::setWjtykuCo2);
|
|
|
+ Optional<BigDecimal> reduce1 = extraList.stream().filter(v -> v.getType() == BusinessEnum.CarbonExtraTeypEnum.ONE.getCode()).map(TXinyiCarbonExtra::getVal).reduce(BigDecimal::add);
|
|
|
+ reduce1.ifPresent(tXinyiCarbonMajorUpdate::setGdsnyrlCo2);
|
|
|
+ Optional<BigDecimal> reduce2 = extraList.stream().filter(v -> v.getType() == BusinessEnum.CarbonExtraTeypEnum.TWO.getCode()).map(TXinyiCarbonExtra::getVal).reduce(BigDecimal::add);
|
|
|
+ reduce2.ifPresent(tXinyiCarbonMajorUpdate::setWscljdyjxhCo2);
|
|
|
+ Optional<BigDecimal> reduce3 = extraList.stream().filter(v -> v.getType() == BusinessEnum.CarbonExtraTeypEnum.THREE.getCode()).map(TXinyiCarbonExtra::getVal).reduce(BigDecimal::add);
|
|
|
+ reduce3.ifPresent(tXinyiCarbonMajorUpdate::setRbjsTTL);
|
|
|
+ Optional<BigDecimal> reduce4 = extraList.stream().filter(v -> v.getType() == BusinessEnum.CarbonExtraTeypEnum.FOUR.getCode()).map(TXinyiCarbonExtra::getVal).reduce(BigDecimal::add);
|
|
|
+ reduce4.ifPresent(tXinyiCarbonMajorUpdate::setWnyyxhzqlyTTL);
|
|
|
+ Optional<BigDecimal> reduce5 = extraList.stream().filter(v -> v.getType() == BusinessEnum.CarbonExtraTeypEnum.FIVE.getCode()).map(TXinyiCarbonExtra::getVal).reduce(BigDecimal::add);
|
|
|
+ reduce5.ifPresent(tXinyiCarbonMajorUpdate::setWnfshrjnlyTTL);
|
|
|
+
|
|
|
//处理计算信息
|
|
|
+ BigDecimal wsHsytkhClsl = tXinyiCarbonMajor.getWsHsytkhClsl();
|
|
|
+ BigDecimal wsHsytkhJsCod = tXinyiCarbonMajor.getWsHsytkhJsCod();
|
|
|
+ BigDecimal wsHsytkhCsCod = tXinyiCarbonMajor.getWsHsytkhCsCod();
|
|
|
+ if(!Objects.isNull(wsHsytkhClsl) && !Objects.isNull(wsHsytkhJsCod) && !Objects.isNull(wsHsytkhCsCod)){
|
|
|
+ tXinyiCarbonMajorUpdate.setWsHsytkhCo2((wsHsytkhJsCod.subtract(wsHsytkhCsCod)).abs().multiply(wsHsytkhClsl).multiply(BigDecimal_0_56).multiply(BigDecimal_0_1).divide(BigDecimal_1000000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+ BigDecimal wsSjclCh4Clsl = tXinyiCarbonMajor.getWsSjclCh4Clsl();
|
|
|
+ BigDecimal wsSjclCh4JsCod = tXinyiCarbonMajor.getWsSjclCh4JsCod();
|
|
|
+ BigDecimal wsSjclCh4CsCod = tXinyiCarbonMajor.getWsSjclCh4CsCod();
|
|
|
+ BigDecimal wsSjclCh4Pfyz = tXinyiCarbonMajor.getWsSjclCh4Pfyz();
|
|
|
+ BigDecimal wsSjclCh4Tsb = tXinyiCarbonMajor.getWsSjclCh4Tsb();
|
|
|
+ BigDecimal wsSjclCh4Csc = tXinyiCarbonMajor.getWsSjclCh4Csc();
|
|
|
+ if(!Objects.isNull(wsSjclCh4Clsl) && !Objects.isNull(wsSjclCh4JsCod) && !Objects.isNull(wsSjclCh4CsCod)){
|
|
|
+ if(Objects.isNull(wsSjclCh4Pfyz)){
|
|
|
+ wsSjclCh4Pfyz = BigDecimal_0_0075;
|
|
|
+ }
|
|
|
+ //判断是否有实测
|
|
|
+ if(!Objects.isNull(wsSjclCh4Tsb) && !Objects.isNull(wsSjclCh4Csc)){//有实测
|
|
|
+ tXinyiCarbonMajorUpdate.setWsSjclCh4Co2(((wsSjclCh4JsCod.subtract(wsSjclCh4CsCod)).abs().multiply(wsSjclCh4Clsl).multiply(wsSjclCh4Pfyz).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP).add(wsSjclCh4Tsb).add(wsSjclCh4Csc)).multiply(BigDecimal_28).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }else{//没有实测
|
|
|
+ tXinyiCarbonMajorUpdate.setWsSjclCh4Co2((wsSjclCh4JsCod.subtract(wsSjclCh4CsCod)).abs().multiply(wsSjclCh4Clsl).multiply(wsSjclCh4Pfyz).multiply((BigDecimal_1.add(BigDecimal_0_2))).multiply(BigDecimal_28).divide(BigDecimal_1000000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ BigDecimal wsTdN2oClsl = tXinyiCarbonMajor.getWsTdN2oClsl();
|
|
|
+ BigDecimal wsTdN2oJsTn = tXinyiCarbonMajor.getWsTdN2oJsTn();
|
|
|
+ BigDecimal wsTdN2oCsTn = tXinyiCarbonMajor.getWsTdN2oCsTn();
|
|
|
+ BigDecimal wsTdN2oPfyz = tXinyiCarbonMajor.getWsTdN2oPfyz();
|
|
|
+ if(!Objects.isNull(wsTdN2oClsl) && !Objects.isNull(wsTdN2oJsTn) && !Objects.isNull(wsTdN2oCsTn)){
|
|
|
+ if(Objects.isNull(wsTdN2oPfyz)){
|
|
|
+ wsTdN2oPfyz = BigDecimal_0_01;
|
|
|
+ }
|
|
|
+ tXinyiCarbonMajorUpdate.setWsTdN2oCo2((wsTdN2oJsTn.subtract(wsTdN2oCsTn)).abs().multiply(wsTdN2oClsl).multiply(wsTdN2oPfyz).multiply(BigDecimal_265).multiply(BigDecimal_44).divide(BigDecimal_28, NUMBER_SCALE_2, RoundingMode.HALF_UP).divide(BigDecimal_1000000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //耗电相关
|
|
|
+ Long provinceId = tXinyiCarbonMajor.getProvinceId();
|
|
|
+ if(!Objects.isNull(provinceId)){
|
|
|
+ SysDictData sysDictData = this.sysDictDataMapper.selectDictDataById(provinceId);
|
|
|
+ if(Objects.nonNull(sysDictData)){
|
|
|
+ String dictValue = sysDictData.getDictValue();
|
|
|
+ if(StringUtils.isNotBlank(dictValue)){
|
|
|
+ BigDecimal yz = new BigDecimal(dictValue);
|
|
|
+
|
|
|
+ //总耗电
|
|
|
+ BigDecimal nyyjDlxhZhdl = tXinyiCarbonMajor.getNyyjDlxhZhdl();
|
|
|
+ if(!Objects.isNull(nyyjDlxhZhdl)){
|
|
|
+ tXinyiCarbonMajorUpdate.setNyyjDlxhZhdlCo2(nyyjDlxhZhdl.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //进水泵房
|
|
|
+ BigDecimal nyyjDlxhJsbf = tXinyiCarbonMajor.getNyyjDlxhJsbf();
|
|
|
+ if(!Objects.isNull(nyyjDlxhJsbf)){
|
|
|
+ tXinyiCarbonMajorUpdate.setNyyjDlxhJsbfCo2(nyyjDlxhJsbf.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //鼓风机房
|
|
|
+ BigDecimal nyyjDlxhGfjf = tXinyiCarbonMajor.getNyyjDlxhGfjf();
|
|
|
+ if(!Objects.isNull(nyyjDlxhGfjf)){
|
|
|
+ tXinyiCarbonMajorUpdate.setNyyjDlxhGfjfCo2(nyyjDlxhGfjf.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //脱水机房
|
|
|
+ BigDecimal nyyjDlxhTsjf = tXinyiCarbonMajor.getNyyjDlxhTsjf();
|
|
|
+ if(!Objects.isNull(nyyjDlxhTsjf)){
|
|
|
+ tXinyiCarbonMajorUpdate.setNyyjDlxhTsjfCo2(nyyjDlxhTsjf.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //消毒间
|
|
|
+ BigDecimal nyyjDlxhXdj = tXinyiCarbonMajor.getNyyjDlxhXdj();
|
|
|
+ if(!Objects.isNull(nyyjDlxhXdj)){
|
|
|
+ tXinyiCarbonMajorUpdate.setNyyjDlxhXdjCo2(nyyjDlxhXdj.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //深度处理用电
|
|
|
+ BigDecimal nyyjDlxhSdcl = tXinyiCarbonMajor.getNyyjDlxhSdcl();
|
|
|
+ if(!Objects.isNull(nyyjDlxhSdcl)){
|
|
|
+ tXinyiCarbonMajorUpdate.setNyyjDlxhSdclCo2(nyyjDlxhSdcl.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //污泥处置
|
|
|
+ BigDecimal nyyjDlxhWncz = tXinyiCarbonMajor.getNyyjDlxhWncz();
|
|
|
+ if(!Objects.isNull(nyyjDlxhWncz)){
|
|
|
+ tXinyiCarbonMajorUpdate.setNyyjDlxhWnczCo2(nyyjDlxhWncz.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //生活区
|
|
|
+ BigDecimal nyyjDlxhShq = tXinyiCarbonMajor.getNyyjDlxhShq();
|
|
|
+ if(!Objects.isNull(nyyjDlxhShq)){
|
|
|
+ tXinyiCarbonMajorUpdate.setNyyjDlxhShqCo2(nyyjDlxhShq.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //其他耗电区
|
|
|
+ BigDecimal nyyjDlxhQt = tXinyiCarbonMajor.getNyyjDlxhQt();
|
|
|
+ if(!Objects.isNull(nyyjDlxhQt)){
|
|
|
+ tXinyiCarbonMajorUpdate.setNyyjDlxhQtCo2(nyyjDlxhQt.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //能源、药剂碳排-净购入热力消耗产生的碳排放量-燃料消耗产生的碳排放量
|
|
|
+ BigDecimal nyyjGrrlZq = tXinyiCarbonMajor.getNyyjGrrlZq();
|
|
|
+ BigDecimal nyyjGrrlDyhz = tXinyiCarbonMajor.getNyyjGrrlDyhz();
|
|
|
+ BigDecimal nyyjGrrlRl = tXinyiCarbonMajor.getNyyjGrrlRl();
|
|
|
+ //2024年08月27日17:21:58 计算的时候,不用nyyjGrrlRl了,用前面的2个值,计算出来热力nyyjGrrlRl
|
|
|
+ if(!Objects.isNull(nyyjGrrlZq) && !Objects.isNull(nyyjGrrlDyhz)){
|
|
|
+ tXinyiCarbonMajorUpdate.setNyyjGrrlCo2((nyyjGrrlDyhz.subtract(BigDecimal_83_74)).abs().multiply(nyyjGrrlZq).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP).multiply(BigDecimal_110000).divide(BigDecimal_1000000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //污泥处理-污泥厌氧消化沼气收集管路无意泄露的CH₄或沼气火炬燃烧不充分导致的碳排放-污泥厌氧消化过程排放的CH₄的CO₂当量(t CO₂-eq/月)
|
|
|
+ BigDecimal wnclYyzqZqcl = tXinyiCarbonMajor.getWnclYyzqZqcl();
|
|
|
+ BigDecimal wnclYyzqChZlfs = tXinyiCarbonMajor.getWnclYyzqChZlfs();
|
|
|
+ if(!Objects.isNull(wnclYyzqZqcl) && !Objects.isNull(wnclYyzqChZlfs)){
|
|
|
+ tXinyiCarbonMajorUpdate.setWnclYyzqCo2(wnclYyzqZqcl.multiply(wnclYyzqChZlfs).multiply(BigDecimal_0_05).multiply(BigDecimal_28).multiply(BigDecimal_16).divide(BigDecimal_22_4, NUMBER_SCALE_2, RoundingMode.HALF_UP).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //污泥处理-单独处理污泥厌氧消化过程产生的碳排放量-单独处理污泥厌氧消化产生沼液的CO₂当量(t CO₂-eq/月)
|
|
|
+ BigDecimal wnclDdclZycll = tXinyiCarbonMajor.getWnclDdclZycll();
|
|
|
+ BigDecimal wnclDdclClqnd = tXinyiCarbonMajor.getWnclDdclClqnd();
|
|
|
+ BigDecimal wnclDdclClhnd = tXinyiCarbonMajor.getWnclDdclClhnd();
|
|
|
+ BigDecimal wnclDdclPfyz = tXinyiCarbonMajor.getWnclDdclPfyz();
|
|
|
+ if(!Objects.isNull(wnclDdclZycll) && !Objects.isNull(wnclDdclClqnd) && !Objects.isNull(wnclDdclClhnd)){
|
|
|
+ if(Objects.isNull(wnclDdclPfyz)){
|
|
|
+ wnclDdclPfyz = BigDecimal_0_01;
|
|
|
+ }
|
|
|
+ tXinyiCarbonMajorUpdate.setWnclDdclCo2((wnclDdclClqnd.subtract(wnclDdclClhnd)).abs().multiply(wnclDdclZycll).multiply(wnclDdclPfyz).multiply(BigDecimal_44).divide(BigDecimal_28, NUMBER_SCALE_2, RoundingMode.HALF_UP).divide(BigDecimal_1000000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //污泥处理-污泥好氧发酵过程生化反应的碳排放-污泥好氧发酵过程排放的CH₄的CO₂当量(t CO₂-eq/月)
|
|
|
+ //污泥处理-污泥好氧发酵过程生化反应的碳排放-污泥好氧发酵过程排放的N₂O的CO₂当量(t CO₂-eq/月)
|
|
|
+ BigDecimal wnclHyfjFjl = tXinyiCarbonMajor.getWnclHyfjFjl();
|
|
|
+ if(!Objects.isNull(wnclHyfjFjl)){
|
|
|
+ tXinyiCarbonMajorUpdate.setWnclHyfjCh4Co2(wnclHyfjFjl.multiply(BigDecimal_10).multiply(BigDecimal_28).divide(BigDecimal_1000000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ tXinyiCarbonMajorUpdate.setWnclHyfjN2oCo2(wnclHyfjFjl.multiply(BigDecimal_0_6).multiply(BigDecimal_265).divide(BigDecimal_1000000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //污泥处理-污泥干化焚烧或协同焚烧过程,化石源碳被氧化产生的化石源CO₂碳排放量-污泥好氧发酵过程排放的CH₄的CO₂当量(t CO₂-eq/月)
|
|
|
+ BigDecimal wnclWnfsXhl = tXinyiCarbonMajor.getWnclWnfsXhl();
|
|
|
+ BigDecimal wnclWnfsHtbl = tXinyiCarbonMajor.getWnclWnfsHtbl();
|
|
|
+ if(!Objects.isNull(wnclWnfsXhl) && !Objects.isNull(wnclWnfsHtbl)){
|
|
|
+ tXinyiCarbonMajorUpdate.setWnclWnfsCo2(wnclWnfsXhl.multiply(wnclWnfsHtbl).multiply(BigDecimal_0_12).multiply(BigDecimal_44).divide(BigDecimal_12, NUMBER_SCALE_2, RoundingMode.HALF_UP).divide(BigDecimal_1000, NUMBER_SCALE_2, RoundingMode.HALF_UP));
|
|
|
+ }
|
|
|
+
|
|
|
+ //污泥处理-污泥焚烧过程不完全燃烧产生的CH₄和N₂O的CO₂排放当量-污泥焚烧过程排放的CH₄的CO₂当量(t CO₂-eq/月)
|
|
|
+ Integer wnclBwqrsRslx = tXinyiCarbonMajor.getWnclBwqrsRslx();
|
|
|
+ BigDecimal wnclBwqrsFsl = tXinyiCarbonMajor.getWnclBwqrsFsl();
|
|
|
+ BigDecimal wnclBwqrsPfyz = tXinyiCarbonMajor.getWnclBwqrsPfyz();
|
|
|
+ if(!Objects.isNull(wnclBwqrsFsl)){
|
|
|
+ if(Objects.isNull(wnclBwqrsPfyz)){
|
|
|
+ if(Objects.isNull(wnclBwqrsRslx)){
|
|
|
+ //类型前端必须选,不选默认就是0
|
|
|
+ wnclBwqrsPfyz = BigDecimal.ZERO;
|
|
|
+ }else {
|
|
|
+ if(0 == wnclBwqrsRslx){
|
|
|
+ wnclBwqrsPfyz = BigDecimal_0_06;
|
|
|
+ } else if (1 == wnclBwqrsRslx) {
|
|
|
+ wnclBwqrsPfyz = BigDecimal_1_88;
|
|
|
+ }else if (2 == wnclBwqrsRslx) {
|
|
|
+ wnclBwqrsPfyz = BigDecimal_0_6;
|
|
|
+ }else if (3 == wnclBwqrsRslx) {
|
|
|
+ wnclBwqrsPfyz = BigDecimal_2_37;
|
|
|
+ }else if (4 == wnclBwqrsRslx) {
|
|
|
+ wnclBwqrsPfyz = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ tXinyiCarbonMajorUpdate.setWnclBwqrsCh4Co2(null);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //处理百分比信息
|
|
|
+
|
|
|
+ //计算总的co2
|
|
|
+
|
|
|
+ //处理本月份的 污水厂行业碳排放强度 和 污水厂行业碳排放强度-是否高于同行业平均水平
|
|
|
+ BigDecimal avgJsl = this.tXinyiCarbonMajorMapper.selectSumJslByMonth(addYearMonth.replaceAll("-", "/"));
|
|
|
+ BigDecimal ztTotalCo2 = tXinyiCarbonMajorUpdate.getZtTotalCo2();
|
|
|
+ if(!Objects.isNull(avgJsl) && !Objects.isNull(ztTotalCo2)){
|
|
|
+ //2024年08月27日09:36:14 计算公式有调整:再乘以10的三次方。
|
|
|
+ BigDecimal wschytpfqd = ztTotalCo2.divide(avgJsl, NUMBER_SCALE_4, RoundingMode.HALF_UP).multiply(BigDecimal_1000);
|
|
|
+ tXinyiCarbonMajorUpdate.setWschytpfqd(wschytpfqd);
|
|
|
+ BigDecimal avgCod = this.tXinyiCarbonMajorMapper.selectAvgCodByMonth(addYearMonth.replaceAll("-", "/"));
|
|
|
+ //从字典获取不同cod对应的标准
|
|
|
+ if(!Objects.isNull(avgCod)){
|
|
|
+ List<SysDictData> sysDictData = this.sysDictDataMapper.selectDictDataByType(TPFQD);
|
|
|
+ if(!CollectionUtils.isEmpty(sysDictData)){
|
|
|
+ for (SysDictData sysDictDatum : sysDictData) {
|
|
|
+ String dictLabel = sysDictDatum.getDictLabel();
|
|
|
+ if(StringUtils.isNotBlank(dictLabel) && dictLabel.contains(SPLIT_)){
|
|
|
+ String[] split = dictLabel.split(SPLIT_);
|
|
|
+ BigDecimal first = new BigDecimal(split[0]);
|
|
|
+ BigDecimal last = new BigDecimal(split[1]);
|
|
|
+ if(avgCod.compareTo(first) >= 0 && avgCod.compareTo(last) < 0){
|
|
|
+ BigDecimal bzz = new BigDecimal(sysDictDatum.getDictValue());
|
|
|
+ log.info("当前月份平均cod是{},匹配到的标准值是{}", avgCod, bzz);
|
|
|
+ tXinyiCarbonMajorUpdate.setExceedAvgHY(wschytpfqd.compareTo(bzz));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //更新
|
|
|
+ this.tXinyiCarbonMajorMapper.updateTXinyiCarbonMajor(tXinyiCarbonMajorUpdate);
|
|
|
+ //处理其他字段(能源药剂百分比)
|
|
|
return i;
|
|
|
}
|
|
|
|
|
@@ -121,8 +343,13 @@ public class TXinyiCarbonMajorServiceImpl implements ITXinyiCarbonMajorService
|
|
|
* @return
|
|
|
*/
|
|
|
private BigDecimal calculate(TXinyiCarbonExtra tXinyiCarbonExtra) {
|
|
|
- int type = tXinyiCarbonExtra.getType();
|
|
|
- if(type == BusinessEnum.CarbonExtraTeypEnum.ZERO.getCode()){
|
|
|
+// int type = tXinyiCarbonExtra.getType();
|
|
|
+ BigDecimal amount = tXinyiCarbonExtra.getAmount();
|
|
|
+ SysDictData sysDictData = this.sysDictDataMapper.selectDictDataById(tXinyiCarbonExtra.getDictCode());
|
|
|
+ if(Objects.isNull(sysDictData)){
|
|
|
+ throw new ServiceException("没有查询到对应的配置项");
|
|
|
+ }
|
|
|
+ /*if(type == BusinessEnum.CarbonExtraTeypEnum.ZERO.getCode()){
|
|
|
|
|
|
}else if(type == BusinessEnum.CarbonExtraTeypEnum.ONE.getCode()){
|
|
|
|
|
@@ -136,9 +363,10 @@ public class TXinyiCarbonMajorServiceImpl implements ITXinyiCarbonMajorService
|
|
|
|
|
|
}else {
|
|
|
log.error("暂不支持的类型");
|
|
|
- throw new ServiceException("");
|
|
|
+ throw new ServiceException("暂不支持的类型");
|
|
|
}
|
|
|
- return null;
|
|
|
+ return null;*/
|
|
|
+ return amount.multiply(new BigDecimal(sysDictData.getDictValue()).divide(BigDecimal_1000,NUMBER_SCALE_4, RoundingMode.HALF_UP));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -275,38 +503,8 @@ public class TXinyiCarbonMajorServiceImpl implements ITXinyiCarbonMajorService
|
|
|
}
|
|
|
}
|
|
|
tXinyiCarbonMajor.setRecent7Datas(recent7PflDatas);
|
|
|
- //处理本月份的 污水厂行业碳排放强度 和 污水厂行业碳排放强度-是否高于同行业平均水平
|
|
|
- BigDecimal avgJsl = this.tXinyiCarbonMajorMapper.selectSumJslByMonth(addYearMonth.replaceAll("-", "/"));
|
|
|
- BigDecimal ztTotalCo2 = tXinyiCarbonMajor.getZtTotalCo2();
|
|
|
- if(!Objects.isNull(avgJsl) && !Objects.isNull(ztTotalCo2)){
|
|
|
- BigDecimal wschytpfqd = ztTotalCo2.divide(avgJsl, NUMBER_SCALE_4, RoundingMode.HALF_UP);
|
|
|
- tXinyiCarbonMajor.setWschytpfqd(wschytpfqd);
|
|
|
- BigDecimal avgCod = this.tXinyiCarbonMajorMapper.selectAvgCodByMonth(addYearMonth.replaceAll("-", "/"));
|
|
|
- //从字典获取不同cod对应的标准
|
|
|
- if(!Objects.isNull(avgCod)){
|
|
|
- List<SysDictData> sysDictData = this.sysDictDataMapper.selectDictDataByType(TPFQD);
|
|
|
- if(!CollectionUtils.isEmpty(sysDictData)){
|
|
|
- for (SysDictData sysDictDatum : sysDictData) {
|
|
|
- String dictLabel = sysDictDatum.getDictLabel();
|
|
|
- if(StringUtils.isNotBlank(dictLabel) && dictLabel.contains(SPLIT_)){
|
|
|
- String[] split = dictLabel.split(SPLIT_);
|
|
|
- BigDecimal first = new BigDecimal(split[0]);
|
|
|
- BigDecimal last = new BigDecimal(split[1]);
|
|
|
- if(avgCod.compareTo(first) >= 0 && avgCod.compareTo(last) < 0){
|
|
|
- BigDecimal bzz = new BigDecimal(sysDictDatum.getDictValue());
|
|
|
- log.info("当前月份平均cod是{},匹配到的标准值是{}", avgCod, bzz);
|
|
|
- tXinyiCarbonMajor.setExceedAvgHY(wschytpfqd.compareTo(bzz));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
//关联的多条数据
|
|
|
tXinyiCarbonMajor.setExtraList(this.xinyiCarbonExtraMapper.selectTXinyiCarbonExtraList(TXinyiCarbonExtra.builder().majorId(tXinyiCarbonMajor.getId()).build()));
|
|
|
- //处理其他字段
|
|
|
- //todo
|
|
|
-
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args) {
|
|
@@ -315,5 +513,14 @@ public class TXinyiCarbonMajorServiceImpl implements ITXinyiCarbonMajorService
|
|
|
System.out.println(str.replace("-", "/"));
|
|
|
System.out.println(DateUtils.getMonthsBefore(str, 6));
|
|
|
System.out.println(BigDecimal.ONE.compareTo(BigDecimal_100));
|
|
|
+ System.out.println(JSON.toJSONString(null));
|
|
|
+ ArrayList<TXinyiCarbonExtra> list = new ArrayList<>();
|
|
|
+ list.add(TXinyiCarbonExtra.builder().val(BigDecimal_100).type(1).build());
|
|
|
+ list.add(TXinyiCarbonExtra.builder().val(BigDecimal_100).type(0).build());
|
|
|
+ list.add(TXinyiCarbonExtra.builder().val(BigDecimal_100).type(0).build());
|
|
|
+ Optional<BigDecimal> reduce = list.stream().filter(v -> v.getType() == BusinessEnum.CarbonExtraTeypEnum.ZERO.getCode()).map(TXinyiCarbonExtra::getVal).reduce(BigDecimal::add);
|
|
|
+ System.out.println(reduce);
|
|
|
+ System.out.println(reduce.isPresent());
|
|
|
+ System.out.println(reduce.get());
|
|
|
}
|
|
|
}
|