|
@@ -1,15 +1,23 @@
|
|
package com.sundata.product.rwa.calc.service.implement.units;
|
|
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.core.util.StrUtil;
|
|
|
|
+import cn.hutool.extra.spring.SpringUtil;
|
|
|
|
+import cn.hutool.extra.template.TemplateUtil;
|
|
import com.sundata.common.util.DBExecutor;
|
|
import com.sundata.common.util.DBExecutor;
|
|
import com.sundata.product.rwa.calc.service.CalcResult;
|
|
import com.sundata.product.rwa.calc.service.CalcResult;
|
|
import com.sundata.product.rwa.calc.service.CalcUnit;
|
|
import com.sundata.product.rwa.calc.service.CalcUnit;
|
|
import com.sundata.product.rwa.calc.service.finals.CalcType;
|
|
import com.sundata.product.rwa.calc.service.finals.CalcType;
|
|
import com.sundata.product.rwa.calc.utils.FinalStrs;
|
|
import com.sundata.product.rwa.calc.utils.FinalStrs;
|
|
import com.sundata.product.rwa.calc.utils.UnitStaticFun;
|
|
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.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
@@ -28,32 +36,27 @@ public class GeneralLedgerUnit extends CalcUnit {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public boolean isCalcFinished(String calculateInstanceNumber) {
|
|
public boolean isCalcFinished(String calculateInstanceNumber) {
|
|
- boolean isHis = false;
|
|
|
|
- boolean isMaster = false;
|
|
|
|
- boolean isNow = false;
|
|
|
|
|
|
+ boolean isCalc = false;
|
|
try {
|
|
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) {
|
|
} catch (Exception e) {
|
|
log.warn("若首次运行,且没有进行初始化操作,MASTER 与 ALLHIS 表会自动创建,无需处理");
|
|
log.warn("若首次运行,且没有进行初始化操作,MASTER 与 ALLHIS 表会自动创建,无需处理");
|
|
log.error(e.getMessage());
|
|
log.error(e.getMessage());
|
|
}
|
|
}
|
|
- return isHis || isMaster || isNow;
|
|
|
|
|
|
+ return isCalc;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void initResultContext(String calculateInstanceNumber) {
|
|
public void initResultContext(String calculateInstanceNumber) {
|
|
log.info("本数据计算过程中如果已经出现结果,不会处理结果的数据,仅处理,原始数据已经保存至 RWA_APM_BUS_RS_ACCADJUSTMENT 等表,请根据实际情况查询");
|
|
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
|
|
@Override
|
|
@@ -70,13 +73,13 @@ public class GeneralLedgerUnit extends CalcUnit {
|
|
public void afterCalc(Map<String, Object> context) {
|
|
public void afterCalc(Map<String, Object> context) {
|
|
// 计算之后,将数据复制到对应的 master与 allhis 表中
|
|
// 计算之后,将数据复制到对应的 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
|
|
@Override
|
|
@@ -96,5 +99,36 @@ public class GeneralLedgerUnit extends CalcUnit {
|
|
@Override
|
|
@Override
|
|
public void calc(CalcResult<String, Object> thisResult, String calculateInstanceNumber, Map<String, Object> context, Map<CalcUnit, CalcResult<String, Object>> sourceResults) {
|
|
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 总账等于勾稽明细
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|