Ver código fonte

1.公式调整 2.三个地方公式除以100 3.月份取7个月之前的,不包括当前月的 4.校验

王苗苗 6 meses atrás
pai
commit
c9efb9b3e8

+ 1 - 0
slibra-common/src/main/java/com/slibra/common/constant/MyConstants.java

@@ -179,6 +179,7 @@ public class MyConstants {
     public static final int INT_2 = 2;
     public static final int INT_3 = 3;
     public static final int INT_6 = 6;
+    public static final int INT_7 = 7;
     public static final int INT_10000 = 10000;//10秒钟
     public static final int MAX_QUESTION_LENGTH = 5000;
 

+ 23 - 6
slibra-system/src/main/java/com/slibra/business/service/impl/TXinyiCarbonMajorServiceImpl.java

@@ -207,9 +207,11 @@ public class TXinyiCarbonMajorServiceImpl implements ITXinyiCarbonMajorService
         //耗电相关
         BigDecimal nyyjTotalCo2 = BigDecimal.ZERO;
         BigDecimal nyyjDlxhZhdlCo2 = null;
+        BigDecimal nyyjDlxhTotal = BigDecimal.ZERO;
+        BigDecimal nyyjDlxhZhdl = null;
         if(!Objects.isNull(yz)){
             //总耗电
-            BigDecimal nyyjDlxhZhdl = tXinyiCarbonMajor.getNyyjDlxhZhdl();
+            nyyjDlxhZhdl = tXinyiCarbonMajor.getNyyjDlxhZhdl();
             if(!Objects.isNull(nyyjDlxhZhdl)){
                 nyyjDlxhZhdlCo2 = nyyjDlxhZhdl.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP);
                 tXinyiCarbonMajorUpdate.setNyyjDlxhZhdlCo2(nyyjDlxhZhdlCo2);
@@ -219,51 +221,65 @@ public class TXinyiCarbonMajorServiceImpl implements ITXinyiCarbonMajorService
             BigDecimal nyyjDlxhJsbf = tXinyiCarbonMajor.getNyyjDlxhJsbf();
             if(!Objects.isNull(nyyjDlxhJsbf)){
                 tXinyiCarbonMajorUpdate.setNyyjDlxhJsbfCo2(nyyjDlxhJsbf.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP));
+                nyyjDlxhTotal = nyyjDlxhTotal.add(nyyjDlxhJsbf);
             }
 
             //鼓风机房
             BigDecimal nyyjDlxhGfjf = tXinyiCarbonMajor.getNyyjDlxhGfjf();
             if(!Objects.isNull(nyyjDlxhGfjf)){
                 tXinyiCarbonMajorUpdate.setNyyjDlxhGfjfCo2(nyyjDlxhGfjf.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP));
+                nyyjDlxhTotal = nyyjDlxhTotal.add(nyyjDlxhGfjf);
             }
 
             //脱水机房
             BigDecimal nyyjDlxhTsjf = tXinyiCarbonMajor.getNyyjDlxhTsjf();
             if(!Objects.isNull(nyyjDlxhTsjf)){
                 tXinyiCarbonMajorUpdate.setNyyjDlxhTsjfCo2(nyyjDlxhTsjf.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP));
+                nyyjDlxhTotal = nyyjDlxhTotal.add(nyyjDlxhTsjf);
             }
 
             //消毒间
             BigDecimal nyyjDlxhXdj = tXinyiCarbonMajor.getNyyjDlxhXdj();
             if(!Objects.isNull(nyyjDlxhXdj)){
                 tXinyiCarbonMajorUpdate.setNyyjDlxhXdjCo2(nyyjDlxhXdj.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP));
+                nyyjDlxhTotal = nyyjDlxhTotal.add(nyyjDlxhXdj);
             }
 
             //深度处理用电
             BigDecimal nyyjDlxhSdcl = tXinyiCarbonMajor.getNyyjDlxhSdcl();
             if(!Objects.isNull(nyyjDlxhSdcl)){
                 tXinyiCarbonMajorUpdate.setNyyjDlxhSdclCo2(nyyjDlxhSdcl.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP));
+                nyyjDlxhTotal = nyyjDlxhTotal.add(nyyjDlxhSdcl);
             }
 
             //污泥处置
             BigDecimal nyyjDlxhWncz = tXinyiCarbonMajor.getNyyjDlxhWncz();
             if(!Objects.isNull(nyyjDlxhWncz)){
                 tXinyiCarbonMajorUpdate.setNyyjDlxhWnczCo2(nyyjDlxhWncz.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP));
+                nyyjDlxhTotal = nyyjDlxhTotal.add(nyyjDlxhWncz);
             }
 
             //生活区
             BigDecimal nyyjDlxhShq = tXinyiCarbonMajor.getNyyjDlxhShq();
             if(!Objects.isNull(nyyjDlxhShq)){
                 tXinyiCarbonMajorUpdate.setNyyjDlxhShqCo2(nyyjDlxhShq.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP));
+                nyyjDlxhTotal = nyyjDlxhTotal.add(nyyjDlxhShq);
             }
 
             //其他耗电区
             BigDecimal nyyjDlxhQt = tXinyiCarbonMajor.getNyyjDlxhQt();
             if(!Objects.isNull(nyyjDlxhQt)){
                 tXinyiCarbonMajorUpdate.setNyyjDlxhQtCo2(nyyjDlxhQt.multiply(yz).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP));
+                nyyjDlxhTotal = nyyjDlxhTotal.add(nyyjDlxhQt);
             }
         }
 
+        //2024年09月05日14:09:26 增加校验,各个分项的值累加不能超过总的
+        if(!Objects.isNull(nyyjDlxhZhdl) && nyyjDlxhTotal.compareTo(nyyjDlxhZhdl) > 0){
+            log.error("各分项耗电量之和不能超过总耗电量!");
+            throw new ServiceException("各分项耗电量之和不能超过总耗电量!");
+        }
+
         //能源、药剂碳排-净购入热力消耗产生的碳排放量-燃料消耗产生的碳排放量
         BigDecimal nyyjGrrlZq = tXinyiCarbonMajor.getNyyjGrrlZq();
         BigDecimal nyyjGrrlDyhz = tXinyiCarbonMajor.getNyyjGrrlDyhz();
@@ -302,7 +318,7 @@ public class TXinyiCarbonMajorServiceImpl implements ITXinyiCarbonMajorService
         BigDecimal wnclYyzqChZlfs = tXinyiCarbonMajor.getWnclYyzqChZlfs();
         BigDecimal wnclYyzqCo2 = null;
         if(!Objects.isNull(wnclYyzqZqcl) && !Objects.isNull(wnclYyzqChZlfs)){
-            wnclYyzqCo2 = wnclYyzqZqcl.multiply(wnclYyzqChZlfs).multiply(BigDecimal_0_05).multiply(BigDecimal_28).multiply(BigDecimal_16).divide(BigDecimal_22_4, NUMBER_SCALE_6, RoundingMode.HALF_UP).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP);
+            wnclYyzqCo2 = wnclYyzqZqcl.multiply(wnclYyzqChZlfs).multiply(BigDecimal_0_05).multiply(BigDecimal_28).multiply(BigDecimal_16).divide(BigDecimal_22_4, NUMBER_SCALE_6, RoundingMode.HALF_UP).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP).divide(BigDecimal_100, NUMBER_SCALE_6, RoundingMode.HALF_UP);
             tXinyiCarbonMajorUpdate.setWnclYyzqCo2(wnclYyzqCo2);
         }
 
@@ -338,7 +354,7 @@ public class TXinyiCarbonMajorServiceImpl implements ITXinyiCarbonMajorService
         BigDecimal wnclWnfsCo2 = null;
 
         if(!Objects.isNull(wnclWnfsXhl) && !Objects.isNull(wnclWnfsHtbl)){
-            wnclWnfsCo2 = wnclWnfsXhl.multiply(wnclWnfsHtbl).multiply(BigDecimal_0_12).multiply(BigDecimal_44).divide(BigDecimal_12, NUMBER_SCALE_6, RoundingMode.HALF_UP).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP);
+            wnclWnfsCo2 = wnclWnfsXhl.multiply(wnclWnfsHtbl).multiply(BigDecimal_0_12).multiply(BigDecimal_44).divide(BigDecimal_12, NUMBER_SCALE_6, RoundingMode.HALF_UP).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP).divide(BigDecimal_100, NUMBER_SCALE_6, RoundingMode.HALF_UP);
             tXinyiCarbonMajorUpdate.setWnclWnfsCo2(wnclWnfsCo2);
         }
 
@@ -379,7 +395,7 @@ public class TXinyiCarbonMajorServiceImpl implements ITXinyiCarbonMajorService
         BigDecimal wnclWnrjByhHtbl = tXinyiCarbonMajor.getWnclWnrjByhHtbl();
         BigDecimal wnclWnrjByhCo2 = null;
         if(!Objects.isNull(wnclWnrjByhHtbl) && !Objects.isNull(wnclWnrjByhXhl)){
-            wnclWnrjByhCo2 = wnclWnrjByhXhl.multiply(wnclWnrjByhHtbl).multiply(BigDecimal_0_12).multiply(BigDecimal_44).divide(BigDecimal_12, NUMBER_SCALE_6, RoundingMode.HALF_UP).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP);
+            wnclWnrjByhCo2 = wnclWnrjByhXhl.multiply(wnclWnrjByhHtbl).multiply(BigDecimal_0_12).multiply(BigDecimal_44).divide(BigDecimal_12, NUMBER_SCALE_6, RoundingMode.HALF_UP).divide(BigDecimal_1000, NUMBER_SCALE_6, RoundingMode.HALF_UP).divide(BigDecimal_100, NUMBER_SCALE_6, RoundingMode.HALF_UP);
             tXinyiCarbonMajorUpdate.setWnclWnrjByhCo2(wnclWnrjByhCo2);
         }
 
@@ -598,7 +614,8 @@ public class TXinyiCarbonMajorServiceImpl implements ITXinyiCarbonMajorService
         }else if(type == BusinessEnum.CarbonExtraTeypEnum.FOUR.getCode()){
             return Objects.isNull(yz) ? null : (amount.multiply(yz).add((lyl.multiply(new BigDecimal(sysDictData.getDictValue()))).add((hz.multiply(BigDecimal_0_0022))))).divide(BigDecimal_1000,NUMBER_SCALE_6, RoundingMode.HALF_UP);
         }else if(type == BusinessEnum.CarbonExtraTeypEnum.FIVE.getCode()){
-            return Objects.isNull(yz) ? null : (amount.multiply(yz).add((lyl.multiply(hz.subtract(BigDecimal_83_74)).divide(BigDecimal_1000,NUMBER_SCALE_6, RoundingMode.HALF_UP))).multiply(new BigDecimal(sysDictData.getDictValue())).divide(BigDecimal_1000,NUMBER_SCALE_6, RoundingMode.HALF_UP)).divide(BigDecimal_1000,NUMBER_SCALE_6, RoundingMode.HALF_UP);
+            //2024年09月05日13:49:11  公式调整,没有 沼气提纯并网的天然气量/对应焓值 这个参数了
+            return Objects.isNull(yz) ? null : (amount.multiply(yz).add((lyl.multiply(new BigDecimal(sysDictData.getDictValue())).divide(BigDecimal_1000,NUMBER_SCALE_6, RoundingMode.HALF_UP)))).divide(BigDecimal_1000,NUMBER_SCALE_6, RoundingMode.HALF_UP);
         }else {
             log.error("暂不支持的类型");
             throw new ServiceException("暂不支持的类型");
@@ -721,7 +738,7 @@ public class TXinyiCarbonMajorServiceImpl implements ITXinyiCarbonMajorService
         //最近7个月的数据集合
         TXinyiCarbonMajor tXinyiCarbonMajorReq = new TXinyiCarbonMajor();
         String timeEnd = DateUtils.parseDateToStr(DateUtils.YYYY_MM, DateUtils.getNowDate());
-        tXinyiCarbonMajorReq.setHsTimeBegin(DateUtils.getMonthsBefore(timeEnd, INT_6));
+        tXinyiCarbonMajorReq.setHsTimeBegin(DateUtils.getMonthsBefore(timeEnd, INT_7));
         tXinyiCarbonMajorReq.setHsTimeEnd(timeEnd);
         List<TXinyiCarbonMajor> tXinyiCarbonMajorList = this.tXinyiCarbonMajorMapper.selectTXinyiCarbonMajorList(tXinyiCarbonMajorReq);
         List<ChartBasic> recent7PflDatas = new ArrayList<>();

+ 1 - 1
slibra-system/src/main/resources/mapper/business/TXinyiCarbonMajorMapper.xml

@@ -470,7 +470,7 @@
         FROM
             t_xinyi_daily
         WHERE
-            TEST_DATE LIKE (#{month}, '%')
+            TEST_DATE LIKE concat(#{month}, '%')
     </select>
 
     <select id="selectTXinyiCarbonMajorList" parameterType="TXinyiCarbonMajor" resultMap="TXinyiCarbonMajorResult">