Jelajahi Sumber

更新计算逻辑。

CodeLife_leno 1 bulan lalu
induk
melakukan
03629e79bb

+ 1 - 1
Procedure/backend/project/src/main/java/com/sundata/MainApplication.java

@@ -8,7 +8,7 @@ import org.springframework.cache.annotation.EnableCaching;
 @SpringBootApplication
 @ServletComponentScan
 @EnableCaching
-public class MainApplication {
+public class 	MainApplication {
 
 	public static void main(String[] args) {
 		SpringApplication.run(MainApplication.class, args);

+ 52 - 18
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/GeneralLedgerUnit.java

@@ -1,15 +1,23 @@
 package com.sundata.product.rwa.calc.service.implement.units;
 
+import cn.hutool.core.math.MathUtil;
+import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.spring.SpringUtil;
+import cn.hutool.extra.template.TemplateUtil;
 import com.sundata.common.util.DBExecutor;
 import com.sundata.product.rwa.calc.service.CalcResult;
 import com.sundata.product.rwa.calc.service.CalcUnit;
 import com.sundata.product.rwa.calc.service.finals.CalcType;
 import com.sundata.product.rwa.calc.utils.FinalStrs;
 import com.sundata.product.rwa.calc.utils.UnitStaticFun;
+import com.sundata.product.rwa.resultList.model.RuleListModel;
+import com.sundata.product.rwa.resultList.service.RuleListService;
+import org.apache.commons.text.StringSubstitutor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -28,32 +36,27 @@ public class GeneralLedgerUnit extends CalcUnit {
     }
 
 
-
     @Override
     public boolean isCalcFinished(String calculateInstanceNumber) {
-        boolean isHis = false;
-        boolean isMaster = false;
-        boolean isNow = false;
+        boolean isCalc = false;
         try {
-            isHis = !StrUtil.equals("0", (DBExecutor.doQuery("select count(1) as counts from RWA_LEART_INS_LEDGRESULT" + FinalStrs._ALLHIS + " from CALCINDEX = '" + calculateInstanceNumber + "'")));
-            isMaster = !StrUtil.equals("0", (DBExecutor.doQuery("select count(1) as counts from RWA_LEART_INS_LEDGRESULT" + FinalStrs._MASTER + " from CALCINDEX = '" + calculateInstanceNumber + "'")));
-            isNow = !StrUtil.equals("0", (DBExecutor.doQuery("select count(1) as counts from RWA_LEART_INS_LEDGRESULT from CALCINDEX = '" + calculateInstanceNumber + "'")));
+            isCalc = UnitStaticFun.isHasCalcFinished("RWA_APM_BUS_RS_ACCADJUSTMENT", calculateInstanceNumber);
         } catch (Exception e) {
             log.warn("若首次运行,且没有进行初始化操作,MASTER 与 ALLHIS 表会自动创建,无需处理");
             log.error(e.getMessage());
         }
-        return isHis || isMaster || isNow;
+        return isCalc;
     }
 
     @Override
     public void initResultContext(String calculateInstanceNumber) {
         log.info("本数据计算过程中如果已经出现结果,不会处理结果的数据,仅处理,原始数据已经保存至 RWA_APM_BUS_RS_ACCADJUSTMENT 等表,请根据实际情况查询");
-        log.info("select * from RWA_APM_BUS_RS_ACCADJUSTMENT" + FinalStrs._ALLHIS + " where  CALCINDEX = '{}'", calculateInstanceNumber);
-        log.info("select * from RWA_APM_BUS_RS_ACCADJUSTMENT" + FinalStrs._MASTER + " where  CALCINDEX = '{}'", calculateInstanceNumber);
-        log.info("select * from RWA_APM_BUS_RS_ACCADJUSTMENT where  CALCINDEX = '{}'", calculateInstanceNumber);
-        log.info("select * from RWA_APM_BUS_RS_LEDGRESULT" + FinalStrs._ALLHIS + " where  CALCINDEX = '{}'", calculateInstanceNumber);
-        log.info("select * from RWA_APM_BUS_RS_LEDGRESULT" + FinalStrs._MASTER + " where  CALCINDEX = '{}'", calculateInstanceNumber);
-        log.info("select * from RWA_APM_BUS_RS_LEDGRESULT where  CALCINDEX = '{}'", calculateInstanceNumber);
+        log.info(UnitStaticFun.getSelectSql("RWA_APM_BUS_RS_ACCADJUSTMENT", FinalStrs._ALLHIS, calculateInstanceNumber));
+        log.info(UnitStaticFun.getSelectSql("RWA_APM_BUS_RS_ACCADJUSTMENT", FinalStrs._MASTER, calculateInstanceNumber));
+        log.info(UnitStaticFun.getSelectSql("RWA_APM_BUS_RS_ACCADJUSTMENT", null, calculateInstanceNumber));
+        log.info(UnitStaticFun.getSelectSql("RWA_APM_BUS_RS_LEDGRESULT", FinalStrs._ALLHIS, calculateInstanceNumber));
+        log.info(UnitStaticFun.getSelectSql("RWA_APM_BUS_RS_LEDGRESULT", FinalStrs._MASTER, calculateInstanceNumber));
+        log.info(UnitStaticFun.getSelectSql("RWA_APM_BUS_RS_LEDGRESULT", null, calculateInstanceNumber));
     }
 
     @Override
@@ -70,13 +73,13 @@ public class GeneralLedgerUnit extends CalcUnit {
     public void afterCalc(Map<String, Object> context) {
         // 计算之后,将数据复制到对应的 master与 allhis 表中
         // 总分勾稽规则定义表
-        UnitStaticFun.handleTableDataWithSuffixes("RWA_OBJ_CONF_GL_RECONCILIATION",this.getCalcUnitInstanceNumber());
+        UnitStaticFun.handleTableDataWithSuffixes("RWA_OBJ_CONF_GL_RECONCILIATION", this.getCalcUnitInstanceNumber());
         // 差异容忍度规则定义
-        UnitStaticFun.handleTableDataWithSuffixes("RWA_CALC_CONF_DIFFTOLERANCE",this.getCalcUnitInstanceNumber());
+        UnitStaticFun.handleTableDataWithSuffixes("RWA_CALC_CONF_DIFFTOLERANCE", this.getCalcUnitInstanceNumber());
         // 总账勾稽结果表
-        UnitStaticFun.handleTableDataWithSuffixes("RWA_APM_BUS_RS_LEDGRESULT",this.getCalcUnitInstanceNumber());
+        UnitStaticFun.handleTableDataWithSuffixes("RWA_APM_BUS_RS_LEDGRESULT", this.getCalcUnitInstanceNumber());
         // 总账差异结果表
-        UnitStaticFun.handleTableDataWithSuffixes("RWA_APM_BUS_RS_ACCADJUSTMENT",this.getCalcUnitInstanceNumber());
+        UnitStaticFun.handleTableDataWithSuffixes("RWA_APM_BUS_RS_ACCADJUSTMENT", this.getCalcUnitInstanceNumber());
     }
 
     @Override
@@ -96,5 +99,36 @@ public class GeneralLedgerUnit extends CalcUnit {
     @Override
     public void calc(CalcResult<String, Object> thisResult, String calculateInstanceNumber, Map<String, Object> context, Map<CalcUnit, CalcResult<String, Object>> sourceResults) {
         // 计算过程中,需要循环配置表并将每一个数据进行处理
+        StringSubstitutor sub = new StringSubstitutor(context);
+        RuleListService ruleListService = SpringUtil.getBean(RuleListService.class);
+        List<RuleListModel> ruleListModels = ruleListService.rule_list(new RuleListModel());
+        for (RuleListModel ruleListModel : ruleListModels) {
+            String subjectSql = sub.replace(ruleListModel.getSubjectSql());
+            String productSql = sub.replace(ruleListModel.getProductSql());
+            String subjectSum = DBExecutor.doQuery(subjectSql);
+            String productSum = DBExecutor.doQuery(productSql);
+            if (!NumberUtil.isNumber(subjectSum)) {
+                continue;
+            }
+            if (!NumberUtil.isNumber(productSum)) {
+                continue;
+            }
+//            Double subjectSumDouble = Double.valueOf(subjectSum);
+//            Double productSumDouble = Double.valueOf(productSum);
+            BigDecimal subjectSumBigDecimal = new BigDecimal(subjectSum);
+            BigDecimal productSumBigDecimal = new BigDecimal(productSum);
+            BigDecimal result = subjectSumBigDecimal.subtract(productSumBigDecimal);// 取 总账-勾稽明细
+            if (result.compareTo(BigDecimal.ZERO) < 0) {
+                // 如果 为负数 总账 小于 勾稽明细
+
+            }else if(result.compareTo(BigDecimal.ZERO) > 0) {
+                // 如果 为正数 总账 大于 勾稽明细
+
+            }else {
+                // 如果 为 0 总账等于勾稽明细
+
+            }
+
+        }
     }
 }

+ 27 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/utils/UnitStaticFun.java

@@ -62,4 +62,31 @@ public class UnitStaticFun {
         DBExecutor.doModify(StrUtil.format("delete from {} where CALCINDEX = '{}'", targetTable, calculateInstanceNumber));
         DBExecutor.doModify(StrUtil.format("insert into {} select * from {} where CALCINDEX = '{}'", targetTable, baseTableName, calculateInstanceNumber));
     }
+
+
+    public static boolean isHasCalcFinished(String baseTableName ,String calcInstanceNumber) {
+        boolean isHis = isCalcFinished(baseTableName,FinalStrs._ALLHIS,calcInstanceNumber);
+        boolean isMaster = isCalcFinished(baseTableName,FinalStrs._MASTER,calcInstanceNumber);
+        boolean isNow = isCalcFinished(baseTableName,null,calcInstanceNumber);
+        return isHis||isMaster||isNow;
+    }
+
+    public static boolean isCalcFinished(String baseTableName , String suffix , String calculateInstanceNumber) {
+        if (StrUtil.isBlank(suffix)) {
+            suffix = "";
+        }
+        String targetTable = StrUtil.format("{}{}", baseTableName, suffix);
+        String sql = StrUtil.format("select count(1) from {} where CALCINDEX = '{}'", targetTable, calculateInstanceNumber);
+        return !StrUtil.equals("0", (DBExecutor.doQuery(sql)));
+    }
+
+
+    public static String getSelectSql(String baseTableName , String suffix, String calcInstanceNumber) {
+        if (StrUtil.isBlank(suffix)) {
+            suffix = "";
+        }
+        String targetTable = StrUtil.format("{}{}", baseTableName, suffix);
+        return StrUtil.format("select * from {} where CALCINDEX = '{}'", targetTable, calcInstanceNumber);
+    }
+
 }