|
@@ -0,0 +1,136 @@
|
|
|
+package com.sundata.product.rwa.calc.service.implement.units;
|
|
|
+
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+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 org.slf4j.Logger;
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+public class GeneralLedgerGetterUnit extends CalcUnit {
|
|
|
+ private static final Logger log = LoggerFactory.getLogger(GeneralLedgerGetterUnit.class);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 创建数据单元的绝对对象,对象必须包含如下参数
|
|
|
+ *
|
|
|
+ * @param calcCode 计算对象编号
|
|
|
+ * @param calcName 计算对象名称
|
|
|
+ * @param initContext 计算单元初始化参数
|
|
|
+ */
|
|
|
+ public GeneralLedgerGetterUnit(String calcCode, String calcName, int sequence, Map<String, Object> initContext) {
|
|
|
+ super(calcCode, calcName, CalcType.GeneralLedger, sequence, initContext);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean isCalcFinished(String calculateInstanceNumber) {
|
|
|
+ boolean isHis = false;
|
|
|
+ boolean isMaster = false;
|
|
|
+ boolean isNow = 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 + "'")));
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.warn("若首次运行,且没有进行初始化操作,MASTER 与 ALLHIS 表会自动创建,无需处理");
|
|
|
+ log.error(e.getMessage());
|
|
|
+ }
|
|
|
+ return isHis || isMaster || isNow;
|
|
|
+ }
|
|
|
+
|
|
|
+ @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);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<CalcUnit> getSourceCalcUnits() {
|
|
|
+ return List.of();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int getSequence() {
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void afterCalc(Map<String, Object> context) {
|
|
|
+
|
|
|
+ // 计算之后,将数据复制到对应的 master与 allhis 表中
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void beforeCalc(Map<String, Object> context) {
|
|
|
+ // 计算前 先确认表是否存在,不存在则创建表
|
|
|
+ // 基础配置表
|
|
|
+ try {
|
|
|
+ DBExecutor.doQuery("select 1 from RWA_OBJ_CONF_GL_RECONCILIATION" + FinalStrs._ALLHIS);
|
|
|
+ } catch (Exception e) {
|
|
|
+ DBExecutor.doModify("drop table if exists RWA_OBJ_CONF_GL_RECONCILIATION" + FinalStrs._ALLHIS);
|
|
|
+ DBExecutor.doModify("create table RWA_OBJ_CONF_GL_RECONCILIATION" + FinalStrs._ALLHIS + " as select * from RWA_OBJ_CONF_GL_RECONCILIATION");
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ DBExecutor.doQuery("select 1 from RWA_OBJ_CONF_GL_RECONCILIATION" + FinalStrs._MASTER);
|
|
|
+ } catch (Exception e) {
|
|
|
+ DBExecutor.doModify("drop table if exists RWA_OBJ_CONF_GL_RECONCILIATION" + FinalStrs._MASTER);
|
|
|
+ DBExecutor.doModify("create table RWA_OBJ_CONF_GL_RECONCILIATION" + FinalStrs._MASTER + " as select * from RWA_OBJ_CONF_GL_RECONCILIATION");
|
|
|
+ }
|
|
|
+ // 差异容忍度配置
|
|
|
+ try {
|
|
|
+ DBExecutor.doQuery("select 1 from RWA_CALC_CONF_DIFFTOLERANCE" + FinalStrs._ALLHIS);
|
|
|
+ } catch (Exception e) {
|
|
|
+ DBExecutor.doModify("drop table if exists RWA_CALC_CONF_DIFFTOLERANCE" + FinalStrs._ALLHIS);
|
|
|
+ DBExecutor.doModify("create table RWA_CALC_CONF_DIFFTOLERANCE" + FinalStrs._ALLHIS + " as select * from RWA_OBJ_CONF_GL_RECONCILIATION");
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ DBExecutor.doQuery("select 1 from RWA_CALC_CONF_DIFFTOLERANCE" + FinalStrs._MASTER);
|
|
|
+ } catch (Exception e) {
|
|
|
+ DBExecutor.doModify("drop table if exists RWA_CALC_CONF_DIFFTOLERANCE" + FinalStrs._MASTER);
|
|
|
+ DBExecutor.doModify("create table RWA_CALC_CONF_DIFFTOLERANCE" + FinalStrs._MASTER + " as select * from RWA_OBJ_CONF_GL_RECONCILIATION");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 总账勾稽结果表
|
|
|
+ try {
|
|
|
+ DBExecutor.doQuery("select 1 from RWA_APM_BUS_RS_LEDGRESULT" + FinalStrs._ALLHIS);
|
|
|
+ } catch (Exception e) {
|
|
|
+ DBExecutor.doModify("drop table if exists RWA_APM_BUS_RS_LEDGRESULT" + FinalStrs._ALLHIS);
|
|
|
+ DBExecutor.doModify("create table RWA_APM_BUS_RS_LEDGRESULT" + FinalStrs._ALLHIS + " as select * from RWA_OBJ_CONF_GL_RECONCILIATION");
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ DBExecutor.doQuery("select 1 from RWA_APM_BUS_RS_LEDGRESULT" + FinalStrs._MASTER);
|
|
|
+ } catch (Exception e) {
|
|
|
+ DBExecutor.doModify("drop table if exists RWA_APM_BUS_RS_LEDGRESULT" + FinalStrs._MASTER);
|
|
|
+ DBExecutor.doModify("create table RWA_APM_BUS_RS_LEDGRESULT" + FinalStrs._MASTER + " as select * from RWA_OBJ_CONF_GL_RECONCILIATION");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 总账差异结果表
|
|
|
+ try {
|
|
|
+ DBExecutor.doQuery("select 1 from RWA_APM_BUS_RS_ACCADJUSTMENT" + FinalStrs._ALLHIS);
|
|
|
+ } catch (Exception e) {
|
|
|
+ DBExecutor.doModify("drop table if exists RWA_APM_BUS_RS_ACCADJUSTMENT" + FinalStrs._ALLHIS);
|
|
|
+ DBExecutor.doModify("create table RWA_APM_BUS_RS_ACCADJUSTMENT" + FinalStrs._ALLHIS + " as select * from RWA_OBJ_CONF_GL_RECONCILIATION");
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ DBExecutor.doQuery("select 1 from RWA_APM_BUS_RS_ACCADJUSTMENT" + FinalStrs._MASTER);
|
|
|
+ } catch (Exception e) {
|
|
|
+ DBExecutor.doModify("drop table if exists RWA_APM_BUS_RS_ACCADJUSTMENT" + FinalStrs._MASTER);
|
|
|
+ DBExecutor.doModify("create table RWA_APM_BUS_RS_ACCADJUSTMENT" + FinalStrs._MASTER + " as select * from RWA_OBJ_CONF_GL_RECONCILIATION");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void calc(CalcResult<String, Object> thisResult, String calculateInstanceNumber, Map<String, Object> context, Map<CalcUnit, CalcResult<String, Object>> sourceResults) {
|
|
|
+ // 计算过程中,需要循环配置表并将每一个数据进行处理
|
|
|
+ }
|
|
|
+}
|