Переглянути джерело

完善计算过程的逻辑

CodeLife Leno 1 місяць тому
батько
коміт
bbccca78ef
13 змінених файлів з 53 додано та 50 видалено
  1. 6 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/CalcUnit.java
  2. 7 7
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/CalcTaskUnit.java
  3. 2 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/DataImportUnit.java
  4. 2 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/DataQualityUnit.java
  5. 2 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/GeneralLedgerUnit.java
  6. 2 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/IntegratedRWAUnit.java
  7. 2 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/ProjectDivisionUnit.java
  8. 2 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/QualifiedSlowReleaseUnit.java
  9. 2 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/ReportInitUnit.java
  10. 2 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/RiskExposureUnit.java
  11. 2 2
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/SingleRWAUnit.java
  12. 1 7
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/SqlUnit.java
  13. 21 16
      Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/StageUnit.java

+ 6 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/CalcUnit.java

@@ -31,6 +31,7 @@ public abstract class CalcUnit implements Calc, Serializable, Comparator<CalcUni
      * 计算单元类型
      */
     private final CalcType calcType;
+    private final int sequence;
 
     /**
      * 计算状态
@@ -61,10 +62,11 @@ public abstract class CalcUnit implements Calc, Serializable, Comparator<CalcUni
      * @param calcType    计算类型
      * @param initContext 计算单元初始化参数
      */
-    public CalcUnit(String calcCode, String calcName, CalcType calcType, Map<String, Object> initContext) {
+    public CalcUnit(String calcCode, String calcName, CalcType calcType, int sequence, Map<String, Object> initContext) {
         this.calcCode = calcCode;
         this.calcName = calcName;
         this.calcType = calcType;
+        this.sequence = sequence;
         this.initContext = initContext;
     }
 
@@ -264,7 +266,9 @@ public abstract class CalcUnit implements Calc, Serializable, Comparator<CalcUni
      * 需要子对象实现的获取顺序号的方法
      * @return 序号
      */
-    public abstract int getSequence();
+    public int getSequence(){
+        return sequence;
+    }
 
     @Override
     public int compare(CalcUnit o1, CalcUnit o2) {

+ 7 - 7
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/CalcTaskUnit.java

@@ -15,7 +15,6 @@ import com.sundata.product.rwa.rwacalcconfig004rwa.service.StageConfigService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -38,7 +37,7 @@ public class CalcTaskUnit extends CalcUnit {
      * @param initContext 计算单元初始化参数
      */
     public CalcTaskUnit(MeteringManageModel meteringManageModel, String calcCode, String calcName, Map<String, Object> initContext) {
-        super(calcCode, calcName, CalcType.MAIN, initContext);
+        super(calcCode, calcName, CalcType.MAIN, 0, initContext);
         this.meteringManageModel = meteringManageModel;
         timeInterval.start();
     }
@@ -76,22 +75,23 @@ public class CalcTaskUnit extends CalcUnit {
         // 搜索阶段的过程包括了所有阶段
         StageConfigService stageConfigService = SpringUtil.getBean("stageConfigService");
         List<StageDefinitionModel> getDataList = stageConfigService.getDataList(new StageDefinitionModel());
-        getDataList.sort((a,b) -> {
-            if (StrUtil.isBlank(a.getStageIndex())){
+        getDataList.sort((a, b) -> {
+            if (StrUtil.isBlank(a.getStageIndex())) {
                 a.setStageIndex("0");
             }
-            if (StrUtil.isBlank(b.getStageIndex())){
+            if (StrUtil.isBlank(b.getStageIndex())) {
                 b.setStageIndex("0");
             }
             int aN = NumberUtil.parseInt(a.getStageIndex(), 0);
             int bN = NumberUtil.parseInt(b.getStageIndex(), 0);
             return aN - bN;
         });
-        for (StageDefinitionModel stageDefinitionModel : getDataList) {
+        for (int i = 0; i < getDataList.size(); i++) {
+            StageDefinitionModel stageDefinitionModel = getDataList.get(i);
             if ("0".equals(stageDefinitionModel.getStageIsvalid())) {
                 continue;
             }
-            StageUnit stageUnit = new StageUnit(stageDefinitionModel, stageDefinitionModel.getStageId(), stageDefinitionModel.getStageName(), this.getInitContext());
+            StageUnit stageUnit = new StageUnit(stageDefinitionModel, stageDefinitionModel.getStageId(), stageDefinitionModel.getStageName(), i, this.getInitContext());
             sourceCalcUnits.add(stageUnit);
         }
         return sourceCalcUnits;

+ 2 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/DataImportUnit.java

@@ -19,8 +19,8 @@ public class DataImportUnit extends CalcUnit {
      * @param calcName    计算对象名称
      * @param initContext 计算单元初始化参数
      */
-    public DataImportUnit(String calcCode, String calcName, Map<String, Object> initContext) {
-        super(calcCode, calcName, CalcType.DataImport, initContext);
+    public DataImportUnit(String calcCode, String calcName , int sequence, Map<String, Object> initContext) {
+        super(calcCode, calcName, CalcType.DataImport, sequence, initContext);
     }
 
     @Override

+ 2 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/DataQualityUnit.java

@@ -15,8 +15,8 @@ public class DataQualityUnit extends CalcUnit {
      * @param calcName    计算对象名称
      * @param initContext 计算单元初始化参数
      */
-    public DataQualityUnit(String calcCode, String calcName, Map<String, Object> initContext) {
-        super(calcCode, calcName, CalcType.DataQuality, initContext);
+    public DataQualityUnit(String calcCode, String calcName, int sequence, Map<String, Object> initContext) {
+        super(calcCode, calcName, CalcType.DataQuality ,sequence, initContext);
     }
 
     @Override

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

@@ -15,8 +15,8 @@ public class GeneralLedgerUnit extends CalcUnit {
      * @param calcName    计算对象名称
      * @param initContext 计算单元初始化参数
      */
-    public GeneralLedgerUnit(String calcCode, String calcName, Map<String, Object> initContext) {
-        super(calcCode, calcName, CalcType.GeneralLedger, initContext);
+    public GeneralLedgerUnit(String calcCode, String calcName , int sequence, Map<String, Object> initContext) {
+        super(calcCode, calcName, CalcType.GeneralLedger ,sequence, initContext);
     }
 
     @Override

+ 2 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/IntegratedRWAUnit.java

@@ -15,8 +15,8 @@ public class IntegratedRWAUnit extends CalcUnit {
      * @param calcName    计算对象名称
      * @param initContext 计算单元初始化参数
      */
-    public IntegratedRWAUnit(String calcCode, String calcName, Map<String, Object> initContext) {
-        super(calcCode, calcName, CalcType.IntegratedRWA, initContext);
+    public IntegratedRWAUnit(String calcCode, String calcName , int sequence, Map<String, Object> initContext) {
+        super(calcCode, calcName, CalcType.IntegratedRWA ,sequence, initContext);
     }
 
     @Override

+ 2 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/ProjectDivisionUnit.java

@@ -15,8 +15,8 @@ public class ProjectDivisionUnit extends CalcUnit {
      * @param calcName    计算对象名称
      * @param initContext 计算单元初始化参数
      */
-    public ProjectDivisionUnit(String calcCode, String calcName, Map<String, Object> initContext) {
-        super(calcCode, calcName, CalcType.ProjectDivision, initContext);
+    public ProjectDivisionUnit(String calcCode, String calcName, int sequence, Map<String, Object> initContext) {
+        super(calcCode, calcName, CalcType.ProjectDivision, sequence, initContext);
     }
 
     @Override

+ 2 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/QualifiedSlowReleaseUnit.java

@@ -15,8 +15,8 @@ public class QualifiedSlowReleaseUnit extends CalcUnit {
      * @param calcName    计算对象名称
      * @param initContext 计算单元初始化参数
      */
-    public QualifiedSlowReleaseUnit(String calcCode, String calcName, Map<String, Object> initContext) {
-        super(calcCode, calcName, CalcType.QualifiedSlowRelease, initContext);
+    public QualifiedSlowReleaseUnit(String calcCode, String calcName , int sequence, Map<String, Object> initContext) {
+        super(calcCode, calcName, CalcType.QualifiedSlowRelease , sequence, initContext);
     }
 
     @Override

+ 2 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/ReportInitUnit.java

@@ -15,8 +15,8 @@ public class ReportInitUnit extends CalcUnit {
      * @param calcName    计算对象名称
      * @param initContext 计算单元初始化参数
      */
-    public ReportInitUnit(String calcCode, String calcName, Map<String, Object> initContext) {
-        super(calcCode, calcName, CalcType.ReportInit, initContext);
+    public ReportInitUnit(String calcCode, String calcName , int sequence, Map<String, Object> initContext) {
+        super(calcCode, calcName, CalcType.ReportInit , sequence, initContext);
     }
 
     @Override

+ 2 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/RiskExposureUnit.java

@@ -15,8 +15,8 @@ public class RiskExposureUnit extends CalcUnit {
      * @param calcName    计算对象名称
      * @param initContext 计算单元初始化参数
      */
-    public RiskExposureUnit(String calcCode, String calcName, Map<String, Object> initContext) {
-        super(calcCode, calcName, CalcType.RiskExposure, initContext);
+    public RiskExposureUnit(String calcCode, String calcName , int sequence, Map<String, Object> initContext) {
+        super(calcCode, calcName, CalcType.RiskExposure , sequence, initContext);
     }
 
     @Override

+ 2 - 2
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/SingleRWAUnit.java

@@ -15,8 +15,8 @@ public class SingleRWAUnit extends CalcUnit {
      * @param calcName    计算对象名称
      * @param initContext 计算单元初始化参数
      */
-    public SingleRWAUnit(String calcCode, String calcName, Map<String, Object> initContext) {
-        super(calcCode, calcName, CalcType.SingleRWA, initContext);
+    public SingleRWAUnit(String calcCode, String calcName , int sequence , Map<String, Object> initContext) {
+        super(calcCode, calcName, CalcType.SingleRWA , sequence, initContext);
     }
 
     @Override

+ 1 - 7
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/SqlUnit.java

@@ -15,7 +15,6 @@ import java.util.Map;
 public class SqlUnit extends CalcUnit {
     final static Logger log = LoggerFactory.getLogger(SqlUnit.class);
     final String sql;
-    final int sequence;
 
     /**
      * 创建数据单元的绝对对象,对象必须包含如下参数
@@ -25,9 +24,8 @@ public class SqlUnit extends CalcUnit {
      * @param initContext 计算单元初始化参数
      */
     public SqlUnit(String calcCode, String calcName, Map<String, Object> initContext, String sql, int sequence) {
-        super(calcCode, calcName, CalcType.SQL, initContext);
+        super(calcCode, calcName, CalcType.SQL, sequence, initContext);
         this.sql = sql;
-        this.sequence = sequence;
     }
 
     @Override
@@ -45,10 +43,6 @@ public class SqlUnit extends CalcUnit {
         return List.of();
     }
 
-    @Override
-    public int getSequence() {
-        return this.sequence;
-    }
 
     @Override
     public void afterCalc(Map<String, Object> context) {

+ 21 - 16
Procedure/backend/project/src/main/java/com/sundata/product/rwa/calc/service/implement/units/StageUnit.java

@@ -9,6 +9,8 @@ import com.sundata.product.rwa.calc.service.finals.CalcType;
 import com.sundata.product.rwa.rwacalcconfig004rwa.model.StageDefinitionModel;
 import com.sundata.product.rwa.rwacalcconfig004rwa.model.StageStepsModel;
 import com.sundata.product.rwa.rwacalcconfig004rwa.service.StageConfigService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.LinkedList;
 import java.util.List;
@@ -16,6 +18,7 @@ import java.util.Map;
 
 public class StageUnit extends CalcUnit {
 
+    private static final Logger log = LoggerFactory.getLogger(StageUnit.class);
     final StageDefinitionModel stageDefinitionModel;
 
     /**
@@ -25,8 +28,8 @@ public class StageUnit extends CalcUnit {
      * @param calcName    计算对象名称
      * @param initContext 计算单元初始化参数
      */
-    public StageUnit(StageDefinitionModel stageDefinitionModel, String calcCode, String calcName, Map<String, Object> initContext) {
-        super(calcCode, calcName, CalcType.STAGE, initContext);
+    public StageUnit(StageDefinitionModel stageDefinitionModel, String calcCode, String calcName, int sequence, Map<String, Object> initContext) {
+        super(calcCode, calcName, CalcType.STAGE, sequence, initContext);
         this.stageDefinitionModel = stageDefinitionModel;
     }
 
@@ -63,19 +66,21 @@ public class StageUnit extends CalcUnit {
             StageStepsModel sm = stageStepsModels.get(i);
             CalcUnit unit = null;
             if ("1".equals(sm.getStepType())) {
-                unit = new SqlUnit("SQL"+sm.getStepIndex(),"SQL"+sm.getStepIndex(),this.getInitContext(),sm.getStepInfo(),NumberUtil.parseInt(sm.getStepIndex()));
-            }else if ("2".equals(sm.getStepType())) {
-
-            }else if ("3".equals(sm.getStepType())) {
-
-            }else if ("4".equals(sm.getStepType())) {
-
-            }else if ("5".equals(sm.getStepType())) {
-
-            }else if ("6".equals(sm.getStepType())) {
-
-            }else if ("7".equals(sm.getStepType())) {
-
+                unit = new SqlUnit("SQL" + sm.getStepIndex(), "SQL" + sm.getStepIndex(), this.getInitContext(), sm.getStepInfo(), NumberUtil.parseInt(sm.getStepIndex()));
+            } else if ("2".equals(sm.getStepType())) {
+                unit = new DataImportUnit(sm.getStepId(), "补录任务阶段", NumberUtil.parseInt(sm.getStepIndex()), getInitContext());
+            } else if ("3".equals(sm.getStepType())) {
+                unit = new QualifiedSlowReleaseUnit(sm.getStepId(), "合格缓释阶段", NumberUtil.parseInt(sm.getStepIndex()), getInitContext());
+            } else if ("4".equals(sm.getStepType())) {
+                unit = new ProjectDivisionUnit(sm.getStepId(), "表外项目划分", NumberUtil.parseInt(sm.getStepIndex()), getInitContext());
+            } else if ("5".equals(sm.getStepType())) {
+                unit = new RiskExposureUnit(sm.getStepId(),"风险暴露分类", NumberUtil.parseInt(sm.getStepIndex()), getInitContext());
+            } else if ("6".equals(sm.getStepType())) {
+                unit = new SingleRWAUnit(sm.getStepId(), "债项级别RWA计量", NumberUtil.parseInt(sm.getStepIndex()), getInitContext());
+                calcUnitList.add(unit);
+                unit = new IntegratedRWAUnit(sm.getStepId(),"法人RWA计量", NumberUtil.parseInt(sm.getStepIndex()), getInitContext());
+            } else if ("7".equals(sm.getStepType())) {
+                unit = new ReportInitUnit(sm.getStepId() , "报表填报", NumberUtil.parseInt(sm.getStepIndex()), getInitContext());
             }
             calcUnitList.add(unit);
 
@@ -103,6 +108,6 @@ public class StageUnit extends CalcUnit {
 
     @Override
     public void calc(CalcResult<String, Object> thisResult, String calculateInstanceNumber, Map<String, Object> context, Map<CalcUnit, CalcResult<String, Object>> sourceResults) {
-
+        log.debug("阶段的计算过程除了必须的SQL逻辑,其他均调用外部步骤");
     }
 }