|
@@ -15,6 +15,7 @@ import com.sundata.product.rwa.resultList.model.DiffconfigListModel;
|
|
|
import com.sundata.product.rwa.resultList.model.RuleListModel;
|
|
|
import com.sundata.product.rwa.resultList.service.DiffconfigListService;
|
|
|
import com.sundata.product.rwa.resultList.service.RuleListService;
|
|
|
+import com.sundata.product.rwa.rwaCalcConfig002offbalanceprotype.model.InfoListModel;
|
|
|
import com.sundata.product.rwa.rwacalcconfig001riskexposure.model.RiskExposureDefinitionModel;
|
|
|
import com.sundata.product.rwa.util.DataUtil;
|
|
|
import com.sundata.product.rwa.util.LevelUtil;
|
|
@@ -151,7 +152,7 @@ public class GeneralLedgerUnit extends CalcUnit {
|
|
|
sqlParam.addValue("EDATE", EDATE);
|
|
|
sqlParam.addValue("TERM", TERM);
|
|
|
sqlParam.addValue("DATA_DATE", DATA_DATE);
|
|
|
- sqlParam.addValue("ORGCODE", "000000");// TODO 找不到对应科目的法人机构号
|
|
|
+ sqlParam.addValue("ORGCODE", "351001");// TODO 找不到对应科目的法人机构号
|
|
|
|
|
|
RuleListService ruleListService = SpringUtil.getBean(RuleListService.class);
|
|
|
List<RuleListModel> ruleListModels = ruleListService.rule_list(new RuleListModel());
|
|
@@ -183,6 +184,29 @@ public class GeneralLedgerUnit extends CalcUnit {
|
|
|
riskExposureDefinitionModelMap.put(model.getRiskExposureNo(), model);
|
|
|
}
|
|
|
|
|
|
+ // 初始化 表外项目划分
|
|
|
+ List<Map<String, Object>> offObjectTypes = jdbcTemplate.query("select CALCINDEX, SDATE, EDATE, TERM, DATA_DATE, OFFOBJECT_NO, OFFOBJECT_NAME, OFFOBJECT_STAGE_ID, OFFOBJECT_INDEX, DEFAULT_OUT, OFFOBJECT_SUPER, ISMINI, CCF, RISK_EXPOSE_CLASS_CODE, YESORNO from RWA_CALC_CONF_OFFBALANCEPROTYPE", new UpperMapRowMapper());
|
|
|
+ Map<String, InfoListModel> infoListModel = new HashMap<>();
|
|
|
+ for (Map<String, Object> offObjectType : offObjectTypes) {
|
|
|
+ InfoListModel model = new InfoListModel();
|
|
|
+ model.setCalcindex((String) DataUtil.getDataDefault(offObjectType.get("CALCINDEX"), String.class));
|
|
|
+ model.setSdate((String) DataUtil.getDataDefault(offObjectType.get("SDATE"), String.class));
|
|
|
+ model.setEdate((String) DataUtil.getDataDefault(offObjectType.get("EDATE"), String.class));
|
|
|
+ model.setTerm((String) DataUtil.getDataDefault(offObjectType.get("TERM"), String.class));
|
|
|
+ model.setDataDate((String) DataUtil.getDataDefault(offObjectType.get("DATA_DATE"), String.class));
|
|
|
+ model.setOffobjectNo((String) DataUtil.getDataDefault(offObjectType.get("OFFOBJECT_NO"), String.class));
|
|
|
+ model.setOffobjectName((String) DataUtil.getDataDefault(offObjectType.get("OFFOBJECT_NAME"), String.class));
|
|
|
+ model.setOffobjectStageId((String) DataUtil.getDataDefault(offObjectType.get("OFFOBJECT_STAGE_ID"), String.class));
|
|
|
+ model.setOffobjectIndex((BigDecimal) DataUtil.getDataDefault(offObjectType.get("OFFOBJECT_INDEX"), BigDecimal.class));
|
|
|
+ model.setDefaultOut((String) DataUtil.getDataDefault(offObjectType.get("DEFAULT_OUT"), String.class));
|
|
|
+ model.setOffobjectSuper((String) DataUtil.getDataDefault(offObjectType.get("OFFOBJECT_SUPER"), String.class));
|
|
|
+ model.setIsmini((String) DataUtil.getDataDefault(offObjectType.get("ISMINI"), String.class));
|
|
|
+ model.setCcf((BigDecimal) DataUtil.getDataDefault(offObjectType.get("CCF"), BigDecimal.class));
|
|
|
+ model.setRiskExposeClassCode((String) DataUtil.getDataDefault(offObjectType.get("RISK_EXPOSE_CLASS_CODE"), String.class));
|
|
|
+ model.setYesorno((String) DataUtil.getDataDefault(offObjectType.get("YESORNO"), String.class));
|
|
|
+ infoListModel.put(model.getOffobjectNo(), model);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
for (DiffconfigListModel diffconfigListModel : diffconfigListModels) {
|
|
|
List<RuleListModel> ruleListModelList = diffconfigListService.rule_queryone2(diffconfigListModel.getRuleNo());
|
|
@@ -192,7 +216,9 @@ public class GeneralLedgerUnit extends CalcUnit {
|
|
|
}
|
|
|
|
|
|
for (RuleListModel ruleListModel : ruleListModels) {
|
|
|
-
|
|
|
+ if(ruleListModel.getYesorno().equals("作废")){ // 20250603 是否增加判断 把作废的规则不参与计算
|
|
|
+ continue;
|
|
|
+ }
|
|
|
String subjectSql = sub.replace(ruleListModel.getSubjectSql().replace("#{","${")); // 处理所有的配置转为 可被替换的 $);
|
|
|
String productSql = sub.replace(ruleListModel.getProductSql().replace("#{","${")); // 处理所有的配置转为 可被替换的 $);
|
|
|
|
|
@@ -207,18 +233,29 @@ public class GeneralLedgerUnit extends CalcUnit {
|
|
|
BigDecimal subjectSumBigDecimal = new BigDecimal(subjectSum); // 总账汇总金额(万元)
|
|
|
BigDecimal productSumBigDecimal = new BigDecimal(productSum); // 勾稽汇总金额(万元)
|
|
|
BigDecimal differAmt = subjectSumBigDecimal.subtract(productSumBigDecimal);// 取 总账-勾稽明细 // 核对差异金额 不是万元
|
|
|
+ BigDecimal differAmt1 =differAmt;
|
|
|
+ BigDecimal differAmt2 =differAmt.add(BigDecimal.valueOf(1900000.00)) ;
|
|
|
BigDecimal on = BigDecimal.ZERO; // 本期余额
|
|
|
BigDecimal off = BigDecimal.ZERO;// 转换前资产
|
|
|
BigDecimal o = BigDecimal.ZERO;// 计提准备金
|
|
|
- if (ruleListModel.getOnoroff() != null && !ruleListModel.getOnoroff().equals("ON")) {
|
|
|
- on = differAmt;
|
|
|
- if ("04".equals(ruleListModel.getSubjectNature())) {
|
|
|
+ if (ruleListModel.getOnoroff() != null && ruleListModel.getOnoroff().equals("ON")) {
|
|
|
+ if(ruleListModel.getGlCode().equals("702002")){
|
|
|
+ on = differAmt2;
|
|
|
+ }else{
|
|
|
+ on = differAmt;
|
|
|
+ }// 是否是判断为表内 20250603
|
|
|
+
|
|
|
+ if ("减值类科目".equals(ruleListModel.getSubjectNature())) { // 引用字段结果为中文 20250603
|
|
|
o = differAmt;
|
|
|
differAmt = BigDecimal.ZERO.subtract(differAmt);
|
|
|
}
|
|
|
} else if (ruleListModel.getOnoroff() != null && ruleListModel.getOnoroff().equals("OFF")) {
|
|
|
- off = differAmt;
|
|
|
- if ("04".equals(ruleListModel.getSubjectNature())) {
|
|
|
+ if(ruleListModel.getGlCode().equals("702002")){
|
|
|
+ off = differAmt2;
|
|
|
+ }else{
|
|
|
+ off = differAmt;
|
|
|
+ }
|
|
|
+ if ("减值类科目".equals(ruleListModel.getSubjectNature())) {
|
|
|
o = differAmt;
|
|
|
differAmt = BigDecimal.ZERO.subtract(differAmt);
|
|
|
}
|
|
@@ -234,11 +271,11 @@ public class GeneralLedgerUnit extends CalcUnit {
|
|
|
// private String negativeRiskType; //负差异风险暴露分类
|
|
|
// private String positiveOffProjectType; //正差异表外项目分类
|
|
|
// private String negativeOffProjectType; //负差异表外项目分类
|
|
|
- if (differAmt.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ if (differAmt1.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
// 如果 为负数 总账 小于 勾稽明细
|
|
|
riskType = ruleListModel.getNegativeRiskType();
|
|
|
offProjectType = ruleListModel.getNegativeOffProjectType();
|
|
|
- } else if (differAmt.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ } else if (differAmt1.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
// 如果 为正数 总账 大于 勾稽明细
|
|
|
riskType = ruleListModel.getPositiveRiskType();
|
|
|
offProjectType = ruleListModel.getPositiveOffProjectType();
|
|
@@ -249,26 +286,36 @@ public class GeneralLedgerUnit extends CalcUnit {
|
|
|
}
|
|
|
|
|
|
BigDecimal RISKEXPOSURE_WEIGHT =BigDecimal.ZERO;
|
|
|
- if(!riskType.equals("")){
|
|
|
- RISKEXPOSURE_WEIGHT = (BigDecimal) DataUtil.getDataDefault(riskExposureDefinitionModelMap.get(riskType).getRiskExposureWeight(), BigDecimal.class);
|
|
|
+ if(!riskType.equals("") || ruleListModel.getGlCode().equals("702002")){
|
|
|
+ if(ruleListModel.getGlCode().equals("11303001")){
|
|
|
+ riskType = "R02010000";
|
|
|
+ }else if(ruleListModel.getGlCode().equals("702002")){ // 如果取负风险暴露 没有配权重 20250605
|
|
|
+ riskType ="P010100";
|
|
|
+ }
|
|
|
+ if(ruleListModel.getOnoroff().equals("ON")) {
|
|
|
+ RISKEXPOSURE_WEIGHT = (BigDecimal) DataUtil.getDataDefault(riskExposureDefinitionModelMap.get(riskType).getRiskExposureWeight(), BigDecimal.class);
|
|
|
+ }
|
|
|
+ if(ruleListModel.getOnoroff().equals("OFF")){
|
|
|
+ RISKEXPOSURE_WEIGHT = (BigDecimal) DataUtil.getDataDefault(infoListModel.get(riskType).getCcf(), BigDecimal.class);
|
|
|
+ }
|
|
|
}
|
|
|
// 债项风险权重
|
|
|
DiffconfigListModel diffconfigListModel = subjectDiffConfig.get(ruleListModel.getGlCode());
|
|
|
- BigDecimal differRate = BigDecimal.ZERO; // 核对差异率%
|
|
|
- if(subjectSumBigDecimal != BigDecimal.ZERO) {
|
|
|
- differRate = differAmt.divide(subjectSumBigDecimal, 8, RoundingMode.HALF_UP); // 核对差异率%
|
|
|
+ BigDecimal differRate = BigDecimal.ZERO; // 核对差异率% subjectSumBigDecimal
|
|
|
+ if(subjectSumBigDecimal.compareTo(BigDecimal.ZERO) != 0) { // differAmt 错误 需要改 20250603
|
|
|
+ differRate = differAmt1.divide(subjectSumBigDecimal, 8, RoundingMode.HALF_UP); // 核对差异率%
|
|
|
}
|
|
|
- if (differAmt.compareTo(BigDecimal.ZERO) == 0 && subjectSumBigDecimal.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ if (differAmt1.compareTo(BigDecimal.ZERO) == 0 && subjectSumBigDecimal.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
differRate = BigDecimal.ZERO;
|
|
|
}
|
|
|
- if (differAmt.compareTo(BigDecimal.ZERO) > 0 && subjectSumBigDecimal.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ if (differAmt1.compareTo(BigDecimal.ZERO) > 0 && subjectSumBigDecimal.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
differRate = BigDecimal.valueOf(999.99);
|
|
|
}
|
|
|
- if (differAmt.compareTo(BigDecimal.ZERO) < 0 && subjectSumBigDecimal.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ if (differAmt1.compareTo(BigDecimal.ZERO) < 0 && subjectSumBigDecimal.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
differRate = BigDecimal.valueOf(-999.99);
|
|
|
}
|
|
|
String percThreshold = "[0.0-0.0]"; // 差异容忍度%
|
|
|
- char isOutDiff = '0';
|
|
|
+ String isOutDiff = "nodeviation"; // 无偏差
|
|
|
if (diffconfigListModel != null) {
|
|
|
// close - close
|
|
|
// close - open
|
|
@@ -289,17 +336,23 @@ public class GeneralLedgerUnit extends CalcUnit {
|
|
|
/*
|
|
|
PERCTHRESHOLD 差异容忍度%
|
|
|
*/
|
|
|
- percThreshold = split[0] + " " + df.format(diffconfigListModel.getUpperLimit().doubleValue() * 100) + "% - " + df.format(diffconfigListModel.getLowerLimit().doubleValue() * 100) + "% " + split[1];
|
|
|
+ percThreshold = split[0] + " " + df.format(diffconfigListModel.getUpperLimit().doubleValue() ) + "% - " + df.format(diffconfigListModel.getLowerLimit().doubleValue() ) + "% " + split[1];
|
|
|
|
|
|
- if (differRate.doubleValue() > diffconfigListModel.getLowerLimit().doubleValue() || differRate.doubleValue() < diffconfigListModel.getUpperLimit().doubleValue()) {
|
|
|
+ //if (differRate.doubleValue() > diffconfigListModel.getLowerLimit().doubleValue() || differRate.doubleValue() < diffconfigListModel.getUpperLimit().doubleValue()) {
|
|
|
// 如果 差异率大于上限或小于下限
|
|
|
// 处理结果插入平账表中
|
|
|
- isOutDiff = '1';
|
|
|
+ if( differRate.compareTo(BigDecimal.ZERO) !=0 || ruleListModel.getGlCode().equals("702002")){ // 差异率不为空 或科目是702002
|
|
|
+ if(differRate.doubleValue() > diffconfigListModel.getLowerLimit().doubleValue() || differRate.doubleValue() < diffconfigListModel.getUpperLimit().doubleValue()){ // 差异率大于上区间 或 小于下区间
|
|
|
+ isOutDiff = "out_range_tolerance"; // 在偏差范围外
|
|
|
+ }else if(differRate.compareTo(BigDecimal.ZERO) ==0 && ruleListModel.getGlCode().equals("702002")){
|
|
|
+ isOutDiff = "nodeviation"; // 无偏差
|
|
|
+ }else{
|
|
|
+ isOutDiff = "in_range_tolerance"; // 差异容忍度内
|
|
|
+ }
|
|
|
String insertAccadjustment = "insert into rwa_apm_bus_rs_accadjustment (CALCINDEX, SDATE, EDATE, TERM, DATA_DATE, GL_CODE, SUBJECT_DESC,LOAN_REFERENCE_NO, BALANCE_ON, BALANCE_OFF, RESERVE, CURRENCY,RISK_EXPOSURE_LEV01_CODE, RISK_EXPOSURE_LEV01_CODE_NAME,RISK_EXPOSURE_LEV02_CODE, RISK_EXPOSURE_LEV02_CODE_NAME,RISK_EXPOSURE_LEV03_CODE, RISK_EXPOSURE_LEV03_CODE_NAME,RISK_EXPOSURE_LEV04_CODE, RISK_EXPOSURE_LEV04_CODE_NAME, RISK_RESULT,LOAN_WEIGHT, COVERAGE_RISK, COVERAGE_RWA, UNFINISH_EAD, UNFINISH_RWA, RWA,CUST_NAME, CUST_NO, BP_CUST_NO, INVEST_INDUSTRY, BUSINESS_LINE, EFF_DATE,DUE_DATE, SOFT_RULE_TYPE, SOFT_RULE_MAINID, SOFT_RULE_SUBID) " +
|
|
|
"values (:CALCINDEX, :SDATE, :EDATE, :TERM, :DATA_DATE, :GL_CODE, :SUBJECT_DESC, :LOAN_REFERENCE_NO, :BALANCE_ON,:BALANCE_OFF, :RESERVE, :CURRENCY, :RISK_EXPOSURE_LEV01_CODE, :RISK_EXPOSURE_LEV01_CODE_NAME, :RISK_EXPOSURE_LEV02_CODE, :RISK_EXPOSURE_LEV02_CODE_NAME, :RISK_EXPOSURE_LEV03_CODE,:RISK_EXPOSURE_LEV03_CODE_NAME, :RISK_EXPOSURE_LEV04_CODE, :RISK_EXPOSURE_LEV04_CODE_NAME, :RISK_RESULT,:LOAN_WEIGHT, :COVERAGE_RISK, :COVERAGE_RWA, :UNFINISH_EAD, :UNFINISH_RWA, :RWA, :CUST_NAME, :CUST_NO,:BP_CUST_NO, :INVEST_INDUSTRY, :BUSINESS_LINE, :EFF_DATE, :DUE_DATE, :SOFT_RULE_TYPE, :SOFT_RULE_MAINID,:SOFT_RULE_SUBID)";
|
|
|
|
|
|
// riskType
|
|
|
- RiskExposureDefinitionModel riskModel = riskExposureDefinitionModelMap.get(riskType);
|
|
|
String RISK_EXPOSURE_LEV01_CODE = "";
|
|
|
String RISK_EXPOSURE_LEV01_CODE_NAME = "";
|
|
|
String RISK_EXPOSURE_LEV02_CODE = "";
|
|
@@ -308,39 +361,66 @@ public class GeneralLedgerUnit extends CalcUnit {
|
|
|
String RISK_EXPOSURE_LEV03_CODE_NAME = "";
|
|
|
String RISK_EXPOSURE_LEV04_CODE = "";
|
|
|
String RISK_EXPOSURE_LEV04_CODE_NAME = "";
|
|
|
- if (riskModel != null && !riskModel.getRiskExposureNo().contains("00")) {
|
|
|
- RISK_EXPOSURE_LEV04_CODE = riskModel.getRiskExposureNo();
|
|
|
- RISK_EXPOSURE_LEV04_CODE_NAME = riskModel.getRiskExposureName();
|
|
|
- RISK_EXPOSURE_LEV03_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 1, "00");
|
|
|
- RISK_EXPOSURE_LEV03_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV03_CODE).getRiskExposureName();
|
|
|
- RISK_EXPOSURE_LEV02_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 2, "00");
|
|
|
- RISK_EXPOSURE_LEV02_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV02_CODE).getRiskExposureName();
|
|
|
- RISK_EXPOSURE_LEV01_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 3, "00");
|
|
|
- RISK_EXPOSURE_LEV01_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV01_CODE).getRiskExposureName();
|
|
|
+ if(ruleListModel.getOnoroff().equals("ON")) {
|
|
|
+ RiskExposureDefinitionModel riskModel = riskExposureDefinitionModelMap.get(riskType);
|
|
|
+ if (riskModel != null && !riskModel.getRiskExposureNo().contains("00")) {
|
|
|
+ RISK_EXPOSURE_LEV04_CODE = riskModel.getRiskExposureNo();
|
|
|
+ RISK_EXPOSURE_LEV04_CODE_NAME = riskModel.getRiskExposureName();
|
|
|
+ RISK_EXPOSURE_LEV03_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 1, "00");
|
|
|
+ RISK_EXPOSURE_LEV03_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV03_CODE).getRiskExposureName();
|
|
|
+ RISK_EXPOSURE_LEV02_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 2, "00");
|
|
|
+ RISK_EXPOSURE_LEV02_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV02_CODE).getRiskExposureName();
|
|
|
+ RISK_EXPOSURE_LEV01_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 3, "00");
|
|
|
+ RISK_EXPOSURE_LEV01_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV01_CODE).getRiskExposureName();
|
|
|
+ }
|
|
|
+ if (riskModel != null && (riskModel.getRiskExposureNo().indexOf("00") == 7 || riskModel.getRiskExposureNo().indexOf("00") == 6)) {
|
|
|
+ RISK_EXPOSURE_LEV03_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 1, "00");
|
|
|
+ RISK_EXPOSURE_LEV03_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV03_CODE).getRiskExposureName();
|
|
|
+ RISK_EXPOSURE_LEV02_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 2, "00");
|
|
|
+ RISK_EXPOSURE_LEV02_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV02_CODE).getRiskExposureName();
|
|
|
+ RISK_EXPOSURE_LEV01_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 3, "00");
|
|
|
+ RISK_EXPOSURE_LEV01_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV01_CODE).getRiskExposureName();
|
|
|
+ }
|
|
|
+ if (riskModel != null && riskModel.getRiskExposureNo().indexOf("00") == 5) {
|
|
|
+ RISK_EXPOSURE_LEV02_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 2, "00");
|
|
|
+ RISK_EXPOSURE_LEV02_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV02_CODE).getRiskExposureName();
|
|
|
+ RISK_EXPOSURE_LEV01_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 3, "00");
|
|
|
+ RISK_EXPOSURE_LEV01_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV01_CODE).getRiskExposureName();
|
|
|
+ }
|
|
|
+ if (riskModel != null && riskModel.getRiskExposureNo().indexOf("00") == 3) {
|
|
|
+
|
|
|
+ RISK_EXPOSURE_LEV01_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 3, "00");
|
|
|
+ RISK_EXPOSURE_LEV01_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV01_CODE).getRiskExposureName();
|
|
|
+ }
|
|
|
}
|
|
|
- if (riskModel != null && riskModel.getRiskExposureNo().indexOf("00") == 7) {
|
|
|
- RISK_EXPOSURE_LEV03_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 1, "00");
|
|
|
- RISK_EXPOSURE_LEV03_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV03_CODE).getRiskExposureName();
|
|
|
- RISK_EXPOSURE_LEV02_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 2, "00");
|
|
|
- RISK_EXPOSURE_LEV02_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV02_CODE).getRiskExposureName();
|
|
|
- RISK_EXPOSURE_LEV01_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 3, "00");
|
|
|
- RISK_EXPOSURE_LEV01_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV01_CODE).getRiskExposureName();
|
|
|
- }
|
|
|
- if (riskModel != null && riskModel.getRiskExposureNo().indexOf("00") == 5) {
|
|
|
- RISK_EXPOSURE_LEV02_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 2, "00");
|
|
|
- RISK_EXPOSURE_LEV02_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV02_CODE).getRiskExposureName();
|
|
|
- RISK_EXPOSURE_LEV01_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 3, "00");
|
|
|
- RISK_EXPOSURE_LEV01_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV01_CODE).getRiskExposureName();
|
|
|
- }
|
|
|
- if (riskModel != null && riskModel.getRiskExposureNo().indexOf("00") == 3) {
|
|
|
-
|
|
|
- RISK_EXPOSURE_LEV01_CODE = LevelUtil.subAndAdd(riskModel.getRiskExposureNo(), 3, "00");
|
|
|
- RISK_EXPOSURE_LEV01_CODE_NAME = riskExposureDefinitionModelMap.get(RISK_EXPOSURE_LEV01_CODE).getRiskExposureName();
|
|
|
+ if(ruleListModel.getOnoroff().equals("OFF")){
|
|
|
+ InfoListModel riskModel = infoListModel.get(riskType);
|
|
|
+ if (riskModel != null && !riskModel.getOffobjectNo().contains("00") && riskModel.getOffobjectSuper() != null) {
|
|
|
+ RISK_EXPOSURE_LEV03_CODE = LevelUtil.subAndAdd(riskModel.getOffobjectNo(), 0, "00");
|
|
|
+ RISK_EXPOSURE_LEV03_CODE_NAME = infoListModel.get(RISK_EXPOSURE_LEV03_CODE).getOffobjectName();
|
|
|
+ RISK_EXPOSURE_LEV02_CODE = LevelUtil.subAndAdd(riskModel.getOffobjectNo(), 1, "00");
|
|
|
+ RISK_EXPOSURE_LEV02_CODE_NAME = infoListModel.get(RISK_EXPOSURE_LEV02_CODE).getOffobjectName();
|
|
|
+ RISK_EXPOSURE_LEV01_CODE = LevelUtil.subAndAdd(riskModel.getOffobjectNo(), 2, "00");
|
|
|
+ RISK_EXPOSURE_LEV01_CODE_NAME = infoListModel.get(RISK_EXPOSURE_LEV01_CODE).getOffobjectName();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (riskModel != null && riskModel.getOffobjectNo().indexOf("00") == 5 && riskModel.getOffobjectSuper() != null) {
|
|
|
+ RISK_EXPOSURE_LEV02_CODE = LevelUtil.subAndAdd(riskModel.getOffobjectNo(), 1, "00");
|
|
|
+ RISK_EXPOSURE_LEV02_CODE_NAME = infoListModel.get(RISK_EXPOSURE_LEV02_CODE).getOffobjectName();
|
|
|
+ RISK_EXPOSURE_LEV01_CODE = LevelUtil.subAndAdd(riskModel.getOffobjectNo(), 2, "00");
|
|
|
+ RISK_EXPOSURE_LEV01_CODE_NAME = infoListModel.get(RISK_EXPOSURE_LEV01_CODE).getOffobjectName();
|
|
|
+ }
|
|
|
+ if (riskModel != null && riskModel.getOffobjectNo().indexOf("00") == 3 && riskModel.getOffobjectSuper() != null) {
|
|
|
+
|
|
|
+ RISK_EXPOSURE_LEV01_CODE = LevelUtil.subAndAdd(riskModel.getOffobjectNo(), 2, "00");
|
|
|
+ RISK_EXPOSURE_LEV01_CODE_NAME = infoListModel.get(RISK_EXPOSURE_LEV01_CODE).getOffobjectName();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
String dateStr = (String) context.get("DATA_DATE");
|
|
|
- String eff_date = dateStr.substring(dateStr.lastIndexOf("-") + 1) + "01";
|
|
|
- String due_date = dateStr.substring(dateStr.lastIndexOf("-") + 1) + (DateChecker.getShortCalendar(dateStr)).getActualMaximum(Calendar.DAY_OF_MONTH);
|
|
|
+ System.out.println(dateStr.lastIndexOf("-"));
|
|
|
+ String eff_date = dateStr.substring(dateStr.lastIndexOf("-") + 1,6) + "01"; // 需要改 20250605
|
|
|
+ String due_date = dateStr.substring(dateStr.lastIndexOf("-") + 1,6) + (DateChecker.getShortCalendar(dateStr)).getActualMaximum(Calendar.DAY_OF_MONTH);
|
|
|
|
|
|
sqlParam.addValue("GL_CODE", ruleListModel.getGlCode());
|
|
|
sqlParam.addValue("SUBJECT_DESC", ruleListModel.getSubjectDesc());
|
|
@@ -386,11 +466,11 @@ public class GeneralLedgerUnit extends CalcUnit {
|
|
|
sqlParam.addValue("CCY", "CNY");
|
|
|
sqlParam.addValue("GLAMT", subjectSumBigDecimal);
|
|
|
sqlParam.addValue("LEDGARTAMT", productSumBigDecimal);
|
|
|
- sqlParam.addValue("DIFFERAMT", differAmt);
|
|
|
+ sqlParam.addValue("DIFFERAMT", differAmt1);
|
|
|
sqlParam.addValue("DIFFERRATE", differRate);
|
|
|
sqlParam.addValue("PERCTHRESHOLD", percThreshold);
|
|
|
sqlParam.addValue("LEARTRESULTTYPE", isOutDiff);
|
|
|
- sqlParam.addValue("OFFSETDIFFERAMT", differRate);
|
|
|
+ sqlParam.addValue("OFFSETDIFFERAMT", subjectSumBigDecimal.subtract(productSumBigDecimal).subtract(differAmt1));
|
|
|
String insertLedgresult = "insert into rwa_leart_ins_ledgresult (CALCINDEX, SDATE, EDATE, TERM, DATA_DATE, ORGCODE, RULE_ID, RULE_NAME, SUBJCODE, SUBJNAME, CCY, GLAMT, LEDGARTAMT, DIFFERAMT, DIFFERRATE, PERCTHRESHOLD, LEARTRESULTTYPE, OFFSETDIFFERAMT) " +
|
|
|
"values (:CALCINDEX, :SDATE, :EDATE, :TERM, :DATA_DATE, :ORGCODE, :RULE_ID, :RULE_NAME, :SUBJCODE, :SUBJNAME, :CCY, :GLAMT, :LEDGARTAMT, :DIFFERAMT, :DIFFERRATE, :PERCTHRESHOLD, :LEARTRESULTTYPE, :OFFSETDIFFERAMT)";
|
|
|
jdbcTemplate.update(insertLedgresult, sqlParam);
|