diff --git a/app.irbs/build.gradle b/app.irbs/build.gradle index c4844a6..1a7e4fd 100644 --- a/app.irbs/build.gradle +++ b/app.irbs/build.gradle @@ -23,7 +23,9 @@ dependencies { project(":irbs.frontend"), project(":irbs.cust.rating"), project(":irbs.reports"), - project(":irbs.defaultManager") + project(":irbs.defaultManager"), + project(":irbs.riskExposure"), + project(":irbs.deptRating") ) } diff --git a/irbs.deptRating/README.adoc b/irbs.deptRating/README.adoc new file mode 100644 index 0000000..e69de29 diff --git a/irbs.deptRating/build.gradle b/irbs.deptRating/build.gradle new file mode 100644 index 0000000..fe74955 --- /dev/null +++ b/irbs.deptRating/build.gradle @@ -0,0 +1,5 @@ +dependencies { + api( + "io.sc:io.sc.platform.mvc:${platform_version}", + ) +} diff --git a/irbs.deptRating/gradle.properties b/irbs.deptRating/gradle.properties new file mode 100644 index 0000000..e69de29 diff --git a/irbs.deptRating/src/main/java/irbs/deptRating/controller/AppDebtRatingController.java b/irbs.deptRating/src/main/java/irbs/deptRating/controller/AppDebtRatingController.java new file mode 100644 index 0000000..40b4396 --- /dev/null +++ b/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 queryPage(QueryParameter queryParameter) throws Exception{ + Page page = appDebtRatingService.findAll(queryParameter); + return page; + } +} diff --git a/irbs.deptRating/src/main/java/irbs/deptRating/jpa/entity/AppDebtRating.java b/irbs.deptRating/src/main/java/irbs/deptRating/jpa/entity/AppDebtRating.java new file mode 100644 index 0000000..52cd14a --- /dev/null +++ b/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 { + + // 主键 + @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; + } +} + diff --git a/irbs.deptRating/src/main/java/irbs/deptRating/jpa/repository/AppDebtRatingRepository.java b/irbs.deptRating/src/main/java/irbs/deptRating/jpa/repository/AppDebtRatingRepository.java new file mode 100644 index 0000000..4474771 --- /dev/null +++ b/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 { + /** + * 按业务合同号查询LGD业务信息 + * @param contractNo + * @return + */ + public AppDebtRating findByContractNoAndIsValid(String contractNo, String isValid); + /** + * 按业务合同号查询LGD业务信息 + * @param contractNo + * @return + */ + public List findByContractNo(String contractNo); +} diff --git a/irbs.deptRating/src/main/java/irbs/deptRating/jpa/vo/AppDebtRatingVo.java b/irbs.deptRating/src/main/java/irbs/deptRating/jpa/vo/AppDebtRatingVo.java new file mode 100644 index 0000000..8b95a04 --- /dev/null +++ b/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; + } +} + diff --git a/irbs.deptRating/src/main/java/irbs/deptRating/service/AppDebtRatingService.java b/irbs.deptRating/src/main/java/irbs/deptRating/service/AppDebtRatingService.java new file mode 100644 index 0000000..a764649 --- /dev/null +++ b/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 { + /** + * 由业务合同编号查询债项评级信息 + * @return + */ + public Page findAll(QueryParameter queryParameter) throws Exception; + /** + * 由业务合同编号查询债项评级信息 + * @param businessNo + * @return + */ + public List findByBusinessNo(String businessNo); + /** + * 由业务合同编号查询债项评级信息 + * @param businessNo + * @return + */ + public AppDebtRating findValidByBusinessNo(String businessNo); + /** + * 将债项评级信息置为失效状态 + * @param debtRating + * @throws Exception + */ + public void invalidDebtRating(AppDebtRating debtRating) throws Exception; +} diff --git a/irbs.deptRating/src/main/java/irbs/deptRating/service/impl/AppDebtRatingServiceImpl.java b/irbs.deptRating/src/main/java/irbs/deptRating/service/impl/AppDebtRatingServiceImpl.java new file mode 100644 index 0000000..cd4bd0d --- /dev/null +++ b/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 +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 findAll(QueryParameter queryParameter) throws Exception { + Page page = this.query(queryParameter); + return page; + } + + @Override + public List findByBusinessNo(String businessNo) { + // TODO Auto-generated method stub + return repository.findByContractNo(businessNo); + } + + @Override + public AppDebtRating findValidByBusinessNo(String businessNo) { + return null; + } + +} diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/application-properties.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/application-properties.json new file mode 100644 index 0000000..794d86c --- /dev/null +++ b/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" + ] + } +] +*/ diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/components.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/components.json new file mode 100644 index 0000000..92678dc --- /dev/null +++ b/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":[] +} diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/directories.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/directories.json new file mode 100644 index 0000000..f08e65c --- /dev/null +++ b/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} +] +*/ diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/json-serializers.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/json-serializers.json new file mode 100644 index 0000000..a393f62 --- /dev/null +++ b/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" + } +] +*/ diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/liquibase.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/liquibase.json new file mode 100644 index 0000000..f804b3f --- /dev/null +++ b/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" + ] + } +] diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/messages.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/messages.json new file mode 100644 index 0000000..2c793fe --- /dev/null +++ b/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":[] +} diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/p6spy.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/p6spy.json new file mode 100644 index 0000000..f8b9dfd --- /dev/null +++ b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/p6spy.json @@ -0,0 +1,15 @@ +/* + * p6spy 插件配置 + * 功能: 该插件配置为框架提供 p6spy 配置 + * 使用说明: + * ignoredPatterns: 忽略显示 jdbc 输出信息正则表达式列表 + */ + +/* 以下示例将不显示 p6spy 输出的 commit */ +/* +{ + "ignoredPatterns":[ + "commit" + ] +} +*/ diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/parameters.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/parameters.json new file mode 100644 index 0000000..731534c --- /dev/null +++ b/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}" + } + } +] +*/ diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/repositories.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/repositories.json new file mode 100644 index 0000000..578fc85 --- /dev/null +++ b/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":[] +} diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/restart-properties.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/restart-properties.json new file mode 100644 index 0000000..70e1e9f --- /dev/null +++ b/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." + ] +} +*/ diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/security.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/security.json new file mode 100644 index 0000000..cf73cef --- /dev/null +++ b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/security.json @@ -0,0 +1,15 @@ +/* + * 认证插件配置 + * 功能: 该插件配置为框架提供不对某些资源进行认证的功能 + * 使用说明: + * permitPatterns : 不进行安全认证检查的 url 模式, 采用 ant path 格式配置 + */ + +/* 示例 */ +/* +{ + "permitPatterns":[ + "/io.sc.platform.core/**" + ] +} +*/ diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/swagger.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/swagger.json new file mode 100644 index 0000000..3dff6cb --- /dev/null +++ b/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" + ] + } +] +*/ diff --git a/irbs.deptRating/src/main/resources/META-INF/platform/plugins/system-properties.json b/irbs.deptRating/src/main/resources/META-INF/platform/plugins/system-properties.json new file mode 100644 index 0000000..d3eaebf --- /dev/null +++ b/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" +} +*/ diff --git a/irbs.deptRating/src/main/resources/irbs/deptRating/i18n/messages.properties b/irbs.deptRating/src/main/resources/irbs/deptRating/i18n/messages.properties new file mode 100644 index 0000000..e69de29 diff --git a/irbs.deptRating/src/main/resources/irbs/deptRating/i18n/messages_zh_CN.properties b/irbs.deptRating/src/main/resources/irbs/deptRating/i18n/messages_zh_CN.properties new file mode 100644 index 0000000..e69de29 diff --git a/irbs.deptRating/src/main/resources/liqiubase/20240427_DEBTRATING_DDL.xml b/irbs.deptRating/src/main/resources/liqiubase/20240427_DEBTRATING_DDL.xml new file mode 100644 index 0000000..d9e72f8 --- /dev/null +++ b/irbs.deptRating/src/main/resources/liqiubase/20240427_DEBTRATING_DDL.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/irbs.frontend/src/components/index.ts b/irbs.frontend/src/components/index.ts index 7e1ea78..1d45df5 100644 --- a/irbs.frontend/src/components/index.ts +++ b/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 riskExposureApply from '@/views/riskExposure/RiskExposureApply.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 defaultHist from '@/views/query/DefaultHist.vue'; import riskExposureHist from '@/views/query/RiskExposureHist.vue'; @@ -49,6 +51,8 @@ const localComponents = { 'irbs.lgdQuery': lgdQuery, 'irbs.riskExposureApply': riskExposureApply, 'irbs.riskExposureApproval': riskExposureApproval, + 'irbs.riskExposureAdjustApply': riskExposureAdjustApply, + 'irbs.riskExposureAdjustApproval': riskExposureAdjustApproval, 'irbs.custRatingHist': custRatingHist, 'irbs.defaultHist': defaultHist, 'irbs.riskExposureHist': riskExposureHist, diff --git a/irbs.frontend/src/i18n/messages.json b/irbs.frontend/src/i18n/messages.json index 9f98a10..0dc3d86 100644 --- a/irbs.frontend/src/i18n/messages.json +++ b/irbs.frontend/src/i18n/messages.json @@ -21,6 +21,8 @@ "menu.irbs.riskExposure": "Risk Exposure", "menu.irbs.riskExposure.apply": "Risk Exposure Apply", "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.custRatingHist": "Customer Rating History", diff --git a/irbs.frontend/src/i18n/messages_tw_CN.json b/irbs.frontend/src/i18n/messages_tw_CN.json index 3330753..acb6465 100644 --- a/irbs.frontend/src/i18n/messages_tw_CN.json +++ b/irbs.frontend/src/i18n/messages_tw_CN.json @@ -21,6 +21,8 @@ "menu.irbs.riskExposure": "风险暴露分类管理", "menu.irbs.riskExposure.apply": "风险暴露分类申请", "menu.irbs.riskExposure.approval": "风险暴露分类审批", + "menu.irbs.riskExposure.adjust.apply": "风险暴露分类调整申请", + "menu.irbs.riskExposure.adjust.approval": "风险暴露分类调整审批", "menu.irbs.query": "查询管理", "menu.irbs.query.custRatingHist": "客户评级历史查询", diff --git a/irbs.frontend/src/i18n/messages_zh_CN.json b/irbs.frontend/src/i18n/messages_zh_CN.json index 3330753..acb6465 100644 --- a/irbs.frontend/src/i18n/messages_zh_CN.json +++ b/irbs.frontend/src/i18n/messages_zh_CN.json @@ -21,6 +21,8 @@ "menu.irbs.riskExposure": "风险暴露分类管理", "menu.irbs.riskExposure.apply": "风险暴露分类申请", "menu.irbs.riskExposure.approval": "风险暴露分类审批", + "menu.irbs.riskExposure.adjust.apply": "风险暴露分类调整申请", + "menu.irbs.riskExposure.adjust.approval": "风险暴露分类调整审批", "menu.irbs.query": "查询管理", "menu.irbs.query.custRatingHist": "客户评级历史查询", diff --git a/irbs.frontend/src/menus/menus.json b/irbs.frontend/src/menus/menus.json index e93ace3..ce3325d 100644 --- a/irbs.frontend/src/menus/menus.json +++ b/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":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":"ROUTE", "order":100, "parentId":"menu.irbs.query", "id":"menu.irbs.query.custRatingHist", "titleI18nKey":"menu.irbs.query.custRatingHist", "icon":"", "routeName":"route.irbs.query.custRatingHist"}, diff --git a/irbs.frontend/src/routes/routes.json b/irbs.frontend/src/routes/routes.json index 9bda610..24a057f 100644 --- a/irbs.frontend/src/routes/routes.json +++ b/irbs.frontend/src/routes/routes.json @@ -168,6 +168,32 @@ }, "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", "path": "irbs/custRatingHist", diff --git a/irbs.frontend/src/views/debtRating/LgdQuery.vue b/irbs.frontend/src/views/debtRating/LgdQuery.vue index 25b5550..193c851 100644 --- a/irbs.frontend/src/views/debtRating/LgdQuery.vue +++ b/irbs.frontend/src/views/debtRating/LgdQuery.vue @@ -1,5 +1,84 @@ - + diff --git a/irbs.frontend/src/views/default/CognizanceApply.vue b/irbs.frontend/src/views/default/CognizanceApply.vue index c6815b8..b73dd22 100644 --- a/irbs.frontend/src/views/default/CognizanceApply.vue +++ b/irbs.frontend/src/views/default/CognizanceApply.vue @@ -66,18 +66,6 @@ const cognizanceGrid = { cognizanceDialogRef.value.show(args.selected); }, }, - // { - // name: 'cancel', - // icon: 'delete_forever', - // label: '撤销', - // click: () => {}, - // }, - // { - // name: 'approval', - // icon: 'approval', - // label: '审批', - // click: () => {}, - // }, 'separator', { extend: 'view', diff --git a/irbs.frontend/src/views/riskExposure/HandmadeExposureDialog.vue b/irbs.frontend/src/views/riskExposure/HandmadeExposureDialog.vue new file mode 100644 index 0000000..2e1f30f --- /dev/null +++ b/irbs.frontend/src/views/riskExposure/HandmadeExposureDialog.vue @@ -0,0 +1,234 @@ + + + diff --git a/irbs.frontend/src/views/riskExposure/LaunchExposureAdjustDialog.vue b/irbs.frontend/src/views/riskExposure/LaunchExposureAdjustDialog.vue new file mode 100644 index 0000000..ad02cdb --- /dev/null +++ b/irbs.frontend/src/views/riskExposure/LaunchExposureAdjustDialog.vue @@ -0,0 +1,133 @@ + + + diff --git a/irbs.frontend/src/views/riskExposure/LaunchExposureDialog.vue b/irbs.frontend/src/views/riskExposure/LaunchExposureDialog.vue new file mode 100644 index 0000000..6048e57 --- /dev/null +++ b/irbs.frontend/src/views/riskExposure/LaunchExposureDialog.vue @@ -0,0 +1,133 @@ + + + diff --git a/irbs.frontend/src/views/riskExposure/RiskExposure.ts b/irbs.frontend/src/views/riskExposure/RiskExposure.ts new file mode 100644 index 0000000..297771d --- /dev/null +++ b/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' }, +]; diff --git a/irbs.frontend/src/views/riskExposure/RiskExposureAdjustApply.vue b/irbs.frontend/src/views/riskExposure/RiskExposureAdjustApply.vue new file mode 100644 index 0000000..040051c --- /dev/null +++ b/irbs.frontend/src/views/riskExposure/RiskExposureAdjustApply.vue @@ -0,0 +1,145 @@ + + + diff --git a/irbs.frontend/src/views/riskExposure/RiskExposureAdjustApproval.vue b/irbs.frontend/src/views/riskExposure/RiskExposureAdjustApproval.vue new file mode 100644 index 0000000..b721601 --- /dev/null +++ b/irbs.frontend/src/views/riskExposure/RiskExposureAdjustApproval.vue @@ -0,0 +1,152 @@ + + + diff --git a/irbs.frontend/src/views/riskExposure/RiskExposureApply.vue b/irbs.frontend/src/views/riskExposure/RiskExposureApply.vue index 25b5550..32e5f1d 100644 --- a/irbs.frontend/src/views/riskExposure/RiskExposureApply.vue +++ b/irbs.frontend/src/views/riskExposure/RiskExposureApply.vue @@ -1,5 +1,135 @@ - + diff --git a/irbs.frontend/src/views/riskExposure/RiskExposureApproval.vue b/irbs.frontend/src/views/riskExposure/RiskExposureApproval.vue index 25b5550..269b0d4 100644 --- a/irbs.frontend/src/views/riskExposure/RiskExposureApproval.vue +++ b/irbs.frontend/src/views/riskExposure/RiskExposureApproval.vue @@ -1,5 +1,147 @@ - + diff --git a/irbs.riskExposure/README.adoc b/irbs.riskExposure/README.adoc new file mode 100644 index 0000000..e69de29 diff --git a/irbs.riskExposure/build.gradle b/irbs.riskExposure/build.gradle new file mode 100644 index 0000000..6378675 --- /dev/null +++ b/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}", + ) +} diff --git a/irbs.riskExposure/gradle.properties b/irbs.riskExposure/gradle.properties new file mode 100644 index 0000000..e69de29 diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/controller/RiskExposureAdjustController.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/controller/RiskExposureAdjustController.java new file mode 100644 index 0000000..04f87d8 --- /dev/null +++ b/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 queryPage(QueryParameter queryParameter) throws Exception{ + Page page = riskExposureAdjustService.queryPage(queryParameter); + return page; + } + + /** + * 根据ID查询风险暴露分类数据 + * @param map + * @throws Exception + */ + @RequestMapping(value="getRiskExposureById",method= RequestMethod.POST) + @ResponseBody + public RiskExposure getRiskExposureById(@RequestBody Map 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 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(); + } + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/controller/RiskExposureController.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/controller/RiskExposureController.java new file mode 100644 index 0000000..08e1a15 --- /dev/null +++ b/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 queryPage(QueryParameter queryParameter) throws Exception{ + Page page = riskExposureService.queryPage(queryParameter); + return page; + } + + /** + * 根据ID查询风险暴露分类数据 + * @param map + * @throws Exception + */ + @RequestMapping(value="getRiskExposureById",method= RequestMethod.POST) + @ResponseBody + public RiskExposure getRiskExposureById(@RequestBody Map 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 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 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(); + } + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/controller/RiskExposureOperationController.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/controller/RiskExposureOperationController.java new file mode 100644 index 0000000..70f1968 --- /dev/null +++ b/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 queryPage(QueryParameter queryParameter) throws Exception{ + return riskExposureOperationService.queryPage(queryParameter); + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/entity/Customer.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/entity/Customer.java new file mode 100644 index 0000000..5fd73e7 --- /dev/null +++ b/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; + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/entity/RiskExposure.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/entity/RiskExposure.java new file mode 100644 index 0000000..c99af28 --- /dev/null +++ b/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 { + + // 主键 + @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; + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/entity/RiskExposureOperation.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/entity/RiskExposureOperation.java new file mode 100644 index 0000000..eb818ee --- /dev/null +++ b/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 { + + // 主键 + @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; + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/repository/CustomerRepository.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/repository/CustomerRepository.java new file mode 100644 index 0000000..ba5f5d3 --- /dev/null +++ b/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 findByCustNo(String custNo) throws Exception; +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/repository/RiskExposureOperationRepository.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/repository/RiskExposureOperationRepository.java new file mode 100644 index 0000000..7f205da --- /dev/null +++ b/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 { +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/repository/RiskExposureRepository.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/repository/RiskExposureRepository.java new file mode 100644 index 0000000..6a30a3a --- /dev/null +++ b/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 { +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/GoBackType.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/GoBackType.java new file mode 100644 index 0000000..0dd3f7a --- /dev/null +++ b/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; + } + +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/ProcessConstant.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/ProcessConstant.java new file mode 100644 index 0000000..551d97b --- /dev/null +++ b/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"; + +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/RiskExposureProcessOperate.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/RiskExposureProcessOperate.java new file mode 100644 index 0000000..89b1b69 --- /dev/null +++ b/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; + } + +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/RiskExposureProcessStatus.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/RiskExposureProcessStatus.java new file mode 100644 index 0000000..319a532 --- /dev/null +++ b/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; // 否决 +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/RiskExposureType.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/support/RiskExposureType.java new file mode 100644 index 0000000..335da88 --- /dev/null +++ b/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 +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/vo/RiskExposureOperationVo.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/vo/RiskExposureOperationVo.java new file mode 100644 index 0000000..e332913 --- /dev/null +++ b/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; + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/vo/RiskExposureVo.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/jpa/vo/RiskExposureVo.java new file mode 100644 index 0000000..d4fdad0 --- /dev/null +++ b/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; + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureAdjustService.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureAdjustService.java new file mode 100644 index 0000000..7411c9b --- /dev/null +++ b/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 { + Page 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; +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureFlowService.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureFlowService.java new file mode 100644 index 0000000..355069e --- /dev/null +++ b/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 描述 + */ + ProcessInstance startProcess(String category, String assignee, String businessKey, String fronted, String desc, Class clazz) throws Exception; + + /** + * 查询流程任务 + * @param procInstId + * @return + * @throws Exception + */ + ProcessTaskWrapper findTaskByProcInstId(String procInstId) throws Exception; +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureOperationService.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureOperationService.java new file mode 100644 index 0000000..c376ae2 --- /dev/null +++ b/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 { + + Page queryPage(QueryParameter queryParameter) throws Exception; +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureProcessService.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureProcessService.java new file mode 100644 index 0000000..9bb0b87 --- /dev/null +++ b/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; +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureService.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/service/RiskExposureService.java new file mode 100644 index 0000000..dc4eb16 --- /dev/null +++ b/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 { + Page 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; +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureAdjustServiceImpl.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureAdjustServiceImpl.java new file mode 100644 index 0000000..0511b7b --- /dev/null +++ b/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 implements RiskExposureAdjustService { + + @Autowired + private RiskExposureOperationService riskExposureOperationService; + @Autowired + private RiskExposureFlowService riskExposureFlowService; + @Override + public Page queryPage(QueryParameter queryParameter) throws Exception { + Page 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 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); + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureFlowServiceImpl.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureFlowServiceImpl.java new file mode 100644 index 0000000..8fd1125 --- /dev/null +++ b/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 ProcessInstance startProcess(String category, String assignee, String businessKey, String fronted, String desc, Class clazz) throws Exception { + Map 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 list = processQueryService.queryProcessTasks(procInstId, null); + if (null != list && list.size() > 1) { + // 同一个流程实例查找出多个任务则为多实例任务,还需再根据任务处理人匹配。 + List 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; + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureOperationServiceImpl.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureOperationServiceImpl.java new file mode 100644 index 0000000..82b63d2 --- /dev/null +++ b/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 implements RiskExposureOperationService { + @Override + public Page queryPage(QueryParameter queryParameter) throws Exception { + return this.query(queryParameter); + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureProcessServiceImpl.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureProcessServiceImpl.java new file mode 100644 index 0000000..2908c80 --- /dev/null +++ b/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 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 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; + } + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureServiceImpl.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/service/impl/RiskExposureServiceImpl.java new file mode 100644 index 0000000..17dc153 --- /dev/null +++ b/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 implements RiskExposureService { + + @Autowired + private RiskExposureOperationService riskExposureOperationService; + @Autowired + private RiskExposureFlowService riskExposureFlowService; + @Override + public Page queryPage(QueryParameter queryParameter) throws Exception { + Page 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 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); + } +} diff --git a/irbs.riskExposure/src/main/java/irbs/riskExposure/service/support/QueryParams.java b/irbs.riskExposure/src/main/java/irbs/riskExposure/service/support/QueryParams.java new file mode 100644 index 0000000..c7960dd --- /dev/null +++ b/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; + } +} diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/application-properties.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/application-properties.json new file mode 100644 index 0000000..794d86c --- /dev/null +++ b/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" + ] + } +] +*/ diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/components.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/components.json new file mode 100644 index 0000000..ceaa42f --- /dev/null +++ b/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":[] +} diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/directories.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/directories.json new file mode 100644 index 0000000..f08e65c --- /dev/null +++ b/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} +] +*/ diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/json-serializers.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/json-serializers.json new file mode 100644 index 0000000..a393f62 --- /dev/null +++ b/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" + } +] +*/ diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/liquibase.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/liquibase.json new file mode 100644 index 0000000..a4ac93e --- /dev/null +++ b/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" + ] + } +] diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/messages.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/messages.json new file mode 100644 index 0000000..4ac67d6 --- /dev/null +++ b/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":[] +} diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/p6spy.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/p6spy.json new file mode 100644 index 0000000..f8b9dfd --- /dev/null +++ b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/p6spy.json @@ -0,0 +1,15 @@ +/* + * p6spy 插件配置 + * 功能: 该插件配置为框架提供 p6spy 配置 + * 使用说明: + * ignoredPatterns: 忽略显示 jdbc 输出信息正则表达式列表 + */ + +/* 以下示例将不显示 p6spy 输出的 commit */ +/* +{ + "ignoredPatterns":[ + "commit" + ] +} +*/ diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/parameters.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/parameters.json new file mode 100644 index 0000000..731534c --- /dev/null +++ b/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}" + } + } +] +*/ diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/repositories.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/repositories.json new file mode 100644 index 0000000..447e4f1 --- /dev/null +++ b/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":[] +} diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/restart-properties.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/restart-properties.json new file mode 100644 index 0000000..70e1e9f --- /dev/null +++ b/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." + ] +} +*/ diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/security.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/security.json new file mode 100644 index 0000000..cf73cef --- /dev/null +++ b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/security.json @@ -0,0 +1,15 @@ +/* + * 认证插件配置 + * 功能: 该插件配置为框架提供不对某些资源进行认证的功能 + * 使用说明: + * permitPatterns : 不进行安全认证检查的 url 模式, 采用 ant path 格式配置 + */ + +/* 示例 */ +/* +{ + "permitPatterns":[ + "/io.sc.platform.core/**" + ] +} +*/ diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/swagger.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/swagger.json new file mode 100644 index 0000000..3dff6cb --- /dev/null +++ b/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" + ] + } +] +*/ diff --git a/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/system-properties.json b/irbs.riskExposure/src/main/resources/META-INF/platform/plugins/system-properties.json new file mode 100644 index 0000000..d3eaebf --- /dev/null +++ b/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" +} +*/ diff --git a/irbs.riskExposure/src/main/resources/irbs/riskExposure/i18n/messages.properties b/irbs.riskExposure/src/main/resources/irbs/riskExposure/i18n/messages.properties new file mode 100644 index 0000000..9612059 --- /dev/null +++ b/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 \ No newline at end of file diff --git a/irbs.riskExposure/src/main/resources/irbs/riskExposure/i18n/messages_tw_CN.properties b/irbs.riskExposure/src/main/resources/irbs/riskExposure/i18n/messages_tw_CN.properties new file mode 100644 index 0000000..de59596 --- /dev/null +++ b/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 \ No newline at end of file diff --git a/irbs.riskExposure/src/main/resources/irbs/riskExposure/i18n/messages_zh_CN.properties b/irbs.riskExposure/src/main/resources/irbs/riskExposure/i18n/messages_zh_CN.properties new file mode 100644 index 0000000..de59596 --- /dev/null +++ b/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 \ No newline at end of file diff --git a/irbs.riskExposure/src/main/resources/liquibase/20240327_RISKEXPOSURE_DDL.xml b/irbs.riskExposure/src/main/resources/liquibase/20240327_RISKEXPOSURE_DDL.xml new file mode 100644 index 0000000..66b8707 --- /dev/null +++ b/irbs.riskExposure/src/main/resources/liquibase/20240327_RISKEXPOSURE_DDL.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/irbs.riskExposure/src/main/resources/liquibase/20240417_UPDATE_RISKEXPOSURE_DDL.xml b/irbs.riskExposure/src/main/resources/liquibase/20240417_UPDATE_RISKEXPOSURE_DDL.xml new file mode 100644 index 0000000..f3bef5c --- /dev/null +++ b/irbs.riskExposure/src/main/resources/liquibase/20240417_UPDATE_RISKEXPOSURE_DDL.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings.gradle b/settings.gradle index c02fffa..49407f3 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,5 +1,7 @@ include 'app.irbs' include 'irbs.cust.rating' +include 'irbs.defaultManager' +include 'irbs.deptRating' include 'irbs.frontend' include 'irbs.reports' -include 'irbs.defaultManager' +include 'irbs.riskExposure'