Browse Source

代码提交

main
chengjie 9 months ago
parent
commit
355d8493ea
  1. 4
      app.irbs/build.gradle
  2. 0
      irbs.deptRating/README.adoc
  3. 5
      irbs.deptRating/build.gradle
  4. 0
      irbs.deptRating/gradle.properties
  5. 43
      irbs.deptRating/src/main/java/irbs/deptRating/controller/AppDebtRatingController.java
  6. 369
      irbs.deptRating/src/main/java/irbs/deptRating/jpa/entity/AppDebtRating.java
  7. 22
      irbs.deptRating/src/main/java/irbs/deptRating/jpa/repository/AppDebtRatingRepository.java
  8. 326
      irbs.deptRating/src/main/java/irbs/deptRating/jpa/vo/AppDebtRatingVo.java
  9. 37
      irbs.deptRating/src/main/java/irbs/deptRating/service/AppDebtRatingService.java
  10. 49
      irbs.deptRating/src/main/java/irbs/deptRating/service/impl/AppDebtRatingServiceImpl.java
  11. 25
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/application-properties.json
  12. 16
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/components.json
  13. 17
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/directories.json
  14. 25
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/json-serializers.json
  15. 35
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/liquibase.json
  16. 16
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/messages.json
  17. 15
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/p6spy.json
  18. 37
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/parameters.json
  19. 16
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/repositories.json
  20. 20
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/restart-properties.json
  21. 15
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/security.json
  22. 19
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/swagger.json
  23. 14
      irbs.deptRating/src/main/resources/META-INF/platform/plugins/system-properties.json
  24. 0
      irbs.deptRating/src/main/resources/irbs/deptRating/i18n/messages.properties
  25. 0
      irbs.deptRating/src/main/resources/irbs/deptRating/i18n/messages_zh_CN.properties
  26. 56
      irbs.deptRating/src/main/resources/liqiubase/20240427_DEBTRATING_DDL.xml
  27. 4
      irbs.frontend/src/components/index.ts
  28. 2
      irbs.frontend/src/i18n/messages.json
  29. 2
      irbs.frontend/src/i18n/messages_tw_CN.json
  30. 2
      irbs.frontend/src/i18n/messages_zh_CN.json
  31. 5
      irbs.frontend/src/menus/menus.json
  32. 26
      irbs.frontend/src/routes/routes.json
  33. 83
      irbs.frontend/src/views/debtRating/LgdQuery.vue
  34. 12
      irbs.frontend/src/views/default/CognizanceApply.vue
  35. 234
      irbs.frontend/src/views/riskExposure/HandmadeExposureDialog.vue
  36. 133
      irbs.frontend/src/views/riskExposure/LaunchExposureAdjustDialog.vue
  37. 133
      irbs.frontend/src/views/riskExposure/LaunchExposureDialog.vue
  38. 33
      irbs.frontend/src/views/riskExposure/RiskExposure.ts
  39. 145
      irbs.frontend/src/views/riskExposure/RiskExposureAdjustApply.vue
  40. 152
      irbs.frontend/src/views/riskExposure/RiskExposureAdjustApproval.vue
  41. 134
      irbs.frontend/src/views/riskExposure/RiskExposureApply.vue
  42. 146
      irbs.frontend/src/views/riskExposure/RiskExposureApproval.vue
  43. 0
      irbs.riskExposure/README.adoc
  44. 7
      irbs.riskExposure/build.gradle
  45. 0
      irbs.riskExposure/gradle.properties
  46. 71
      irbs.riskExposure/src/main/java/irbs/riskExposure/controller/RiskExposureAdjustController.java
  47. 90
      irbs.riskExposure/src/main/java/irbs/riskExposure/controller/RiskExposureController.java
  48. 29
      irbs.riskExposure/src/main/java/irbs/riskExposure/controller/RiskExposureOperationController.java
  49. 361
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/entity/Customer.java
  50. 330
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/entity/RiskExposure.java
  51. 160
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/entity/RiskExposureOperation.java
  52. 8
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/repository/CustomerRepository.java
  53. 7
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/repository/RiskExposureOperationRepository.java
  54. 7
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/repository/RiskExposureRepository.java
  55. 37
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/GoBackType.java
  56. 45
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/ProcessConstant.java
  57. 27
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/RiskExposureProcessOperate.java
  58. 14
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/RiskExposureProcessStatus.java
  59. 10
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/RiskExposureType.java
  60. 121
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/vo/RiskExposureOperationVo.java
  61. 298
      irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/vo/RiskExposureVo.java
  62. 47
      irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureAdjustService.java
  63. 23
      irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureFlowService.java
  64. 17
      irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureOperationService.java
  65. 31
      irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureProcessService.java
  66. 47
      irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureService.java
  67. 144
      irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureAdjustServiceImpl.java
  68. 48
      irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureFlowServiceImpl.java
  69. 17
      irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureOperationServiceImpl.java
  70. 88
      irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureProcessServiceImpl.java
  71. 145
      irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureServiceImpl.java
  72. 41
      irbs.riskExposure/src/main/java/irbs/riskExposure/service/support/QueryParams.java
  73. 25
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/application-properties.json
  74. 16
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/components.json
  75. 17
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/directories.json
  76. 25
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/json-serializers.json
  77. 36
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/liquibase.json
  78. 16
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/messages.json
  79. 15
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/p6spy.json
  80. 37
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/parameters.json
  81. 16
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/repositories.json
  82. 20
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/restart-properties.json
  83. 15
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/security.json
  84. 19
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/swagger.json
  85. 14
      irbs.riskExposure/src/main/resources/META-INF/platform/plugins/system-properties.json
  86. 23
      irbs.riskExposure/src/main/resources/irbs/riskExposure/i18n/messages.properties
  87. 23
      irbs.riskExposure/src/main/resources/irbs/riskExposure/i18n/messages_tw_CN.properties
  88. 23
      irbs.riskExposure/src/main/resources/irbs/riskExposure/i18n/messages_zh_CN.properties
  89. 47
      irbs.riskExposure/src/main/resources/liquibase/20240327_RISKEXPOSURE_DDL.xml
  90. 34
      irbs.riskExposure/src/main/resources/liquibase/20240417_UPDATE_RISKEXPOSURE_DDL.xml
  91. 4
      settings.gradle

4
app.irbs/build.gradle

@ -23,7 +23,9 @@ dependencies {
project(":irbs.frontend"), project(":irbs.frontend"),
project(":irbs.cust.rating"), project(":irbs.cust.rating"),
project(":irbs.reports"), project(":irbs.reports"),
project(":irbs.defaultManager") project(":irbs.defaultManager"),
project(":irbs.riskExposure"),
project(":irbs.deptRating")
) )
} }

0
irbs.deptRating/README.adoc

5
irbs.deptRating/build.gradle

@ -0,0 +1,5 @@
dependencies {
api(
"io.sc:io.sc.platform.mvc:${platform_version}",
)
}

0
irbs.deptRating/gradle.properties

43
irbs.deptRating/src/main/java/irbs/deptRating/controller/AppDebtRatingController.java

@ -0,0 +1,43 @@
package irbs.deptRating.controller;
import java.util.List;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import io.sc.platform.mvc.support.ExportFileInfo;
import io.sc.platform.orm.service.support.QueryParameter;
import io.sc.platform.security.service.impl.SystemParameterServiceImpl;
import io.sc.platform.security.util.SecurityUtil;
import irbs.deptRating.jpa.entity.AppDebtRating;
import irbs.deptRating.jpa.repository.AppDebtRatingRepository;
import irbs.deptRating.service.AppDebtRatingService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/api/irbs/appDebtRating")
public class AppDebtRatingController {
private static final Logger log =LoggerFactory.getLogger(AppDebtRatingController.class);
@Autowired
private AppDebtRatingService appDebtRatingService;
/**
* @债项评级管理
* @return
*/
@GetMapping("queryPage")
public Page<AppDebtRating> queryPage(QueryParameter queryParameter) throws Exception{
Page<AppDebtRating> page = appDebtRatingService.findAll(queryParameter);
return page;
}
}

369
irbs.deptRating/src/main/java/irbs/deptRating/jpa/entity/AppDebtRating.java

@ -0,0 +1,369 @@
package irbs.deptRating.jpa.entity;
import io.sc.platform.orm.entity.CorporationAuditorEntity;
import irbs.deptRating.jpa.vo.AppDebtRatingVo;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import javax.validation.constraints.Size;
@Entity
@Table(name = "P_IRS_APPLY_DEBT_RATING")
public class AppDebtRating extends CorporationAuditorEntity<AppDebtRatingVo> {
// 主键
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
@Column(name="ID_")
@Size(max=50)
private String id;
/**
* 业务合同编号
*/
@Column(name = "CONTRACTNO")
private String contractNo;
/**
* 业务产品类型
*/
@Column(name = "PRODUCTTYPE")
private String productType;
/**
* 业务产品类型回收率
*/
@Column(name = "PRODUCTRATE")
private Double productRate;
/**
* 业务合同金额
*/
@Column(name = "CONTRACTAMT")
private Double contractAmt;
/**
* 机构类型
*/
@Column(name = "ORGTYPE")
private String orgType;
/**
* 是否低风险业务
*/
@Column(name = "LOWRISKFLG")
private String lowRiskFlg;
/**
* 是否利率债
*/
@Column(name = "INTERESTDEBTFLG")
private String interestDebtFlg;
/**
* 金融机构债权等级
*/
@Column(name = "FINANCEDEBTLEVEL")
private String financeDebtLevel;
/**
* 客户编号
*/
@Column(name = "CUSTNO")
private String custNo;
/**
* 客户名称
*/
@Column(name = "CUSTNAME")
private String custName;
/**
* 借款人评级
*/
@Column(name = "CREDITGRADE")
private String creditGrade;
/**
* 借款人评级回收率
*/
@Column(name = "CREDITGRADERATE")
private Double creditGradeRate;
/**
* 行业类型
*/
@Column(name = "INDUSTRYTYPE")
private String industryType;
/**
* 行业类型调整系数
*/
@Column(name = "INDUSTRYTYPERATE")
private Double industryTypeRate;
/**
* 企业规模
*/
@Column(name = "CORPSIZE")
private String corpSize;
/**
* 企业规模调整系数
*/
@Column(name = "CORPSIZERATE")
private Double corpSizeRate;
/**
* 企业类型
*/
@Column(name = "CORPTYPE")
private String corpType;
/**
* 企业类型调整系数
*/
@Column(name = "CORPTYPERATE")
private Double corpTypeRate;
/**
* 所在行政区域
*/
@Column(name = "REGIONCODE")
private String regionCode;
/**
* 所在行政区域调整系数
*/
@Column(name = "REGIONCODERATE")
private Double regionCodeRate;
/**
* 借款人有形资产债务率
*/
@Column(name = "YXZCZWL")
private Double yxzczwl;
/**
* 借款人有形资产债务率调整系数
*/
@Column(name = "YXZCZWLRATE")
private Double yxzczwlRate;
/**
* 借款人调整回收率
*/
@Column(name = "ADJUSTRATE")
private Double adjustRate;
/**
* 借款人回收率
*/
@Column(name = "RECRATE")
private Double recrate;
/**
* 保证担保形式
*/
@Column(name = "PLEDGECLASS")
private String pledgeClass;
/**
* 担保类型
*/
@Column(name = "GUARANTEETYPE")
private String guaranteeType;
/**
* 保证人整体回收率
*/
@Column(name = "PLEDGERECRATE")
private Double pledgeRecRate;
/**
* 押品整体回收率
*/
@Column(name = "GUARANTYRECRATE")
private Double guarantyRecRate;
/**
* lgd计算结果
*/
@Column(name = "LGD")
private Double lgd;
/**
* 是否生效
*/
@Column(name = "IS_VALID")
private String isValid;
/**
* 业务经办人
*/
@Column(name = "MANAGER_CODE")
private String managerCode;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getContractNo() {
return contractNo;
}
public void setContractNo(String contractNo) {
this.contractNo = contractNo;
}
public String getProductType() {
return productType;
}
public void setProductType(String productType) {
this.productType = productType;
}
public Double getContractAmt() {
return contractAmt;
}
public void setContractAmt(Double contractAmt) {
this.contractAmt = contractAmt;
}
public String getOrgType() {
return orgType;
}
public void setOrgType(String orgType) {
this.orgType = orgType;
}
public String getLowRiskFlg() {
return lowRiskFlg;
}
public void setLowRiskFlg(String lowRiskFlg) {
this.lowRiskFlg = lowRiskFlg;
}
public String getInterestDebtFlg() {
return interestDebtFlg;
}
public void setInterestDebtFlg(String interestDebtFlg) {
this.interestDebtFlg = interestDebtFlg;
}
public String getFinanceDebtLevel() {
return financeDebtLevel;
}
public void setFinanceDebtLevel(String financeDebtLevel) {
this.financeDebtLevel = financeDebtLevel;
}
public String getCustNo() {
return custNo;
}
public void setCustNo(String custNo) {
this.custNo = custNo;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getCreditGrade() {
return creditGrade;
}
public void setCreditGrade(String creditGrade) {
this.creditGrade = creditGrade;
}
public String getIndustryType() {
return industryType;
}
public void setIndustryType(String industryType) {
this.industryType = industryType;
}
public String getCorpSize() {
return corpSize;
}
public void setCorpSize(String corpSize) {
this.corpSize = corpSize;
}
public String getCorpType() {
return corpType;
}
public void setCorpType(String corpType) {
this.corpType = corpType;
}
public String getRegionCode() {
return regionCode;
}
public void setRegionCode(String regionCode) {
this.regionCode = regionCode;
}
public String getGuaranteeType() {
return guaranteeType;
}
public void setGuaranteeType(String guaranteeType) {
this.guaranteeType = guaranteeType;
}
public Double getYxzczwl() {
return yxzczwl;
}
public void setYxzczwl(Double yxzczwl) {
this.yxzczwl = yxzczwl;
}
public String getPledgeClass() {
return pledgeClass;
}
public void setPledgeClass(String pledgeClass) {
this.pledgeClass = pledgeClass;
}
public Double getProductRate() {
return productRate;
}
public void setProductRate(Double productRate) {
this.productRate = productRate;
}
public Double getCreditGradeRate() {
return creditGradeRate;
}
public void setCreditGradeRate(Double creditGradeRate) {
this.creditGradeRate = creditGradeRate;
}
public Double getIndustryTypeRate() {
return industryTypeRate;
}
public void setIndustryTypeRate(Double industryTypeRate) {
this.industryTypeRate = industryTypeRate;
}
public Double getCorpSizeRate() {
return corpSizeRate;
}
public void setCorpSizeRate(Double corpSizeRate) {
this.corpSizeRate = corpSizeRate;
}
public Double getCorpTypeRate() {
return corpTypeRate;
}
public void setCorpTypeRate(Double corpTypeRate) {
this.corpTypeRate = corpTypeRate;
}
public Double getRegionCodeRate() {
return regionCodeRate;
}
public void setRegionCodeRate(Double regionCodeRate) {
this.regionCodeRate = regionCodeRate;
}
public Double getYxzczwlRate() {
return yxzczwlRate;
}
public void setYxzczwlRate(Double yxzczwlRate) {
this.yxzczwlRate = yxzczwlRate;
}
public Double getLgd() {
return lgd;
}
public void setLgd(Double lgd) {
this.lgd = lgd;
}
public String getIsValid() {
return isValid;
}
public void setIsValid(String isValid) {
this.isValid = isValid;
}
public Double getAdjustRate() {
return adjustRate;
}
public void setAdjustRate(Double adjustRate) {
this.adjustRate = adjustRate;
}
public Double getRecrate() {
return recrate;
}
public void setRecrate(Double recrate) {
this.recrate = recrate;
}
public Double getPledgeRecRate() {
return pledgeRecRate;
}
public void setPledgeRecRate(Double pledgeRecRate) {
this.pledgeRecRate = pledgeRecRate;
}
public Double getGuarantyRecRate() {
return guarantyRecRate;
}
public void setGuarantyRecRate(Double guarantyRecRate) {
this.guarantyRecRate = guarantyRecRate;
}
public String getManagerCode() {
return managerCode;
}
public void setManagerCode(String managerCode) {
this.managerCode = managerCode;
}
}

22
irbs.deptRating/src/main/java/irbs/deptRating/jpa/repository/AppDebtRatingRepository.java

@ -0,0 +1,22 @@
package irbs.deptRating.jpa.repository;
import io.sc.platform.orm.repository.DaoRepository;
import irbs.deptRating.jpa.entity.AppDebtRating;
import java.util.List;
public interface AppDebtRatingRepository extends DaoRepository<AppDebtRating, String> {
/**
* 按业务合同号查询LGD业务信息
* @param contractNo
* @return
*/
public AppDebtRating findByContractNoAndIsValid(String contractNo, String isValid);
/**
* 按业务合同号查询LGD业务信息
* @param contractNo
* @return
*/
public List<AppDebtRating> findByContractNo(String contractNo);
}

326
irbs.deptRating/src/main/java/irbs/deptRating/jpa/vo/AppDebtRatingVo.java

@ -0,0 +1,326 @@
package irbs.deptRating.jpa.vo;
import io.sc.platform.orm.api.vo.CorporationAuditorVo;
public class AppDebtRatingVo extends CorporationAuditorVo {
// 主键
private String id;
/**
* 业务合同编号
*/
private String contractNo;
/**
* 业务产品类型
*/
private String productType;
/**
* 业务产品类型回收率
*/
private Double productRate;
/**
* 业务合同金额
*/
private Double contractAmt;
/**
* 机构类型
*/
private String orgType;
/**
* 是否低风险业务
*/
private String lowRiskFlg;
/**
* 是否利率债
*/
private String interestDebtFlg;
/**
* 金融机构债权等级
*/
private String financeDebtLevel;
/**
* 客户编号
*/
private String custNo;
/**
* 客户名称
*/
private String custName;
/**
* 借款人评级
*/
private String creditGrade;
/**
* 借款人评级回收率
*/
private Double creditGradeRate;
/**
* 行业类型
*/
private String industryType;
/**
* 行业类型调整系数
*/
private Double industryTypeRate;
/**
* 企业规模
*/
private String corpSize;
/**
* 企业规模调整系数
*/
private Double corpSizeRate;
/**
* 企业类型
*/
private String corpType;
/**
* 企业类型调整系数
*/
private Double corpTypeRate;
/**
* 所在行政区域
*/
private String regionCode;
/**
* 所在行政区域调整系数
*/
private Double regionCodeRate;
/**
* 借款人有形资产债务率
*/
private Double yxzczwl;
/**
* 借款人有形资产债务率调整系数
*/
private Double yxzczwlRate;
/**
* 借款人调整回收率
*/
private Double adjustRate;
/**
* 借款人回收率
*/
private Double recrate;
/**
* 保证担保形式
*/
private String pledgeClass;
/**
* 担保类型
*/
private String guaranteeType;
/**
* 保证人整体回收率
*/
private Double pledgeRecRate;
/**
* 押品整体回收率
*/
private Double guarantyRecRate;
/**
* lgd计算结果
*/
private Double lgd;
/**
* 是否生效
*/
private String isValid;
/**
* 业务经办人
*/
private String managerCode;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getContractNo() {
return contractNo;
}
public void setContractNo(String contractNo) {
this.contractNo = contractNo;
}
public String getProductType() {
return productType;
}
public void setProductType(String productType) {
this.productType = productType;
}
public Double getContractAmt() {
return contractAmt;
}
public void setContractAmt(Double contractAmt) {
this.contractAmt = contractAmt;
}
public String getOrgType() {
return orgType;
}
public void setOrgType(String orgType) {
this.orgType = orgType;
}
public String getLowRiskFlg() {
return lowRiskFlg;
}
public void setLowRiskFlg(String lowRiskFlg) {
this.lowRiskFlg = lowRiskFlg;
}
public String getInterestDebtFlg() {
return interestDebtFlg;
}
public void setInterestDebtFlg(String interestDebtFlg) {
this.interestDebtFlg = interestDebtFlg;
}
public String getFinanceDebtLevel() {
return financeDebtLevel;
}
public void setFinanceDebtLevel(String financeDebtLevel) {
this.financeDebtLevel = financeDebtLevel;
}
public String getCustNo() {
return custNo;
}
public void setCustNo(String custNo) {
this.custNo = custNo;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getCreditGrade() {
return creditGrade;
}
public void setCreditGrade(String creditGrade) {
this.creditGrade = creditGrade;
}
public String getIndustryType() {
return industryType;
}
public void setIndustryType(String industryType) {
this.industryType = industryType;
}
public String getCorpSize() {
return corpSize;
}
public void setCorpSize(String corpSize) {
this.corpSize = corpSize;
}
public String getCorpType() {
return corpType;
}
public void setCorpType(String corpType) {
this.corpType = corpType;
}
public String getRegionCode() {
return regionCode;
}
public void setRegionCode(String regionCode) {
this.regionCode = regionCode;
}
public String getGuaranteeType() {
return guaranteeType;
}
public void setGuaranteeType(String guaranteeType) {
this.guaranteeType = guaranteeType;
}
public Double getYxzczwl() {
return yxzczwl;
}
public void setYxzczwl(Double yxzczwl) {
this.yxzczwl = yxzczwl;
}
public String getPledgeClass() {
return pledgeClass;
}
public void setPledgeClass(String pledgeClass) {
this.pledgeClass = pledgeClass;
}
public Double getProductRate() {
return productRate;
}
public void setProductRate(Double productRate) {
this.productRate = productRate;
}
public Double getCreditGradeRate() {
return creditGradeRate;
}
public void setCreditGradeRate(Double creditGradeRate) {
this.creditGradeRate = creditGradeRate;
}
public Double getIndustryTypeRate() {
return industryTypeRate;
}
public void setIndustryTypeRate(Double industryTypeRate) {
this.industryTypeRate = industryTypeRate;
}
public Double getCorpSizeRate() {
return corpSizeRate;
}
public void setCorpSizeRate(Double corpSizeRate) {
this.corpSizeRate = corpSizeRate;
}
public Double getCorpTypeRate() {
return corpTypeRate;
}
public void setCorpTypeRate(Double corpTypeRate) {
this.corpTypeRate = corpTypeRate;
}
public Double getRegionCodeRate() {
return regionCodeRate;
}
public void setRegionCodeRate(Double regionCodeRate) {
this.regionCodeRate = regionCodeRate;
}
public Double getYxzczwlRate() {
return yxzczwlRate;
}
public void setYxzczwlRate(Double yxzczwlRate) {
this.yxzczwlRate = yxzczwlRate;
}
public Double getLgd() {
return lgd;
}
public void setLgd(Double lgd) {
this.lgd = lgd;
}
public String getIsValid() {
return isValid;
}
public void setIsValid(String isValid) {
this.isValid = isValid;
}
public Double getAdjustRate() {
return adjustRate;
}
public void setAdjustRate(Double adjustRate) {
this.adjustRate = adjustRate;
}
public Double getRecrate() {
return recrate;
}
public void setRecrate(Double recrate) {
this.recrate = recrate;
}
public Double getPledgeRecRate() {
return pledgeRecRate;
}
public void setPledgeRecRate(Double pledgeRecRate) {
this.pledgeRecRate = pledgeRecRate;
}
public Double getGuarantyRecRate() {
return guarantyRecRate;
}
public void setGuarantyRecRate(Double guarantyRecRate) {
this.guarantyRecRate = guarantyRecRate;
}
public String getManagerCode() {
return managerCode;
}
public void setManagerCode(String managerCode) {
this.managerCode = managerCode;
}
}

37
irbs.deptRating/src/main/java/irbs/deptRating/service/AppDebtRatingService.java

@ -0,0 +1,37 @@
package irbs.deptRating.service;
import io.sc.platform.orm.service.DaoService;
import io.sc.platform.orm.service.support.QueryParameter;
import irbs.deptRating.jpa.entity.AppDebtRating;
import irbs.deptRating.jpa.repository.AppDebtRatingRepository;
import org.springframework.data.domain.Page;
import java.util.List;
public interface AppDebtRatingService extends
DaoService<AppDebtRating, String, AppDebtRatingRepository> {
/**
* 由业务合同编号查询债项评级信息
* @return
*/
public Page<AppDebtRating> findAll(QueryParameter queryParameter) throws Exception;
/**
* 由业务合同编号查询债项评级信息
* @param businessNo
* @return
*/
public List<AppDebtRating> findByBusinessNo(String businessNo);
/**
* 由业务合同编号查询债项评级信息
* @param businessNo
* @return
*/
public AppDebtRating findValidByBusinessNo(String businessNo);
/**
* 将债项评级信息置为失效状态
* @param debtRating
* @throws Exception
*/
public void invalidDebtRating(AppDebtRating debtRating) throws Exception;
}

49
irbs.deptRating/src/main/java/irbs/deptRating/service/impl/AppDebtRatingServiceImpl.java

@ -0,0 +1,49 @@
package irbs.deptRating.service.impl;
import io.sc.platform.orm.service.impl.DaoServiceImpl;
import io.sc.platform.orm.service.support.QueryParameter;
import irbs.deptRating.jpa.entity.AppDebtRating;
import irbs.deptRating.jpa.repository.AppDebtRatingRepository;
import irbs.deptRating.service.AppDebtRatingService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class AppDebtRatingServiceImpl extends
DaoServiceImpl<AppDebtRating, String, AppDebtRatingRepository>
implements AppDebtRatingService {
private static final Logger log =LoggerFactory.getLogger(AppDebtRatingServiceImpl.class);
@Override
public void invalidDebtRating(AppDebtRating debtRating) throws Exception {
// TODO Auto-generated method stub
if(debtRating != null) {
debtRating.setIsValid("1");
this.update(debtRating.getId(), debtRating);
}
}
@Override
public Page<AppDebtRating> findAll(QueryParameter queryParameter) throws Exception {
Page<AppDebtRating> page = this.query(queryParameter);
return page;
}
@Override
public List<AppDebtRating> findByBusinessNo(String businessNo) {
// TODO Auto-generated method stub
return repository.findByContractNo(businessNo);
}
@Override
public AppDebtRating findValidByBusinessNo(String businessNo) {
return null;
}
}

25
irbs.deptRating/src/main/resources/META-INF/platform/plugins/application-properties.json

@ -0,0 +1,25 @@
/*
*
* : application.properties ,
* 使:
* module:
* order:
* description: , application.properties
* properties:
*/
/* */
/*
[
{
"module" : "io.sc.platform.core",
"order" : 150,
"description": "application configuration",
"properties": [
"application.audit-log-mode = none",
"#application.audit-log-mode = log",
"#application.audit-log-mode = database"
]
}
]
*/

16
irbs.deptRating/src/main/resources/META-INF/platform/plugins/components.json

@ -0,0 +1,16 @@
/*
*
* : , spring
* 使:
* includes:
* excludes:
* : includes excludes , excludes ,
*/
{
"includes":[
"irbs.deptRating.controller",
"irbs.deptRating.service.impl"
],
"excludes":[]
}

17
irbs.deptRating/src/main/resources/META-INF/platform/plugins/directories.json

@ -0,0 +1,17 @@
/*
*
* :
* 使:
* name : , DirectoryManager.getInstance().getByName(name)
* path : , home
* autoCreate :
*/
/* */
/*
[
{"name":"dir.config" ,"path":"/config" ,"autoCreate":true},
{"name":"dir.log" ,"path":"/logs" ,"autoCreate":true},
{"name":"dir.work" ,"path":"/work" ,"autoCreate":true}
]
*/

25
irbs.deptRating/src/main/resources/META-INF/platform/plugins/json-serializers.json

@ -0,0 +1,25 @@
/*
* json
* : json
* 使:
* className:
* serializer:
* deserializer:
*/
/* */
/*
[
{
"className" : "java.util.Date",
"serializer" : "io.sc.platform.core.autoconfigure.support.DateJsonSerializer",
"deserializer" : "io.sc.platform.core.autoconfigure.support.DateJsonDeserializer"
},
{
"className" : "java.time.Instant",
"serializer" : "io.sc.platform.core.autoconfigure.support.InstantJsonSerializer",
"deserializer" : "io.sc.platform.core.autoconfigure.support.InstantJsonDeserializer"
}
]
*/

35
irbs.deptRating/src/main/resources/META-INF/platform/plugins/liquibase.json

@ -0,0 +1,35 @@
/*
* Liquibase ChangeLog XML
* :
* 使:
* category: ,:
* install :
* order:
* description:
* locations: liquibase changelog xml
*/
/* */
/*
[
{
"category" : "install",
"order" : 100,
"description":"授权与认证相关数据库表结构",
"locations":[
"liquibase/PF_9.0.0_20230222__Security_DDL.xml",
"liquibase/PF_9.0.0_20230223__Security_DDL.xml"
]
}
]
*/
[
{
"category" : "install",
"order" : 110000,
"description":"风险暴露分类",
"locations":[
"liquibase/20240427_DEBTRATING_DDL.xml"
]
}
]

16
irbs.deptRating/src/main/resources/META-INF/platform/plugins/messages.json

@ -0,0 +1,16 @@
/*
*
* :
* 使:
* includes:
* excludes:
* : includes excludes , excludes ,
*/
{
"includes":[
"irbs/deptRating/i18n/messages"
],
"excludes":[]
}

15
irbs.deptRating/src/main/resources/META-INF/platform/plugins/p6spy.json

@ -0,0 +1,15 @@
/*
* p6spy
* : p6spy
* 使:
* ignoredPatterns: jdbc
*/
/* p6spy commit */
/*
{
"ignoredPatterns":[
"commit"
]
}
*/

37
irbs.deptRating/src/main/resources/META-INF/platform/plugins/parameters.json

@ -0,0 +1,37 @@
/*
*
* :
* 使:
* id:
* parentId: ,
* code: ,
* defaultValue:
* order:
* options: map, key , value
*/
/* */
/*
[
{"id":"parameter.system","order":0},
{
"id" : "parameter.system.indexPageTemplate",
"parentId" : "parameter.system",
"code" : "parameter.system.indexPageTemplate",
"defaultValue" : "io.sc.platform.mvc.frontend.html",
"order" : 200
},
{"id":"parameter.system.ui","parentId":"parameter.system","order":1000},
{
"id" : "parameter.system.ui.theme",
"parentId" : "parameter.system.ui",
"code" : "parameter.system.ui.theme",
"defaultValue" : "light",
"order" : 800,
"options" :{
"light" : "#{parameter.system.ui.theme.light}",
"dark" : "#{parameter.system.ui.theme.dark}"
}
}
]
*/

16
irbs.deptRating/src/main/resources/META-INF/platform/plugins/repositories.json

@ -0,0 +1,16 @@
/*
* JPA
* : JPA
* 使:
* includes:
* excludes:
* : includes excludes , excludes ,
*/
{
"includes":[
"irbs.deptRating.jpa.entity",
"irbs.deptRating.jpa.repository"
],
"excludes":[]
}

20
irbs.deptRating/src/main/resources/META-INF/platform/plugins/restart-properties.json

@ -0,0 +1,20 @@
/*
*
* : ,( web , )
* 使:
* : startWith
* container:
* jar: jar
*/
/* */
/*
{
"container":[
"spring.security."
],
"jar": [
"spring.security."
]
}
*/

15
irbs.deptRating/src/main/resources/META-INF/platform/plugins/security.json

@ -0,0 +1,15 @@
/*
*
* :
* 使:
* permitPatterns : url , ant path
*/
/* */
/*
{
"permitPatterns":[
"/io.sc.platform.core/**"
]
}
*/

19
irbs.deptRating/src/main/resources/META-INF/platform/plugins/swagger.json

@ -0,0 +1,19 @@
/**
* swagger
*/
/* */
/*
[
{
"groupName" : "io.sc.platform.mvc",
"title" : "平台 MVC",
"description": "平台 MVC 文档",
"termsOfServiceUrl" : "",
"version": "1.0",
"basePackages":[
"io.sc.platform.mvc.controller"
]
}
]
*/

14
irbs.deptRating/src/main/resources/META-INF/platform/plugins/system-properties.json

@ -0,0 +1,14 @@
/*
*
* : ( System.setProperty())
* 使:
* key :
* value :
*/
/* */
/*
{
"h2.dbname.default" : "DB_PLATFORM"
}
*/

0
irbs.deptRating/src/main/resources/irbs/deptRating/i18n/messages.properties

0
irbs.deptRating/src/main/resources/irbs/deptRating/i18n/messages_zh_CN.properties

56
irbs.deptRating/src/main/resources/liqiubase/20240427_DEBTRATING_DDL.xml

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<changeSet id="20240427_DEBTRATING_DDL" author="platform">
<!-- 债项评级信息表 -->
<createTable tableName="P_IRS_APPLY_DEBT_RATING" remarks="债项评级信息表">
<column name="ID_" type="java.sql.Types.VARCHAR(50)" remarks="主键ID">
<constraints primaryKey="true"/>
</column>
<column name="CONTRACTNO" type="java.sql.Types.VARCHAR(60)" remarks="业务合同编号"/>
<column name="PRODUCTTYPE" type="java.sql.Types.VARCHAR(20)" remarks="业务产品类型"/>
<column name="PRODUCTRATE" type="java.sql.Types.DECIMAL(10,6)" remarks="业务产品类型回收率"/>
<column name="CONTRACTAMT" type="java.sql.Types.DECIMAL(30,6)" remarks="业务合同金额"/>
<column name="ORGTYPE" type="java.sql.Types.VARCHAR(10)" remarks="机构类型"/>
<column name="LOWRISKFLG" type="java.sql.Types.VARCHAR(5)" remarks="是否低风险业务"/>
<column name="INTERESTDEBTFLG" type="java.sql.Types.VARCHAR(5)" remarks="是否利率债"/>
<column name="FINANCEDEBTLEVEL" type="java.sql.Types.VARCHAR(5)" remarks="金融机构债权等级"/>
<column name="CUSTNO" type="java.sql.Types.VARCHAR(60)" remarks="客户编号"/>
<column name="CUSTNAME" type="java.sql.Types.VARCHAR(200)" remarks="客户名称"/>
<column name="CREDITGRADE" type="java.sql.Types.VARCHAR(60)" remarks="借款人评级"/>
<column name="CREDITGRADERATE" type="java.sql.Types.DECIMAL(10,6)" remarks="借款人评级回收率"/>
<column name="INDUSTRYTYPE" type="java.sql.Types.VARCHAR(60)" remarks="行业类型"/>
<column name="INDUSTRYTYPERATE" type="java.sql.Types.DECIMAL(10,6)" remarks="行业类型调整系数"/>
<column name="CORPSIZE" type="java.sql.Types.VARCHAR(60)" remarks="企业规模"/>
<column name="CORPSIZERATE" type="java.sql.Types.DECIMAL(10,6)" remarks="企业规模调整系数"/>
<column name="CORPTYPE" type="java.sql.Types.VARCHAR(60)" remarks="企业类型"/>
<column name="CORPTYPERATE" type="java.sql.Types.DECIMAL(10,6)" remarks="企业类型调整系数"/>
<column name="REGIONCODE" type="java.sql.Types.VARCHAR(60)" remarks="所在行政区域"/>
<column name="REGIONCODERATE" type="java.sql.Types.DECIMAL(10,6)" remarks="所在行政区域调整系数"/>
<column name="YXZCZWL" type="java.sql.Types.DECIMAL(10,6)" remarks="借款人有形资产债务率"/>
<column name="YXZCZWLRATE" type="java.sql.Types.DECIMAL(10,6)" remarks="借款人有形资产债务率调整系数"/>
<column name="ADJUSTRATE" type="java.sql.Types.DECIMAL(10,6)" remarks="借款人调整回收率"/>
<column name="RECRATE" type="java.sql.Types.DECIMAL(10,6)" remarks="借款人回收率"/>
<column name="PLEDGECLASS" type="java.sql.Types.VARCHAR(60)" remarks="保证担保形式"/>
<column name="GUARANTEETYPE" type="java.sql.Types.VARCHAR(60)" remarks="担保类型"/>
<column name="PLEDGERECRATE" type="java.sql.Types.DECIMAL(10,6)" remarks="保证人整体回收率"/>
<column name="GUARANTYRECRATE" type="java.sql.Types.DECIMAL(10,6)" remarks="押品整体回收率"/>
<column name="LGD" type="java.sql.Types.DECIMAL(10,6)" remarks="lgd计算结果"/>
<column name="IS_VALID" type="java.sql.Types.VARCHAR(5)" remarks="是否生效"/>
<column name="MANAGER_CODE" type="java.sql.Types.VARCHAR(60)" remarks="业务经办人"/>
<column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column>
<column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column>
<column name="CREATE_DATE_" type="DATETIME" remarks="创建日期"></column>
<column name="LAST_MODIFIER_" type="java.sql.Types.NVARCHAR(255)" remarks="最后修改人"></column>
<column name="LAST_MODIFYDATE_" type="DATETIME" remarks="最后修改日期"></column>
<column name="CORP_CODE_" type="java.sql.Types.NVARCHAR(255)" remarks="所属法人代码" defaultValue="_PRIMARY_">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
</databaseChangeLog>

4
irbs.frontend/src/components/index.ts

@ -15,6 +15,8 @@ import rebirthApply from '@/views/default/RebirthApply.vue';
import lgdQuery from '@/views/debtRating/LgdQuery.vue'; import lgdQuery from '@/views/debtRating/LgdQuery.vue';
import riskExposureApply from '@/views/riskExposure/RiskExposureApply.vue'; import riskExposureApply from '@/views/riskExposure/RiskExposureApply.vue';
import riskExposureApproval from '@/views/riskExposure/RiskExposureApproval.vue'; import riskExposureApproval from '@/views/riskExposure/RiskExposureApproval.vue';
import riskExposureAdjustApply from '@/views/riskExposure/RiskExposureAdjustApply.vue';
import riskExposureAdjustApproval from '@/views/riskExposure/RiskExposureAdjustApproval.vue';
import custRatingHist from '@/views/query/CustRatingHist.vue'; import custRatingHist from '@/views/query/CustRatingHist.vue';
import defaultHist from '@/views/query/DefaultHist.vue'; import defaultHist from '@/views/query/DefaultHist.vue';
import riskExposureHist from '@/views/query/RiskExposureHist.vue'; import riskExposureHist from '@/views/query/RiskExposureHist.vue';
@ -49,6 +51,8 @@ const localComponents = {
'irbs.lgdQuery': lgdQuery, 'irbs.lgdQuery': lgdQuery,
'irbs.riskExposureApply': riskExposureApply, 'irbs.riskExposureApply': riskExposureApply,
'irbs.riskExposureApproval': riskExposureApproval, 'irbs.riskExposureApproval': riskExposureApproval,
'irbs.riskExposureAdjustApply': riskExposureAdjustApply,
'irbs.riskExposureAdjustApproval': riskExposureAdjustApproval,
'irbs.custRatingHist': custRatingHist, 'irbs.custRatingHist': custRatingHist,
'irbs.defaultHist': defaultHist, 'irbs.defaultHist': defaultHist,
'irbs.riskExposureHist': riskExposureHist, 'irbs.riskExposureHist': riskExposureHist,

2
irbs.frontend/src/i18n/messages.json

@ -21,6 +21,8 @@
"menu.irbs.riskExposure": "Risk Exposure", "menu.irbs.riskExposure": "Risk Exposure",
"menu.irbs.riskExposure.apply": "Risk Exposure Apply", "menu.irbs.riskExposure.apply": "Risk Exposure Apply",
"menu.irbs.riskExposure.approval": "Risk Exposure Aproval", "menu.irbs.riskExposure.approval": "Risk Exposure Aproval",
"menu.irbs.riskExposure.adjust.apply": "Risk Exposure Adjust Apply",
"menu.irbs.riskExposure.adjust.approval": "Risk Exposure Adjust Aproval",
"menu.irbs.query": "Query", "menu.irbs.query": "Query",
"menu.irbs.query.custRatingHist": "Customer Rating History", "menu.irbs.query.custRatingHist": "Customer Rating History",

2
irbs.frontend/src/i18n/messages_tw_CN.json

@ -21,6 +21,8 @@
"menu.irbs.riskExposure": "风险暴露分类管理", "menu.irbs.riskExposure": "风险暴露分类管理",
"menu.irbs.riskExposure.apply": "风险暴露分类申请", "menu.irbs.riskExposure.apply": "风险暴露分类申请",
"menu.irbs.riskExposure.approval": "风险暴露分类审批", "menu.irbs.riskExposure.approval": "风险暴露分类审批",
"menu.irbs.riskExposure.adjust.apply": "风险暴露分类调整申请",
"menu.irbs.riskExposure.adjust.approval": "风险暴露分类调整审批",
"menu.irbs.query": "查询管理", "menu.irbs.query": "查询管理",
"menu.irbs.query.custRatingHist": "客户评级历史查询", "menu.irbs.query.custRatingHist": "客户评级历史查询",

2
irbs.frontend/src/i18n/messages_zh_CN.json

@ -21,6 +21,8 @@
"menu.irbs.riskExposure": "风险暴露分类管理", "menu.irbs.riskExposure": "风险暴露分类管理",
"menu.irbs.riskExposure.apply": "风险暴露分类申请", "menu.irbs.riskExposure.apply": "风险暴露分类申请",
"menu.irbs.riskExposure.approval": "风险暴露分类审批", "menu.irbs.riskExposure.approval": "风险暴露分类审批",
"menu.irbs.riskExposure.adjust.apply": "风险暴露分类调整申请",
"menu.irbs.riskExposure.adjust.approval": "风险暴露分类调整审批",
"menu.irbs.query": "查询管理", "menu.irbs.query": "查询管理",
"menu.irbs.query.custRatingHist": "客户评级历史查询", "menu.irbs.query.custRatingHist": "客户评级历史查询",

5
irbs.frontend/src/menus/menus.json

@ -44,6 +44,11 @@
{"type":"ROUTE", "order":100, "parentId":"menu.irbs.riskExposure", "id":"menu.irbs.riskExposure.apply", "titleI18nKey":"menu.irbs.riskExposure.apply", "icon":"assignment_ind", "routeName":"route.irbs.riskExposure.apply"}, {"type":"ROUTE", "order":100, "parentId":"menu.irbs.riskExposure", "id":"menu.irbs.riskExposure.apply", "titleI18nKey":"menu.irbs.riskExposure.apply", "icon":"assignment_ind", "routeName":"route.irbs.riskExposure.apply"},
/*/*/ /*/*/
{"type":"ROUTE", "order":200, "parentId":"menu.irbs.riskExposure", "id":"menu.irbs.riskExposure.approval", "titleI18nKey":"menu.irbs.riskExposure.approval", "icon":"assignment_turned_in", "routeName":"route.irbs.riskExposure.approval"}, {"type":"ROUTE", "order":200, "parentId":"menu.irbs.riskExposure", "id":"menu.irbs.riskExposure.approval", "titleI18nKey":"menu.irbs.riskExposure.approval", "icon":"assignment_turned_in", "routeName":"route.irbs.riskExposure.approval"},
/*/*/
{"type":"ROUTE", "order":300, "parentId":"menu.irbs.riskExposure", "id":"menu.irbs.riskExposure.adjust.apply", "titleI18nKey":"menu.irbs.riskExposure.adjust.apply", "icon":"assignment_ind", "routeName":"route.irbs.riskExposure.adjust.apply"},
/*/*/
{"type":"ROUTE", "order":400, "parentId":"menu.irbs.riskExposure", "id":"menu.irbs.riskExposure.adjust.approval", "titleI18nKey":"menu.irbs.riskExposure.adjust.approval", "icon":"assignment_turned_in", "routeName":"route.irbs.riskExposure.adjust.approval"},
{"type":"GROUP", "order":600, "parentId":"menu.irbs", "id":"menu.irbs.query", "titleI18nKey":"menu.irbs.query", "icon":"content_paste_search"}, {"type":"GROUP", "order":600, "parentId":"menu.irbs", "id":"menu.irbs.query", "titleI18nKey":"menu.irbs.query", "icon":"content_paste_search"},
/*/*/ /*/*/
{"type":"ROUTE", "order":100, "parentId":"menu.irbs.query", "id":"menu.irbs.query.custRatingHist", "titleI18nKey":"menu.irbs.query.custRatingHist", "icon":"", "routeName":"route.irbs.query.custRatingHist"}, {"type":"ROUTE", "order":100, "parentId":"menu.irbs.query", "id":"menu.irbs.query.custRatingHist", "titleI18nKey":"menu.irbs.query.custRatingHist", "icon":"", "routeName":"route.irbs.query.custRatingHist"},

26
irbs.frontend/src/routes/routes.json

@ -168,6 +168,32 @@
}, },
"children": [] "children": []
}, },
{
"name": "route.irbs.riskExposure.adjust.apply",
"path": "irbs/riskExposureAdjustApply",
"parent": "/",
"priority": -1,
"component": "irbs.riskExposureAdjustApply",
"componentPath": "@/views/riskExposure/RiskExposureAdjustApply.vue",
"redirect": null,
"meta": {
"permissions": ["/example/**/*"]
},
"children": []
},
{
"name": "route.irbs.riskExposure.adjust.approval",
"path": "irbs/riskExposureAdjustApproval",
"parent": "/",
"priority": -1,
"component": "irbs.riskExposureAdjustApproval",
"componentPath": "@/views/riskExposure/RiskExposureAdjustApproval.vue",
"redirect": null,
"meta": {
"permissions": ["/example/**/*"]
},
"children": []
},
{ {
"name": "route.irbs.query.custRatingHist", "name": "route.irbs.query.custRatingHist",
"path": "irbs/custRatingHist", "path": "irbs/custRatingHist",

83
irbs.frontend/src/views/debtRating/LgdQuery.vue

@ -1,5 +1,84 @@
<template> <template>
<div>111</div> <div style="height: 100%">
<w-grid
ref="appDebtRatingGridRef"
title="债项评级列表"
:fetch-data-url="Environment.apiContextPath('api/irbs/appDebtRating/queryPage')"
:sort-no="true"
:checkbox-selection="false"
:query-form-cols-num="4"
:query-form-fields="appDebtRatingGrid.queryFormFields"
:columns="appDebtRatingGrid.columns"
:toolbar-actions="appDebtRatingGrid.buttons"
:pagination="{
sortBy: 'lastModifyDate',
descending: true,
}"
:query-criteria="{
fieldName: 'dataStatus',
operator: 'equals',
value: '1',
}"
></w-grid>
<LaunchExposureDialog ref="launchExposureDialogRef" @refresh="refreshTable"></LaunchExposureDialog>
<HandmadeExposureDialog ref="handmadeExposureDialogRef" @refresh="refreshTable"></HandmadeExposureDialog>
</div>
</template> </template>
<script setup lang="ts"></script> <script setup lang="ts">
import { ref } from 'vue';
import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import LaunchExposureDialog from '@/views/riskExposure/LaunchExposureDialog.vue';
import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue';
const $q = useQuasar();
const appDebtRatingGridRef = ref();
const launchExposureDialogRef = ref();
const handmadeExposureDialogRef = ref();
const appDebtRatingGrid = {
buttons: [
['query', 'separator', 'moreQuery'],
'reset',
'separator',
{
extend: 'view',
click: (args) => {
handmadeExposureDialogRef.value.show(args.selected, true, 'riskExposure');
},
},
'separator',
],
queryFormFields: [
{ label: '债项编号', name: 'contractNo', type: 'text' },
{ label: '客户号', name: 'custNo', type: 'text' },
{ label: '客户名称', name: 'custName', type: 'text' },
],
columns: [
{ name: 'contractNo', label: '债项编号' },
{ name: 'custNo', label: '客户号' },
{ name: 'custName', label: '客户名称' },
{ name: 'orgType', label: '客户类型' },
{ name: 'productType', label: '产品类型' },
{ name: 'contractAmt', label: '债项金额' },
{ name: 'lowRiskFlg', label: '是否低风险业务' },
{ name: 'interestDebtFlg', label: '是否利率债' },
{ name: 'financeDebtLevel', label: '金融机构债权等级' },
{ name: 'creditGrade', label: '借款人评级' },
{ name: 'industryType', label: '借款人行业类型' },
{ name: 'corpSize', label: '借款人企业规模' },
{ name: 'corpType', label: '借款人企业性质' },
{ name: 'regionCode', label: '借款人所在区域' },
{ name: 'guaranteeType', label: '担保类型' },
{ name: 'pledgeClass', label: '保证担保形式' },
{ name: 'regionCode', label: '借款人所在区域' },
{ name: 'lgd', label: 'LGD' },
{ name: 'managerCode', label: '业务经办人' },
],
};
const refreshTable = () => {
appDebtRatingGridRef.value.refresh();
};
</script>

12
irbs.frontend/src/views/default/CognizanceApply.vue

@ -66,18 +66,6 @@ const cognizanceGrid = {
cognizanceDialogRef.value.show(args.selected); cognizanceDialogRef.value.show(args.selected);
}, },
}, },
// {
// name: 'cancel',
// icon: 'delete_forever',
// label: '',
// click: () => {},
// },
// {
// name: 'approval',
// icon: 'approval',
// label: '',
// click: () => {},
// },
'separator', 'separator',
{ {
extend: 'view', extend: 'view',

234
irbs.frontend/src/views/riskExposure/HandmadeExposureDialog.vue

@ -0,0 +1,234 @@
<template>
<w-dialog ref="dialogRef" :title="state.dialogTitle" width="80%" height="80%" @hide="dialogHide" @maximized="maximized">
<q-splitter v-model="state.splitterModel" disable style="height: 100%">
<template #before>
<q-tabs v-model="state.tab" vertical indicator-color="amber">
<q-tab name="cust" icon="person" label="客户信息" />
<q-tab name="opinionList" icon="insert_comment" label="意见列表" />
</q-tabs>
</template>
<template #after>
<q-tab-panels
v-model="state.tab"
:keep-alive="true"
animated
swipeable
vertical
transition-prev="jump-up"
transition-next="jump-up"
style="height: 100%"
>
<q-tab-panel name="cust" style="height: 100%">
<div>
<span class="pl-[8px]">客户基本信息</span>
<div class="pt-[8px]">
<w-info-panel :dense="state.dense" :info="state.custInfo" :column-num="4"></w-info-panel>
</div>
</div>
<div class="pt-[10px]" :style="state.dense ? 'height: calc(100% - 87px)' : 'height: calc(100% - 120px)'">
<w-grid
ref="debtGridRef"
title="客户债项信息"
:dense="state.dense"
:auto-fetch-data="true"
:fetch-data-url="Environment.apiContextPath('api/irbs/defaultCognizance/queryBillInfo')"
:checkbox-selection="false"
:config-button="false"
:columns="[
{ name: 'DATA_DT', label: '数据日期' },
{ name: 'DEBENTURE_NO', label: '借据号' },
{ name: 'CONT_NO', label: '合同编号' },
{ name: 'PRD_CD_DESC', label: '业务品种' },
{ name: 'BORR_GIVE_AMT', label: '借据金额' },
{ name: 'BORR_BAL', label: '借据余额' },
{ name: 'inOweintBal', label: '表内欠息' },
{ name: 'IN_OWEINT_BAL', label: '表外欠息' },
{ name: 'TEN_CLASS_CD', label: '十级分类', slot: 'tenClassCd' },
{ name: 'PRIN_OVER_DAYS', label: '本金逾期天数' },
{ name: 'INT_OVER_DAYS', label: '利息逾期天数' },
]"
:query-criteria="{
fieldName: 'CUST_NO',
operator: 'equals',
value: state.data['custNo'],
}"
:pagination="{
reqPageStart: 1,
}"
></w-grid>
</div>
</q-tab-panel>
<q-tab-panel name="opinionList" style="height: 100%">
<div :style="!state.viewFlag ? 'height: calc(100% - 300px)' : 'height: 100%'">
<w-grid
ref="opinionGridRef"
title="意见历史"
:dense="state.dense"
:auto-fetch-data="true"
:fetch-data-url="Environment.apiContextPath('api/irbs/riskExposureOperation/queryPage')"
:checkbox-selection="false"
:config-button="false"
:columns="[
{ name: 'creator', label: '处理人' },
{ name: 'lastModifyDate', label: '提交时间' },
{ name: 'operation', label: '处理结果' },
{ name: 'remarks', label: '意见说明' },
{ name: 'fileCount', label: '附件条数' },
]"
:query-criteria="{
fieldName: 'riskExposureId',
operator: 'equals',
value: state.data['id'],
}"
:pagination="{
reqPageStart: 1,
}"
></w-grid>
</div>
<div v-if="!state.viewFlag" class="pt-[10px]" style="height: 200px">
<w-form
ref="opinionFormRef"
:cols-num="1"
:fields="[
{
name: 'manResult',
label: '人工分类结果',
type: 'select',
options: RiskExposureItemOptions,
required: true,
showIf: (args) => {
if (state.data['processStatus'] === 'TO_BE_CHECKED') {
return false;
}
return true;
},
},
{ name: 'remarks', label: '意见说明', type: 'textarea', required: true, rows: 4 },
{ name: 'suggestUploadAnnx', label: '上传文件', type: 'file' },
]"
>
</w-form>
<div>
<w-workflow-action
ref="workflowActionRef"
:task-id="state.data['taskId']"
:data="state.opinionData"
:default-submit-button="false"
:action-url="Environment.apiContextPath('/api/irbs/riskExposure/submitRiskExposure')"
@before-submit="
async (action, callback) => {
state.opinionData = {
transientVariables: {
opaVal: action.transientVariables.goback,
opType: state.opType,
desc: '客户名称:' + state.data['custName'],
},
data: opinionFormRef.getData(),
};
const validateResult = await opinionFormRef.validate();
if (validateResult) {
callback(true);
} else {
NotifyManager.error('人工分类或意见未填写,无法提交');
callback(false);
}
}
"
@after-submit="
() => {
dialogRef.hide();
emit('refresh');
}
"
>
</w-workflow-action>
</div>
</div>
</q-tab-panel>
</q-tab-panels>
</template>
</q-splitter>
</w-dialog>
</template>
<script setup lang="ts">
import { reactive, ref, nextTick } from 'vue';
import { axios, Environment, NotifyManager, Tools, Formater, Options } from 'platform-core';
import { RiskExposureProcessStatus, RiskExposureItemOptions } from './RiskExposure.ts';
import { TrackOpTypes } from 'vue';
const dialogRef = ref();
const debtGridRef = ref();
const opinionGridRef = ref();
const opinionFormRef = ref();
const workflowActionRef = ref();
const emit = defineEmits(['refresh']);
const state = reactive({
data: {},
viewFlag: false,
dense: true,
opType: 'riskExposure',
status: 'edit',
dialogTitle: '人工风险暴露分类',
splitterModel: 12,
tab: 'cust',
custInfo: <any>[],
opinionData: {},
});
const debtActions = ['add', 'edit', 'remove'];
const dialogHide = () => {
state.status = 'edit';
state.dialogTitle = '模拟计算';
state.tab = 'cust';
};
const maximized = (flag) => {
nextTick(() => {
state.dense = !flag;
});
};
const loadCustInfo = (data) => {
const urlSearchParams = new URLSearchParams();
urlSearchParams.append('criteria', JSON.stringify({ fieldName: 'custNo', operator: 'equals', value: data['custNo'] }));
axios
.get(Environment.apiContextPath('api/irbs/companyCustomer?pageable=false'), { params: urlSearchParams })
.then((resp) => {
if (resp.data?.content) {
const custInfo = resp.data.content[0];
state.custInfo = [];
state.custInfo.push({ label: '客户号', value: custInfo['custNo'] });
state.custInfo.push({ label: '客户名称', value: custInfo['custName'] });
state.custInfo.push({ label: '客户经理编号', value: custInfo['mgerNo'] });
state.custInfo.push({ label: '客户经理名称', value: custInfo['mgerCna'] });
state.custInfo.push({ label: '行业类型', value: custInfo['induSortCd'] });
state.custInfo.push({ label: '客户类型', value: custInfo['custTypeCd'] });
state.custInfo.push({ label: '成立时间', value: custInfo['buildDt'] });
state.custInfo.push({ label: '企业规模', value: custInfo['corpSizeCd'] });
}
})
.catch((error) => {
console.info('error====', error);
});
};
const show = (data: any, viewFlag = false, opType) => {
state.data = data;
state.viewFlag = viewFlag;
state.opType = opType;
dialogRef.value.show();
//
loadCustInfo(data);
};
const hide = () => {
dialogRef.value.hide();
};
defineExpose({
show,
hide,
});
</script>

133
irbs.frontend/src/views/riskExposure/LaunchExposureAdjustDialog.vue

@ -0,0 +1,133 @@
<template>
<w-dialog ref="toExposureAdjustDialogRef" :title="state.dialogTitle" width="80%" height="80%" :buttons="dialogButtons">
<div class="p-1.5">
<w-grid
ref="toExposureGridRef"
title="待调整列表"
:height="430"
:fetch-data-url="Environment.apiContextPath('api/irbs/riskExposure/adjust/queryPage')"
:sort-no="true"
:checkbox-selection="false"
:config-button="false"
:query-form-cols-num="2"
:query-form-fields="toExposureAdjustGrid.queryFormFields"
:columns="toExposureAdjustGrid.columns"
:toolbar-actions="toExposureAdjustGrid.buttons"
:pagination="{
sortBy: 'lastModifyDate',
descending: true,
}"
:query-criteria="{
operator: 'and',
criteria: [
{
fieldName: 'isNeedOperate',
operator: 'equals',
value: '0',
},
{
fieldName: 'dataStatus',
operator: 'equals',
value: '0',
},
],
}"
></w-grid>
<HandmadeExposureDialog ref="handmadeExposureDialogRef"></HandmadeExposureDialog>
</div>
</w-dialog>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue';
import { useQuasar } from 'quasar';
import { axios, Environment, EnumTools, NotifyManager, Formater } from 'platform-core';
import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue';
const $q = useQuasar();
const toExposureAdjustDialogRef = ref();
const toExposureGridRef = ref();
const handmadeExposureDialogRef = ref();
const props = defineProps({
dictionary: {
type: Object,
default: () => {
return {};
},
},
});
const emit = defineEmits(['refresh']);
const state = reactive({
dialogTitle: '选择待发起业务',
});
const dialogButtons = [
{
label: '确定',
icon: 'beenhere',
click: async () => {
const rows = toExposureGridRef.value.getSelectedRows();
if (rows.length === 0) {
NotifyManager.warn('请选择待发起的业务');
return;
}
//
showLoading();
axios
.post(Environment.apiContextPath('api/irbs/riskExposure/handmadeRiskExposureAdjust'), { id: rows[0].id })
.then((resp) => {
hideLoading();
if (resp && resp['code'] === 200 && resp['data']) {
emit('refresh');
toExposureAdjustDialogRef.value.hide();
}
})
.catch((error) => {
hideLoading();
console.info('error-------------', error);
});
},
},
];
const toExposureAdjustGrid = {
buttons: [['query', 'separator'], 'reset'],
queryFormFields: [
{ label: '债项编号', name: 'businessNo', type: 'text' },
{ label: '客户号', name: 'custNo', type: 'text' },
{ label: '客户名称', name: 'custName', type: 'text' },
],
columns: [
{ name: 'businessNo', label: '债项编号' },
{ name: 'custNo', label: '客户号' },
{ name: 'custName', label: '客户名称' },
{ name: 'custType', label: '客户类型' },
{ name: 'productType', label: '产品类型' },
{ name: 'mgerOrgNm', label: '所属机构' },
],
};
const show = () => {
toExposureAdjustDialogRef.value.show();
};
const hide = () => {
toExposureAdjustDialogRef.value.hide();
};
const showLoading = (msg: string = '正在处理,请稍等...') => {
$q.loading.show({
message: msg,
boxClass: 'bg-grey-2 text-grey-9',
spinnerColor: 'primary',
});
};
const hideLoading = () => {
$q.loading.hide();
};
defineExpose({
show,
hide,
});
</script>

133
irbs.frontend/src/views/riskExposure/LaunchExposureDialog.vue

@ -0,0 +1,133 @@
<template>
<w-dialog ref="toExposureDialogRef" :title="state.dialogTitle" width="80%" height="80%" :buttons="dialogButtons">
<div class="p-1.5">
<w-grid
ref="toExposureGridRef"
title="待发起列表"
:height="430"
:fetch-data-url="Environment.apiContextPath('api/irbs/riskExposure/queryPage')"
:sort-no="true"
:checkbox-selection="false"
:config-button="false"
:query-form-cols-num="2"
:query-form-fields="toExposureGrid.queryFormFields"
:columns="toExposureGrid.columns"
:toolbar-actions="toExposureGrid.buttons"
:pagination="{
sortBy: 'lastModifyDate',
descending: true,
}"
:query-criteria="{
operator: 'and',
criteria: [
{
fieldName: 'isNeedOperate',
operator: 'equals',
value: '1',
},
{
fieldName: 'dataStatus',
operator: 'equals',
value: '0',
},
],
}"
></w-grid>
<HandmadeExposureDialog ref="handmadeExposureDialogRef"></HandmadeExposureDialog>
</div>
</w-dialog>
</template>
<script setup lang="ts">
import { ref, reactive } from 'vue';
import { useQuasar } from 'quasar';
import { axios, Environment, EnumTools, NotifyManager, Formater } from 'platform-core';
import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue';
const $q = useQuasar();
const toExposureDialogRef = ref();
const toExposureGridRef = ref();
const handmadeExposureDialogRef = ref();
const props = defineProps({
dictionary: {
type: Object,
default: () => {
return {};
},
},
});
const emit = defineEmits(['refresh']);
const state = reactive({
dialogTitle: '选择待发起业务',
});
const dialogButtons = [
{
label: '确定',
icon: 'beenhere',
click: async () => {
const rows = toExposureGridRef.value.getSelectedRows();
if (rows.length === 0) {
NotifyManager.warn('请选择待发起的业务');
return;
}
//
showLoading();
axios
.post(Environment.apiContextPath('api/irbs/riskExposure/handmadeRiskExposure'), { id: rows[0].id })
.then((resp) => {
hideLoading();
if (resp && resp['code'] === 200 && resp['data']) {
emit('refresh');
toExposureDialogRef.value.hide();
}
})
.catch((error) => {
hideLoading();
console.info('error-------------', error);
});
},
},
];
const toExposureGrid = {
buttons: [['query', 'separator'], 'reset'],
queryFormFields: [
{ label: '债项编号', name: 'businessNo', type: 'text' },
{ label: '客户号', name: 'custNo', type: 'text' },
{ label: '客户名称', name: 'custName', type: 'text' },
],
columns: [
{ name: 'businessNo', label: '债项编号' },
{ name: 'custNo', label: '客户号' },
{ name: 'custName', label: '客户名称' },
{ name: 'custType', label: '客户类型' },
{ name: 'productType', label: '产品类型' },
{ name: 'mgerOrgNm', label: '所属机构' },
],
};
const show = () => {
toExposureDialogRef.value.show();
};
const hide = () => {
toExposureDialogRef.value.hide();
};
const showLoading = (msg: string = '正在处理,请稍等...') => {
$q.loading.show({
message: msg,
boxClass: 'bg-grey-2 text-grey-9',
spinnerColor: 'primary',
});
};
const hideLoading = () => {
$q.loading.hide();
};
defineExpose({
show,
hide,
});
</script>

33
irbs.frontend/src/views/riskExposure/RiskExposure.ts

@ -0,0 +1,33 @@
/**
*
*/
export const RiskExposureProcessStatus = {
TO_BE_SUBMITTED: 'TO_BE_SUBMITTED',
RETURNED: 'RETURNED',
TO_BE_CHECKED: 'TO_BE_CHECKED',
COMPLETED_PASS: 'COMPLETED_PASS',
COMPLETED_REJECT: 'COMPLETED_REJECT',
};
/**
*
*/
export const RiskExposureItemOptions = [
{ label: '公司风险暴露', value: 'RE_0100' },
{ label: '一般公司风险暴露', value: 'RE_0110' },
{ label: '中小企业风险暴露', value: 'RE_0120' },
{ label: '专业贷款风险暴露', value: 'RE_0130' },
{ label: '项目融资风险暴露', value: 'RE_0131' },
{ label: '商品融资风险暴露', value: 'RE_0132' },
{ label: '物品融资风险暴露', value: 'RE_0133' },
{ label: '产生收入的房地产风险暴露', value: 'RE_0134' },
{ label: '金融机构风险暴露', value: 'RE_0200' },
{ label: '银行类金融机构风险暴露', value: 'RE_0210' },
{ label: '非银行类金融机构风险暴露', value: 'RE_0220' },
{ label: '股权风险暴露', value: 'RE_0300' },
{ label: '主权风险暴露', value: 'RE_0400' },
{ label: '其他风险暴露', value: 'RE_0500' },
{ label: '资产证券化风险暴露', value: 'RE_0510' },
{ label: '合格购入公司应收账款风险暴露', value: 'RE_0520' },
{ label: '零售风险暴露', value: 'RE_0600' },
];

145
irbs.frontend/src/views/riskExposure/RiskExposureAdjustApply.vue

@ -0,0 +1,145 @@
<template>
<div style="height: 100%">
<w-grid
ref="riskExposureAdjustGridRef"
title="风险暴露分类调整列表"
:fetch-data-url="Environment.apiContextPath('api/irbs/riskExposure/adjust/queryPage')"
:sort-no="true"
:checkbox-selection="false"
:query-form-cols-num="4"
:query-form-fields="riskExposureAdjustGrid.queryFormFields"
:columns="riskExposureAdjustGrid.columns"
:toolbar-actions="riskExposureAdjustGrid.buttons"
:pagination="{
sortBy: 'lastModifyDate',
descending: true,
}"
:query-criteria="{
operator: 'and',
criteria: [
{
fieldName: 'isNeedOperate',
operator: 'equals',
value: '0',
},
{
fieldName: 'dataStatus',
operator: 'equals',
value: '1',
},
],
}"
></w-grid>
<LaunchExposureAdjustDialog ref="launchExposureAdjustDialogRef" @refresh="refreshTable"></LaunchExposureAdjustDialog>
<HandmadeExposureDialog ref="handmadeExposureDialogRef" @refresh="refreshTable"></HandmadeExposureDialog>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import LaunchExposureAdjustDialog from '@/views/riskExposure/LaunchExposureAdjustDialog.vue';
import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue';
import { RiskExposureProcessStatus } from './RiskExposure.ts';
const $q = useQuasar();
const riskExposureAdjustGridRef = ref();
const launchExposureAdjustDialogRef = ref();
const handmadeExposureDialogRef = ref();
const riskExposureAdjustGrid = {
buttons: [
['query', 'separator', 'moreQuery'],
'reset',
'separator',
{
extend: 'add',
label: '人工调整发起',
click: () => {
launchExposureAdjustDialogRef.value.show();
},
},
{
extend: 'edit',
label: '编辑',
enableIf: (args) => {
if (args.selected && (args.selected['processStatus'] === 'TO_BE_SUBMITTED' || args.selected['processStatus'] === 'RETURNED')) {
return true;
}
return false;
},
click: (args) => {
handmadeExposureDialogRef.value.show(args.selected, false, 'riskExposureAdjust');
},
},
'separator',
{
extend: 'view',
click: (args) => {
handmadeExposureDialogRef.value.show(args.selected, true, 'riskExposureAdjust');
},
},
'separator',
],
queryFormFields: [
{ label: '债项编号', name: 'businessNo', type: 'text' },
{ label: '客户号', name: 'custNo', type: 'text' },
{ label: '客户名称', name: 'custName', type: 'text' },
{
label: '风险暴露分类',
name: 'manResult',
type: 'select',
options: [
{ label: '公司风险暴露', value: 'RE_0100' },
{ label: '一般公司风险暴露', value: 'RE_0110' },
{ label: '中小企业风险暴露', value: 'RE_0120' },
{ label: '专业贷款风险暴露', value: 'RE_0130' },
{ label: '项目融资风险暴露', value: 'RE_0131' },
{ label: '商品融资风险暴露', value: 'RE_0132' },
{ label: '物品融资风险暴露', value: 'RE_0133' },
{ label: '产生收入的房地产风险暴露', value: 'RE_0134' },
{ label: '金融机构风险暴露', value: 'RE_0200' },
{ label: '银行类金融机构风险暴露', value: 'RE_0210' },
{ label: '非银行类金融机构风险暴露', value: 'RE_0220' },
{ label: '股权风险暴露', value: 'RE_0300' },
{ label: '主权风险暴露', value: 'RE_0400' },
{ label: '其他风险暴露', value: 'RE_0500' },
{ label: '资产证券化风险暴露', value: 'RE_0510' },
{ label: '合格购入公司应收账款风险暴露', value: 'RE_0520' },
{ label: '零售风险暴露', value: 'RE_0600' },
],
},
{
label: '流程状态',
name: 'status',
type: 'select',
options: [
{ value: 'TO_BE_SUBMITTED', label: '待发起' },
{ value: 'RETURNED', label: '退回' },
{ value: 'TO_BE_CHECKED', label: '审批中' },
{ value: 'COMPLETED_PASS', label: '通过' },
{ value: 'COMPLETED_REJECT', label: '否决' },
],
},
],
columns: [
{ name: 'businessNo', label: '债项编号' },
{ name: 'custNo', label: '客户号' },
{ name: 'custName', label: '客户名称' },
{ name: 'custType', label: '客户类型' },
{ name: 'productType', label: '产品类型' },
{ name: 'manResult', label: '人工分类结果' },
{ name: 'finalResult', label: '最终分类结果' },
{ name: 'managerName', label: '客户经理' },
{ name: 'createDate', label: '申请时间', format: Formater.dateOnly() },
{ name: 'processStatus', label: '流程状态' },
{ name: 'mgerOrgNm', label: '所属机构' },
{ name: 'currentAssignee', label: '当前处理人' },
],
};
const refreshTable = () => {
riskExposureAdjustGridRef.value.refresh();
};
</script>

152
irbs.frontend/src/views/riskExposure/RiskExposureAdjustApproval.vue

@ -0,0 +1,152 @@
<template>
<div style="height: 100%">
<w-grid
ref="riskExposureAdjustGridRef"
title="风险暴露分类调整列表"
:fetch-data-url="Environment.apiContextPath('api/irbs/riskExposure/adjust/queryPage')"
:sort-no="true"
:checkbox-selection="false"
:query-form-cols-num="4"
:query-form-fields="riskExposureAdjustGrid.queryFormFields"
:columns="riskExposureAdjustGrid.columns"
:toolbar-actions="riskExposureAdjustGrid.buttons"
:pagination="{
sortBy: 'lastModifyDate',
descending: true,
}"
:query-criteria="{
operator: 'and',
criteria: [
{
fieldName: 'isNeedOperate',
operator: 'equals',
value: '0',
},
{
fieldName: 'dataStatus',
operator: 'equals',
value: '1',
},
{
fieldName: 'processStatus',
operator: 'equals',
value: 'TO_BE_CHECKED',
},
],
}"
></w-grid>
<LaunchExposureDialog ref="launchExposureDialogRef" @refresh="refreshTable"></LaunchExposureDialog>
<HandmadeExposureDialog ref="handmadeExposureDialogRef" @refresh="refreshTable"></HandmadeExposureDialog>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import LaunchExposureDialog from '@/views/riskExposure/LaunchExposureDialog.vue';
import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue';
import { RiskExposureProcessStatus } from './RiskExposure.ts';
const $q = useQuasar();
const riskExposureAdjustGridRef = ref();
const launchExposureDialogRef = ref();
const handmadeExposureDialogRef = ref();
const RiskExposureProcessStatusEnum = await EnumTools.fetch('irbs.riskExposure.jpa.support.RiskExposureProcessStatus');
const riskExposureAdjustGrid = {
buttons: [
['query', 'separator', 'moreQuery'],
'reset',
'separator',
/*{
extend: 'add',
label: '人工分类发起',
click: () => {
launchExposureDialogRef.value.show();
},
},*/
{
extend: 'edit',
label: '编辑',
enableIf: (args) => {
if (args.selected && (args.selected['processStatus'] === 'TO_BE_CHECKED' || args.selected['processStatus'] === 'RETURNED')) {
return true;
}
return false;
},
click: (args) => {
handmadeExposureDialogRef.value.show(args.selected, false, 'riskExposureAdjust');
},
},
'separator',
{
extend: 'view',
click: (args) => {
handmadeExposureDialogRef.value.show(args.selected, true, 'riskExposureAdjust');
},
},
'separator',
],
queryFormFields: [
{ label: '债项编号', name: 'businessNo', type: 'text' },
{ label: '客户号', name: 'custNo', type: 'text' },
{ label: '客户名称', name: 'custName', type: 'text' },
{
label: '风险暴露分类',
name: 'manResult',
type: 'select',
options: [
{ label: '公司风险暴露', value: 'RE_0100' },
{ label: '一般公司风险暴露', value: 'RE_0110' },
{ label: '中小企业风险暴露', value: 'RE_0120' },
{ label: '专业贷款风险暴露', value: 'RE_0130' },
{ label: '项目融资风险暴露', value: 'RE_0131' },
{ label: '商品融资风险暴露', value: 'RE_0132' },
{ label: '物品融资风险暴露', value: 'RE_0133' },
{ label: '产生收入的房地产风险暴露', value: 'RE_0134' },
{ label: '金融机构风险暴露', value: 'RE_0200' },
{ label: '银行类金融机构风险暴露', value: 'RE_0210' },
{ label: '非银行类金融机构风险暴露', value: 'RE_0220' },
{ label: '股权风险暴露', value: 'RE_0300' },
{ label: '主权风险暴露', value: 'RE_0400' },
{ label: '其他风险暴露', value: 'RE_0500' },
{ label: '资产证券化风险暴露', value: 'RE_0510' },
{ label: '合格购入公司应收账款风险暴露', value: 'RE_0520' },
{ label: '零售风险暴露', value: 'RE_0600' },
],
},
{
label: '流程状态',
name: 'status',
type: 'select',
options: [
{ value: 'TO_BE_SUBMITTED', label: '待发起' },
{ value: 'RETURNED', label: '退回' },
{ value: 'TO_BE_CHECKED', label: '审批中' },
{ value: 'COMPLETED_PASS', label: '通过' },
{ value: 'COMPLETED_REJECT', label: '否决' },
],
},
],
columns: [
{ name: 'businessNo', label: '债项编号' },
{ name: 'custNo', label: '客户号' },
{ name: 'custName', label: '客户名称' },
{ name: 'custType', label: '客户类型' },
{ name: 'productType', label: '产品类型' },
{ name: 'manResult', label: '人工分类结果' },
{ name: 'finalResult', label: '最终分类结果' },
{ name: 'managerName', label: '客户经理' },
{ name: 'createDate', label: '申请时间', format: Formater.dateOnly() },
{ name: 'processStatus', label: '流程状态', format: Formater.enum(RiskExposureProcessStatusEnum) },
{ name: 'mgerOrgNm', label: '所属机构' },
{ name: 'currentAssignee', label: '当前处理人' },
],
};
const refreshTable = () => {
riskExposureAdjustGridRef.value.refresh();
};
</script>

134
irbs.frontend/src/views/riskExposure/RiskExposureApply.vue

@ -1,5 +1,135 @@
<template> <template>
<div>111</div> <div style="height: 100%">
<w-grid
ref="riskExposureGridRef"
title="风险暴露分类列表"
:fetch-data-url="Environment.apiContextPath('api/irbs/riskExposure/queryPage')"
:sort-no="true"
:checkbox-selection="false"
:query-form-cols-num="4"
:query-form-fields="riskExposureGrid.queryFormFields"
:columns="riskExposureGrid.columns"
:toolbar-actions="riskExposureGrid.buttons"
:pagination="{
sortBy: 'lastModifyDate',
descending: true,
}"
:query-criteria="{
fieldName: 'dataStatus',
operator: 'equals',
value: '1',
}"
></w-grid>
<LaunchExposureDialog ref="launchExposureDialogRef" @refresh="refreshTable"></LaunchExposureDialog>
<HandmadeExposureDialog ref="handmadeExposureDialogRef" @refresh="refreshTable"></HandmadeExposureDialog>
</div>
</template> </template>
<script setup lang="ts"></script> <script setup lang="ts">
import { ref } from 'vue';
import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import LaunchExposureDialog from '@/views/riskExposure/LaunchExposureDialog.vue';
import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue';
import { RiskExposureProcessStatus } from './RiskExposure.ts';
const $q = useQuasar();
const riskExposureGridRef = ref();
const launchExposureDialogRef = ref();
const handmadeExposureDialogRef = ref();
const riskExposureGrid = {
buttons: [
['query', 'separator', 'moreQuery'],
'reset',
'separator',
{
extend: 'add',
label: '人工分类发起',
click: () => {
launchExposureDialogRef.value.show();
},
},
{
extend: 'edit',
label: '编辑',
enableIf: (args) => {
if (args.selected && (args.selected['processStatus'] === 'TO_BE_SUBMITTED' || args.selected['processStatus'] === 'RETURNED')) {
return true;
}
return false;
},
click: (args) => {
handmadeExposureDialogRef.value.show(args.selected, false, 'riskExposure');
},
},
'separator',
{
extend: 'view',
click: (args) => {
handmadeExposureDialogRef.value.show(args.selected, true, 'riskExposure');
},
},
'separator',
],
queryFormFields: [
{ label: '债项编号', name: 'businessNo', type: 'text' },
{ label: '客户号', name: 'custNo', type: 'text' },
{ label: '客户名称', name: 'custName', type: 'text' },
{
label: '风险暴露分类',
name: 'manResult',
type: 'select',
options: [
{ label: '公司风险暴露', value: 'RE_0100' },
{ label: '一般公司风险暴露', value: 'RE_0110' },
{ label: '中小企业风险暴露', value: 'RE_0120' },
{ label: '专业贷款风险暴露', value: 'RE_0130' },
{ label: '项目融资风险暴露', value: 'RE_0131' },
{ label: '商品融资风险暴露', value: 'RE_0132' },
{ label: '物品融资风险暴露', value: 'RE_0133' },
{ label: '产生收入的房地产风险暴露', value: 'RE_0134' },
{ label: '金融机构风险暴露', value: 'RE_0200' },
{ label: '银行类金融机构风险暴露', value: 'RE_0210' },
{ label: '非银行类金融机构风险暴露', value: 'RE_0220' },
{ label: '股权风险暴露', value: 'RE_0300' },
{ label: '主权风险暴露', value: 'RE_0400' },
{ label: '其他风险暴露', value: 'RE_0500' },
{ label: '资产证券化风险暴露', value: 'RE_0510' },
{ label: '合格购入公司应收账款风险暴露', value: 'RE_0520' },
{ label: '零售风险暴露', value: 'RE_0600' },
],
},
{
label: '流程状态',
name: 'status',
type: 'select',
options: [
{ value: 'TO_BE_SUBMITTED', label: '待发起' },
{ value: 'RETURNED', label: '退回' },
{ value: 'TO_BE_CHECKED', label: '审批中' },
{ value: 'COMPLETED_PASS', label: '通过' },
{ value: 'COMPLETED_REJECT', label: '否决' },
],
},
],
columns: [
{ name: 'businessNo', label: '债项编号' },
{ name: 'custNo', label: '客户号' },
{ name: 'custName', label: '客户名称' },
{ name: 'custType', label: '客户类型' },
{ name: 'productType', label: '产品类型' },
{ name: 'manResult', label: '人工分类结果' },
{ name: 'finalResult', label: '最终分类结果' },
{ name: 'managerName', label: '客户经理' },
{ name: 'createDate', label: '申请时间', format: Formater.dateOnly() },
{ name: 'processStatus', label: '流程状态' },
{ name: 'mgerOrgNm', label: '所属机构' },
{ name: 'currentAssignee', label: '当前处理人' },
],
};
const refreshTable = () => {
riskExposureGridRef.value.refresh();
};
</script>

146
irbs.frontend/src/views/riskExposure/RiskExposureApproval.vue

@ -1,5 +1,147 @@
<template> <template>
<div>111</div> <div style="height: 100%">
<w-grid
ref="riskExposureGridRef"
title="风险暴露分类列表"
:fetch-data-url="Environment.apiContextPath('api/irbs/riskExposure/queryPage')"
:sort-no="true"
:checkbox-selection="false"
:query-form-cols-num="4"
:query-form-fields="riskExposureGrid.queryFormFields"
:columns="riskExposureGrid.columns"
:toolbar-actions="riskExposureGrid.buttons"
:pagination="{
sortBy: 'lastModifyDate',
descending: true,
}"
:query-criteria="{
operator: 'and',
criteria: [
{
fieldName: 'dataStatus',
operator: 'equals',
value: '1',
},
{
fieldName: 'processStatus',
operator: 'equals',
value: 'TO_BE_CHECKED',
},
],
}"
></w-grid>
<LaunchExposureDialog ref="launchExposureDialogRef" @refresh="refreshTable"></LaunchExposureDialog>
<HandmadeExposureDialog ref="handmadeExposureDialogRef" @refresh="refreshTable"></HandmadeExposureDialog>
</div>
</template> </template>
<script setup lang="ts"></script> <script setup lang="ts">
import { ref } from 'vue';
import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import LaunchExposureDialog from '@/views/riskExposure/LaunchExposureDialog.vue';
import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue';
import { RiskExposureProcessStatus } from './RiskExposure.ts';
const $q = useQuasar();
const riskExposureGridRef = ref();
const launchExposureDialogRef = ref();
const handmadeExposureDialogRef = ref();
const RiskExposureProcessStatusEnum = await EnumTools.fetch('irbs.riskExposure.jpa.support.RiskExposureProcessStatus');
const riskExposureGrid = {
buttons: [
['query', 'separator', 'moreQuery'],
'reset',
'separator',
/*{
extend: 'add',
label: '人工分类发起',
click: () => {
launchExposureDialogRef.value.show();
},
},*/
{
extend: 'edit',
label: '编辑',
enableIf: (args) => {
if (args.selected && (args.selected['processStatus'] === 'TO_BE_CHECKED' || args.selected['processStatus'] === 'RETURNED')) {
return true;
}
return false;
},
click: (args) => {
handmadeExposureDialogRef.value.show(args.selected, false, 'riskExposure');
},
},
'separator',
{
extend: 'view',
click: (args) => {
handmadeExposureDialogRef.value.show(args.selected, true, 'riskExposure');
},
},
'separator',
],
queryFormFields: [
{ label: '债项编号', name: 'businessNo', type: 'text' },
{ label: '客户号', name: 'custNo', type: 'text' },
{ label: '客户名称', name: 'custName', type: 'text' },
{
label: '风险暴露分类',
name: 'manResult',
type: 'select',
options: [
{ label: '公司风险暴露', value: 'RE_0100' },
{ label: '一般公司风险暴露', value: 'RE_0110' },
{ label: '中小企业风险暴露', value: 'RE_0120' },
{ label: '专业贷款风险暴露', value: 'RE_0130' },
{ label: '项目融资风险暴露', value: 'RE_0131' },
{ label: '商品融资风险暴露', value: 'RE_0132' },
{ label: '物品融资风险暴露', value: 'RE_0133' },
{ label: '产生收入的房地产风险暴露', value: 'RE_0134' },
{ label: '金融机构风险暴露', value: 'RE_0200' },
{ label: '银行类金融机构风险暴露', value: 'RE_0210' },
{ label: '非银行类金融机构风险暴露', value: 'RE_0220' },
{ label: '股权风险暴露', value: 'RE_0300' },
{ label: '主权风险暴露', value: 'RE_0400' },
{ label: '其他风险暴露', value: 'RE_0500' },
{ label: '资产证券化风险暴露', value: 'RE_0510' },
{ label: '合格购入公司应收账款风险暴露', value: 'RE_0520' },
{ label: '零售风险暴露', value: 'RE_0600' },
],
},
{
label: '流程状态',
name: 'status',
type: 'select',
options: [
{ value: 'TO_BE_SUBMITTED', label: '待发起' },
{ value: 'RETURNED', label: '退回' },
{ value: 'TO_BE_CHECKED', label: '审批中' },
{ value: 'COMPLETED_PASS', label: '通过' },
{ value: 'COMPLETED_REJECT', label: '否决' },
],
},
],
columns: [
{ name: 'businessNo', label: '债项编号' },
{ name: 'custNo', label: '客户号' },
{ name: 'custName', label: '客户名称' },
{ name: 'custType', label: '客户类型' },
{ name: 'productType', label: '产品类型' },
{ name: 'manResult', label: '人工分类结果' },
{ name: 'finalResult', label: '最终分类结果' },
{ name: 'managerName', label: '客户经理' },
{ name: 'createDate', label: '申请时间', format: Formater.dateOnly() },
{ name: 'processStatus', label: '流程状态', format: Formater.enum(RiskExposureProcessStatusEnum) },
{ name: 'mgerOrgNm', label: '所属机构' },
{ name: 'currentAssignee', label: '当前处理人' },
],
};
const refreshTable = () => {
riskExposureGridRef.value.refresh();
};
</script>

0
irbs.riskExposure/README.adoc

7
irbs.riskExposure/build.gradle

@ -0,0 +1,7 @@
dependencies {
api(
"io.sc:io.sc.platform.mvc:${platform_version}",
"io.sc:io.sc.platform.flowable:${platform_version}",
"io.sc:io.sc.platform.page.config:${platform_version}",
)
}

0
irbs.riskExposure/gradle.properties

71
irbs.riskExposure/src/main/java/irbs/riskExposure/controller/RiskExposureAdjustController.java

@ -0,0 +1,71 @@
package irbs.riskExposure.controller;
import io.sc.platform.flowable.controller.support.ProcessProperties;
import io.sc.platform.flowable.support.CompleteTaskException;
import io.sc.platform.flowable.support.CompleteTaskResponse;
import io.sc.platform.orm.service.support.QueryParameter;
import irbs.riskExposure.jpa.entity.RiskExposure;
import irbs.riskExposure.service.RiskExposureAdjustService;
import irbs.riskExposure.service.RiskExposureProcessService;
import irbs.riskExposure.service.RiskExposureService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController
@RequestMapping("/api/irbs/riskExposure/adjust")
public class RiskExposureAdjustController {
@Autowired
private RiskExposureAdjustService riskExposureAdjustService;
@Autowired
private RiskExposureProcessService riskExposureProcessService;
@GetMapping("queryPage")
public Page<RiskExposure> queryPage(QueryParameter queryParameter) throws Exception{
Page<RiskExposure> page = riskExposureAdjustService.queryPage(queryParameter);
return page;
}
/**
* 根据ID查询风险暴露分类数据
* @param map
* @throws Exception
*/
@RequestMapping(value="getRiskExposureById",method= RequestMethod.POST)
@ResponseBody
public RiskExposure getRiskExposureById(@RequestBody Map<String, Object> map) throws Exception {
String id = (String) map.get("id");
return riskExposureAdjustService.findById(id);
}
/**
* 人工风险暴露分类发起
* @param map
* @throws Exception
*/
@RequestMapping(value="handmadeRiskExposure",method= RequestMethod.POST)
@ResponseBody
public RiskExposure handmadeRiskExposure(@RequestBody Map<String, Object> map) throws Exception {
String id = (String) map.get("id");
return riskExposureAdjustService.handmadeRiskExposure(id);
}
/**
* 人工风险暴露分类流程提交
* @throws Exception
*/
@RequestMapping(value="submitRiskExposure/{taskId}",method= RequestMethod.POST)
@ResponseBody
public CompleteTaskResponse submitRiskExposure(@PathVariable("taskId") String taskId, @RequestBody ProcessProperties processProperties) throws Exception {
try {
return riskExposureProcessService.submitRiskExposureAdjust(taskId, processProperties);
} catch (CompleteTaskException exception) {
return CompleteTaskResponse.fromAssigneesJson(exception.getMessage());
} catch (Exception e) {
e.printStackTrace();
return new CompleteTaskResponse();
}
}
}

90
irbs.riskExposure/src/main/java/irbs/riskExposure/controller/RiskExposureController.java

@ -0,0 +1,90 @@
package irbs.riskExposure.controller;
import io.sc.platform.flowable.controller.support.ProcessProperties;
import io.sc.platform.flowable.support.CompleteTaskException;
import io.sc.platform.flowable.support.CompleteTaskResponse;
import io.sc.platform.orm.service.support.QueryParameter;
import irbs.riskExposure.jpa.entity.RiskExposure;
import irbs.riskExposure.service.RiskExposureAdjustService;
import irbs.riskExposure.service.RiskExposureProcessService;
import irbs.riskExposure.service.RiskExposureService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController
@RequestMapping("/api/irbs/riskExposure")
public class RiskExposureController {
@Autowired
private RiskExposureService riskExposureService;
@Autowired
private RiskExposureAdjustService riskExposureAdjustService;
@Autowired
private RiskExposureProcessService riskExposureProcessService;
@GetMapping("queryPage")
public Page<RiskExposure> queryPage(QueryParameter queryParameter) throws Exception{
Page<RiskExposure> page = riskExposureService.queryPage(queryParameter);
return page;
}
/**
* 根据ID查询风险暴露分类数据
* @param map
* @throws Exception
*/
@RequestMapping(value="getRiskExposureById",method= RequestMethod.POST)
@ResponseBody
public RiskExposure getRiskExposureById(@RequestBody Map<String, Object> map) throws Exception {
String id = (String) map.get("id");
return riskExposureService.findById(id);
}
/**
* 人工风险暴露分类发起
* @param map
* @throws Exception
*/
@RequestMapping(value="handmadeRiskExposure",method= RequestMethod.POST)
@ResponseBody
public RiskExposure handmadeRiskExposure(@RequestBody Map<String, Object> map) throws Exception {
String id = (String) map.get("id");
return riskExposureService.handmadeRiskExposure(id);
}
/**
* 人工风险暴露分类调整发起
* @param map
* @throws Exception
*/
@RequestMapping(value="handmadeRiskExposureAdjust",method= RequestMethod.POST)
@ResponseBody
public RiskExposure handmadeRiskExposureAdjust(@RequestBody Map<String, Object> map) throws Exception {
String id = (String) map.get("id");
return riskExposureAdjustService.handmadeRiskExposure(id);
}
/**
* 人工风险暴露分类流程提交
* @throws Exception
*/
@RequestMapping(value="submitRiskExposure/{taskId}",method= RequestMethod.POST)
@ResponseBody
public CompleteTaskResponse submitRiskExposure(@PathVariable("taskId") String taskId, @RequestBody ProcessProperties processProperties) throws Exception {
try {
String opType = (String) processProperties.getTransientVariables().get("opType");
if(opType.equals("riskExposureAdjust")){
return riskExposureProcessService.submitRiskExposureAdjust(taskId, processProperties);
}else {
return riskExposureProcessService.submitRiskExposure(taskId, processProperties);
}
} catch (CompleteTaskException exception) {
return CompleteTaskResponse.fromAssigneesJson(exception.getMessage());
} catch (Exception e) {
e.printStackTrace();
return new CompleteTaskResponse();
}
}
}

29
irbs.riskExposure/src/main/java/irbs/riskExposure/controller/RiskExposureOperationController.java

@ -0,0 +1,29 @@
package irbs.riskExposure.controller;
import io.sc.platform.flowable.controller.support.ProcessProperties;
import io.sc.platform.flowable.support.CompleteTaskException;
import io.sc.platform.flowable.support.CompleteTaskResponse;
import io.sc.platform.orm.service.support.QueryParameter;
import irbs.riskExposure.jpa.entity.RiskExposure;
import irbs.riskExposure.jpa.entity.RiskExposureOperation;
import irbs.riskExposure.jpa.repository.CustomerRepository;
import irbs.riskExposure.service.RiskExposureOperationService;
import irbs.riskExposure.service.RiskExposureService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
@RestController
@RequestMapping("/api/irbs/riskExposureOperation")
public class RiskExposureOperationController {
@Autowired
private RiskExposureOperationService riskExposureOperationService;
@GetMapping("queryPage")
public Page<RiskExposureOperation> queryPage(QueryParameter queryParameter) throws Exception{
return riskExposureOperationService.queryPage(queryParameter);
}
}

361
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/entity/Customer.java

@ -0,0 +1,361 @@
package irbs.riskExposure.jpa.entity;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import javax.validation.constraints.Size;
/**
* 对公客户基本信息
* @author likunming
*
*/
@Entity
@Table(name="IRBS_CUST_CP_INFO")
public class Customer {
//主键
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
@Column(name="ID_")
@Size(max=50)
protected String id;
/**
* 客户号
*/
@Column(name="CUST_NO")
private String custNo;
/**
* 客户中文名
*/
@Column(name="CUST_CNA")
private String custName;
/**
* 管户人编号
*/
@Column(name="MGER_NO")
private String mgerNo;
/**
* 管户人
*/
@Column(name="MGER_CNA")
private String mgerCna;
/**
* 管户机构编号
*/
@Column(name="MGER_ORG_NO")
private String mgerOrgNo;
/**
* 管户机构名称
*/
@Column(name="MGER_ORG_NM")
private String mgerOrgNm;
/**
* 组织机构代码证
*/
@Column(name="ORGN_CD")
private String orgnCd;
/**
* 统一社会信用代码
*/
@Column(name="ORG_CRDT_CD")
private String orgCrdtCd;
/**
* 国标行业
*/
@Column(name="INDU_SORT_CD")
private String induSortCd;
/**
* 客户类型
*/
@Column(name="CUST_TYPE_CD")
private String custTypeCd;
/**
* 客户分类
*/
@Column(name="CUST_SORT_CD")
private String custSortCd;
/**
* 创建日期
*/
@Column(name="BUILD_DT")
private String buildDt;
/**
* 企业规模
*/
@Column(name="CORP_SIZE_CD")
private String corpSizeCd;
/**
* 注册地址
*/
@Column(name="RGST_GROUND")
private String rgstGround;
/**
* 3年内借据逾期超过30天标志
*/
@Column(name="YEARS3_OVDUE_30_DAY_FLAG")
private String years3Ovdue30DayFlag;
/**
* 3年内垫款超过30天标志
*/
@Column(name="YEARS3_ADV_MONEY_30_DAY_FLAG")
private String years3AdvMoney30DayFlag;
/**
* 3年内贷款展期次数2次及以上标志
*/
@Column(name="YEARS3_EXPAND_2_CNT_FLAG")
private String years3Expand2CntFlag;
/**
* 3年内借新还旧次数2次及以上标志
*/
@Column(name="YEARS3_BOR_REPAY_2_CNT_FLAG")
private String years3BorRepay2CntFlag;
/**
* 3年内结息方式变更后是否出现逾期2次及以上标志
*/
@Column(name="YEARS3_MODE_MODIF_OVERDUE_2_CNT_FLAG")
private String years3ModeModifOverdue2CntFlag;
/**
* 3年内合同的本金还款计划是否变更2次及以上标志
*/
@Column(name="YEARS3_PRIN_REPAY_PLAN_MODIF_2_CNT_FLAG")
private String years3PrinRepayPlanModif2CntFlag;
/**
* 3年内重组2次及以上标志
*/
@Column(name="YEARS3_REGROUP_2_CNT_FLAG")
private String years3Regroup2CntFlag;
/**
* 银行业协会惩戒人名单
*/
@Column(name="CHASTEN_CUST_FLAG")
private String chastenCustFlag;
/**
* 国标行业名称
*/
@Transient
private String induSortName;
public Customer() {
}
public Customer(String id) {
this.id = id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCustNo() {
return custNo;
}
public void setCustNo(String custNo) {
this.custNo = custNo;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getMgerNo() {
return mgerNo;
}
public void setMgerNo(String mgerNo) {
this.mgerNo = mgerNo;
}
public String getMgerCna() {
return mgerCna;
}
public void setMgerCna(String mgerCna) {
this.mgerCna = mgerCna;
}
public String getMgerOrgNo() {
return mgerOrgNo;
}
public void setMgerOrgNo(String mgerOrgNo) {
this.mgerOrgNo = mgerOrgNo;
}
public String getMgerOrgNm() {
return mgerOrgNm;
}
public void setMgerOrgNm(String mgerOrgNm) {
this.mgerOrgNm = mgerOrgNm;
}
public String getOrgnCd() {
return orgnCd;
}
public void setOrgnCd(String orgnCd) {
this.orgnCd = orgnCd;
}
public String getOrgCrdtCd() {
return orgCrdtCd;
}
public void setOrgCrdtCd(String orgCrdtCd) {
this.orgCrdtCd = orgCrdtCd;
}
public String getInduSortCd() {
return induSortCd;
}
public void setInduSortCd(String induSortCd) {
this.induSortCd = induSortCd;
}
public String getCustTypeCd() {
return custTypeCd;
}
public void setCustTypeCd(String custTypeCd) {
this.custTypeCd = custTypeCd;
}
public String getCustSortCd() {
return custSortCd;
}
public void setCustSortCd(String custSortCd) {
this.custSortCd = custSortCd;
}
public String getBuildDt() {
return buildDt;
}
public void setBuildDt(String buildDt) {
this.buildDt = buildDt;
}
public String getCorpSizeCd() {
return corpSizeCd;
}
public void setCorpSizeCd(String corpSizeCd) {
this.corpSizeCd = corpSizeCd;
}
public String getRgstGround() {
return rgstGround;
}
public void setRgstGround(String rgstGround) {
this.rgstGround = rgstGround;
}
public String getYears3Ovdue30DayFlag() {
return years3Ovdue30DayFlag;
}
public void setYears3Ovdue30DayFlag(String years3Ovdue30DayFlag) {
this.years3Ovdue30DayFlag = years3Ovdue30DayFlag;
}
public String getYears3AdvMoney30DayFlag() {
return years3AdvMoney30DayFlag;
}
public void setYears3AdvMoney30DayFlag(String years3AdvMoney30DayFlag) {
this.years3AdvMoney30DayFlag = years3AdvMoney30DayFlag;
}
public String getYears3Expand2CntFlag() {
return years3Expand2CntFlag;
}
public void setYears3Expand2CntFlag(String years3Expand2CntFlag) {
this.years3Expand2CntFlag = years3Expand2CntFlag;
}
public String getYears3BorRepay2CntFlag() {
return years3BorRepay2CntFlag;
}
public void setYears3BorRepay2CntFlag(String years3BorRepay2CntFlag) {
this.years3BorRepay2CntFlag = years3BorRepay2CntFlag;
}
public String getYears3ModeModifOverdue2CntFlag() {
return years3ModeModifOverdue2CntFlag;
}
public void setYears3ModeModifOverdue2CntFlag(String years3ModeModifOverdue2CntFlag) {
this.years3ModeModifOverdue2CntFlag = years3ModeModifOverdue2CntFlag;
}
public String getYears3PrinRepayPlanModif2CntFlag() {
return years3PrinRepayPlanModif2CntFlag;
}
public void setYears3PrinRepayPlanModif2CntFlag(String years3PrinRepayPlanModif2CntFlag) {
this.years3PrinRepayPlanModif2CntFlag = years3PrinRepayPlanModif2CntFlag;
}
public String getYears3Regroup2CntFlag() {
return years3Regroup2CntFlag;
}
public void setYears3Regroup2CntFlag(String years3Regroup2CntFlag) {
this.years3Regroup2CntFlag = years3Regroup2CntFlag;
}
public String getChastenCustFlag() {
return chastenCustFlag;
}
public void setChastenCustFlag(String chastenCustFlag) {
this.chastenCustFlag = chastenCustFlag;
}
public String getInduSortName() {
return induSortName;
}
public void setInduSortName(String induSortName) {
this.induSortName = induSortName;
}
}

330
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/entity/RiskExposure.java

@ -0,0 +1,330 @@
package irbs.riskExposure.jpa.entity;
import io.sc.platform.orm.entity.CorporationAuditorEntity;
import irbs.riskExposure.jpa.vo.RiskExposureVo;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import javax.validation.constraints.Size;
import java.util.Date;
@Entity
@Table(name="P_IRS_RISK_EXPOSURE")
public class RiskExposure extends CorporationAuditorEntity<RiskExposureVo> {
// 主键
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
@Column(name="ID_")
@Size(max=50)
protected String id;
/**
* 业务编号
*/
@Column(name="BUSINESS_NO", length=40)
private String businessNo;
/**
* 产品类型
*/
@Column(name="PRODUCT_TYPE", length=100)
private String productType;
/**
* 客户编号
*/
@Column(name="CUST_NO", length=40)
private String custNo;
/**
* 客户名称
*/
@Column(name="CUST_NAME", length=200)
private String custName;
/**
* 客户类型1.一般公司 2.金融债券机构
*/
@Column(name="CUST_TYPE", length=1)
private String custType;
/**
* 发起方式
*/
@Column(name="START_WAY", length=100)
private String startWay;
/**
* 是否需人工分类
*/
@Column(name="IS_NEED_OPERATE", length=1)
private String isNeedOperate;
/**
* 调整截止日期
*/
@Column(name="ADJUST_END_DATE")
@Temporal(TemporalType.DATE)
private Date adjustEndDate;
/**
* 是否已调整
*/
@Column(name="IS_ADJUSTED", length=1)
private String isAdjusted;
/**
* 调整原因
*/
@Column(name="ADJUST_REASON", length=1000)
private String adjustReason;
/**
* 调整的失效日期
*/
@Column(name="ADJUST_INVALID_DATE")
@Temporal(TemporalType.DATE)
private Date adjustInvalidDate;
/**
* 完成时间
*/
@Column(name="FINISH_DATE")
@Temporal(TemporalType.DATE)
private Date finishDate;
/**
* 系统分类结果
*/
@Column(name="SYS_RESULT", length=100)
private String sysResult;
/**
* 人工分类结果
*/
@Column(name="MAN_RESULT", length=100)
private String manResult;
/**
* 最终分类结果
*/
@Column(name="FINAL_RESULT", length=100)
private String finalResult;
//是否生效
@Column(name="IS_VALID", length=20)
private String isValid;
/**
* 客户经理名称
*/
@Column(name="MANAGER_NAME", length=100)
private String managerName;
/**
* 所属机构
*/
@Column(name="MGER_ORG_NM", length=100)
private String mgerOrgNm;
/**
* 当前处理人
*/
@Column(name="CURRENT_ASSIGNEE", length=100)
private String currentAssignee;
/**
* 流程状态
*/
@Column(name="PROCESS_STATUS", length=100)
private String processStatus;
/**
* 流程ID
*/
@Column(name="PROCESS_INSTANCE_ID", length=100)
private String processInstanceId;
/**
* 发起状态
*/
@Column(name="DATA_STATUS", length=100)
private String dataStatus;
@Transient
private String taskId;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBusinessNo() {
return businessNo;
}
public void setBusinessNo(String businessNo) {
this.businessNo = businessNo;
}
public String getProductType() {
return productType;
}
public void setProductType(String productType) {
this.productType = productType;
}
public String getCustNo() {
return custNo;
}
public void setCustNo(String custNo) {
this.custNo = custNo;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getStartWay() {
return startWay;
}
public void setStartWay(String startWay) {
this.startWay = startWay;
}
public String getIsNeedOperate() {
return isNeedOperate;
}
public void setIsNeedOperate(String isNeedOperate) {
this.isNeedOperate = isNeedOperate;
}
public Date getAdjustEndDate() {
return adjustEndDate;
}
public void setAdjustEndDate(Date adjustEndDate) {
this.adjustEndDate = adjustEndDate;
}
public String getIsAdjusted() {
return isAdjusted;
}
public void setIsAdjusted(String isAdjusted) {
this.isAdjusted = isAdjusted;
}
public String getAdjustReason() {
return adjustReason;
}
public void setAdjustReason(String adjustReason) {
this.adjustReason = adjustReason;
}
public Date getAdjustInvalidDate() {
return adjustInvalidDate;
}
public void setAdjustInvalidDate(Date adjustInvalidDate) {
this.adjustInvalidDate = adjustInvalidDate;
}
public Date getFinishDate() {
return finishDate;
}
public void setFinishDate(Date finishDate) {
this.finishDate = finishDate;
}
public String getSysResult() {
return sysResult;
}
public void setSysResult(String sysResult) {
this.sysResult = sysResult;
}
public String getManResult() {
return manResult;
}
public void setManResult(String manResult) {
this.manResult = manResult;
}
public String getFinalResult() {
return finalResult;
}
public void setFinalResult(String finalResult) {
this.finalResult = finalResult;
}
public String getIsValid() {
return isValid;
}
public void setIsValid(String isValid) {
this.isValid = isValid;
}
public String getManagerName() {
return managerName;
}
public void setManagerName(String managerName) {
this.managerName = managerName;
}
public String getMgerOrgNm() {
return mgerOrgNm;
}
public void setMgerOrgNm(String mgerOrgNm) {
this.mgerOrgNm = mgerOrgNm;
}
public String getCurrentAssignee() {
return currentAssignee;
}
public void setCurrentAssignee(String currentAssignee) {
this.currentAssignee = currentAssignee;
}
public String getProcessStatus() {
return processStatus;
}
public void setProcessStatus(String processStatus) {
this.processStatus = processStatus;
}
public String getDataStatus() {
return dataStatus;
}
public void setDataStatus(String dataStatus) {
this.dataStatus = dataStatus;
}
public String getProcessInstanceId() {
return processInstanceId;
}
public void setProcessInstanceId(String processInstanceId) {
this.processInstanceId = processInstanceId;
}
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
}

160
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/entity/RiskExposureOperation.java

@ -0,0 +1,160 @@
package irbs.riskExposure.jpa.entity;
import io.sc.platform.orm.entity.CorporationAuditorEntity;
import irbs.riskExposure.jpa.vo.RiskExposureOperationVo;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import javax.validation.constraints.Size;
/**
* 风险暴露分类流程处理
* @author chengjie
*
*/
@Entity
@Table(name="P_IRS_RISK_EXPOSURE_OPERATION")
public class RiskExposureOperation extends CorporationAuditorEntity<RiskExposureOperationVo> {
// 主键
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid2")
@Column(name="ID_")
@Size(max=50)
protected String id;
// 风险暴露分类发起业务主键
@Column(name="RISK_EXPOSURE_ID")
protected String riskExposureId;
// 风险暴露分类调整业务主键
@Column(name="RISK_EXPOSURE_ADJ_ID")
protected String riskExposureAdjId;
// 人工风险暴露分类结果
@Column(name="RISK_EXPOSURE_TYPE")
protected String riskExposureType;
// 附件条数
@Column(name="FILE_COUNT")
protected Integer fileCount;
// 意见说明
@Column(name="REMARKS")
protected String remarks;
// 角色
@Column(name="ROLE_NAME")
protected String roleName;
// 文件名称
@Column(name="FILE_NAME")
protected String fileName;
// 创建人机构
@Column(name="CREATOR_ORG")
protected String creatorOrg;
// 记录当前处理人审批认定结果 提交1 通过2 否决3
@Column(name="OPERATION")
protected String operation;
@Override
public RiskExposureOperationVo toVo() {
RiskExposureOperationVo vo = new RiskExposureOperationVo();
super.toVo(vo);
vo.setId(this.getId());
vo.setRiskExposureId(this.getRiskExposureId());
vo.setRiskExposureAdjId(this.getRiskExposureAdjId());
vo.setRiskExposureType(this.getRiskExposureType());
vo.setFileCount(this.getFileCount());
vo.setRemarks(this.getRemarks());
vo.setRoleName(this.getRoleName());
vo.setFileName(this.getFileName());
vo.setCreatorOrg(this.getCreatorOrg());
vo.setOperation(this.getOperation());
return vo;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getRiskExposureId() {
return riskExposureId;
}
public void setRiskExposureId(String riskExposureId) {
this.riskExposureId = riskExposureId;
}
public String getRiskExposureAdjId() {
return riskExposureAdjId;
}
public void setRiskExposureAdjId(String riskExposureAdjId) {
this.riskExposureAdjId = riskExposureAdjId;
}
public String getRiskExposureType() {
return riskExposureType;
}
public void setRiskExposureType(String riskExposureType) {
this.riskExposureType = riskExposureType;
}
public Integer getFileCount() {
return fileCount;
}
public void setFileCount(Integer fileCount) {
this.fileCount = fileCount;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getCreatorOrg() {
return creatorOrg;
}
public void setCreatorOrg(String creatorOrg) {
this.creatorOrg = creatorOrg;
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
}

8
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/repository/CustomerRepository.java

@ -0,0 +1,8 @@
package irbs.riskExposure.jpa.repository;
import io.sc.platform.orm.repository.DaoRepository;
import irbs.riskExposure.jpa.entity.Customer;
public interface CustomerRepository extends DaoRepository<Customer, String> {
Customer findByCustNo(String custNo) throws Exception;
}

7
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/repository/RiskExposureOperationRepository.java

@ -0,0 +1,7 @@
package irbs.riskExposure.jpa.repository;
import io.sc.platform.orm.repository.DaoRepository;
import irbs.riskExposure.jpa.entity.RiskExposureOperation;
public interface RiskExposureOperationRepository extends DaoRepository<RiskExposureOperation, String> {
}

7
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/repository/RiskExposureRepository.java

@ -0,0 +1,7 @@
package irbs.riskExposure.jpa.repository;
import io.sc.platform.orm.repository.DaoRepository;
import irbs.riskExposure.jpa.entity.RiskExposure;
public interface RiskExposureRepository extends DaoRepository<RiskExposure, String> {
}

37
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/GoBackType.java

@ -0,0 +1,37 @@
package irbs.riskExposure.jpa.support;
/**
* 任务流向
* @author dhb
*/
public enum GoBackType {
// 通过
APPROVE(1),
// 否决
REJECT(2),
// 同意
AGREE(4),
// 不同意
DISAGREE(5),
// 提交下一步
SUBMIT(6),
// 提交到其他上级(信审会)
UPPER_1(8),
// 提交到上级
UPPER(9),
//退回起始步骤
BACK_START(-1),
//退回到某步骤
BACK(-2);
GoBackType(int code) {
this.code = code;
}
private final int code;
public int code() {
return code;
}
}

45
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/ProcessConstant.java

@ -0,0 +1,45 @@
package irbs.riskExposure.jpa.support;
/**
* 流程常量
* @author dhb
*
*/
public interface ProcessConstant {
/**
* 公司客户评级流程分类
*/
String COMPANY_RATING_FLOW = "COMPANY_CUSTOMER_RATING";
/**
* 风险暴露流程分类
*/
String RISK_EXPOSURE_FLOW = "RISK_EXPOSURE_FLOW";
/**
* 总行风险暴露流程分类
*/
String Z_RISK_EXPOSURE_FLOW = "Z_RISK_EXPOSURE_FLOW";
/**
* 分支行违约认定流程
*/
String DEFAULT_CUSTOMER_F = "DEFAULT_CUSTOMER_F";
/**
* 总行违约认定流程
*/
String DEFAULT_CUSTOMER_Z = "DEFAULT_CUSTOMER_Z";
/**
* 分支行违约重生流程
*/
String REBIRTH_CUSTOMER_F = "REBIRTH_CUSTOMER_F";
/**
* 总行违约重生流程
*/
String REBIRTH_CUSTOMER_Z = "REBIRTH_CUSTOMER_Z";
}

27
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/RiskExposureProcessOperate.java

@ -0,0 +1,27 @@
package irbs.riskExposure.jpa.support;
/**
* 风险暴露分类流程操作
* @author dhb
*/
public enum RiskExposureProcessOperate {
//提交
SUBMIT("1"),
//通过
APPROVE("2"),
//否决
REJECT("3"),
//撤销
CANCEL("4"),
//退回
BACK("5");
private final String code;
RiskExposureProcessOperate(String code) {
this.code = code;
}
public String getCode() {
return code;
}
}

14
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/RiskExposureProcessStatus.java

@ -0,0 +1,14 @@
package irbs.riskExposure.jpa.support;
/**
* 风险暴露分类流程状态
* @author dhb
*/
public enum RiskExposureProcessStatus {
TO_BE_SUBMITTED, // 待提交
RETURNED, // 退回
TO_BE_CHECKED, // 审批
COMPLETED_PASS, // 通过
COMPLETED_REJECT; // 否决
}

10
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/RiskExposureType.java

@ -0,0 +1,10 @@
package irbs.riskExposure.jpa.support;
/**
* 风险暴露分类流程状态
* @author dhb
*/
public enum RiskExposureType {
RE_0100,RE_0110,RE_0120,RE_0130,RE_0131,RE_0132,RE_0133,RE_0134,RE_0200,RE_0210,RE_0220,RE_0300,RE_0400,RE_0500,RE_0510,RE_0520,RE_0600
}

121
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/vo/RiskExposureOperationVo.java

@ -0,0 +1,121 @@
package irbs.riskExposure.jpa.vo;
import io.sc.platform.orm.api.vo.CorporationAuditorVo;
/**
* 风险暴露分类流程处理日志
* @author chengjie
*
*/
public class RiskExposureOperationVo extends CorporationAuditorVo {
// 主键
protected String id;
// 风险暴露分类发起业务主键
protected String riskExposureId;
// 风险暴露分类调整业务主键
protected String riskExposureAdjId;
// 人工风险暴露分类结果
protected String riskExposureType;
// 附件条数
protected Integer fileCount;
// 意见说明
protected String remarks;
// 角色
protected String roleName;
// 文件名称
protected String fileName;
// 创建人机构
protected String creatorOrg;
// 记录当前处理人审批认定结果 提交1 通过2 否决3
protected String operation;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getRiskExposureId() {
return riskExposureId;
}
public void setRiskExposureId(String riskExposureId) {
this.riskExposureId = riskExposureId;
}
public String getRiskExposureAdjId() {
return riskExposureAdjId;
}
public void setRiskExposureAdjId(String riskExposureAdjId) {
this.riskExposureAdjId = riskExposureAdjId;
}
public String getRiskExposureType() {
return riskExposureType;
}
public void setRiskExposureType(String riskExposureType) {
this.riskExposureType = riskExposureType;
}
public Integer getFileCount() {
return fileCount;
}
public void setFileCount(Integer fileCount) {
this.fileCount = fileCount;
}
public String getRemarks() {
return remarks;
}
public void setRemarks(String remarks) {
this.remarks = remarks;
}
public String getRoleName() {
return roleName;
}
public void setRoleName(String roleName) {
this.roleName = roleName;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
public String getCreatorOrg() {
return creatorOrg;
}
public void setCreatorOrg(String creatorOrg) {
this.creatorOrg = creatorOrg;
}
public String getOperation() {
return operation;
}
public void setOperation(String operation) {
this.operation = operation;
}
}

298
irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/vo/RiskExposureVo.java

@ -0,0 +1,298 @@
package irbs.riskExposure.jpa.vo;
import io.sc.platform.orm.api.vo.CorporationAuditorVo;
import io.sc.platform.orm.entity.AuditorEntity;
import liquibase.pro.packaged.V;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import javax.validation.constraints.Size;
import java.util.Date;
public class RiskExposureVo extends CorporationAuditorVo {
// 主键
protected String id;
/**
* 业务编号
*/
private String businessNo;
/**
* 产品类型
*/
private String productType;
/**
* 客户编号
*/
private String custNo;
/**
* 客户名称
*/
private String custName;
/**
* 客户类型1.一般公司 2.金融债券机构
*/
private String custType;
/**
* 发起方式
*/
private String startWay;
/**
* 是否需人工分类
*/
private String isNeedOperate;
/**
* 调整截止日期
*/
private Date adjustEndDate;
/**
* 是否已调整
*/
private String isAdjusted;
/**
* 调整原因
*/
private String adjustReason;
/**
* 调整的失效日期
*/
private Date adjustInvalidDate;
/**
* 完成时间
*/
private Date finishDate;
/**
* 系统分类结果
*/
private String sysResult;
/**
* 人工分类结果
*/
private String manResult;
/**
* 最终分类结果
*/
private String finalResult;
//是否生效
private String isValid;
/**
* 客户经理名称
*/
private String managerName;
/**
* 所属机构
*/
private String mgerOrgNm;
/**
* 当前处理人
*/
private String currentAssignee;
/**
* 流程状态
*/
private String processStatus;
/**
* 流程ID
*/
private String processInstanceId;
/**
* 发起状态
*/
private String dataStatus;
private String taskId;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getBusinessNo() {
return businessNo;
}
public void setBusinessNo(String businessNo) {
this.businessNo = businessNo;
}
public String getProductType() {
return productType;
}
public void setProductType(String productType) {
this.productType = productType;
}
public String getCustNo() {
return custNo;
}
public void setCustNo(String custNo) {
this.custNo = custNo;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getCustType() {
return custType;
}
public void setCustType(String custType) {
this.custType = custType;
}
public String getStartWay() {
return startWay;
}
public void setStartWay(String startWay) {
this.startWay = startWay;
}
public String getIsNeedOperate() {
return isNeedOperate;
}
public void setIsNeedOperate(String isNeedOperate) {
this.isNeedOperate = isNeedOperate;
}
public Date getAdjustEndDate() {
return adjustEndDate;
}
public void setAdjustEndDate(Date adjustEndDate) {
this.adjustEndDate = adjustEndDate;
}
public String getIsAdjusted() {
return isAdjusted;
}
public void setIsAdjusted(String isAdjusted) {
this.isAdjusted = isAdjusted;
}
public String getAdjustReason() {
return adjustReason;
}
public void setAdjustReason(String adjustReason) {
this.adjustReason = adjustReason;
}
public Date getAdjustInvalidDate() {
return adjustInvalidDate;
}
public void setAdjustInvalidDate(Date adjustInvalidDate) {
this.adjustInvalidDate = adjustInvalidDate;
}
public Date getFinishDate() {
return finishDate;
}
public void setFinishDate(Date finishDate) {
this.finishDate = finishDate;
}
public String getSysResult() {
return sysResult;
}
public void setSysResult(String sysResult) {
this.sysResult = sysResult;
}
public String getManResult() {
return manResult;
}
public void setManResult(String manResult) {
this.manResult = manResult;
}
public String getFinalResult() {
return finalResult;
}
public void setFinalResult(String finalResult) {
this.finalResult = finalResult;
}
public String getIsValid() {
return isValid;
}
public void setIsValid(String isValid) {
this.isValid = isValid;
}
public String getManagerName() {
return managerName;
}
public void setManagerName(String managerName) {
this.managerName = managerName;
}
public String getMgerOrgNm() {
return mgerOrgNm;
}
public void setMgerOrgNm(String mgerOrgNm) {
this.mgerOrgNm = mgerOrgNm;
}
public String getCurrentAssignee() {
return currentAssignee;
}
public void setCurrentAssignee(String currentAssignee) {
this.currentAssignee = currentAssignee;
}
public String getProcessStatus() {
return processStatus;
}
public void setProcessStatus(String processStatus) {
this.processStatus = processStatus;
}
public String getDataStatus() {
return dataStatus;
}
public void setDataStatus(String dataStatus) {
this.dataStatus = dataStatus;
}
public String getProcessInstanceId() {
return processInstanceId;
}
public void setProcessInstanceId(String processInstanceId) {
this.processInstanceId = processInstanceId;
}
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
}

47
irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureAdjustService.java

@ -0,0 +1,47 @@
package irbs.riskExposure.service;
import io.sc.platform.flowable.controller.support.ProcessProperties;
import io.sc.platform.flowable.support.CompleteTaskResponse;
import io.sc.platform.orm.service.DaoService;
import io.sc.platform.orm.service.support.QueryParameter;
import irbs.riskExposure.jpa.entity.RiskExposure;
import irbs.riskExposure.jpa.repository.RiskExposureRepository;
import org.springframework.data.domain.Page;
public interface RiskExposureAdjustService extends DaoService<RiskExposure, String, RiskExposureRepository> {
Page<RiskExposure> queryPage(QueryParameter queryParameter) throws Exception;
RiskExposure handmadeRiskExposure(String id) throws Exception;
/**
* 提交流程
* @param riskExposureId
* @param processProperties
* @throws Exception
*/
void submit(String riskExposureId, ProcessProperties processProperties) throws Exception;
/**
* 退回值发起人
* @param riskExposureId
* @param processProperties
* @throws Exception
*/
public void backStart(String riskExposureId, ProcessProperties processProperties) throws Exception;
/**
* 审批通过
* @param riskExposureId
* @param processProperties
* @throws Exception
*/
public void approve(String riskExposureId, ProcessProperties processProperties) throws Exception;
/**
* 流程拒绝
* @param riskExposureId
* @param processProperties
* @throws Exception
*/
public void reject(String riskExposureId, ProcessProperties processProperties) throws Exception;
}

23
irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureFlowService.java

@ -0,0 +1,23 @@
package irbs.riskExposure.service;
import io.sc.platform.flowable.support.ProcessTaskWrapper;
import org.flowable.engine.runtime.ProcessInstance;
public interface RiskExposureFlowService {
/**
* 审批处理流程
* @param category 流程类型
* @param assignee 处理人
* @param businessKey 业务主键
* @param desc 描述
*/
<T> ProcessInstance startProcess(String category, String assignee, String businessKey, String fronted, String desc, Class<T> clazz) throws Exception;
/**
* 查询流程任务
* @param procInstId
* @return
* @throws Exception
*/
ProcessTaskWrapper findTaskByProcInstId(String procInstId) throws Exception;
}

17
irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureOperationService.java

@ -0,0 +1,17 @@
package irbs.riskExposure.service;
import io.sc.platform.flowable.controller.support.ProcessProperties;
import io.sc.platform.orm.service.DaoService;
import io.sc.platform.orm.service.support.QueryParameter;
import irbs.riskExposure.jpa.entity.RiskExposureOperation;
import irbs.riskExposure.jpa.repository.RiskExposureOperationRepository;
import org.springframework.data.domain.Page;
/**
* 流程处理日志
* @author dhb
*/
public interface RiskExposureOperationService extends DaoService<RiskExposureOperation, String, RiskExposureOperationRepository> {
Page<RiskExposureOperation> queryPage(QueryParameter queryParameter) throws Exception;
}

31
irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureProcessService.java

@ -0,0 +1,31 @@
package irbs.riskExposure.service;
import io.sc.platform.flowable.controller.support.ProcessProperties;
import io.sc.platform.flowable.support.CompleteTaskResponse;
import org.springframework.transaction.annotation.Transactional;
/**
* 流程服务处理
* @author dhb
*/
public interface RiskExposureProcessService {
/**
* 风险暴露分类发起流程提交
* @param taskId
* @param processProperties
* @return
* @throws Exception
*/
CompleteTaskResponse submitRiskExposure(String taskId, ProcessProperties processProperties) throws Exception;
/**
* 风险暴露分类调整流程提交
* @param taskId
* @param processProperties
* @return
* @throws Exception
*/
@Transactional
CompleteTaskResponse submitRiskExposureAdjust(String taskId, ProcessProperties processProperties) throws Exception;
}

47
irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureService.java

@ -0,0 +1,47 @@
package irbs.riskExposure.service;
import io.sc.platform.flowable.controller.support.ProcessProperties;
import io.sc.platform.flowable.support.CompleteTaskResponse;
import io.sc.platform.orm.service.DaoService;
import io.sc.platform.orm.service.support.QueryParameter;
import irbs.riskExposure.jpa.entity.RiskExposure;
import irbs.riskExposure.jpa.repository.RiskExposureRepository;
import org.springframework.data.domain.Page;
public interface RiskExposureService extends DaoService<RiskExposure, String, RiskExposureRepository> {
Page<RiskExposure> queryPage(QueryParameter queryParameter) throws Exception;
RiskExposure handmadeRiskExposure(String id) throws Exception;
/**
* 提交流程
* @param riskExposureId
* @param processProperties
* @throws Exception
*/
void submit(String riskExposureId, ProcessProperties processProperties) throws Exception;
/**
* 退回值发起人
* @param riskExposureId
* @param processProperties
* @throws Exception
*/
public void backStart(String riskExposureId, ProcessProperties processProperties) throws Exception;
/**
* 审批通过
* @param riskExposureId
* @param processProperties
* @throws Exception
*/
public void approve(String riskExposureId, ProcessProperties processProperties) throws Exception;
/**
* 流程拒绝
* @param riskExposureId
* @param processProperties
* @throws Exception
*/
public void reject(String riskExposureId, ProcessProperties processProperties) throws Exception;
}

144
irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureAdjustServiceImpl.java

@ -0,0 +1,144 @@
package irbs.riskExposure.service.impl;
import io.sc.platform.flowable.controller.support.ProcessProperties;
import io.sc.platform.flowable.support.ProcessTaskWrapper;
import io.sc.platform.orm.service.impl.DaoServiceImpl;
import io.sc.platform.orm.service.support.QueryParameter;
import io.sc.platform.security.util.SecurityUtil;
import irbs.riskExposure.jpa.entity.RiskExposure;
import irbs.riskExposure.jpa.entity.RiskExposureOperation;
import irbs.riskExposure.jpa.repository.RiskExposureRepository;
import irbs.riskExposure.jpa.support.ProcessConstant;
import irbs.riskExposure.jpa.support.RiskExposureProcessOperate;
import irbs.riskExposure.jpa.support.RiskExposureProcessStatus;
import irbs.riskExposure.service.RiskExposureAdjustService;
import irbs.riskExposure.service.RiskExposureFlowService;
import irbs.riskExposure.service.RiskExposureOperationService;
import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Optional;
@Service("riskExposureAdjustService")
public class RiskExposureAdjustServiceImpl extends DaoServiceImpl<RiskExposure, String, RiskExposureRepository> implements RiskExposureAdjustService {
@Autowired
private RiskExposureOperationService riskExposureOperationService;
@Autowired
private RiskExposureFlowService riskExposureFlowService;
@Override
public Page<RiskExposure> queryPage(QueryParameter queryParameter) throws Exception {
Page<RiskExposure> page = this.query(queryParameter);
if (null != page.getContent() && page.getContent().size() > 0) {
for (RiskExposure re: page.getContent()) {
if (null!=re.getProcessInstanceId() && !"".equals(re.getProcessInstanceId())) {
ProcessTaskWrapper ptw = riskExposureFlowService.findTaskByProcInstId(re.getProcessInstanceId());
if (ptw!=null && null!=ptw.getId()) {
re.setTaskId(ptw.getId());
re.setCurrentAssignee(ptw.getAssignee());
}
}
}
}
return page;
}
@Override
public RiskExposure handmadeRiskExposure(String id) throws Exception {
Optional<RiskExposure> optional = repository.findById(id);
if(optional.isPresent()){
RiskExposure riskExposure = optional.get();
riskExposure.setDataStatus("1");//发起风险暴露分类后,设置发起状态为已发起
riskExposure.setProcessStatus(RiskExposureProcessStatus.TO_BE_SUBMITTED.name());//发起风险暴露分类后,流程状态为待发起
ProcessInstance processInstance = riskExposureFlowService.startProcess(
ProcessConstant.DEFAULT_CUSTOMER_F,
SecurityUtil.getLoginName(),
riskExposure.getId(),
"app.irbs.frontend:./default/manual/defaultSteps",
"客户名称:" + riskExposure.getCustName(),
String.class
);
riskExposure.setProcessInstanceId(processInstance.getId());
getRepository().save(riskExposure);
return riskExposure;
}
return null;
}
@Override
public void submit(String riskExposureId, ProcessProperties processProperties) throws Exception {
RiskExposure riskExposure = this.findById(riskExposureId);
RiskExposureOperation riskExposureOperation = new RiskExposureOperation();
riskExposureOperation.setRiskExposureId(riskExposure.getId());
riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString());
if(processProperties.getData().get("manResult") != null){
riskExposureOperation.setRiskExposureType(processProperties.getData().get("manResult").toString());
riskExposure.setManResult(processProperties.getData().get("manResult").toString());
}
riskExposureOperation.setOperation(RiskExposureProcessOperate.SUBMIT.getCode());
riskExposureOperationService.getRepository().save(riskExposureOperation);
riskExposure.setProcessStatus(RiskExposureProcessStatus.TO_BE_CHECKED.name());
if (processProperties.getTransientVariables().containsKey("assignee") && processProperties.getTransientVariables().get("assignee")!=null) {
riskExposure.setCurrentAssignee (processProperties.getTransientVariables().get("assignee").toString());
}
repository.save(riskExposure);
}
@Override
public void backStart(String riskExposureId, ProcessProperties processProperties) throws Exception {
RiskExposure riskExposure = this.findById(riskExposureId);
RiskExposureOperation riskExposureOperation = new RiskExposureOperation();
riskExposureOperation.setRiskExposureId(riskExposure.getId());
riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString());
riskExposureOperation.setOperation(RiskExposureProcessOperate.BACK.getCode());
riskExposureOperationService.getRepository().save(riskExposureOperation);
riskExposure.setProcessStatus(RiskExposureProcessStatus.RETURNED.name());
if (processProperties.getTransientVariables().containsKey("assignee") && processProperties.getTransientVariables().get("assignee")!=null) {
riskExposure.setCurrentAssignee (processProperties.getTransientVariables().get("assignee").toString());
}
repository.save(riskExposure);
}
@Override
public void approve(String riskExposureId, ProcessProperties processProperties) throws Exception {
RiskExposure riskExposure = this.findById(riskExposureId);
RiskExposureOperation riskExposureOperation = new RiskExposureOperation();
riskExposureOperation.setRiskExposureId(riskExposure.getId());
riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString());
riskExposureOperation.setOperation(RiskExposureProcessOperate.APPROVE.getCode());
riskExposureOperationService.getRepository().save(riskExposureOperation);
if (RiskExposureProcessStatus.TO_BE_CHECKED.name().equals(riskExposure.getProcessStatus())) {
riskExposure.setProcessStatus(RiskExposureProcessStatus.COMPLETED_PASS.name());
riskExposure.setCurrentAssignee("");
riskExposure.setIsValid("1");
riskExposure.setFinishDate(new Date());
riskExposure.setFinalResult(riskExposure.getManResult());
}
this.getRepository().save(riskExposure);
}
@Override
public void reject(String riskExposureId, ProcessProperties processProperties) throws Exception {
RiskExposure riskExposure = this.findById(riskExposureId);
RiskExposureOperation riskExposureOperation = new RiskExposureOperation();
riskExposureOperation.setRiskExposureId(riskExposure.getId());
riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString());
riskExposureOperation.setOperation(RiskExposureProcessOperate.REJECT.getCode());
riskExposureOperationService.getRepository().save(riskExposureOperation);
if (RiskExposureProcessStatus.TO_BE_CHECKED.name().equals(riskExposure.getProcessStatus())) {
riskExposure.setProcessStatus(RiskExposureProcessStatus.COMPLETED_REJECT.name());
riskExposure.setIsValid("0");
riskExposure.setCurrentAssignee("");
}
this.getRepository().save(riskExposure);
}
}

48
irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureFlowServiceImpl.java

@ -0,0 +1,48 @@
package irbs.riskExposure.service.impl;
import io.sc.platform.flowable.service.ProcessOperationService;
import io.sc.platform.flowable.service.ProcessQueryService;
import io.sc.platform.flowable.support.ProcessTaskWrapper;
import io.sc.platform.security.util.SecurityUtil;
import irbs.riskExposure.service.RiskExposureFlowService;
import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service
public class RiskExposureFlowServiceImpl implements RiskExposureFlowService {
@Autowired
private ProcessOperationService processOperationService;
@Autowired
private ProcessQueryService processQueryService;
@Override
public <T> ProcessInstance startProcess(String category, String assignee, String businessKey, String fronted, String desc, Class<T> clazz) throws Exception {
Map<String, Object> transientVariables = new HashMap<>();
transientVariables.put("assignee", assignee);
transientVariables.put("desc", desc);
return processOperationService.startProcessByKey(category, businessKey, null, transientVariables);
}
@Override
public ProcessTaskWrapper findTaskByProcInstId(String procInstId) throws Exception {
ProcessTaskWrapper taskWrapper = null;
List<ProcessTaskWrapper> list = processQueryService.queryProcessTasks(procInstId, null);
if (null != list && list.size() > 1) {
// 同一个流程实例查找出多个任务则为多实例任务,还需再根据任务处理人匹配。
List<ProcessTaskWrapper> userTaskList = list.stream().filter(task-> SecurityUtil.getLoginName().equals(task.getAssignee())).collect(Collectors.toList());
if (null !=userTaskList && userTaskList.size() == 1) {
// 根据任务处理人匹配到一条数据时返回,未匹配到或者匹配出多条数据,返回空。
taskWrapper = userTaskList.get(0);
}
} else if (null != list && list.size() == 1) {
// 根据流程实例只查找出一条任务,直接返回。
taskWrapper = list.get(0);
}
return taskWrapper;
}
}

17
irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureOperationServiceImpl.java

@ -0,0 +1,17 @@
package irbs.riskExposure.service.impl;
import io.sc.platform.orm.service.impl.DaoServiceImpl;
import io.sc.platform.orm.service.support.QueryParameter;
import irbs.riskExposure.jpa.entity.RiskExposureOperation;
import irbs.riskExposure.jpa.repository.RiskExposureOperationRepository;
import irbs.riskExposure.service.RiskExposureOperationService;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
@Service("riskExposureOperationService")
public class RiskExposureOperationServiceImpl extends DaoServiceImpl<RiskExposureOperation, String, RiskExposureOperationRepository> implements RiskExposureOperationService {
@Override
public Page<RiskExposureOperation> queryPage(QueryParameter queryParameter) throws Exception {
return this.query(queryParameter);
}
}

88
irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureProcessServiceImpl.java

@ -0,0 +1,88 @@
package irbs.riskExposure.service.impl;
import io.sc.platform.flowable.controller.support.ProcessProperties;
import io.sc.platform.flowable.service.ProcessOperationService;
import io.sc.platform.flowable.support.CompleteTaskException;
import io.sc.platform.flowable.support.CompleteTaskResponse;
import irbs.riskExposure.jpa.support.GoBackType;
import irbs.riskExposure.service.RiskExposureAdjustService;
import irbs.riskExposure.service.RiskExposureProcessService;
import irbs.riskExposure.service.RiskExposureService;
import org.flowable.engine.ProcessEngine;
import org.flowable.engine.runtime.ProcessInstance;
import org.flowable.task.api.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import java.util.Map;
@Service("riskExposureProcessService")
public class RiskExposureProcessServiceImpl implements RiskExposureProcessService {
@Autowired
private ProcessOperationService processOperationService;
@Autowired
private ProcessEngine processEngine;
@Autowired
private RiskExposureService riskExposureService;
@Autowired
private RiskExposureAdjustService riskExposureAdjustService;
@Override
@Transactional
public CompleteTaskResponse submitRiskExposure(String taskId, ProcessProperties processProperties) throws Exception {
try {
Task task = processEngine.getTaskService().createTaskQuery().taskId(taskId).singleResult();
Map<String, Object> transientVariables = processProperties.getTransientVariables();
Integer opaVal = (Integer) transientVariables.get("opaVal");
ProcessInstance instance = processEngine.getRuntimeService().createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
processOperationService.completeTask(taskId, processProperties.getVariables(), transientVariables);
if(opaVal == GoBackType.SUBMIT.code() || opaVal==GoBackType.UPPER.code() || opaVal==GoBackType.UPPER_1.code()){
riskExposureService.submit(instance.getBusinessKey(), processProperties);
} else if(opaVal==GoBackType.BACK_START.code()){
riskExposureService.backStart(instance.getBusinessKey(), processProperties);
} else if(opaVal==GoBackType.APPROVE.code()){
riskExposureService.approve(instance.getBusinessKey(), processProperties);
} else if(opaVal==GoBackType.REJECT.code()){
riskExposureService.reject(instance.getBusinessKey(), processProperties);
}
return new CompleteTaskResponse();
} catch (CompleteTaskException exception) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return CompleteTaskResponse.fromAssigneesJson(exception.getMessage());
} catch (Exception exception) {
throw exception;
}
}
@Override
@Transactional
public CompleteTaskResponse submitRiskExposureAdjust(String taskId, ProcessProperties processProperties) throws Exception {
try {
Task task = processEngine.getTaskService().createTaskQuery().taskId(taskId).singleResult();
Map<String, Object> transientVariables = processProperties.getTransientVariables();
Integer opaVal = (Integer) transientVariables.get("opaVal");
ProcessInstance instance = processEngine.getRuntimeService().createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
processOperationService.completeTask(taskId, processProperties.getVariables(), transientVariables);
if(opaVal == GoBackType.SUBMIT.code() || opaVal==GoBackType.UPPER.code() || opaVal==GoBackType.UPPER_1.code()){
riskExposureAdjustService.submit(instance.getBusinessKey(), processProperties);
} else if(opaVal==GoBackType.BACK_START.code()){
riskExposureAdjustService.backStart(instance.getBusinessKey(), processProperties);
} else if(opaVal==GoBackType.APPROVE.code()){
riskExposureAdjustService.approve(instance.getBusinessKey(), processProperties);
} else if(opaVal==GoBackType.REJECT.code()){
riskExposureAdjustService.reject(instance.getBusinessKey(), processProperties);
}
return new CompleteTaskResponse();
} catch (CompleteTaskException exception) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return CompleteTaskResponse.fromAssigneesJson(exception.getMessage());
} catch (Exception exception) {
throw exception;
}
}
}

145
irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureServiceImpl.java

@ -0,0 +1,145 @@
package irbs.riskExposure.service.impl;
import io.sc.platform.flowable.controller.support.ProcessProperties;
import io.sc.platform.flowable.support.ProcessTaskWrapper;
import io.sc.platform.orm.service.impl.DaoServiceImpl;
import io.sc.platform.orm.service.support.QueryParameter;
import io.sc.platform.security.util.SecurityUtil;
import irbs.riskExposure.jpa.entity.RiskExposure;
import irbs.riskExposure.jpa.entity.RiskExposureOperation;
import irbs.riskExposure.jpa.repository.RiskExposureRepository;
import irbs.riskExposure.jpa.support.ProcessConstant;
import irbs.riskExposure.jpa.support.RiskExposureProcessOperate;
import irbs.riskExposure.jpa.support.RiskExposureProcessStatus;
import irbs.riskExposure.service.RiskExposureFlowService;
import irbs.riskExposure.service.RiskExposureOperationService;
import irbs.riskExposure.service.RiskExposureProcessService;
import irbs.riskExposure.service.RiskExposureService;
import org.flowable.engine.runtime.ProcessInstance;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Optional;
@Service("riskExposureService")
public class RiskExposureServiceImpl extends DaoServiceImpl<RiskExposure, String, RiskExposureRepository> implements RiskExposureService {
@Autowired
private RiskExposureOperationService riskExposureOperationService;
@Autowired
private RiskExposureFlowService riskExposureFlowService;
@Override
public Page<RiskExposure> queryPage(QueryParameter queryParameter) throws Exception {
Page<RiskExposure> page = this.query(queryParameter);
if (null != page.getContent() && page.getContent().size() > 0) {
for (RiskExposure re: page.getContent()) {
if (null!=re.getProcessInstanceId() && !"".equals(re.getProcessInstanceId())) {
ProcessTaskWrapper ptw = riskExposureFlowService.findTaskByProcInstId(re.getProcessInstanceId());
if (ptw!=null && null!=ptw.getId()) {
re.setTaskId(ptw.getId());
re.setCurrentAssignee(ptw.getAssignee());
}
}
}
}
return page;
}
@Override
public RiskExposure handmadeRiskExposure(String id) throws Exception {
Optional<RiskExposure> optional = repository.findById(id);
if(optional.isPresent()){
RiskExposure riskExposure = optional.get();
riskExposure.setDataStatus("1");//发起风险暴露分类后,设置发起状态为已发起
riskExposure.setProcessStatus(RiskExposureProcessStatus.TO_BE_SUBMITTED.name());//发起风险暴露分类后,流程状态为待发起
ProcessInstance processInstance = riskExposureFlowService.startProcess(
ProcessConstant.DEFAULT_CUSTOMER_F,
SecurityUtil.getLoginName(),
riskExposure.getId(),
"app.irbs.frontend:./default/manual/defaultSteps",
"客户名称:" + riskExposure.getCustName(),
String.class
);
riskExposure.setProcessInstanceId(processInstance.getId());
getRepository().save(riskExposure);
return riskExposure;
}
return null;
}
@Override
public void submit(String riskExposureId, ProcessProperties processProperties) throws Exception {
RiskExposure riskExposure = this.findById(riskExposureId);
RiskExposureOperation riskExposureOperation = new RiskExposureOperation();
riskExposureOperation.setRiskExposureId(riskExposure.getId());
riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString());
if(processProperties.getData().get("manResult") != null){
riskExposureOperation.setRiskExposureType(processProperties.getData().get("manResult").toString());
riskExposure.setManResult(processProperties.getData().get("manResult").toString());
}
riskExposureOperation.setOperation(RiskExposureProcessOperate.SUBMIT.getCode());
riskExposureOperationService.getRepository().save(riskExposureOperation);
riskExposure.setProcessStatus(RiskExposureProcessStatus.TO_BE_CHECKED.name());
if (processProperties.getTransientVariables().containsKey("assignee") && processProperties.getTransientVariables().get("assignee")!=null) {
riskExposure.setCurrentAssignee (processProperties.getTransientVariables().get("assignee").toString());
}
repository.save(riskExposure);
}
@Override
public void backStart(String riskExposureId, ProcessProperties processProperties) throws Exception {
RiskExposure riskExposure = this.findById(riskExposureId);
RiskExposureOperation riskExposureOperation = new RiskExposureOperation();
riskExposureOperation.setRiskExposureId(riskExposure.getId());
riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString());
riskExposureOperation.setOperation(RiskExposureProcessOperate.BACK.getCode());
riskExposureOperationService.getRepository().save(riskExposureOperation);
riskExposure.setProcessStatus(RiskExposureProcessStatus.RETURNED.name());
if (processProperties.getTransientVariables().containsKey("assignee") && processProperties.getTransientVariables().get("assignee")!=null) {
riskExposure.setCurrentAssignee (processProperties.getTransientVariables().get("assignee").toString());
}
repository.save(riskExposure);
}
@Override
public void approve(String riskExposureId, ProcessProperties processProperties) throws Exception {
RiskExposure riskExposure = this.findById(riskExposureId);
RiskExposureOperation riskExposureOperation = new RiskExposureOperation();
riskExposureOperation.setRiskExposureId(riskExposure.getId());
riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString());
riskExposureOperation.setOperation(RiskExposureProcessOperate.APPROVE.getCode());
riskExposureOperationService.getRepository().save(riskExposureOperation);
if (RiskExposureProcessStatus.TO_BE_CHECKED.name().equals(riskExposure.getProcessStatus())) {
riskExposure.setProcessStatus(RiskExposureProcessStatus.COMPLETED_PASS.name());
riskExposure.setCurrentAssignee("");
riskExposure.setIsValid("1");
riskExposure.setFinishDate(new Date());
riskExposure.setFinalResult(riskExposure.getManResult());
}
this.getRepository().save(riskExposure);
}
@Override
public void reject(String riskExposureId, ProcessProperties processProperties) throws Exception {
RiskExposure riskExposure = this.findById(riskExposureId);
RiskExposureOperation riskExposureOperation = new RiskExposureOperation();
riskExposureOperation.setRiskExposureId(riskExposure.getId());
riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString());
riskExposureOperation.setOperation(RiskExposureProcessOperate.REJECT.getCode());
riskExposureOperationService.getRepository().save(riskExposureOperation);
if (RiskExposureProcessStatus.TO_BE_CHECKED.name().equals(riskExposure.getProcessStatus())) {
riskExposure.setProcessStatus(RiskExposureProcessStatus.COMPLETED_REJECT.name());
riskExposure.setIsValid("0");
riskExposure.setCurrentAssignee("");
}
this.getRepository().save(riskExposure);
}
}

41
irbs.riskExposure/src/main/java/irbs/riskExposure/service/support/QueryParams.java

@ -0,0 +1,41 @@
package irbs.riskExposure.service.support;
public class QueryParams {
private String custNo;
private String custName;
private String managerName;
private String managerOrgCode;
public String getCustNo() {
return custNo;
}
public void setCustNo(String custNo) {
this.custNo = custNo;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getManagerName() {
return managerName;
}
public void setManagerName(String managerName) {
this.managerName = managerName;
}
public String getManagerOrgCode() {
return managerOrgCode;
}
public void setManagerOrgCode(String managerOrgCode) {
this.managerOrgCode = managerOrgCode;
}
}

25
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/application-properties.json

@ -0,0 +1,25 @@
/*
*
* : application.properties ,
* 使:
* module:
* order:
* description: , application.properties
* properties:
*/
/* */
/*
[
{
"module" : "io.sc.platform.core",
"order" : 150,
"description": "application configuration",
"properties": [
"application.audit-log-mode = none",
"#application.audit-log-mode = log",
"#application.audit-log-mode = database"
]
}
]
*/

16
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/components.json

@ -0,0 +1,16 @@
/*
*
* : , spring
* 使:
* includes:
* excludes:
* : includes excludes , excludes ,
*/
{
"includes":[
"irbs.riskExposure.controller",
"irbs.riskExposure.service.impl"
],
"excludes":[]
}

17
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/directories.json

@ -0,0 +1,17 @@
/*
*
* :
* 使:
* name : , DirectoryManager.getInstance().getByName(name)
* path : , home
* autoCreate :
*/
/* */
/*
[
{"name":"dir.config" ,"path":"/config" ,"autoCreate":true},
{"name":"dir.log" ,"path":"/logs" ,"autoCreate":true},
{"name":"dir.work" ,"path":"/work" ,"autoCreate":true}
]
*/

25
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/json-serializers.json

@ -0,0 +1,25 @@
/*
* json
* : json
* 使:
* className:
* serializer:
* deserializer:
*/
/* */
/*
[
{
"className" : "java.util.Date",
"serializer" : "io.sc.platform.core.autoconfigure.support.DateJsonSerializer",
"deserializer" : "io.sc.platform.core.autoconfigure.support.DateJsonDeserializer"
},
{
"className" : "java.time.Instant",
"serializer" : "io.sc.platform.core.autoconfigure.support.InstantJsonSerializer",
"deserializer" : "io.sc.platform.core.autoconfigure.support.InstantJsonDeserializer"
}
]
*/

36
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/liquibase.json

@ -0,0 +1,36 @@
/*
* Liquibase ChangeLog XML
* :
* 使:
* category: ,:
* install :
* order:
* description:
* locations: liquibase changelog xml
*/
/* */
/*
[
{
"category" : "install",
"order" : 100,
"description":"授权与认证相关数据库表结构",
"locations":[
"liquibase/PF_9.0.0_20230222__Security_DDL.xml",
"liquibase/PF_9.0.0_20230223__Security_DDL.xml"
]
}
]
*/
[
{
"category" : "install",
"order" : 100000,
"description":"风险暴露分类",
"locations":[
"liquibase/20240327_RISKEXPOSURE_DDL.xml",
"liquibase/20240417_UPDATE_RISKEXPOSURE_DDL.xml"
]
}
]

16
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/messages.json

@ -0,0 +1,16 @@
/*
*
* :
* 使:
* includes:
* excludes:
* : includes excludes , excludes ,
*/
{
"includes":[
"irbs/riskExposure/i18n/messages"
],
"excludes":[]
}

15
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/p6spy.json

@ -0,0 +1,15 @@
/*
* p6spy
* : p6spy
* 使:
* ignoredPatterns: jdbc
*/
/* p6spy commit */
/*
{
"ignoredPatterns":[
"commit"
]
}
*/

37
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/parameters.json

@ -0,0 +1,37 @@
/*
*
* :
* 使:
* id:
* parentId: ,
* code: ,
* defaultValue:
* order:
* options: map, key , value
*/
/* */
/*
[
{"id":"parameter.system","order":0},
{
"id" : "parameter.system.indexPageTemplate",
"parentId" : "parameter.system",
"code" : "parameter.system.indexPageTemplate",
"defaultValue" : "io.sc.platform.mvc.frontend.html",
"order" : 200
},
{"id":"parameter.system.ui","parentId":"parameter.system","order":1000},
{
"id" : "parameter.system.ui.theme",
"parentId" : "parameter.system.ui",
"code" : "parameter.system.ui.theme",
"defaultValue" : "light",
"order" : 800,
"options" :{
"light" : "#{parameter.system.ui.theme.light}",
"dark" : "#{parameter.system.ui.theme.dark}"
}
}
]
*/

16
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/repositories.json

@ -0,0 +1,16 @@
/*
* JPA
* : JPA
* 使:
* includes:
* excludes:
* : includes excludes , excludes ,
*/
{
"includes":[
"irbs.riskExposure.jpa.entity",
"irbs.riskExposure.jpa.repository"
],
"excludes":[]
}

20
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/restart-properties.json

@ -0,0 +1,20 @@
/*
*
* : ,( web , )
* 使:
* : startWith
* container:
* jar: jar
*/
/* */
/*
{
"container":[
"spring.security."
],
"jar": [
"spring.security."
]
}
*/

15
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/security.json

@ -0,0 +1,15 @@
/*
*
* :
* 使:
* permitPatterns : url , ant path
*/
/* */
/*
{
"permitPatterns":[
"/io.sc.platform.core/**"
]
}
*/

19
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/swagger.json

@ -0,0 +1,19 @@
/**
* swagger
*/
/* */
/*
[
{
"groupName" : "io.sc.platform.mvc",
"title" : "平台 MVC",
"description": "平台 MVC 文档",
"termsOfServiceUrl" : "",
"version": "1.0",
"basePackages":[
"io.sc.platform.mvc.controller"
]
}
]
*/

14
irbs.riskExposure/src/main/resources/META-INF/platform/plugins/system-properties.json

@ -0,0 +1,14 @@
/*
*
* : ( System.setProperty())
* 使:
* key :
* value :
*/
/* */
/*
{
"h2.dbname.default" : "DB_PLATFORM"
}
*/

23
irbs.riskExposure/src/main/resources/irbs/riskExposure/i18n/messages.properties

@ -0,0 +1,23 @@
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.TO_BE_SUBMITTED=To be submited
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.RETURNED=Returned
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.TO_BE_CHECKED=To be checked
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.COMPLETED_PASS=Completed pass
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.COMPLETED_REJECT=Completed reject
irbs.riskExposure.jpa.support.RiskExposureType.RE_0100=Company risk exposure
irbs.riskExposure.jpa.support.RiskExposureType.RE_0110=General company risk exposure
irbs.riskExposure.jpa.support.RiskExposureType.RE_0120=Risk exposure of small and medium-sized enterprises
irbs.riskExposure.jpa.support.RiskExposureType.RE_0130=Professional loan risk exposure
irbs.riskExposure.jpa.support.RiskExposureType.RE_0131=Project financing risk exposure
irbs.riskExposure.jpa.support.RiskExposureType.RE_0132=Exposure to risks in commodity financing
irbs.riskExposure.jpa.support.RiskExposureType.RE_0133=Risk exposure in item financing
irbs.riskExposure.jpa.support.RiskExposureType.RE_0134=Real estate risk exposure that generates income
irbs.riskExposure.jpa.support.RiskExposureType.RE_0200=Financial institution risk exposure
irbs.riskExposure.jpa.support.RiskExposureType.RE_0210=Risk exposure of banking financial institutions
irbs.riskExposure.jpa.support.RiskExposureType.RE_0220=Risk exposure of non bank financial institutions
irbs.riskExposure.jpa.support.RiskExposureType.RE_0300=Equity risk exposure
irbs.riskExposure.jpa.support.RiskExposureType.RE_0400=Sovereign risk exposure
irbs.riskExposure.jpa.support.RiskExposureType.RE_0500=Other risk exposures
irbs.riskExposure.jpa.support.RiskExposureType.RE_0510=Asset securitization risk exposure
irbs.riskExposure.jpa.support.RiskExposureType.RE_0520=Accounts receivable risk exposure of qualified purchasing companies
irbs.riskExposure.jpa.support.RiskExposureType.RE_0600=Retail risk exposure

23
irbs.riskExposure/src/main/resources/irbs/riskExposure/i18n/messages_tw_CN.properties

@ -0,0 +1,23 @@
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.TO_BE_SUBMITTED=\u5F85\u63D0\u4EA4
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.RETURNED=\u9000\u56DE
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.TO_BE_CHECKED=\u5BA1\u6279\u4E2D
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.COMPLETED_PASS=\u901A\u8FC7
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.COMPLETED_REJECT=\u5426\u51B3
irbs.riskExposure.jpa.support.RiskExposureType.RE_0100=\u516C\u53F8\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0110=\u4E00\u822C\u516C\u53F8\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0120=\u4E2D\u5C0F\u4F01\u4E1A\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0130=\u4E13\u4E1A\u8D37\u6B3E\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0131=\u9879\u76EE\u878D\u8D44\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0132=\u5546\u54C1\u878D\u8D44\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0133=\u7269\u54C1\u878D\u8D44\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0134=\u4EA7\u751F\u6536\u5165\u7684\u623F\u5730\u4EA7\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0200=\u91D1\u878D\u673A\u6784\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0210=\u94F6\u884C\u7C7B\u91D1\u878D\u673A\u6784\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0220=\u975E\u94F6\u884C\u7C7B\u91D1\u878D\u673A\u6784\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0300=\u80A1\u6743\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0400=\u4E3B\u6743\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0500=\u5176\u4ED6\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0510=\u8D44\u4EA7\u8BC1\u5238\u5316\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0520=\u5408\u683C\u8D2D\u5165\u516C\u53F8\u5E94\u6536\u8D26\u6B3E\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0600=\u96F6\u552E\u98CE\u9669\u66B4\u9732

23
irbs.riskExposure/src/main/resources/irbs/riskExposure/i18n/messages_zh_CN.properties

@ -0,0 +1,23 @@
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.TO_BE_SUBMITTED=\u5F85\u63D0\u4EA4
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.RETURNED=\u9000\u56DE
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.TO_BE_CHECKED=\u5BA1\u6279\u4E2D
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.COMPLETED_PASS=\u901A\u8FC7
irbs.riskExposure.jpa.support.RiskExposureProcessStatus.COMPLETED_REJECT=\u5426\u51B3
irbs.riskExposure.jpa.support.RiskExposureType.RE_0100=\u516C\u53F8\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0110=\u4E00\u822C\u516C\u53F8\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0120=\u4E2D\u5C0F\u4F01\u4E1A\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0130=\u4E13\u4E1A\u8D37\u6B3E\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0131=\u9879\u76EE\u878D\u8D44\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0132=\u5546\u54C1\u878D\u8D44\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0133=\u7269\u54C1\u878D\u8D44\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0134=\u4EA7\u751F\u6536\u5165\u7684\u623F\u5730\u4EA7\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0200=\u91D1\u878D\u673A\u6784\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0210=\u94F6\u884C\u7C7B\u91D1\u878D\u673A\u6784\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0220=\u975E\u94F6\u884C\u7C7B\u91D1\u878D\u673A\u6784\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0300=\u80A1\u6743\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0400=\u4E3B\u6743\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0500=\u5176\u4ED6\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0510=\u8D44\u4EA7\u8BC1\u5238\u5316\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0520=\u5408\u683C\u8D2D\u5165\u516C\u53F8\u5E94\u6536\u8D26\u6B3E\u98CE\u9669\u66B4\u9732
irbs.riskExposure.jpa.support.RiskExposureType.RE_0600=\u96F6\u552E\u98CE\u9669\u66B4\u9732

47
irbs.riskExposure/src/main/resources/liquibase/20240327_RISKEXPOSURE_DDL.xml

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<changeSet id="20240327_RISKEXPOSURE_DDL" author="platform">
<!-- 风险暴露分类表 -->
<createTable tableName="P_IRS_RISK_EXPOSURE" remarks="风险暴露分类表">
<column name="ID_" type="java.sql.Types.VARCHAR(36)" remarks="主键ID">
<constraints primaryKey="true"/>
</column>
<column name="BUSINESS_NO" type="java.sql.Types.VARCHAR(40)" remarks="业务编号"/>
<column name="PRODUCT_TYPE" type="java.sql.Types.VARCHAR(100)" remarks="产品类型"/>
<column name="CUST_NO" type="java.sql.Types.VARCHAR(40)" remarks="客户编号"/>
<column name="CUST_NAME" type="java.sql.Types.VARCHAR(200)" remarks="客户名称"/>
<column name="START_WAY" type="java.sql.Types.VARCHAR(100)" remarks="发起方式"/>
<column name="IS_NEED_OPERATE" type="java.sql.Types.VARCHAR(10)" remarks="是否需人工分类"/>
<column name="ADJUST_END_DATE" type="DATETIME" remarks="调整截止日期"/>
<column name="IS_ADJUSTED" type="java.sql.Types.VARCHAR(10)" remarks="是否已调整"/>
<column name="ADJUST_REASON" type="java.sql.Types.VARCHAR(1000)" remarks="调整原因"/>
<column name="ADJUST_INVALID_DATE" type="DATETIME" remarks="调整的失效日期"/>
<column name="FINISH_DATE" type="DATETIME" remarks="完成时间"/>
<column name="SYS_RESULT" type="java.sql.Types.VARCHAR(100)" remarks="系统分类结果"/>
<column name="MAN_RESULT" type="java.sql.Types.VARCHAR(100)" remarks="人工分类结果"/>
<column name="FINAL_RESULT" type="java.sql.Types.VARCHAR(100)" remarks="最终分类结果"/>
<column name="IS_VALID" type="java.sql.Types.VARCHAR(20)" remarks="是否生效"/>
<column name="PROCESS_INSTANCE_ID" type="java.sql.Types.VARCHAR(100)" remarks="流程实例ID"/>
<column name="PROCESS_STATUS" type="java.sql.Types.VARCHAR(100)" remarks="流程状态"/>
<column name="DATA_STATUS" type="java.sql.Types.VARCHAR(100)" remarks="数据状态"/>
<column name="MANAGER_NAME" type="java.sql.Types.VARCHAR(100)" remarks="客户经理名称"/>
<column name="CURRENT_ASSIGNEE" type="java.sql.Types.VARCHAR(100)" remarks="当前处理人"/>
<column name="MGER_ORG_NM" type="java.sql.Types.VARCHAR(100)" remarks="所属机构"/>
<column name="CUST_TYPE" type="java.sql.Types.VARCHAR(1)" remarks="客户类型(1.一般公司 2.金融债券机构)"/>
<column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column>
<column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column>
<column name="CREATE_DATE_" type="DATETIME" remarks="创建日期"></column>
<column name="LAST_MODIFIER_" type="java.sql.Types.NVARCHAR(255)" remarks="最后修改人"></column>
<column name="LAST_MODIFYDATE_" type="DATETIME" remarks="最后修改日期"></column>
<column name="CORP_CODE_" type="java.sql.Types.NVARCHAR(255)" remarks="所属法人代码" defaultValue="_PRIMARY_">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
</databaseChangeLog>

34
irbs.riskExposure/src/main/resources/liquibase/20240417_UPDATE_RISKEXPOSURE_DDL.xml

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd
http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
<changeSet id="20240417_UPDATE_RISKEXPOSURE_DDL" author="platform">
<!-- 风险暴露分类表 -->
<createTable tableName="P_IRS_RISK_EXPOSURE_OPERATION" remarks="风险暴露分类流程处理表">
<column name="ID_" type="java.sql.Types.VARCHAR(36)" remarks="主键ID">
<constraints primaryKey="true"/>
</column>
<column name="RISK_EXPOSURE_ID" type="java.sql.Types.VARCHAR(36)" remarks="人工风险暴露分类业务ID"/>
<column name="RISK_EXPOSURE_ADJ_ID" type="java.sql.Types.VARCHAR(36)" remarks="人工风险暴露分类调整业务ID"/>
<column name="RISK_EXPOSURE_TYPE" type="java.sql.Types.VARCHAR(20)" remarks="风险暴露分类类型"/>
<column name="FILE_COUNT" type="java.sql.Types.Integer" remarks="附件条数"/>
<column name="REMARKS" type="java.sql.Types.VARCHAR(2000)" remarks="意见说明"/>
<column name="ROLE_NAME" type="java.sql.Types.VARCHAR(30)" remarks="角色"/>
<column name="FILE_NAME" type="java.sql.Types.VARCHAR(2000)" remarks="文件名称"/>
<column name="CREATOR_ORG" type="java.sql.Types.VARCHAR(255)" remarks="创建人机构"/>
<column name="OPERATION" type="java.sql.Types.VARCHAR(10)" remarks="OPERATION"/>
<column name="DATA_COME_FROM_" type="java.sql.Types.NVARCHAR(10)" remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column>
<column name="CREATOR_" type="java.sql.Types.NVARCHAR(255)" remarks="创建人"></column>
<column name="CREATE_DATE_" type="DATETIME" remarks="创建日期"></column>
<column name="LAST_MODIFIER_" type="java.sql.Types.NVARCHAR(255)" remarks="最后修改人"></column>
<column name="LAST_MODIFYDATE_" type="DATETIME" remarks="最后修改日期"></column>
<column name="CORP_CODE_" type="java.sql.Types.NVARCHAR(255)" remarks="所属法人代码" defaultValue="_PRIMARY_">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
</databaseChangeLog>

4
settings.gradle

@ -1,5 +1,7 @@
include 'app.irbs' include 'app.irbs'
include 'irbs.cust.rating' include 'irbs.cust.rating'
include 'irbs.defaultManager'
include 'irbs.deptRating'
include 'irbs.frontend' include 'irbs.frontend'
include 'irbs.reports' include 'irbs.reports'
include 'irbs.defaultManager' include 'irbs.riskExposure'

Loading…
Cancel
Save