91 changed files with 5102 additions and 20 deletions
			
			
		| @ -0,0 +1,5 @@ | |||||
|  | dependencies { | ||||
|  | 	api( | ||||
|  | 		"io.sc:io.sc.platform.mvc:${platform_version}", | ||||
|  | 	) | ||||
|  | } | ||||
| @ -0,0 +1,43 @@ | |||||
|  | package irbs.deptRating.controller; | ||||
|  | 
 | ||||
|  | import java.util.List; | ||||
|  | import java.util.Locale; | ||||
|  | 
 | ||||
|  | import javax.servlet.http.HttpServletRequest; | ||||
|  | import javax.servlet.http.HttpServletResponse; | ||||
|  | 
 | ||||
|  | import io.sc.platform.mvc.support.ExportFileInfo; | ||||
|  | import io.sc.platform.orm.service.support.QueryParameter; | ||||
|  | import io.sc.platform.security.service.impl.SystemParameterServiceImpl; | ||||
|  | import io.sc.platform.security.util.SecurityUtil; | ||||
|  | import irbs.deptRating.jpa.entity.AppDebtRating; | ||||
|  | import irbs.deptRating.jpa.repository.AppDebtRatingRepository; | ||||
|  | import irbs.deptRating.service.AppDebtRatingService; | ||||
|  | import org.slf4j.Logger; | ||||
|  | import org.slf4j.LoggerFactory; | ||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||
|  | import org.springframework.data.domain.Page; | ||||
|  | import org.springframework.stereotype.Controller; | ||||
|  | import org.springframework.util.StringUtils; | ||||
|  | import org.springframework.web.bind.annotation.*; | ||||
|  | import org.springframework.web.multipart.MultipartFile; | ||||
|  | import org.springframework.web.servlet.ModelAndView; | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | @Controller | ||||
|  | @RequestMapping("/api/irbs/appDebtRating") | ||||
|  | public class AppDebtRatingController { | ||||
|  | 	 | ||||
|  | 	private static final Logger log =LoggerFactory.getLogger(AppDebtRatingController.class); | ||||
|  | 	@Autowired | ||||
|  | 	private AppDebtRatingService appDebtRatingService; | ||||
|  | 	/** | ||||
|  | 	 * @债项评级管理 | ||||
|  | 	 * @return | ||||
|  | 	 */ | ||||
|  | 	@GetMapping("queryPage") | ||||
|  | 	public Page<AppDebtRating> queryPage(QueryParameter queryParameter) throws Exception{ | ||||
|  | 		Page<AppDebtRating> page = appDebtRatingService.findAll(queryParameter); | ||||
|  | 		return page; | ||||
|  | 	} | ||||
|  | } | ||||
| @ -0,0 +1,369 @@ | |||||
|  | package irbs.deptRating.jpa.entity; | ||||
|  | 
 | ||||
|  | import io.sc.platform.orm.entity.CorporationAuditorEntity; | ||||
|  | import irbs.deptRating.jpa.vo.AppDebtRatingVo; | ||||
|  | import org.hibernate.annotations.GenericGenerator; | ||||
|  | 
 | ||||
|  | import javax.persistence.*; | ||||
|  | import javax.validation.constraints.Size; | ||||
|  | 
 | ||||
|  | @Entity | ||||
|  | @Table(name = "P_IRS_APPLY_DEBT_RATING") | ||||
|  | public class AppDebtRating extends CorporationAuditorEntity<AppDebtRatingVo> { | ||||
|  | 
 | ||||
|  | 	// 主键
 | ||||
|  | 	@Id | ||||
|  | 	@GeneratedValue(generator = "system-uuid") | ||||
|  | 	@GenericGenerator(name = "system-uuid", strategy = "uuid2") | ||||
|  | 	@Column(name="ID_") | ||||
|  | 	@Size(max=50) | ||||
|  | 	private String id; | ||||
|  | 	/** | ||||
|  | 	 * 业务合同编号 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "CONTRACTNO") | ||||
|  | 	private String contractNo; | ||||
|  | 	/** | ||||
|  | 	 * 业务产品类型 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "PRODUCTTYPE") | ||||
|  | 	private String productType; | ||||
|  | 	/** | ||||
|  | 	 * 业务产品类型回收率 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "PRODUCTRATE") | ||||
|  | 	private Double productRate; | ||||
|  | 	/** | ||||
|  | 	 * 业务合同金额 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "CONTRACTAMT") | ||||
|  | 	private Double contractAmt; | ||||
|  | 	/** | ||||
|  | 	 * 机构类型 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "ORGTYPE") | ||||
|  | 	private String orgType; | ||||
|  | 	/** | ||||
|  | 	 * 是否低风险业务 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "LOWRISKFLG") | ||||
|  | 	private String lowRiskFlg; | ||||
|  | 	/** | ||||
|  | 	 * 是否利率债 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "INTERESTDEBTFLG") | ||||
|  | 	private String interestDebtFlg; | ||||
|  | 	/** | ||||
|  | 	 * 金融机构债权等级 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "FINANCEDEBTLEVEL") | ||||
|  | 	private String financeDebtLevel; | ||||
|  | 	/** | ||||
|  | 	 * 客户编号 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "CUSTNO") | ||||
|  | 	private String custNo; | ||||
|  | 	/** | ||||
|  | 	 * 客户名称 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "CUSTNAME") | ||||
|  | 	private String custName; | ||||
|  | 	/** | ||||
|  | 	 * 借款人评级 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "CREDITGRADE") | ||||
|  | 	private String creditGrade; | ||||
|  | 	/** | ||||
|  | 	 * 借款人评级回收率 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "CREDITGRADERATE") | ||||
|  | 	private Double creditGradeRate; | ||||
|  | 	/** | ||||
|  | 	 * 行业类型 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "INDUSTRYTYPE") | ||||
|  | 	private String industryType; | ||||
|  | 	/** | ||||
|  | 	 * 行业类型调整系数 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "INDUSTRYTYPERATE") | ||||
|  | 	private Double industryTypeRate; | ||||
|  | 	/** | ||||
|  | 	 * 企业规模 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "CORPSIZE") | ||||
|  | 	private String corpSize; | ||||
|  | 	/** | ||||
|  | 	 * 企业规模调整系数 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "CORPSIZERATE") | ||||
|  | 	private Double corpSizeRate; | ||||
|  | 	/** | ||||
|  | 	 * 企业类型 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "CORPTYPE") | ||||
|  | 	private String corpType; | ||||
|  | 	/** | ||||
|  | 	 * 企业类型调整系数 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "CORPTYPERATE") | ||||
|  | 	private Double corpTypeRate; | ||||
|  | 	/** | ||||
|  | 	 * 所在行政区域 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "REGIONCODE") | ||||
|  | 	private String regionCode; | ||||
|  | 	/** | ||||
|  | 	 * 所在行政区域调整系数 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "REGIONCODERATE") | ||||
|  | 	private Double regionCodeRate; | ||||
|  | 	/** | ||||
|  | 	 * 借款人有形资产债务率 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "YXZCZWL") | ||||
|  | 	private Double yxzczwl; | ||||
|  | 	/** | ||||
|  | 	 * 借款人有形资产债务率调整系数 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "YXZCZWLRATE") | ||||
|  | 	private Double yxzczwlRate; | ||||
|  | 	/** | ||||
|  | 	 * 借款人调整回收率 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "ADJUSTRATE") | ||||
|  | 	private Double adjustRate; | ||||
|  | 	/** | ||||
|  | 	 * 借款人回收率 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "RECRATE") | ||||
|  | 	private Double recrate; | ||||
|  | 	/** | ||||
|  | 	 * 保证担保形式 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "PLEDGECLASS") | ||||
|  | 	private String pledgeClass; | ||||
|  | 	/** | ||||
|  | 	 * 担保类型 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "GUARANTEETYPE") | ||||
|  | 	private String guaranteeType; | ||||
|  | 	/** | ||||
|  | 	 * 保证人整体回收率 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "PLEDGERECRATE") | ||||
|  | 	private Double pledgeRecRate; | ||||
|  | 	/** | ||||
|  | 	 * 押品整体回收率 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "GUARANTYRECRATE") | ||||
|  | 	private Double guarantyRecRate; | ||||
|  | 	/** | ||||
|  | 	 * lgd计算结果 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "LGD") | ||||
|  | 	private Double lgd; | ||||
|  | 	/** | ||||
|  | 	 * 是否生效 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "IS_VALID") | ||||
|  | 	private String isValid; | ||||
|  | 	/** | ||||
|  | 	 * 业务经办人 | ||||
|  | 	 */ | ||||
|  | 	@Column(name = "MANAGER_CODE") | ||||
|  | 	private String managerCode; | ||||
|  | 	public String getId() { | ||||
|  | 		return id; | ||||
|  | 	} | ||||
|  | 	public void setId(String id) { | ||||
|  | 		this.id = id; | ||||
|  | 	} | ||||
|  | 	public String getContractNo() { | ||||
|  | 		return contractNo; | ||||
|  | 	} | ||||
|  | 	public void setContractNo(String contractNo) { | ||||
|  | 		this.contractNo = contractNo; | ||||
|  | 	} | ||||
|  | 	public String getProductType() { | ||||
|  | 		return productType; | ||||
|  | 	} | ||||
|  | 	public void setProductType(String productType) { | ||||
|  | 		this.productType = productType; | ||||
|  | 	} | ||||
|  | 	public Double getContractAmt() { | ||||
|  | 		return contractAmt; | ||||
|  | 	} | ||||
|  | 	public void setContractAmt(Double contractAmt) { | ||||
|  | 		this.contractAmt = contractAmt; | ||||
|  | 	} | ||||
|  | 	public String getOrgType() { | ||||
|  | 		return orgType; | ||||
|  | 	} | ||||
|  | 	public void setOrgType(String orgType) { | ||||
|  | 		this.orgType = orgType; | ||||
|  | 	} | ||||
|  | 	public String getLowRiskFlg() { | ||||
|  | 		return lowRiskFlg; | ||||
|  | 	} | ||||
|  | 	public void setLowRiskFlg(String lowRiskFlg) { | ||||
|  | 		this.lowRiskFlg = lowRiskFlg; | ||||
|  | 	} | ||||
|  | 	public String getInterestDebtFlg() { | ||||
|  | 		return interestDebtFlg; | ||||
|  | 	} | ||||
|  | 	public void setInterestDebtFlg(String interestDebtFlg) { | ||||
|  | 		this.interestDebtFlg = interestDebtFlg; | ||||
|  | 	} | ||||
|  | 	public String getFinanceDebtLevel() { | ||||
|  | 		return financeDebtLevel; | ||||
|  | 	} | ||||
|  | 	public void setFinanceDebtLevel(String financeDebtLevel) { | ||||
|  | 		this.financeDebtLevel = financeDebtLevel; | ||||
|  | 	} | ||||
|  | 	public String getCustNo() { | ||||
|  | 		return custNo; | ||||
|  | 	} | ||||
|  | 	public void setCustNo(String custNo) { | ||||
|  | 		this.custNo = custNo; | ||||
|  | 	} | ||||
|  | 	public String getCustName() { | ||||
|  | 		return custName; | ||||
|  | 	} | ||||
|  | 	public void setCustName(String custName) { | ||||
|  | 		this.custName = custName; | ||||
|  | 	} | ||||
|  | 	public String getCreditGrade() { | ||||
|  | 		return creditGrade; | ||||
|  | 	} | ||||
|  | 	public void setCreditGrade(String creditGrade) { | ||||
|  | 		this.creditGrade = creditGrade; | ||||
|  | 	} | ||||
|  | 	public String getIndustryType() { | ||||
|  | 		return industryType; | ||||
|  | 	} | ||||
|  | 	public void setIndustryType(String industryType) { | ||||
|  | 		this.industryType = industryType; | ||||
|  | 	} | ||||
|  | 	public String getCorpSize() { | ||||
|  | 		return corpSize; | ||||
|  | 	} | ||||
|  | 	public void setCorpSize(String corpSize) { | ||||
|  | 		this.corpSize = corpSize; | ||||
|  | 	} | ||||
|  | 	public String getCorpType() { | ||||
|  | 		return corpType; | ||||
|  | 	} | ||||
|  | 	public void setCorpType(String corpType) { | ||||
|  | 		this.corpType = corpType; | ||||
|  | 	} | ||||
|  | 	public String getRegionCode() { | ||||
|  | 		return regionCode; | ||||
|  | 	} | ||||
|  | 	public void setRegionCode(String regionCode) { | ||||
|  | 		this.regionCode = regionCode; | ||||
|  | 	} | ||||
|  | 	public String getGuaranteeType() { | ||||
|  | 		return guaranteeType; | ||||
|  | 	} | ||||
|  | 	public void setGuaranteeType(String guaranteeType) { | ||||
|  | 		this.guaranteeType = guaranteeType; | ||||
|  | 	} | ||||
|  | 	public Double getYxzczwl() { | ||||
|  | 		return yxzczwl; | ||||
|  | 	} | ||||
|  | 	public void setYxzczwl(Double yxzczwl) { | ||||
|  | 		this.yxzczwl = yxzczwl; | ||||
|  | 	} | ||||
|  | 	public String getPledgeClass() { | ||||
|  | 		return pledgeClass; | ||||
|  | 	} | ||||
|  | 	public void setPledgeClass(String pledgeClass) { | ||||
|  | 		this.pledgeClass = pledgeClass; | ||||
|  | 	} | ||||
|  | 	public Double getProductRate() { | ||||
|  | 		return productRate; | ||||
|  | 	} | ||||
|  | 	public void setProductRate(Double productRate) { | ||||
|  | 		this.productRate = productRate; | ||||
|  | 	} | ||||
|  | 	public Double getCreditGradeRate() { | ||||
|  | 		return creditGradeRate; | ||||
|  | 	} | ||||
|  | 	public void setCreditGradeRate(Double creditGradeRate) { | ||||
|  | 		this.creditGradeRate = creditGradeRate; | ||||
|  | 	} | ||||
|  | 	public Double getIndustryTypeRate() { | ||||
|  | 		return industryTypeRate; | ||||
|  | 	} | ||||
|  | 	public void setIndustryTypeRate(Double industryTypeRate) { | ||||
|  | 		this.industryTypeRate = industryTypeRate; | ||||
|  | 	} | ||||
|  | 	public Double getCorpSizeRate() { | ||||
|  | 		return corpSizeRate; | ||||
|  | 	} | ||||
|  | 	public void setCorpSizeRate(Double corpSizeRate) { | ||||
|  | 		this.corpSizeRate = corpSizeRate; | ||||
|  | 	} | ||||
|  | 	public Double getCorpTypeRate() { | ||||
|  | 		return corpTypeRate; | ||||
|  | 	} | ||||
|  | 	public void setCorpTypeRate(Double corpTypeRate) { | ||||
|  | 		this.corpTypeRate = corpTypeRate; | ||||
|  | 	} | ||||
|  | 	public Double getRegionCodeRate() { | ||||
|  | 		return regionCodeRate; | ||||
|  | 	} | ||||
|  | 	public void setRegionCodeRate(Double regionCodeRate) { | ||||
|  | 		this.regionCodeRate = regionCodeRate; | ||||
|  | 	} | ||||
|  | 	public Double getYxzczwlRate() { | ||||
|  | 		return yxzczwlRate; | ||||
|  | 	} | ||||
|  | 	public void setYxzczwlRate(Double yxzczwlRate) { | ||||
|  | 		this.yxzczwlRate = yxzczwlRate; | ||||
|  | 	} | ||||
|  | 	public Double getLgd() { | ||||
|  | 		return lgd; | ||||
|  | 	} | ||||
|  | 	public void setLgd(Double lgd) { | ||||
|  | 		this.lgd = lgd; | ||||
|  | 	} | ||||
|  | 	public String getIsValid() { | ||||
|  | 		return isValid; | ||||
|  | 	} | ||||
|  | 	public void setIsValid(String isValid) { | ||||
|  | 		this.isValid = isValid; | ||||
|  | 	} | ||||
|  | 	public Double getAdjustRate() { | ||||
|  | 		return adjustRate; | ||||
|  | 	} | ||||
|  | 	public void setAdjustRate(Double adjustRate) { | ||||
|  | 		this.adjustRate = adjustRate; | ||||
|  | 	} | ||||
|  | 	public Double getRecrate() { | ||||
|  | 		return recrate; | ||||
|  | 	} | ||||
|  | 	public void setRecrate(Double recrate) { | ||||
|  | 		this.recrate = recrate; | ||||
|  | 	} | ||||
|  | 	public Double getPledgeRecRate() { | ||||
|  | 		return pledgeRecRate; | ||||
|  | 	} | ||||
|  | 	public void setPledgeRecRate(Double pledgeRecRate) { | ||||
|  | 		this.pledgeRecRate = pledgeRecRate; | ||||
|  | 	} | ||||
|  | 	public Double getGuarantyRecRate() { | ||||
|  | 		return guarantyRecRate; | ||||
|  | 	} | ||||
|  | 	public void setGuarantyRecRate(Double guarantyRecRate) { | ||||
|  | 		this.guarantyRecRate = guarantyRecRate; | ||||
|  | 	} | ||||
|  | 	public String getManagerCode() { | ||||
|  | 		return managerCode; | ||||
|  | 	} | ||||
|  | 	public void setManagerCode(String managerCode) { | ||||
|  | 		this.managerCode = managerCode; | ||||
|  | 	} | ||||
|  | } | ||||
|  | 
 | ||||
| @ -0,0 +1,22 @@ | |||||
|  | package irbs.deptRating.jpa.repository; | ||||
|  | 
 | ||||
|  | import io.sc.platform.orm.repository.DaoRepository; | ||||
|  | import irbs.deptRating.jpa.entity.AppDebtRating; | ||||
|  | 
 | ||||
|  | import java.util.List; | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | public interface AppDebtRatingRepository extends DaoRepository<AppDebtRating, String> { | ||||
|  | 	/** | ||||
|  | 	 * 按业务合同号查询LGD业务信息 | ||||
|  | 	 * @param contractNo | ||||
|  | 	 * @return | ||||
|  | 	 */ | ||||
|  | 	public AppDebtRating findByContractNoAndIsValid(String contractNo, String isValid); | ||||
|  | 	/** | ||||
|  | 	 * 按业务合同号查询LGD业务信息 | ||||
|  | 	 * @param contractNo | ||||
|  | 	 * @return | ||||
|  | 	 */ | ||||
|  | 	public List<AppDebtRating> findByContractNo(String contractNo); | ||||
|  | } | ||||
| @ -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; | ||||
|  | 	} | ||||
|  | } | ||||
|  | 
 | ||||
| @ -0,0 +1,37 @@ | |||||
|  | package irbs.deptRating.service; | ||||
|  | 
 | ||||
|  | import io.sc.platform.orm.service.DaoService; | ||||
|  | import io.sc.platform.orm.service.support.QueryParameter; | ||||
|  | import irbs.deptRating.jpa.entity.AppDebtRating; | ||||
|  | import irbs.deptRating.jpa.repository.AppDebtRatingRepository; | ||||
|  | import org.springframework.data.domain.Page; | ||||
|  | 
 | ||||
|  | import java.util.List; | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | public interface AppDebtRatingService extends | ||||
|  | 		DaoService<AppDebtRating, String, AppDebtRatingRepository> { | ||||
|  | 	/** | ||||
|  | 	 * 由业务合同编号查询债项评级信息 | ||||
|  | 	 * @return | ||||
|  | 	 */ | ||||
|  | 	public Page<AppDebtRating> findAll(QueryParameter queryParameter) throws Exception; | ||||
|  | 	/** | ||||
|  | 	 * 由业务合同编号查询债项评级信息 | ||||
|  | 	 * @param businessNo | ||||
|  | 	 * @return | ||||
|  | 	 */ | ||||
|  | 	public List<AppDebtRating> findByBusinessNo(String businessNo); | ||||
|  | 	/** | ||||
|  | 	 * 由业务合同编号查询债项评级信息 | ||||
|  | 	 * @param businessNo | ||||
|  | 	 * @return | ||||
|  | 	 */ | ||||
|  | 	public AppDebtRating findValidByBusinessNo(String businessNo); | ||||
|  | 	/** | ||||
|  | 	 * 将债项评级信息置为失效状态 | ||||
|  | 	 * @param debtRating | ||||
|  | 	 * @throws Exception | ||||
|  | 	 */ | ||||
|  | 	public void invalidDebtRating(AppDebtRating debtRating) throws Exception; | ||||
|  | } | ||||
| @ -0,0 +1,49 @@ | |||||
|  | package irbs.deptRating.service.impl; | ||||
|  | 
 | ||||
|  | import io.sc.platform.orm.service.impl.DaoServiceImpl; | ||||
|  | import io.sc.platform.orm.service.support.QueryParameter; | ||||
|  | import irbs.deptRating.jpa.entity.AppDebtRating; | ||||
|  | import irbs.deptRating.jpa.repository.AppDebtRatingRepository; | ||||
|  | import irbs.deptRating.service.AppDebtRatingService; | ||||
|  | import org.slf4j.Logger; | ||||
|  | import org.slf4j.LoggerFactory; | ||||
|  | import org.springframework.data.domain.Page; | ||||
|  | import org.springframework.stereotype.Service; | ||||
|  | 
 | ||||
|  | import java.util.List; | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | @Service | ||||
|  | public class AppDebtRatingServiceImpl extends | ||||
|  | 		DaoServiceImpl<AppDebtRating, String, AppDebtRatingRepository> | ||||
|  | implements AppDebtRatingService { | ||||
|  | 	 | ||||
|  | 	private static final Logger log =LoggerFactory.getLogger(AppDebtRatingServiceImpl.class); | ||||
|  | 
 | ||||
|  | 	@Override | ||||
|  | 	public void invalidDebtRating(AppDebtRating debtRating) throws Exception { | ||||
|  | 		// TODO Auto-generated method stub
 | ||||
|  | 		if(debtRating != null) { | ||||
|  | 			debtRating.setIsValid("1"); | ||||
|  | 			this.update(debtRating.getId(), debtRating); | ||||
|  | 		} | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	@Override | ||||
|  | 	public Page<AppDebtRating> findAll(QueryParameter queryParameter) throws Exception { | ||||
|  | 		Page<AppDebtRating> page = this.query(queryParameter); | ||||
|  | 		return page; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	@Override | ||||
|  | 	public List<AppDebtRating> findByBusinessNo(String businessNo) { | ||||
|  | 		// TODO Auto-generated method stub
 | ||||
|  | 		return repository.findByContractNo(businessNo); | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	@Override | ||||
|  | 	public AppDebtRating findValidByBusinessNo(String businessNo) { | ||||
|  | 		return null; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | } | ||||
| @ -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" | ||||
|  |     ] | ||||
|  |   } | ||||
|  | ] | ||||
|  | */ | ||||
| @ -0,0 +1,16 @@ | |||||
|  | /* | ||||
|  |  * 自动组件扫描插件配置 | ||||
|  |  * 功能: 该插件配置为框架提供自动扫描组件的包名,配置的包名将会自动被 spring 进行扫描 | ||||
|  |  * 使用说明: | ||||
|  |  *     includes: 包含自动扫描的包名列表 | ||||
|  |  *     excludes: 排除自动扫描的包名列表 | ||||
|  |  * 注意: 当一个包名同时存在于 includes 和 excludes 中, excludes 优先, 即该包不会被自动扫描 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | { | ||||
|  |   "includes":[ | ||||
|  |     "irbs.deptRating.controller", | ||||
|  |     "irbs.deptRating.service.impl" | ||||
|  |   ], | ||||
|  |   "excludes":[] | ||||
|  | } | ||||
| @ -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} | ||||
|  | ] | ||||
|  | */ | ||||
| @ -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" | ||||
|  |   } | ||||
|  | ] | ||||
|  | */ | ||||
| @ -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" | ||||
|  |     ] | ||||
|  |   } | ||||
|  | ] | ||||
| @ -0,0 +1,16 @@ | |||||
|  | /* | ||||
|  |  * 国际化消息源插件配置 | ||||
|  |  * 功能: 该插件配置为框架提供国际化消息资源 | ||||
|  |  * 使用说明: | ||||
|  |  *     includes: 包含国际化消息资源列表 | ||||
|  |  *     excludes: 排除国际化消息资源列表 | ||||
|  |  * 注意: 当一个包名同时存在于 includes 和 excludes 中, excludes 优先, 即该包不会被自动扫描 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | { | ||||
|  |   "includes":[ | ||||
|  |     "irbs/deptRating/i18n/messages" | ||||
|  |   ], | ||||
|  |   "excludes":[] | ||||
|  | } | ||||
| @ -0,0 +1,15 @@ | |||||
|  | /* | ||||
|  |  * p6spy 插件配置 | ||||
|  |  * 功能: 该插件配置为框架提供 p6spy 配置 | ||||
|  |  * 使用说明: | ||||
|  |  *     ignoredPatterns: 忽略显示 jdbc 输出信息正则表达式列表 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | /* 以下示例将不显示 p6spy 输出的 commit */ | ||||
|  | /* | ||||
|  | { | ||||
|  | 	"ignoredPatterns":[ | ||||
|  | 		"commit" | ||||
|  | 	] | ||||
|  | } | ||||
|  | */ | ||||
| @ -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}" | ||||
|  | 				} | ||||
|  | 			} | ||||
|  | ] | ||||
|  | */ | ||||
| @ -0,0 +1,16 @@ | |||||
|  | /* | ||||
|  |  * 自动 JPA 扫描插件配置 | ||||
|  |  * 功能: 该插件配置为框架提供自动扫描 JPA 组件的包名 | ||||
|  |  * 使用说明: | ||||
|  |  *     includes: 包含自动扫描的包名成列表 | ||||
|  |  *     excludes: 排除自动扫描的包名成列表 | ||||
|  |  * 注意: 当一个包名同时存在于 includes 和 excludes 中, excludes 优先, 即该包不会被自动扫描 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | { | ||||
|  |   "includes":[ | ||||
|  |     "irbs.deptRating.jpa.entity", | ||||
|  |     "irbs.deptRating.jpa.repository" | ||||
|  |   ], | ||||
|  |   "excludes":[] | ||||
|  | } | ||||
| @ -0,0 +1,20 @@ | |||||
|  | /* | ||||
|  |  * 自动重启属性插件配置 | ||||
|  |  * 功能: 当配置的属性发生变化时,系统会自动重启(如果应用运行在独立的 web 容器中时, 需手工重启) | ||||
|  |  * 使用说明: | ||||
|  |  *     匹配规则: startWith | ||||
|  |  *     container: 在容器中运行时需要重启的属性列表 | ||||
|  |  *     jar: 通过 jar 直接运行时需要重启的属性列表 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | /* 示例 */ | ||||
|  | /* | ||||
|  | { | ||||
|  |   "container":[ | ||||
|  |     "spring.security." | ||||
|  |   ], | ||||
|  |   "jar": [ | ||||
|  |     "spring.security." | ||||
|  |   ] | ||||
|  | } | ||||
|  | */ | ||||
| @ -0,0 +1,15 @@ | |||||
|  | /* | ||||
|  |  * 认证插件配置 | ||||
|  |  * 功能: 该插件配置为框架提供不对某些资源进行认证的功能 | ||||
|  |  * 使用说明: | ||||
|  |  *     permitPatterns	: 不进行安全认证检查的 url 模式, 采用 ant path 格式配置 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | /* 示例 */ | ||||
|  | /* | ||||
|  | { | ||||
|  | 	"permitPatterns":[ | ||||
|  | 		"/io.sc.platform.core/**" | ||||
|  | 	] | ||||
|  | } | ||||
|  | */ | ||||
| @ -0,0 +1,19 @@ | |||||
|  | /** | ||||
|  |  * swagger 配置 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | /* 示例 */ | ||||
|  | /* | ||||
|  | [ | ||||
|  | 	{ | ||||
|  | 		"groupName" : "io.sc.platform.mvc", | ||||
|  | 		"title" : "平台 MVC", | ||||
|  | 		"description": "平台 MVC 文档", | ||||
|  | 		"termsOfServiceUrl" : "", | ||||
|  | 		"version": "1.0", | ||||
|  | 		"basePackages":[ | ||||
|  | 			"io.sc.platform.mvc.controller" | ||||
|  | 		] | ||||
|  | 	} | ||||
|  | ] | ||||
|  | */ | ||||
| @ -0,0 +1,14 @@ | |||||
|  | /* | ||||
|  |  * 系统属性插件配置 | ||||
|  |  * 功能: 该插件配置为框架提供在启动时自动注册系统属性功能(执行 System.setProperty()) | ||||
|  |  * 使用说明: | ||||
|  |  *     key		: 属性名 | ||||
|  |  *     value	: 属性值 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | /* 示例 */ | ||||
|  | /* | ||||
|  | { | ||||
|  | 	"h2.dbname.default" : "DB_PLATFORM" | ||||
|  | } | ||||
|  | */ | ||||
| @ -0,0 +1,56 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||
|  | <databaseChangeLog | ||||
|  |     xmlns="http://www.liquibase.org/xml/ns/dbchangelog" | ||||
|  |     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|  |     xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" | ||||
|  |     xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd | ||||
|  |     http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"> | ||||
|  | 
 | ||||
|  |     <changeSet id="20240427_DEBTRATING_DDL" author="platform"> | ||||
|  |         <!-- 债项评级信息表 --> | ||||
|  |         <createTable tableName="P_IRS_APPLY_DEBT_RATING" remarks="债项评级信息表"> | ||||
|  |             <column name="ID_" type="java.sql.Types.VARCHAR(50)" remarks="主键ID"> | ||||
|  |                 <constraints primaryKey="true"/> | ||||
|  |             </column> | ||||
|  |             <column name="CONTRACTNO"           type="java.sql.Types.VARCHAR(60)"               remarks="业务合同编号"/> | ||||
|  |             <column name="PRODUCTTYPE"          type="java.sql.Types.VARCHAR(20)"               remarks="业务产品类型"/> | ||||
|  |             <column name="PRODUCTRATE"          type="java.sql.Types.DECIMAL(10,6)"             remarks="业务产品类型回收率"/> | ||||
|  |             <column name="CONTRACTAMT"          type="java.sql.Types.DECIMAL(30,6)"             remarks="业务合同金额"/> | ||||
|  |             <column name="ORGTYPE"              type="java.sql.Types.VARCHAR(10)"               remarks="机构类型"/> | ||||
|  |             <column name="LOWRISKFLG"           type="java.sql.Types.VARCHAR(5)"                remarks="是否低风险业务"/> | ||||
|  |             <column name="INTERESTDEBTFLG"      type="java.sql.Types.VARCHAR(5)"                remarks="是否利率债"/> | ||||
|  |             <column name="FINANCEDEBTLEVEL"     type="java.sql.Types.VARCHAR(5)"                remarks="金融机构债权等级"/> | ||||
|  |             <column name="CUSTNO"               type="java.sql.Types.VARCHAR(60)"               remarks="客户编号"/> | ||||
|  |             <column name="CUSTNAME"             type="java.sql.Types.VARCHAR(200)"              remarks="客户名称"/> | ||||
|  |             <column name="CREDITGRADE"          type="java.sql.Types.VARCHAR(60)"               remarks="借款人评级"/> | ||||
|  |             <column name="CREDITGRADERATE"      type="java.sql.Types.DECIMAL(10,6)"             remarks="借款人评级回收率"/> | ||||
|  |             <column name="INDUSTRYTYPE"         type="java.sql.Types.VARCHAR(60)"               remarks="行业类型"/> | ||||
|  |             <column name="INDUSTRYTYPERATE"     type="java.sql.Types.DECIMAL(10,6)"             remarks="行业类型调整系数"/> | ||||
|  |             <column name="CORPSIZE"             type="java.sql.Types.VARCHAR(60)"               remarks="企业规模"/> | ||||
|  |             <column name="CORPSIZERATE"         type="java.sql.Types.DECIMAL(10,6)"             remarks="企业规模调整系数"/> | ||||
|  |             <column name="CORPTYPE"             type="java.sql.Types.VARCHAR(60)"               remarks="企业类型"/> | ||||
|  |             <column name="CORPTYPERATE"         type="java.sql.Types.DECIMAL(10,6)"             remarks="企业类型调整系数"/> | ||||
|  |             <column name="REGIONCODE"           type="java.sql.Types.VARCHAR(60)"               remarks="所在行政区域"/> | ||||
|  |             <column name="REGIONCODERATE"       type="java.sql.Types.DECIMAL(10,6)"             remarks="所在行政区域调整系数"/> | ||||
|  |             <column name="YXZCZWL"              type="java.sql.Types.DECIMAL(10,6)"             remarks="借款人有形资产债务率"/> | ||||
|  |             <column name="YXZCZWLRATE"          type="java.sql.Types.DECIMAL(10,6)"             remarks="借款人有形资产债务率调整系数"/> | ||||
|  |             <column name="ADJUSTRATE"           type="java.sql.Types.DECIMAL(10,6)"             remarks="借款人调整回收率"/> | ||||
|  |             <column name="RECRATE"              type="java.sql.Types.DECIMAL(10,6)"             remarks="借款人回收率"/> | ||||
|  |             <column name="PLEDGECLASS"          type="java.sql.Types.VARCHAR(60)"               remarks="保证担保形式"/> | ||||
|  |             <column name="GUARANTEETYPE"        type="java.sql.Types.VARCHAR(60)"               remarks="担保类型"/> | ||||
|  |             <column name="PLEDGERECRATE"        type="java.sql.Types.DECIMAL(10,6)"             remarks="保证人整体回收率"/> | ||||
|  |             <column name="GUARANTYRECRATE"      type="java.sql.Types.DECIMAL(10,6)"             remarks="押品整体回收率"/> | ||||
|  |             <column name="LGD"                  type="java.sql.Types.DECIMAL(10,6)"             remarks="lgd计算结果"/> | ||||
|  |             <column name="IS_VALID"             type="java.sql.Types.VARCHAR(5)"                remarks="是否生效"/> | ||||
|  |             <column name="MANAGER_CODE"         type="java.sql.Types.VARCHAR(60)"               remarks="业务经办人"/> | ||||
|  |             <column name="DATA_COME_FROM_"          type="java.sql.Types.NVARCHAR(10)"      remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column> | ||||
|  |             <column name="CREATOR_"                 type="java.sql.Types.NVARCHAR(255)"     remarks="创建人"></column> | ||||
|  |             <column name="CREATE_DATE_"             type="DATETIME"                         remarks="创建日期"></column> | ||||
|  |             <column name="LAST_MODIFIER_"           type="java.sql.Types.NVARCHAR(255)"     remarks="最后修改人"></column> | ||||
|  |             <column name="LAST_MODIFYDATE_"         type="DATETIME"                         remarks="最后修改日期"></column> | ||||
|  |             <column name="CORP_CODE_"     	        type="java.sql.Types.NVARCHAR(255)"     remarks="所属法人代码" defaultValue="_PRIMARY_"> | ||||
|  |                 <constraints nullable="false"/> | ||||
|  |             </column> | ||||
|  |         </createTable> | ||||
|  |     </changeSet> | ||||
|  | </databaseChangeLog> | ||||
| @ -1,5 +1,84 @@ | |||||
| <template> | <template> | ||||
|   <div>111</div> |   <div style="height: 100%"> | ||||
|  |     <w-grid | ||||
|  |       ref="appDebtRatingGridRef" | ||||
|  |       title="债项评级列表" | ||||
|  |       :fetch-data-url="Environment.apiContextPath('api/irbs/appDebtRating/queryPage')" | ||||
|  |       :sort-no="true" | ||||
|  |       :checkbox-selection="false" | ||||
|  |       :query-form-cols-num="4" | ||||
|  |       :query-form-fields="appDebtRatingGrid.queryFormFields" | ||||
|  |       :columns="appDebtRatingGrid.columns" | ||||
|  |       :toolbar-actions="appDebtRatingGrid.buttons" | ||||
|  |       :pagination="{ | ||||
|  |         sortBy: 'lastModifyDate', | ||||
|  |         descending: true, | ||||
|  |       }" | ||||
|  |       :query-criteria="{ | ||||
|  |         fieldName: 'dataStatus', | ||||
|  |         operator: 'equals', | ||||
|  |         value: '1', | ||||
|  |       }" | ||||
|  |     ></w-grid> | ||||
|  |     <LaunchExposureDialog ref="launchExposureDialogRef" @refresh="refreshTable"></LaunchExposureDialog> | ||||
|  |     <HandmadeExposureDialog ref="handmadeExposureDialogRef" @refresh="refreshTable"></HandmadeExposureDialog> | ||||
|  |   </div> | ||||
| </template> | </template> | ||||
| 
 | 
 | ||||
| <script setup lang="ts"></script> | <script setup lang="ts"> | ||||
|  | import { ref } from 'vue'; | ||||
|  | import { useQuasar } from 'quasar'; | ||||
|  | import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; | ||||
|  | import LaunchExposureDialog from '@/views/riskExposure/LaunchExposureDialog.vue'; | ||||
|  | import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue'; | ||||
|  | 
 | ||||
|  | const $q = useQuasar(); | ||||
|  | const appDebtRatingGridRef = ref(); | ||||
|  | const launchExposureDialogRef = ref(); | ||||
|  | const handmadeExposureDialogRef = ref(); | ||||
|  | 
 | ||||
|  | const appDebtRatingGrid = { | ||||
|  |   buttons: [ | ||||
|  |     ['query', 'separator', 'moreQuery'], | ||||
|  |     'reset', | ||||
|  |     'separator', | ||||
|  |     { | ||||
|  |       extend: 'view', | ||||
|  |       click: (args) => { | ||||
|  |         handmadeExposureDialogRef.value.show(args.selected, true, 'riskExposure'); | ||||
|  |       }, | ||||
|  |     }, | ||||
|  |     'separator', | ||||
|  |   ], | ||||
|  |   queryFormFields: [ | ||||
|  |     { label: '债项编号', name: 'contractNo', type: 'text' }, | ||||
|  |     { label: '客户号', name: 'custNo', type: 'text' }, | ||||
|  |     { label: '客户名称', name: 'custName', type: 'text' }, | ||||
|  |   ], | ||||
|  |   columns: [ | ||||
|  |     { name: 'contractNo', label: '债项编号' }, | ||||
|  |     { name: 'custNo', label: '客户号' }, | ||||
|  |     { name: 'custName', label: '客户名称' }, | ||||
|  |     { name: 'orgType', label: '客户类型' }, | ||||
|  |     { name: 'productType', label: '产品类型' }, | ||||
|  |     { name: 'contractAmt', label: '债项金额' }, | ||||
|  |     { name: 'lowRiskFlg', label: '是否低风险业务' }, | ||||
|  |     { name: 'interestDebtFlg', label: '是否利率债' }, | ||||
|  |     { name: 'financeDebtLevel', label: '金融机构债权等级' }, | ||||
|  |     { name: 'creditGrade', label: '借款人评级' }, | ||||
|  |     { name: 'industryType', label: '借款人行业类型' }, | ||||
|  |     { name: 'corpSize', label: '借款人企业规模' }, | ||||
|  |     { name: 'corpType', label: '借款人企业性质' }, | ||||
|  |     { name: 'regionCode', label: '借款人所在区域' }, | ||||
|  |     { name: 'guaranteeType', label: '担保类型' }, | ||||
|  |     { name: 'pledgeClass', label: '保证担保形式' }, | ||||
|  |     { name: 'regionCode', label: '借款人所在区域' }, | ||||
|  |     { name: 'lgd', label: 'LGD' }, | ||||
|  |     { name: 'managerCode', label: '业务经办人' }, | ||||
|  |   ], | ||||
|  | }; | ||||
|  | 
 | ||||
|  | const refreshTable = () => { | ||||
|  |   appDebtRatingGridRef.value.refresh(); | ||||
|  | }; | ||||
|  | </script> | ||||
|  | |||||
| @ -0,0 +1,234 @@ | |||||
|  | <template> | ||||
|  |   <w-dialog ref="dialogRef" :title="state.dialogTitle" width="80%" height="80%" @hide="dialogHide" @maximized="maximized"> | ||||
|  |     <q-splitter v-model="state.splitterModel" disable style="height: 100%"> | ||||
|  |       <template #before> | ||||
|  |         <q-tabs v-model="state.tab" vertical indicator-color="amber"> | ||||
|  |           <q-tab name="cust" icon="person" label="客户信息" /> | ||||
|  |           <q-tab name="opinionList" icon="insert_comment" label="意见列表" /> | ||||
|  |         </q-tabs> | ||||
|  |       </template> | ||||
|  |       <template #after> | ||||
|  |         <q-tab-panels | ||||
|  |           v-model="state.tab" | ||||
|  |           :keep-alive="true" | ||||
|  |           animated | ||||
|  |           swipeable | ||||
|  |           vertical | ||||
|  |           transition-prev="jump-up" | ||||
|  |           transition-next="jump-up" | ||||
|  |           style="height: 100%" | ||||
|  |         > | ||||
|  |           <q-tab-panel name="cust" style="height: 100%"> | ||||
|  |             <div> | ||||
|  |               <span class="pl-[8px]">客户基本信息</span> | ||||
|  |               <div class="pt-[8px]"> | ||||
|  |                 <w-info-panel :dense="state.dense" :info="state.custInfo" :column-num="4"></w-info-panel> | ||||
|  |               </div> | ||||
|  |             </div> | ||||
|  |             <div class="pt-[10px]" :style="state.dense ? 'height: calc(100% - 87px)' : 'height: calc(100% - 120px)'"> | ||||
|  |               <w-grid | ||||
|  |                 ref="debtGridRef" | ||||
|  |                 title="客户债项信息" | ||||
|  |                 :dense="state.dense" | ||||
|  |                 :auto-fetch-data="true" | ||||
|  |                 :fetch-data-url="Environment.apiContextPath('api/irbs/defaultCognizance/queryBillInfo')" | ||||
|  |                 :checkbox-selection="false" | ||||
|  |                 :config-button="false" | ||||
|  |                 :columns="[ | ||||
|  |                   { name: 'DATA_DT', label: '数据日期' }, | ||||
|  |                   { name: 'DEBENTURE_NO', label: '借据号' }, | ||||
|  |                   { name: 'CONT_NO', label: '合同编号' }, | ||||
|  |                   { name: 'PRD_CD_DESC', label: '业务品种' }, | ||||
|  |                   { name: 'BORR_GIVE_AMT', label: '借据金额' }, | ||||
|  |                   { name: 'BORR_BAL', label: '借据余额' }, | ||||
|  |                   { name: 'inOweintBal', label: '表内欠息' }, | ||||
|  |                   { name: 'IN_OWEINT_BAL', label: '表外欠息' }, | ||||
|  |                   { name: 'TEN_CLASS_CD', label: '十级分类', slot: 'tenClassCd' }, | ||||
|  |                   { name: 'PRIN_OVER_DAYS', label: '本金逾期天数' }, | ||||
|  |                   { name: 'INT_OVER_DAYS', label: '利息逾期天数' }, | ||||
|  |                 ]" | ||||
|  |                 :query-criteria="{ | ||||
|  |                   fieldName: 'CUST_NO', | ||||
|  |                   operator: 'equals', | ||||
|  |                   value: state.data['custNo'], | ||||
|  |                 }" | ||||
|  |                 :pagination="{ | ||||
|  |                   reqPageStart: 1, | ||||
|  |                 }" | ||||
|  |               ></w-grid> | ||||
|  |             </div> | ||||
|  |           </q-tab-panel> | ||||
|  | 
 | ||||
|  |           <q-tab-panel name="opinionList" style="height: 100%"> | ||||
|  |             <div :style="!state.viewFlag ? 'height: calc(100% - 300px)' : 'height: 100%'"> | ||||
|  |               <w-grid | ||||
|  |                 ref="opinionGridRef" | ||||
|  |                 title="意见历史" | ||||
|  |                 :dense="state.dense" | ||||
|  |                 :auto-fetch-data="true" | ||||
|  |                 :fetch-data-url="Environment.apiContextPath('api/irbs/riskExposureOperation/queryPage')" | ||||
|  |                 :checkbox-selection="false" | ||||
|  |                 :config-button="false" | ||||
|  |                 :columns="[ | ||||
|  |                   { name: 'creator', label: '处理人' }, | ||||
|  |                   { name: 'lastModifyDate', label: '提交时间' }, | ||||
|  |                   { name: 'operation', label: '处理结果' }, | ||||
|  |                   { name: 'remarks', label: '意见说明' }, | ||||
|  |                   { name: 'fileCount', label: '附件条数' }, | ||||
|  |                 ]" | ||||
|  |                 :query-criteria="{ | ||||
|  |                   fieldName: 'riskExposureId', | ||||
|  |                   operator: 'equals', | ||||
|  |                   value: state.data['id'], | ||||
|  |                 }" | ||||
|  |                 :pagination="{ | ||||
|  |                   reqPageStart: 1, | ||||
|  |                 }" | ||||
|  |               ></w-grid> | ||||
|  |             </div> | ||||
|  |             <div v-if="!state.viewFlag" class="pt-[10px]" style="height: 200px"> | ||||
|  |               <w-form | ||||
|  |                 ref="opinionFormRef" | ||||
|  |                 :cols-num="1" | ||||
|  |                 :fields="[ | ||||
|  |                   { | ||||
|  |                     name: 'manResult', | ||||
|  |                     label: '人工分类结果', | ||||
|  |                     type: 'select', | ||||
|  |                     options: RiskExposureItemOptions, | ||||
|  |                     required: true, | ||||
|  |                     showIf: (args) => { | ||||
|  |                       if (state.data['processStatus'] === 'TO_BE_CHECKED') { | ||||
|  |                         return false; | ||||
|  |                       } | ||||
|  |                       return true; | ||||
|  |                     }, | ||||
|  |                   }, | ||||
|  |                   { name: 'remarks', label: '意见说明', type: 'textarea', required: true, rows: 4 }, | ||||
|  |                   { name: 'suggestUploadAnnx', label: '上传文件', type: 'file' }, | ||||
|  |                 ]" | ||||
|  |               > | ||||
|  |               </w-form> | ||||
|  |               <div> | ||||
|  |                 <w-workflow-action | ||||
|  |                   ref="workflowActionRef" | ||||
|  |                   :task-id="state.data['taskId']" | ||||
|  |                   :data="state.opinionData" | ||||
|  |                   :default-submit-button="false" | ||||
|  |                   :action-url="Environment.apiContextPath('/api/irbs/riskExposure/submitRiskExposure')" | ||||
|  |                   @before-submit=" | ||||
|  |                     async (action, callback) => { | ||||
|  |                       state.opinionData = { | ||||
|  |                         transientVariables: { | ||||
|  |                           opaVal: action.transientVariables.goback, | ||||
|  |                           opType: state.opType, | ||||
|  |                           desc: '客户名称:' + state.data['custName'], | ||||
|  |                         }, | ||||
|  |                         data: opinionFormRef.getData(), | ||||
|  |                       }; | ||||
|  |                       const validateResult = await opinionFormRef.validate(); | ||||
|  |                       if (validateResult) { | ||||
|  |                         callback(true); | ||||
|  |                       } else { | ||||
|  |                         NotifyManager.error('人工分类或意见未填写,无法提交'); | ||||
|  |                         callback(false); | ||||
|  |                       } | ||||
|  |                     } | ||||
|  |                   " | ||||
|  |                   @after-submit=" | ||||
|  |                     () => { | ||||
|  |                       dialogRef.hide(); | ||||
|  |                       emit('refresh'); | ||||
|  |                     } | ||||
|  |                   " | ||||
|  |                 > | ||||
|  |                 </w-workflow-action> | ||||
|  |               </div> | ||||
|  |             </div> | ||||
|  |           </q-tab-panel> | ||||
|  |         </q-tab-panels> | ||||
|  |       </template> | ||||
|  |     </q-splitter> | ||||
|  |   </w-dialog> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script setup lang="ts"> | ||||
|  | import { reactive, ref, nextTick } from 'vue'; | ||||
|  | import { axios, Environment, NotifyManager, Tools, Formater, Options } from 'platform-core'; | ||||
|  | import { RiskExposureProcessStatus, RiskExposureItemOptions } from './RiskExposure.ts'; | ||||
|  | import { TrackOpTypes } from 'vue'; | ||||
|  | 
 | ||||
|  | const dialogRef = ref(); | ||||
|  | const debtGridRef = ref(); | ||||
|  | const opinionGridRef = ref(); | ||||
|  | const opinionFormRef = ref(); | ||||
|  | const workflowActionRef = ref(); | ||||
|  | const emit = defineEmits(['refresh']); | ||||
|  | 
 | ||||
|  | const state = reactive({ | ||||
|  |   data: {}, | ||||
|  |   viewFlag: false, | ||||
|  |   dense: true, | ||||
|  |   opType: 'riskExposure', | ||||
|  |   status: 'edit', | ||||
|  |   dialogTitle: '人工风险暴露分类', | ||||
|  |   splitterModel: 12, | ||||
|  |   tab: 'cust', | ||||
|  |   custInfo: <any>[], | ||||
|  |   opinionData: {}, | ||||
|  | }); | ||||
|  | const debtActions = ['add', 'edit', 'remove']; | ||||
|  | 
 | ||||
|  | const dialogHide = () => { | ||||
|  |   state.status = 'edit'; | ||||
|  |   state.dialogTitle = '模拟计算'; | ||||
|  |   state.tab = 'cust'; | ||||
|  | }; | ||||
|  | 
 | ||||
|  | const maximized = (flag) => { | ||||
|  |   nextTick(() => { | ||||
|  |     state.dense = !flag; | ||||
|  |   }); | ||||
|  | }; | ||||
|  | 
 | ||||
|  | const loadCustInfo = (data) => { | ||||
|  |   const urlSearchParams = new URLSearchParams(); | ||||
|  |   urlSearchParams.append('criteria', JSON.stringify({ fieldName: 'custNo', operator: 'equals', value: data['custNo'] })); | ||||
|  |   axios | ||||
|  |     .get(Environment.apiContextPath('api/irbs/companyCustomer?pageable=false'), { params: urlSearchParams }) | ||||
|  |     .then((resp) => { | ||||
|  |       if (resp.data?.content) { | ||||
|  |         const custInfo = resp.data.content[0]; | ||||
|  |         state.custInfo = []; | ||||
|  |         state.custInfo.push({ label: '客户号', value: custInfo['custNo'] }); | ||||
|  |         state.custInfo.push({ label: '客户名称', value: custInfo['custName'] }); | ||||
|  |         state.custInfo.push({ label: '客户经理编号', value: custInfo['mgerNo'] }); | ||||
|  |         state.custInfo.push({ label: '客户经理名称', value: custInfo['mgerCna'] }); | ||||
|  |         state.custInfo.push({ label: '行业类型', value: custInfo['induSortCd'] }); | ||||
|  |         state.custInfo.push({ label: '客户类型', value: custInfo['custTypeCd'] }); | ||||
|  |         state.custInfo.push({ label: '成立时间', value: custInfo['buildDt'] }); | ||||
|  |         state.custInfo.push({ label: '企业规模', value: custInfo['corpSizeCd'] }); | ||||
|  |       } | ||||
|  |     }) | ||||
|  |     .catch((error) => { | ||||
|  |       console.info('error====', error); | ||||
|  |     }); | ||||
|  | }; | ||||
|  | 
 | ||||
|  | const show = (data: any, viewFlag = false, opType) => { | ||||
|  |   state.data = data; | ||||
|  |   state.viewFlag = viewFlag; | ||||
|  |   state.opType = opType; | ||||
|  |   dialogRef.value.show(); | ||||
|  |   // 查询客户信息并赋值 | ||||
|  |   loadCustInfo(data); | ||||
|  | }; | ||||
|  | const hide = () => { | ||||
|  |   dialogRef.value.hide(); | ||||
|  | }; | ||||
|  | 
 | ||||
|  | defineExpose({ | ||||
|  |   show, | ||||
|  |   hide, | ||||
|  | }); | ||||
|  | </script> | ||||
| @ -0,0 +1,133 @@ | |||||
|  | <template> | ||||
|  |   <w-dialog ref="toExposureAdjustDialogRef" :title="state.dialogTitle" width="80%" height="80%" :buttons="dialogButtons"> | ||||
|  |     <div class="p-1.5"> | ||||
|  |       <w-grid | ||||
|  |         ref="toExposureGridRef" | ||||
|  |         title="待调整列表" | ||||
|  |         :height="430" | ||||
|  |         :fetch-data-url="Environment.apiContextPath('api/irbs/riskExposure/adjust/queryPage')" | ||||
|  |         :sort-no="true" | ||||
|  |         :checkbox-selection="false" | ||||
|  |         :config-button="false" | ||||
|  |         :query-form-cols-num="2" | ||||
|  |         :query-form-fields="toExposureAdjustGrid.queryFormFields" | ||||
|  |         :columns="toExposureAdjustGrid.columns" | ||||
|  |         :toolbar-actions="toExposureAdjustGrid.buttons" | ||||
|  |         :pagination="{ | ||||
|  |           sortBy: 'lastModifyDate', | ||||
|  |           descending: true, | ||||
|  |         }" | ||||
|  |         :query-criteria="{ | ||||
|  |           operator: 'and', | ||||
|  |           criteria: [ | ||||
|  |             { | ||||
|  |               fieldName: 'isNeedOperate', | ||||
|  |               operator: 'equals', | ||||
|  |               value: '0', | ||||
|  |             }, | ||||
|  |             { | ||||
|  |               fieldName: 'dataStatus', | ||||
|  |               operator: 'equals', | ||||
|  |               value: '0', | ||||
|  |             }, | ||||
|  |           ], | ||||
|  |         }" | ||||
|  |       ></w-grid> | ||||
|  |       <HandmadeExposureDialog ref="handmadeExposureDialogRef"></HandmadeExposureDialog> | ||||
|  |     </div> | ||||
|  |   </w-dialog> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script setup lang="ts"> | ||||
|  | import { ref, reactive } from 'vue'; | ||||
|  | import { useQuasar } from 'quasar'; | ||||
|  | import { axios, Environment, EnumTools, NotifyManager, Formater } from 'platform-core'; | ||||
|  | import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue'; | ||||
|  | 
 | ||||
|  | const $q = useQuasar(); | ||||
|  | const toExposureAdjustDialogRef = ref(); | ||||
|  | const toExposureGridRef = ref(); | ||||
|  | const handmadeExposureDialogRef = ref(); | ||||
|  | const props = defineProps({ | ||||
|  |   dictionary: { | ||||
|  |     type: Object, | ||||
|  |     default: () => { | ||||
|  |       return {}; | ||||
|  |     }, | ||||
|  |   }, | ||||
|  | }); | ||||
|  | const emit = defineEmits(['refresh']); | ||||
|  | 
 | ||||
|  | const state = reactive({ | ||||
|  |   dialogTitle: '选择待发起业务', | ||||
|  | }); | ||||
|  | 
 | ||||
|  | const dialogButtons = [ | ||||
|  |   { | ||||
|  |     label: '确定', | ||||
|  |     icon: 'beenhere', | ||||
|  |     click: async () => { | ||||
|  |       const rows = toExposureGridRef.value.getSelectedRows(); | ||||
|  |       if (rows.length === 0) { | ||||
|  |         NotifyManager.warn('请选择待发起的业务'); | ||||
|  |         return; | ||||
|  |       } | ||||
|  |       // 发起 | ||||
|  |       showLoading(); | ||||
|  |       axios | ||||
|  |         .post(Environment.apiContextPath('api/irbs/riskExposure/handmadeRiskExposureAdjust'), { id: rows[0].id }) | ||||
|  |         .then((resp) => { | ||||
|  |           hideLoading(); | ||||
|  |           if (resp && resp['code'] === 200 && resp['data']) { | ||||
|  |             emit('refresh'); | ||||
|  |             toExposureAdjustDialogRef.value.hide(); | ||||
|  |           } | ||||
|  |         }) | ||||
|  |         .catch((error) => { | ||||
|  |           hideLoading(); | ||||
|  |           console.info('error-------------', error); | ||||
|  |         }); | ||||
|  |     }, | ||||
|  |   }, | ||||
|  | ]; | ||||
|  | 
 | ||||
|  | const toExposureAdjustGrid = { | ||||
|  |   buttons: [['query', 'separator'], 'reset'], | ||||
|  |   queryFormFields: [ | ||||
|  |     { label: '债项编号', name: 'businessNo', type: 'text' }, | ||||
|  |     { label: '客户号', name: 'custNo', type: 'text' }, | ||||
|  |     { label: '客户名称', name: 'custName', type: 'text' }, | ||||
|  |   ], | ||||
|  |   columns: [ | ||||
|  |     { name: 'businessNo', label: '债项编号' }, | ||||
|  |     { name: 'custNo', label: '客户号' }, | ||||
|  |     { name: 'custName', label: '客户名称' }, | ||||
|  |     { name: 'custType', label: '客户类型' }, | ||||
|  |     { name: 'productType', label: '产品类型' }, | ||||
|  |     { name: 'mgerOrgNm', label: '所属机构' }, | ||||
|  |   ], | ||||
|  | }; | ||||
|  | 
 | ||||
|  | const show = () => { | ||||
|  |   toExposureAdjustDialogRef.value.show(); | ||||
|  | }; | ||||
|  | const hide = () => { | ||||
|  |   toExposureAdjustDialogRef.value.hide(); | ||||
|  | }; | ||||
|  | 
 | ||||
|  | const showLoading = (msg: string = '正在处理,请稍等...') => { | ||||
|  |   $q.loading.show({ | ||||
|  |     message: msg, | ||||
|  |     boxClass: 'bg-grey-2 text-grey-9', | ||||
|  |     spinnerColor: 'primary', | ||||
|  |   }); | ||||
|  | }; | ||||
|  | const hideLoading = () => { | ||||
|  |   $q.loading.hide(); | ||||
|  | }; | ||||
|  | 
 | ||||
|  | defineExpose({ | ||||
|  |   show, | ||||
|  |   hide, | ||||
|  | }); | ||||
|  | </script> | ||||
| @ -0,0 +1,133 @@ | |||||
|  | <template> | ||||
|  |   <w-dialog ref="toExposureDialogRef" :title="state.dialogTitle" width="80%" height="80%" :buttons="dialogButtons"> | ||||
|  |     <div class="p-1.5"> | ||||
|  |       <w-grid | ||||
|  |         ref="toExposureGridRef" | ||||
|  |         title="待发起列表" | ||||
|  |         :height="430" | ||||
|  |         :fetch-data-url="Environment.apiContextPath('api/irbs/riskExposure/queryPage')" | ||||
|  |         :sort-no="true" | ||||
|  |         :checkbox-selection="false" | ||||
|  |         :config-button="false" | ||||
|  |         :query-form-cols-num="2" | ||||
|  |         :query-form-fields="toExposureGrid.queryFormFields" | ||||
|  |         :columns="toExposureGrid.columns" | ||||
|  |         :toolbar-actions="toExposureGrid.buttons" | ||||
|  |         :pagination="{ | ||||
|  |           sortBy: 'lastModifyDate', | ||||
|  |           descending: true, | ||||
|  |         }" | ||||
|  |         :query-criteria="{ | ||||
|  |           operator: 'and', | ||||
|  |           criteria: [ | ||||
|  |             { | ||||
|  |               fieldName: 'isNeedOperate', | ||||
|  |               operator: 'equals', | ||||
|  |               value: '1', | ||||
|  |             }, | ||||
|  |             { | ||||
|  |               fieldName: 'dataStatus', | ||||
|  |               operator: 'equals', | ||||
|  |               value: '0', | ||||
|  |             }, | ||||
|  |           ], | ||||
|  |         }" | ||||
|  |       ></w-grid> | ||||
|  |       <HandmadeExposureDialog ref="handmadeExposureDialogRef"></HandmadeExposureDialog> | ||||
|  |     </div> | ||||
|  |   </w-dialog> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script setup lang="ts"> | ||||
|  | import { ref, reactive } from 'vue'; | ||||
|  | import { useQuasar } from 'quasar'; | ||||
|  | import { axios, Environment, EnumTools, NotifyManager, Formater } from 'platform-core'; | ||||
|  | import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue'; | ||||
|  | 
 | ||||
|  | const $q = useQuasar(); | ||||
|  | const toExposureDialogRef = ref(); | ||||
|  | const toExposureGridRef = ref(); | ||||
|  | const handmadeExposureDialogRef = ref(); | ||||
|  | const props = defineProps({ | ||||
|  |   dictionary: { | ||||
|  |     type: Object, | ||||
|  |     default: () => { | ||||
|  |       return {}; | ||||
|  |     }, | ||||
|  |   }, | ||||
|  | }); | ||||
|  | const emit = defineEmits(['refresh']); | ||||
|  | 
 | ||||
|  | const state = reactive({ | ||||
|  |   dialogTitle: '选择待发起业务', | ||||
|  | }); | ||||
|  | 
 | ||||
|  | const dialogButtons = [ | ||||
|  |   { | ||||
|  |     label: '确定', | ||||
|  |     icon: 'beenhere', | ||||
|  |     click: async () => { | ||||
|  |       const rows = toExposureGridRef.value.getSelectedRows(); | ||||
|  |       if (rows.length === 0) { | ||||
|  |         NotifyManager.warn('请选择待发起的业务'); | ||||
|  |         return; | ||||
|  |       } | ||||
|  |       // 发起 | ||||
|  |       showLoading(); | ||||
|  |       axios | ||||
|  |         .post(Environment.apiContextPath('api/irbs/riskExposure/handmadeRiskExposure'), { id: rows[0].id }) | ||||
|  |         .then((resp) => { | ||||
|  |           hideLoading(); | ||||
|  |           if (resp && resp['code'] === 200 && resp['data']) { | ||||
|  |             emit('refresh'); | ||||
|  |             toExposureDialogRef.value.hide(); | ||||
|  |           } | ||||
|  |         }) | ||||
|  |         .catch((error) => { | ||||
|  |           hideLoading(); | ||||
|  |           console.info('error-------------', error); | ||||
|  |         }); | ||||
|  |     }, | ||||
|  |   }, | ||||
|  | ]; | ||||
|  | 
 | ||||
|  | const toExposureGrid = { | ||||
|  |   buttons: [['query', 'separator'], 'reset'], | ||||
|  |   queryFormFields: [ | ||||
|  |     { label: '债项编号', name: 'businessNo', type: 'text' }, | ||||
|  |     { label: '客户号', name: 'custNo', type: 'text' }, | ||||
|  |     { label: '客户名称', name: 'custName', type: 'text' }, | ||||
|  |   ], | ||||
|  |   columns: [ | ||||
|  |     { name: 'businessNo', label: '债项编号' }, | ||||
|  |     { name: 'custNo', label: '客户号' }, | ||||
|  |     { name: 'custName', label: '客户名称' }, | ||||
|  |     { name: 'custType', label: '客户类型' }, | ||||
|  |     { name: 'productType', label: '产品类型' }, | ||||
|  |     { name: 'mgerOrgNm', label: '所属机构' }, | ||||
|  |   ], | ||||
|  | }; | ||||
|  | 
 | ||||
|  | const show = () => { | ||||
|  |   toExposureDialogRef.value.show(); | ||||
|  | }; | ||||
|  | const hide = () => { | ||||
|  |   toExposureDialogRef.value.hide(); | ||||
|  | }; | ||||
|  | 
 | ||||
|  | const showLoading = (msg: string = '正在处理,请稍等...') => { | ||||
|  |   $q.loading.show({ | ||||
|  |     message: msg, | ||||
|  |     boxClass: 'bg-grey-2 text-grey-9', | ||||
|  |     spinnerColor: 'primary', | ||||
|  |   }); | ||||
|  | }; | ||||
|  | const hideLoading = () => { | ||||
|  |   $q.loading.hide(); | ||||
|  | }; | ||||
|  | 
 | ||||
|  | defineExpose({ | ||||
|  |   show, | ||||
|  |   hide, | ||||
|  | }); | ||||
|  | </script> | ||||
| @ -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' }, | ||||
|  | ]; | ||||
| @ -0,0 +1,145 @@ | |||||
|  | <template> | ||||
|  |   <div style="height: 100%"> | ||||
|  |     <w-grid | ||||
|  |       ref="riskExposureAdjustGridRef" | ||||
|  |       title="风险暴露分类调整列表" | ||||
|  |       :fetch-data-url="Environment.apiContextPath('api/irbs/riskExposure/adjust/queryPage')" | ||||
|  |       :sort-no="true" | ||||
|  |       :checkbox-selection="false" | ||||
|  |       :query-form-cols-num="4" | ||||
|  |       :query-form-fields="riskExposureAdjustGrid.queryFormFields" | ||||
|  |       :columns="riskExposureAdjustGrid.columns" | ||||
|  |       :toolbar-actions="riskExposureAdjustGrid.buttons" | ||||
|  |       :pagination="{ | ||||
|  |         sortBy: 'lastModifyDate', | ||||
|  |         descending: true, | ||||
|  |       }" | ||||
|  |       :query-criteria="{ | ||||
|  |         operator: 'and', | ||||
|  |         criteria: [ | ||||
|  |           { | ||||
|  |             fieldName: 'isNeedOperate', | ||||
|  |             operator: 'equals', | ||||
|  |             value: '0', | ||||
|  |           }, | ||||
|  |           { | ||||
|  |             fieldName: 'dataStatus', | ||||
|  |             operator: 'equals', | ||||
|  |             value: '1', | ||||
|  |           }, | ||||
|  |         ], | ||||
|  |       }" | ||||
|  |     ></w-grid> | ||||
|  |     <LaunchExposureAdjustDialog ref="launchExposureAdjustDialogRef" @refresh="refreshTable"></LaunchExposureAdjustDialog> | ||||
|  |     <HandmadeExposureDialog ref="handmadeExposureDialogRef" @refresh="refreshTable"></HandmadeExposureDialog> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script setup lang="ts"> | ||||
|  | import { ref } from 'vue'; | ||||
|  | import { useQuasar } from 'quasar'; | ||||
|  | import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; | ||||
|  | import LaunchExposureAdjustDialog from '@/views/riskExposure/LaunchExposureAdjustDialog.vue'; | ||||
|  | import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue'; | ||||
|  | import { RiskExposureProcessStatus } from './RiskExposure.ts'; | ||||
|  | 
 | ||||
|  | const $q = useQuasar(); | ||||
|  | const riskExposureAdjustGridRef = ref(); | ||||
|  | const launchExposureAdjustDialogRef = ref(); | ||||
|  | const handmadeExposureDialogRef = ref(); | ||||
|  | 
 | ||||
|  | const riskExposureAdjustGrid = { | ||||
|  |   buttons: [ | ||||
|  |     ['query', 'separator', 'moreQuery'], | ||||
|  |     'reset', | ||||
|  |     'separator', | ||||
|  |     { | ||||
|  |       extend: 'add', | ||||
|  |       label: '人工调整发起', | ||||
|  |       click: () => { | ||||
|  |         launchExposureAdjustDialogRef.value.show(); | ||||
|  |       }, | ||||
|  |     }, | ||||
|  |     { | ||||
|  |       extend: 'edit', | ||||
|  |       label: '编辑', | ||||
|  |       enableIf: (args) => { | ||||
|  |         if (args.selected && (args.selected['processStatus'] === 'TO_BE_SUBMITTED' || args.selected['processStatus'] === 'RETURNED')) { | ||||
|  |           return true; | ||||
|  |         } | ||||
|  |         return false; | ||||
|  |       }, | ||||
|  |       click: (args) => { | ||||
|  |         handmadeExposureDialogRef.value.show(args.selected, false, 'riskExposureAdjust'); | ||||
|  |       }, | ||||
|  |     }, | ||||
|  |     'separator', | ||||
|  |     { | ||||
|  |       extend: 'view', | ||||
|  |       click: (args) => { | ||||
|  |         handmadeExposureDialogRef.value.show(args.selected, true, 'riskExposureAdjust'); | ||||
|  |       }, | ||||
|  |     }, | ||||
|  |     'separator', | ||||
|  |   ], | ||||
|  |   queryFormFields: [ | ||||
|  |     { label: '债项编号', name: 'businessNo', type: 'text' }, | ||||
|  |     { label: '客户号', name: 'custNo', type: 'text' }, | ||||
|  |     { label: '客户名称', name: 'custName', type: 'text' }, | ||||
|  |     { | ||||
|  |       label: '风险暴露分类', | ||||
|  |       name: 'manResult', | ||||
|  |       type: 'select', | ||||
|  |       options: [ | ||||
|  |         { label: '公司风险暴露', value: 'RE_0100' }, | ||||
|  |         { label: '一般公司风险暴露', value: 'RE_0110' }, | ||||
|  |         { label: '中小企业风险暴露', value: 'RE_0120' }, | ||||
|  |         { label: '专业贷款风险暴露', value: 'RE_0130' }, | ||||
|  |         { label: '项目融资风险暴露', value: 'RE_0131' }, | ||||
|  |         { label: '商品融资风险暴露', value: 'RE_0132' }, | ||||
|  |         { label: '物品融资风险暴露', value: 'RE_0133' }, | ||||
|  |         { label: '产生收入的房地产风险暴露', value: 'RE_0134' }, | ||||
|  |         { label: '金融机构风险暴露', value: 'RE_0200' }, | ||||
|  |         { label: '银行类金融机构风险暴露', value: 'RE_0210' }, | ||||
|  |         { label: '非银行类金融机构风险暴露', value: 'RE_0220' }, | ||||
|  |         { label: '股权风险暴露', value: 'RE_0300' }, | ||||
|  |         { label: '主权风险暴露', value: 'RE_0400' }, | ||||
|  |         { label: '其他风险暴露', value: 'RE_0500' }, | ||||
|  |         { label: '资产证券化风险暴露', value: 'RE_0510' }, | ||||
|  |         { label: '合格购入公司应收账款风险暴露', value: 'RE_0520' }, | ||||
|  |         { label: '零售风险暴露', value: 'RE_0600' }, | ||||
|  |       ], | ||||
|  |     }, | ||||
|  |     { | ||||
|  |       label: '流程状态', | ||||
|  |       name: 'status', | ||||
|  |       type: 'select', | ||||
|  |       options: [ | ||||
|  |         { value: 'TO_BE_SUBMITTED', label: '待发起' }, | ||||
|  |         { value: 'RETURNED', label: '退回' }, | ||||
|  |         { value: 'TO_BE_CHECKED', label: '审批中' }, | ||||
|  |         { value: 'COMPLETED_PASS', label: '通过' }, | ||||
|  |         { value: 'COMPLETED_REJECT', label: '否决' }, | ||||
|  |       ], | ||||
|  |     }, | ||||
|  |   ], | ||||
|  |   columns: [ | ||||
|  |     { name: 'businessNo', label: '债项编号' }, | ||||
|  |     { name: 'custNo', label: '客户号' }, | ||||
|  |     { name: 'custName', label: '客户名称' }, | ||||
|  |     { name: 'custType', label: '客户类型' }, | ||||
|  |     { name: 'productType', label: '产品类型' }, | ||||
|  |     { name: 'manResult', label: '人工分类结果' }, | ||||
|  |     { name: 'finalResult', label: '最终分类结果' }, | ||||
|  |     { name: 'managerName', label: '客户经理' }, | ||||
|  |     { name: 'createDate', label: '申请时间', format: Formater.dateOnly() }, | ||||
|  |     { name: 'processStatus', label: '流程状态' }, | ||||
|  |     { name: 'mgerOrgNm', label: '所属机构' }, | ||||
|  |     { name: 'currentAssignee', label: '当前处理人' }, | ||||
|  |   ], | ||||
|  | }; | ||||
|  | 
 | ||||
|  | const refreshTable = () => { | ||||
|  |   riskExposureAdjustGridRef.value.refresh(); | ||||
|  | }; | ||||
|  | </script> | ||||
| @ -0,0 +1,152 @@ | |||||
|  | <template> | ||||
|  |   <div style="height: 100%"> | ||||
|  |     <w-grid | ||||
|  |       ref="riskExposureAdjustGridRef" | ||||
|  |       title="风险暴露分类调整列表" | ||||
|  |       :fetch-data-url="Environment.apiContextPath('api/irbs/riskExposure/adjust/queryPage')" | ||||
|  |       :sort-no="true" | ||||
|  |       :checkbox-selection="false" | ||||
|  |       :query-form-cols-num="4" | ||||
|  |       :query-form-fields="riskExposureAdjustGrid.queryFormFields" | ||||
|  |       :columns="riskExposureAdjustGrid.columns" | ||||
|  |       :toolbar-actions="riskExposureAdjustGrid.buttons" | ||||
|  |       :pagination="{ | ||||
|  |         sortBy: 'lastModifyDate', | ||||
|  |         descending: true, | ||||
|  |       }" | ||||
|  |       :query-criteria="{ | ||||
|  |         operator: 'and', | ||||
|  |         criteria: [ | ||||
|  |           { | ||||
|  |             fieldName: 'isNeedOperate', | ||||
|  |             operator: 'equals', | ||||
|  |             value: '0', | ||||
|  |           }, | ||||
|  |           { | ||||
|  |             fieldName: 'dataStatus', | ||||
|  |             operator: 'equals', | ||||
|  |             value: '1', | ||||
|  |           }, | ||||
|  |           { | ||||
|  |             fieldName: 'processStatus', | ||||
|  |             operator: 'equals', | ||||
|  |             value: 'TO_BE_CHECKED', | ||||
|  |           }, | ||||
|  |         ], | ||||
|  |       }" | ||||
|  |     ></w-grid> | ||||
|  |     <LaunchExposureDialog ref="launchExposureDialogRef" @refresh="refreshTable"></LaunchExposureDialog> | ||||
|  |     <HandmadeExposureDialog ref="handmadeExposureDialogRef" @refresh="refreshTable"></HandmadeExposureDialog> | ||||
|  |   </div> | ||||
|  | </template> | ||||
|  | 
 | ||||
|  | <script setup lang="ts"> | ||||
|  | import { ref } from 'vue'; | ||||
|  | import { useQuasar } from 'quasar'; | ||||
|  | import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; | ||||
|  | import LaunchExposureDialog from '@/views/riskExposure/LaunchExposureDialog.vue'; | ||||
|  | import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue'; | ||||
|  | import { RiskExposureProcessStatus } from './RiskExposure.ts'; | ||||
|  | 
 | ||||
|  | const $q = useQuasar(); | ||||
|  | const riskExposureAdjustGridRef = ref(); | ||||
|  | const launchExposureDialogRef = ref(); | ||||
|  | const handmadeExposureDialogRef = ref(); | ||||
|  | 
 | ||||
|  | const RiskExposureProcessStatusEnum = await EnumTools.fetch('irbs.riskExposure.jpa.support.RiskExposureProcessStatus'); | ||||
|  | 
 | ||||
|  | const riskExposureAdjustGrid = { | ||||
|  |   buttons: [ | ||||
|  |     ['query', 'separator', 'moreQuery'], | ||||
|  |     'reset', | ||||
|  |     'separator', | ||||
|  |     /*{ | ||||
|  |       extend: 'add', | ||||
|  |       label: '人工分类发起', | ||||
|  |       click: () => { | ||||
|  |         launchExposureDialogRef.value.show(); | ||||
|  |       }, | ||||
|  |     },*/ | ||||
|  |     { | ||||
|  |       extend: 'edit', | ||||
|  |       label: '编辑', | ||||
|  |       enableIf: (args) => { | ||||
|  |         if (args.selected && (args.selected['processStatus'] === 'TO_BE_CHECKED' || args.selected['processStatus'] === 'RETURNED')) { | ||||
|  |           return true; | ||||
|  |         } | ||||
|  |         return false; | ||||
|  |       }, | ||||
|  |       click: (args) => { | ||||
|  |         handmadeExposureDialogRef.value.show(args.selected, false, 'riskExposureAdjust'); | ||||
|  |       }, | ||||
|  |     }, | ||||
|  |     'separator', | ||||
|  |     { | ||||
|  |       extend: 'view', | ||||
|  |       click: (args) => { | ||||
|  |         handmadeExposureDialogRef.value.show(args.selected, true, 'riskExposureAdjust'); | ||||
|  |       }, | ||||
|  |     }, | ||||
|  |     'separator', | ||||
|  |   ], | ||||
|  |   queryFormFields: [ | ||||
|  |     { label: '债项编号', name: 'businessNo', type: 'text' }, | ||||
|  |     { label: '客户号', name: 'custNo', type: 'text' }, | ||||
|  |     { label: '客户名称', name: 'custName', type: 'text' }, | ||||
|  |     { | ||||
|  |       label: '风险暴露分类', | ||||
|  |       name: 'manResult', | ||||
|  |       type: 'select', | ||||
|  |       options: [ | ||||
|  |         { label: '公司风险暴露', value: 'RE_0100' }, | ||||
|  |         { label: '一般公司风险暴露', value: 'RE_0110' }, | ||||
|  |         { label: '中小企业风险暴露', value: 'RE_0120' }, | ||||
|  |         { label: '专业贷款风险暴露', value: 'RE_0130' }, | ||||
|  |         { label: '项目融资风险暴露', value: 'RE_0131' }, | ||||
|  |         { label: '商品融资风险暴露', value: 'RE_0132' }, | ||||
|  |         { label: '物品融资风险暴露', value: 'RE_0133' }, | ||||
|  |         { label: '产生收入的房地产风险暴露', value: 'RE_0134' }, | ||||
|  |         { label: '金融机构风险暴露', value: 'RE_0200' }, | ||||
|  |         { label: '银行类金融机构风险暴露', value: 'RE_0210' }, | ||||
|  |         { label: '非银行类金融机构风险暴露', value: 'RE_0220' }, | ||||
|  |         { label: '股权风险暴露', value: 'RE_0300' }, | ||||
|  |         { label: '主权风险暴露', value: 'RE_0400' }, | ||||
|  |         { label: '其他风险暴露', value: 'RE_0500' }, | ||||
|  |         { label: '资产证券化风险暴露', value: 'RE_0510' }, | ||||
|  |         { label: '合格购入公司应收账款风险暴露', value: 'RE_0520' }, | ||||
|  |         { label: '零售风险暴露', value: 'RE_0600' }, | ||||
|  |       ], | ||||
|  |     }, | ||||
|  |     { | ||||
|  |       label: '流程状态', | ||||
|  |       name: 'status', | ||||
|  |       type: 'select', | ||||
|  |       options: [ | ||||
|  |         { value: 'TO_BE_SUBMITTED', label: '待发起' }, | ||||
|  |         { value: 'RETURNED', label: '退回' }, | ||||
|  |         { value: 'TO_BE_CHECKED', label: '审批中' }, | ||||
|  |         { value: 'COMPLETED_PASS', label: '通过' }, | ||||
|  |         { value: 'COMPLETED_REJECT', label: '否决' }, | ||||
|  |       ], | ||||
|  |     }, | ||||
|  |   ], | ||||
|  |   columns: [ | ||||
|  |     { name: 'businessNo', label: '债项编号' }, | ||||
|  |     { name: 'custNo', label: '客户号' }, | ||||
|  |     { name: 'custName', label: '客户名称' }, | ||||
|  |     { name: 'custType', label: '客户类型' }, | ||||
|  |     { name: 'productType', label: '产品类型' }, | ||||
|  |     { name: 'manResult', label: '人工分类结果' }, | ||||
|  |     { name: 'finalResult', label: '最终分类结果' }, | ||||
|  |     { name: 'managerName', label: '客户经理' }, | ||||
|  |     { name: 'createDate', label: '申请时间', format: Formater.dateOnly() }, | ||||
|  |     { name: 'processStatus', label: '流程状态', format: Formater.enum(RiskExposureProcessStatusEnum) }, | ||||
|  |     { name: 'mgerOrgNm', label: '所属机构' }, | ||||
|  |     { name: 'currentAssignee', label: '当前处理人' }, | ||||
|  |   ], | ||||
|  | }; | ||||
|  | 
 | ||||
|  | const refreshTable = () => { | ||||
|  |   riskExposureAdjustGridRef.value.refresh(); | ||||
|  | }; | ||||
|  | </script> | ||||
| @ -1,5 +1,135 @@ | |||||
| <template> | <template> | ||||
|   <div>111</div> |   <div style="height: 100%"> | ||||
|  |     <w-grid | ||||
|  |       ref="riskExposureGridRef" | ||||
|  |       title="风险暴露分类列表" | ||||
|  |       :fetch-data-url="Environment.apiContextPath('api/irbs/riskExposure/queryPage')" | ||||
|  |       :sort-no="true" | ||||
|  |       :checkbox-selection="false" | ||||
|  |       :query-form-cols-num="4" | ||||
|  |       :query-form-fields="riskExposureGrid.queryFormFields" | ||||
|  |       :columns="riskExposureGrid.columns" | ||||
|  |       :toolbar-actions="riskExposureGrid.buttons" | ||||
|  |       :pagination="{ | ||||
|  |         sortBy: 'lastModifyDate', | ||||
|  |         descending: true, | ||||
|  |       }" | ||||
|  |       :query-criteria="{ | ||||
|  |         fieldName: 'dataStatus', | ||||
|  |         operator: 'equals', | ||||
|  |         value: '1', | ||||
|  |       }" | ||||
|  |     ></w-grid> | ||||
|  |     <LaunchExposureDialog ref="launchExposureDialogRef" @refresh="refreshTable"></LaunchExposureDialog> | ||||
|  |     <HandmadeExposureDialog ref="handmadeExposureDialogRef" @refresh="refreshTable"></HandmadeExposureDialog> | ||||
|  |   </div> | ||||
| </template> | </template> | ||||
| 
 | 
 | ||||
| <script setup lang="ts"></script> | <script setup lang="ts"> | ||||
|  | import { ref } from 'vue'; | ||||
|  | import { useQuasar } from 'quasar'; | ||||
|  | import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; | ||||
|  | import LaunchExposureDialog from '@/views/riskExposure/LaunchExposureDialog.vue'; | ||||
|  | import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue'; | ||||
|  | import { RiskExposureProcessStatus } from './RiskExposure.ts'; | ||||
|  | 
 | ||||
|  | const $q = useQuasar(); | ||||
|  | const riskExposureGridRef = ref(); | ||||
|  | const launchExposureDialogRef = ref(); | ||||
|  | const handmadeExposureDialogRef = ref(); | ||||
|  | 
 | ||||
|  | const riskExposureGrid = { | ||||
|  |   buttons: [ | ||||
|  |     ['query', 'separator', 'moreQuery'], | ||||
|  |     'reset', | ||||
|  |     'separator', | ||||
|  |     { | ||||
|  |       extend: 'add', | ||||
|  |       label: '人工分类发起', | ||||
|  |       click: () => { | ||||
|  |         launchExposureDialogRef.value.show(); | ||||
|  |       }, | ||||
|  |     }, | ||||
|  |     { | ||||
|  |       extend: 'edit', | ||||
|  |       label: '编辑', | ||||
|  |       enableIf: (args) => { | ||||
|  |         if (args.selected && (args.selected['processStatus'] === 'TO_BE_SUBMITTED' || args.selected['processStatus'] === 'RETURNED')) { | ||||
|  |           return true; | ||||
|  |         } | ||||
|  |         return false; | ||||
|  |       }, | ||||
|  |       click: (args) => { | ||||
|  |         handmadeExposureDialogRef.value.show(args.selected, false, 'riskExposure'); | ||||
|  |       }, | ||||
|  |     }, | ||||
|  |     'separator', | ||||
|  |     { | ||||
|  |       extend: 'view', | ||||
|  |       click: (args) => { | ||||
|  |         handmadeExposureDialogRef.value.show(args.selected, true, 'riskExposure'); | ||||
|  |       }, | ||||
|  |     }, | ||||
|  |     'separator', | ||||
|  |   ], | ||||
|  |   queryFormFields: [ | ||||
|  |     { label: '债项编号', name: 'businessNo', type: 'text' }, | ||||
|  |     { label: '客户号', name: 'custNo', type: 'text' }, | ||||
|  |     { label: '客户名称', name: 'custName', type: 'text' }, | ||||
|  |     { | ||||
|  |       label: '风险暴露分类', | ||||
|  |       name: 'manResult', | ||||
|  |       type: 'select', | ||||
|  |       options: [ | ||||
|  |         { label: '公司风险暴露', value: 'RE_0100' }, | ||||
|  |         { label: '一般公司风险暴露', value: 'RE_0110' }, | ||||
|  |         { label: '中小企业风险暴露', value: 'RE_0120' }, | ||||
|  |         { label: '专业贷款风险暴露', value: 'RE_0130' }, | ||||
|  |         { label: '项目融资风险暴露', value: 'RE_0131' }, | ||||
|  |         { label: '商品融资风险暴露', value: 'RE_0132' }, | ||||
|  |         { label: '物品融资风险暴露', value: 'RE_0133' }, | ||||
|  |         { label: '产生收入的房地产风险暴露', value: 'RE_0134' }, | ||||
|  |         { label: '金融机构风险暴露', value: 'RE_0200' }, | ||||
|  |         { label: '银行类金融机构风险暴露', value: 'RE_0210' }, | ||||
|  |         { label: '非银行类金融机构风险暴露', value: 'RE_0220' }, | ||||
|  |         { label: '股权风险暴露', value: 'RE_0300' }, | ||||
|  |         { label: '主权风险暴露', value: 'RE_0400' }, | ||||
|  |         { label: '其他风险暴露', value: 'RE_0500' }, | ||||
|  |         { label: '资产证券化风险暴露', value: 'RE_0510' }, | ||||
|  |         { label: '合格购入公司应收账款风险暴露', value: 'RE_0520' }, | ||||
|  |         { label: '零售风险暴露', value: 'RE_0600' }, | ||||
|  |       ], | ||||
|  |     }, | ||||
|  |     { | ||||
|  |       label: '流程状态', | ||||
|  |       name: 'status', | ||||
|  |       type: 'select', | ||||
|  |       options: [ | ||||
|  |         { value: 'TO_BE_SUBMITTED', label: '待发起' }, | ||||
|  |         { value: 'RETURNED', label: '退回' }, | ||||
|  |         { value: 'TO_BE_CHECKED', label: '审批中' }, | ||||
|  |         { value: 'COMPLETED_PASS', label: '通过' }, | ||||
|  |         { value: 'COMPLETED_REJECT', label: '否决' }, | ||||
|  |       ], | ||||
|  |     }, | ||||
|  |   ], | ||||
|  |   columns: [ | ||||
|  |     { name: 'businessNo', label: '债项编号' }, | ||||
|  |     { name: 'custNo', label: '客户号' }, | ||||
|  |     { name: 'custName', label: '客户名称' }, | ||||
|  |     { name: 'custType', label: '客户类型' }, | ||||
|  |     { name: 'productType', label: '产品类型' }, | ||||
|  |     { name: 'manResult', label: '人工分类结果' }, | ||||
|  |     { name: 'finalResult', label: '最终分类结果' }, | ||||
|  |     { name: 'managerName', label: '客户经理' }, | ||||
|  |     { name: 'createDate', label: '申请时间', format: Formater.dateOnly() }, | ||||
|  |     { name: 'processStatus', label: '流程状态' }, | ||||
|  |     { name: 'mgerOrgNm', label: '所属机构' }, | ||||
|  |     { name: 'currentAssignee', label: '当前处理人' }, | ||||
|  |   ], | ||||
|  | }; | ||||
|  | 
 | ||||
|  | const refreshTable = () => { | ||||
|  |   riskExposureGridRef.value.refresh(); | ||||
|  | }; | ||||
|  | </script> | ||||
|  | |||||
| @ -1,5 +1,147 @@ | |||||
| <template> | <template> | ||||
|   <div>111</div> |   <div style="height: 100%"> | ||||
|  |     <w-grid | ||||
|  |       ref="riskExposureGridRef" | ||||
|  |       title="风险暴露分类列表" | ||||
|  |       :fetch-data-url="Environment.apiContextPath('api/irbs/riskExposure/queryPage')" | ||||
|  |       :sort-no="true" | ||||
|  |       :checkbox-selection="false" | ||||
|  |       :query-form-cols-num="4" | ||||
|  |       :query-form-fields="riskExposureGrid.queryFormFields" | ||||
|  |       :columns="riskExposureGrid.columns" | ||||
|  |       :toolbar-actions="riskExposureGrid.buttons" | ||||
|  |       :pagination="{ | ||||
|  |         sortBy: 'lastModifyDate', | ||||
|  |         descending: true, | ||||
|  |       }" | ||||
|  |       :query-criteria="{ | ||||
|  |         operator: 'and', | ||||
|  |         criteria: [ | ||||
|  |           { | ||||
|  |             fieldName: 'dataStatus', | ||||
|  |             operator: 'equals', | ||||
|  |             value: '1', | ||||
|  |           }, | ||||
|  |           { | ||||
|  |             fieldName: 'processStatus', | ||||
|  |             operator: 'equals', | ||||
|  |             value: 'TO_BE_CHECKED', | ||||
|  |           }, | ||||
|  |         ], | ||||
|  |       }" | ||||
|  |     ></w-grid> | ||||
|  |     <LaunchExposureDialog ref="launchExposureDialogRef" @refresh="refreshTable"></LaunchExposureDialog> | ||||
|  |     <HandmadeExposureDialog ref="handmadeExposureDialogRef" @refresh="refreshTable"></HandmadeExposureDialog> | ||||
|  |   </div> | ||||
| </template> | </template> | ||||
| 
 | 
 | ||||
| <script setup lang="ts"></script> | <script setup lang="ts"> | ||||
|  | import { ref } from 'vue'; | ||||
|  | import { useQuasar } from 'quasar'; | ||||
|  | import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; | ||||
|  | import LaunchExposureDialog from '@/views/riskExposure/LaunchExposureDialog.vue'; | ||||
|  | import HandmadeExposureDialog from '@/views/riskExposure/HandmadeExposureDialog.vue'; | ||||
|  | import { RiskExposureProcessStatus } from './RiskExposure.ts'; | ||||
|  | 
 | ||||
|  | const $q = useQuasar(); | ||||
|  | const riskExposureGridRef = ref(); | ||||
|  | const launchExposureDialogRef = ref(); | ||||
|  | const handmadeExposureDialogRef = ref(); | ||||
|  | 
 | ||||
|  | const RiskExposureProcessStatusEnum = await EnumTools.fetch('irbs.riskExposure.jpa.support.RiskExposureProcessStatus'); | ||||
|  | 
 | ||||
|  | const riskExposureGrid = { | ||||
|  |   buttons: [ | ||||
|  |     ['query', 'separator', 'moreQuery'], | ||||
|  |     'reset', | ||||
|  |     'separator', | ||||
|  |     /*{ | ||||
|  |       extend: 'add', | ||||
|  |       label: '人工分类发起', | ||||
|  |       click: () => { | ||||
|  |         launchExposureDialogRef.value.show(); | ||||
|  |       }, | ||||
|  |     },*/ | ||||
|  |     { | ||||
|  |       extend: 'edit', | ||||
|  |       label: '编辑', | ||||
|  |       enableIf: (args) => { | ||||
|  |         if (args.selected && (args.selected['processStatus'] === 'TO_BE_CHECKED' || args.selected['processStatus'] === 'RETURNED')) { | ||||
|  |           return true; | ||||
|  |         } | ||||
|  |         return false; | ||||
|  |       }, | ||||
|  |       click: (args) => { | ||||
|  |         handmadeExposureDialogRef.value.show(args.selected, false, 'riskExposure'); | ||||
|  |       }, | ||||
|  |     }, | ||||
|  |     'separator', | ||||
|  |     { | ||||
|  |       extend: 'view', | ||||
|  |       click: (args) => { | ||||
|  |         handmadeExposureDialogRef.value.show(args.selected, true, 'riskExposure'); | ||||
|  |       }, | ||||
|  |     }, | ||||
|  |     'separator', | ||||
|  |   ], | ||||
|  |   queryFormFields: [ | ||||
|  |     { label: '债项编号', name: 'businessNo', type: 'text' }, | ||||
|  |     { label: '客户号', name: 'custNo', type: 'text' }, | ||||
|  |     { label: '客户名称', name: 'custName', type: 'text' }, | ||||
|  |     { | ||||
|  |       label: '风险暴露分类', | ||||
|  |       name: 'manResult', | ||||
|  |       type: 'select', | ||||
|  |       options: [ | ||||
|  |         { label: '公司风险暴露', value: 'RE_0100' }, | ||||
|  |         { label: '一般公司风险暴露', value: 'RE_0110' }, | ||||
|  |         { label: '中小企业风险暴露', value: 'RE_0120' }, | ||||
|  |         { label: '专业贷款风险暴露', value: 'RE_0130' }, | ||||
|  |         { label: '项目融资风险暴露', value: 'RE_0131' }, | ||||
|  |         { label: '商品融资风险暴露', value: 'RE_0132' }, | ||||
|  |         { label: '物品融资风险暴露', value: 'RE_0133' }, | ||||
|  |         { label: '产生收入的房地产风险暴露', value: 'RE_0134' }, | ||||
|  |         { label: '金融机构风险暴露', value: 'RE_0200' }, | ||||
|  |         { label: '银行类金融机构风险暴露', value: 'RE_0210' }, | ||||
|  |         { label: '非银行类金融机构风险暴露', value: 'RE_0220' }, | ||||
|  |         { label: '股权风险暴露', value: 'RE_0300' }, | ||||
|  |         { label: '主权风险暴露', value: 'RE_0400' }, | ||||
|  |         { label: '其他风险暴露', value: 'RE_0500' }, | ||||
|  |         { label: '资产证券化风险暴露', value: 'RE_0510' }, | ||||
|  |         { label: '合格购入公司应收账款风险暴露', value: 'RE_0520' }, | ||||
|  |         { label: '零售风险暴露', value: 'RE_0600' }, | ||||
|  |       ], | ||||
|  |     }, | ||||
|  |     { | ||||
|  |       label: '流程状态', | ||||
|  |       name: 'status', | ||||
|  |       type: 'select', | ||||
|  |       options: [ | ||||
|  |         { value: 'TO_BE_SUBMITTED', label: '待发起' }, | ||||
|  |         { value: 'RETURNED', label: '退回' }, | ||||
|  |         { value: 'TO_BE_CHECKED', label: '审批中' }, | ||||
|  |         { value: 'COMPLETED_PASS', label: '通过' }, | ||||
|  |         { value: 'COMPLETED_REJECT', label: '否决' }, | ||||
|  |       ], | ||||
|  |     }, | ||||
|  |   ], | ||||
|  |   columns: [ | ||||
|  |     { name: 'businessNo', label: '债项编号' }, | ||||
|  |     { name: 'custNo', label: '客户号' }, | ||||
|  |     { name: 'custName', label: '客户名称' }, | ||||
|  |     { name: 'custType', label: '客户类型' }, | ||||
|  |     { name: 'productType', label: '产品类型' }, | ||||
|  |     { name: 'manResult', label: '人工分类结果' }, | ||||
|  |     { name: 'finalResult', label: '最终分类结果' }, | ||||
|  |     { name: 'managerName', label: '客户经理' }, | ||||
|  |     { name: 'createDate', label: '申请时间', format: Formater.dateOnly() }, | ||||
|  |     { name: 'processStatus', label: '流程状态', format: Formater.enum(RiskExposureProcessStatusEnum) }, | ||||
|  |     { name: 'mgerOrgNm', label: '所属机构' }, | ||||
|  |     { name: 'currentAssignee', label: '当前处理人' }, | ||||
|  |   ], | ||||
|  | }; | ||||
|  | 
 | ||||
|  | const refreshTable = () => { | ||||
|  |   riskExposureGridRef.value.refresh(); | ||||
|  | }; | ||||
|  | </script> | ||||
|  | |||||
| @ -0,0 +1,7 @@ | |||||
|  | dependencies { | ||||
|  | 	api( | ||||
|  | 		"io.sc:io.sc.platform.mvc:${platform_version}", | ||||
|  | 		"io.sc:io.sc.platform.flowable:${platform_version}", | ||||
|  | 		"io.sc:io.sc.platform.page.config:${platform_version}", | ||||
|  | 	) | ||||
|  | } | ||||
| @ -0,0 +1,71 @@ | |||||
|  | package irbs.riskExposure.controller; | ||||
|  | 
 | ||||
|  | import io.sc.platform.flowable.controller.support.ProcessProperties; | ||||
|  | import io.sc.platform.flowable.support.CompleteTaskException; | ||||
|  | import io.sc.platform.flowable.support.CompleteTaskResponse; | ||||
|  | import io.sc.platform.orm.service.support.QueryParameter; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposure; | ||||
|  | import irbs.riskExposure.service.RiskExposureAdjustService; | ||||
|  | import irbs.riskExposure.service.RiskExposureProcessService; | ||||
|  | import irbs.riskExposure.service.RiskExposureService; | ||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||
|  | import org.springframework.data.domain.Page; | ||||
|  | import org.springframework.web.bind.annotation.*; | ||||
|  | 
 | ||||
|  | import java.util.Map; | ||||
|  | 
 | ||||
|  | @RestController | ||||
|  | @RequestMapping("/api/irbs/riskExposure/adjust") | ||||
|  | public class RiskExposureAdjustController { | ||||
|  | 
 | ||||
|  |     @Autowired | ||||
|  |     private RiskExposureAdjustService riskExposureAdjustService; | ||||
|  |     @Autowired | ||||
|  |     private RiskExposureProcessService riskExposureProcessService; | ||||
|  |     @GetMapping("queryPage") | ||||
|  |     public Page<RiskExposure> queryPage(QueryParameter queryParameter) throws Exception{ | ||||
|  |         Page<RiskExposure> page = riskExposureAdjustService.queryPage(queryParameter); | ||||
|  |         return page; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 根据ID查询风险暴露分类数据 | ||||
|  |      * @param map | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     @RequestMapping(value="getRiskExposureById",method= RequestMethod.POST) | ||||
|  |     @ResponseBody | ||||
|  |     public RiskExposure getRiskExposureById(@RequestBody Map<String, Object> map) throws Exception { | ||||
|  |         String id = (String) map.get("id"); | ||||
|  |         return riskExposureAdjustService.findById(id); | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 人工风险暴露分类发起 | ||||
|  |      * @param map | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     @RequestMapping(value="handmadeRiskExposure",method= RequestMethod.POST) | ||||
|  |     @ResponseBody | ||||
|  |     public RiskExposure handmadeRiskExposure(@RequestBody Map<String, Object> map) throws Exception { | ||||
|  |         String id = (String) map.get("id"); | ||||
|  |         return riskExposureAdjustService.handmadeRiskExposure(id); | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 人工风险暴露分类流程提交 | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     @RequestMapping(value="submitRiskExposure/{taskId}",method= RequestMethod.POST) | ||||
|  |     @ResponseBody | ||||
|  |     public CompleteTaskResponse submitRiskExposure(@PathVariable("taskId") String taskId, @RequestBody ProcessProperties processProperties) throws Exception { | ||||
|  |         try { | ||||
|  |             return riskExposureProcessService.submitRiskExposureAdjust(taskId, processProperties); | ||||
|  |         } catch (CompleteTaskException exception) { | ||||
|  |             return CompleteTaskResponse.fromAssigneesJson(exception.getMessage()); | ||||
|  |         } catch (Exception e) { | ||||
|  |             e.printStackTrace(); | ||||
|  |             return new CompleteTaskResponse(); | ||||
|  |         } | ||||
|  |     } | ||||
|  | } | ||||
| @ -0,0 +1,90 @@ | |||||
|  | package irbs.riskExposure.controller; | ||||
|  | 
 | ||||
|  | import io.sc.platform.flowable.controller.support.ProcessProperties; | ||||
|  | import io.sc.platform.flowable.support.CompleteTaskException; | ||||
|  | import io.sc.platform.flowable.support.CompleteTaskResponse; | ||||
|  | import io.sc.platform.orm.service.support.QueryParameter; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposure; | ||||
|  | import irbs.riskExposure.service.RiskExposureAdjustService; | ||||
|  | import irbs.riskExposure.service.RiskExposureProcessService; | ||||
|  | import irbs.riskExposure.service.RiskExposureService; | ||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||
|  | import org.springframework.data.domain.Page; | ||||
|  | import org.springframework.web.bind.annotation.*; | ||||
|  | 
 | ||||
|  | import java.util.Map; | ||||
|  | 
 | ||||
|  | @RestController | ||||
|  | @RequestMapping("/api/irbs/riskExposure") | ||||
|  | public class RiskExposureController { | ||||
|  | 
 | ||||
|  |     @Autowired | ||||
|  |     private RiskExposureService riskExposureService; | ||||
|  |     @Autowired | ||||
|  |     private RiskExposureAdjustService riskExposureAdjustService; | ||||
|  |     @Autowired | ||||
|  |     private RiskExposureProcessService riskExposureProcessService; | ||||
|  |     @GetMapping("queryPage") | ||||
|  |     public Page<RiskExposure> queryPage(QueryParameter queryParameter) throws Exception{ | ||||
|  |         Page<RiskExposure> page = riskExposureService.queryPage(queryParameter); | ||||
|  |         return page; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 根据ID查询风险暴露分类数据 | ||||
|  |      * @param map | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     @RequestMapping(value="getRiskExposureById",method= RequestMethod.POST) | ||||
|  |     @ResponseBody | ||||
|  |     public RiskExposure getRiskExposureById(@RequestBody Map<String, Object> map) throws Exception { | ||||
|  |         String id = (String) map.get("id"); | ||||
|  |         return riskExposureService.findById(id); | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 人工风险暴露分类发起 | ||||
|  |      * @param map | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     @RequestMapping(value="handmadeRiskExposure",method= RequestMethod.POST) | ||||
|  |     @ResponseBody | ||||
|  |     public RiskExposure handmadeRiskExposure(@RequestBody Map<String, Object> map) throws Exception { | ||||
|  |         String id = (String) map.get("id"); | ||||
|  |         return riskExposureService.handmadeRiskExposure(id); | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 人工风险暴露分类调整发起 | ||||
|  |      * @param map | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     @RequestMapping(value="handmadeRiskExposureAdjust",method= RequestMethod.POST) | ||||
|  |     @ResponseBody | ||||
|  |     public RiskExposure handmadeRiskExposureAdjust(@RequestBody Map<String, Object> map) throws Exception { | ||||
|  |         String id = (String) map.get("id"); | ||||
|  |         return riskExposureAdjustService.handmadeRiskExposure(id); | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 人工风险暴露分类流程提交 | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     @RequestMapping(value="submitRiskExposure/{taskId}",method= RequestMethod.POST) | ||||
|  |     @ResponseBody | ||||
|  |     public CompleteTaskResponse submitRiskExposure(@PathVariable("taskId") String taskId, @RequestBody ProcessProperties processProperties) throws Exception { | ||||
|  |         try { | ||||
|  |             String opType = (String) processProperties.getTransientVariables().get("opType"); | ||||
|  |             if(opType.equals("riskExposureAdjust")){ | ||||
|  |                 return riskExposureProcessService.submitRiskExposureAdjust(taskId, processProperties); | ||||
|  |             }else { | ||||
|  |                 return riskExposureProcessService.submitRiskExposure(taskId, processProperties); | ||||
|  |             } | ||||
|  |         } catch (CompleteTaskException exception) { | ||||
|  |             return CompleteTaskResponse.fromAssigneesJson(exception.getMessage()); | ||||
|  |         } catch (Exception e) { | ||||
|  |             e.printStackTrace(); | ||||
|  |             return new CompleteTaskResponse(); | ||||
|  |         } | ||||
|  |     } | ||||
|  | } | ||||
| @ -0,0 +1,29 @@ | |||||
|  | package irbs.riskExposure.controller; | ||||
|  | 
 | ||||
|  | import io.sc.platform.flowable.controller.support.ProcessProperties; | ||||
|  | import io.sc.platform.flowable.support.CompleteTaskException; | ||||
|  | import io.sc.platform.flowable.support.CompleteTaskResponse; | ||||
|  | import io.sc.platform.orm.service.support.QueryParameter; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposure; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposureOperation; | ||||
|  | import irbs.riskExposure.jpa.repository.CustomerRepository; | ||||
|  | import irbs.riskExposure.service.RiskExposureOperationService; | ||||
|  | import irbs.riskExposure.service.RiskExposureService; | ||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||
|  | import org.springframework.data.domain.Page; | ||||
|  | import org.springframework.web.bind.annotation.*; | ||||
|  | 
 | ||||
|  | import java.util.Map; | ||||
|  | 
 | ||||
|  | @RestController | ||||
|  | @RequestMapping("/api/irbs/riskExposureOperation") | ||||
|  | public class RiskExposureOperationController { | ||||
|  | 
 | ||||
|  |     @Autowired | ||||
|  |     private RiskExposureOperationService riskExposureOperationService; | ||||
|  | 
 | ||||
|  |     @GetMapping("queryPage") | ||||
|  |     public Page<RiskExposureOperation> queryPage(QueryParameter queryParameter) throws Exception{ | ||||
|  |         return riskExposureOperationService.queryPage(queryParameter); | ||||
|  |     } | ||||
|  | } | ||||
| @ -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; | ||||
|  | 	} | ||||
|  | } | ||||
| @ -0,0 +1,330 @@ | |||||
|  | package irbs.riskExposure.jpa.entity; | ||||
|  | 
 | ||||
|  | import io.sc.platform.orm.entity.CorporationAuditorEntity; | ||||
|  | import irbs.riskExposure.jpa.vo.RiskExposureVo; | ||||
|  | import org.hibernate.annotations.GenericGenerator; | ||||
|  | 
 | ||||
|  | import javax.persistence.*; | ||||
|  | import javax.validation.constraints.Size; | ||||
|  | import java.util.Date; | ||||
|  | 
 | ||||
|  | @Entity | ||||
|  | @Table(name="P_IRS_RISK_EXPOSURE") | ||||
|  | public class RiskExposure extends CorporationAuditorEntity<RiskExposureVo> { | ||||
|  | 
 | ||||
|  |     // 主键
 | ||||
|  |     @Id | ||||
|  |     @GeneratedValue(generator = "system-uuid") | ||||
|  |     @GenericGenerator(name = "system-uuid", strategy = "uuid2") | ||||
|  |     @Column(name="ID_") | ||||
|  |     @Size(max=50) | ||||
|  |     protected String id; | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 业务编号 | ||||
|  |      */ | ||||
|  |     @Column(name="BUSINESS_NO", length=40) | ||||
|  |     private String businessNo; | ||||
|  |     /** | ||||
|  |      * 产品类型 | ||||
|  |      */ | ||||
|  |     @Column(name="PRODUCT_TYPE", length=100) | ||||
|  |     private String productType; | ||||
|  |     /** | ||||
|  |      * 客户编号 | ||||
|  |      */ | ||||
|  |     @Column(name="CUST_NO", length=40) | ||||
|  |     private String custNo; | ||||
|  |     /** | ||||
|  |      * 客户名称 | ||||
|  |      */ | ||||
|  |     @Column(name="CUST_NAME", length=200) | ||||
|  |     private String custName; | ||||
|  |     /** | ||||
|  |      * 客户类型(1.一般公司 2.金融债券机构) | ||||
|  |      */ | ||||
|  |     @Column(name="CUST_TYPE", length=1) | ||||
|  |     private String custType; | ||||
|  |     /** | ||||
|  |      * 发起方式 | ||||
|  |      */ | ||||
|  |     @Column(name="START_WAY", length=100) | ||||
|  |     private String startWay; | ||||
|  |     /** | ||||
|  |      * 是否需人工分类 | ||||
|  |      */ | ||||
|  |     @Column(name="IS_NEED_OPERATE", length=1) | ||||
|  |     private String isNeedOperate; | ||||
|  |     /** | ||||
|  |      * 调整截止日期 | ||||
|  |      */ | ||||
|  |     @Column(name="ADJUST_END_DATE") | ||||
|  |     @Temporal(TemporalType.DATE) | ||||
|  |     private Date adjustEndDate; | ||||
|  |     /** | ||||
|  |      * 是否已调整 | ||||
|  |      */ | ||||
|  |     @Column(name="IS_ADJUSTED", length=1) | ||||
|  |     private String isAdjusted; | ||||
|  |     /** | ||||
|  |      * 调整原因 | ||||
|  |      */ | ||||
|  |     @Column(name="ADJUST_REASON", length=1000) | ||||
|  |     private String adjustReason; | ||||
|  |     /** | ||||
|  |      * 调整的失效日期 | ||||
|  |      */ | ||||
|  |     @Column(name="ADJUST_INVALID_DATE") | ||||
|  |     @Temporal(TemporalType.DATE) | ||||
|  |     private Date adjustInvalidDate; | ||||
|  |     /** | ||||
|  |      * 完成时间 | ||||
|  |      */ | ||||
|  |     @Column(name="FINISH_DATE") | ||||
|  |     @Temporal(TemporalType.DATE) | ||||
|  |     private Date finishDate; | ||||
|  |     /** | ||||
|  |      * 系统分类结果 | ||||
|  |      */ | ||||
|  |     @Column(name="SYS_RESULT", length=100) | ||||
|  |     private String sysResult; | ||||
|  |     /** | ||||
|  |      * 人工分类结果 | ||||
|  |      */ | ||||
|  |     @Column(name="MAN_RESULT", length=100) | ||||
|  |     private String manResult; | ||||
|  |     /** | ||||
|  |      * 最终分类结果 | ||||
|  |      */ | ||||
|  |     @Column(name="FINAL_RESULT", length=100) | ||||
|  |     private String finalResult; | ||||
|  | 
 | ||||
|  |     //是否生效
 | ||||
|  |     @Column(name="IS_VALID", length=20) | ||||
|  |     private String isValid; | ||||
|  |     /** | ||||
|  |      * 客户经理名称 | ||||
|  |      */ | ||||
|  |     @Column(name="MANAGER_NAME", length=100) | ||||
|  |     private String managerName; | ||||
|  |     /** | ||||
|  |      * 所属机构 | ||||
|  |      */ | ||||
|  |     @Column(name="MGER_ORG_NM", length=100) | ||||
|  |     private String mgerOrgNm; | ||||
|  |     /** | ||||
|  |      * 当前处理人 | ||||
|  |      */ | ||||
|  |     @Column(name="CURRENT_ASSIGNEE", length=100) | ||||
|  |     private String currentAssignee; | ||||
|  |     /** | ||||
|  |      * 流程状态 | ||||
|  |      */ | ||||
|  |     @Column(name="PROCESS_STATUS", length=100) | ||||
|  |     private String processStatus; | ||||
|  |     /** | ||||
|  |      * 流程ID | ||||
|  |      */ | ||||
|  |     @Column(name="PROCESS_INSTANCE_ID", length=100) | ||||
|  |     private String processInstanceId; | ||||
|  |     /** | ||||
|  |      * 发起状态 | ||||
|  |      */ | ||||
|  |     @Column(name="DATA_STATUS", length=100) | ||||
|  |     private String dataStatus; | ||||
|  | 
 | ||||
|  |     @Transient | ||||
|  |     private String taskId; | ||||
|  | 
 | ||||
|  |     public String getId() { | ||||
|  |         return id; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setId(String id) { | ||||
|  |         this.id = id; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getBusinessNo() { | ||||
|  |         return businessNo; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setBusinessNo(String businessNo) { | ||||
|  |         this.businessNo = businessNo; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getProductType() { | ||||
|  |         return productType; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setProductType(String productType) { | ||||
|  |         this.productType = productType; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getCustNo() { | ||||
|  |         return custNo; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setCustNo(String custNo) { | ||||
|  |         this.custNo = custNo; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getCustName() { | ||||
|  |         return custName; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setCustName(String custName) { | ||||
|  |         this.custName = custName; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getCustType() { | ||||
|  |         return custType; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setCustType(String custType) { | ||||
|  |         this.custType = custType; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getStartWay() { | ||||
|  |         return startWay; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setStartWay(String startWay) { | ||||
|  |         this.startWay = startWay; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getIsNeedOperate() { | ||||
|  |         return isNeedOperate; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setIsNeedOperate(String isNeedOperate) { | ||||
|  |         this.isNeedOperate = isNeedOperate; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public Date getAdjustEndDate() { | ||||
|  |         return adjustEndDate; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setAdjustEndDate(Date adjustEndDate) { | ||||
|  |         this.adjustEndDate = adjustEndDate; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getIsAdjusted() { | ||||
|  |         return isAdjusted; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setIsAdjusted(String isAdjusted) { | ||||
|  |         this.isAdjusted = isAdjusted; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getAdjustReason() { | ||||
|  |         return adjustReason; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setAdjustReason(String adjustReason) { | ||||
|  |         this.adjustReason = adjustReason; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public Date getAdjustInvalidDate() { | ||||
|  |         return adjustInvalidDate; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setAdjustInvalidDate(Date adjustInvalidDate) { | ||||
|  |         this.adjustInvalidDate = adjustInvalidDate; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public Date getFinishDate() { | ||||
|  |         return finishDate; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setFinishDate(Date finishDate) { | ||||
|  |         this.finishDate = finishDate; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getSysResult() { | ||||
|  |         return sysResult; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setSysResult(String sysResult) { | ||||
|  |         this.sysResult = sysResult; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getManResult() { | ||||
|  |         return manResult; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setManResult(String manResult) { | ||||
|  |         this.manResult = manResult; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getFinalResult() { | ||||
|  |         return finalResult; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setFinalResult(String finalResult) { | ||||
|  |         this.finalResult = finalResult; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getIsValid() { | ||||
|  |         return isValid; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setIsValid(String isValid) { | ||||
|  |         this.isValid = isValid; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getManagerName() { | ||||
|  |         return managerName; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setManagerName(String managerName) { | ||||
|  |         this.managerName = managerName; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getMgerOrgNm() { | ||||
|  |         return mgerOrgNm; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setMgerOrgNm(String mgerOrgNm) { | ||||
|  |         this.mgerOrgNm = mgerOrgNm; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getCurrentAssignee() { | ||||
|  |         return currentAssignee; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setCurrentAssignee(String currentAssignee) { | ||||
|  |         this.currentAssignee = currentAssignee; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getProcessStatus() { | ||||
|  |         return processStatus; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setProcessStatus(String processStatus) { | ||||
|  |         this.processStatus = processStatus; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getDataStatus() { | ||||
|  |         return dataStatus; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setDataStatus(String dataStatus) { | ||||
|  |         this.dataStatus = dataStatus; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getProcessInstanceId() { | ||||
|  |         return processInstanceId; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setProcessInstanceId(String processInstanceId) { | ||||
|  |         this.processInstanceId = processInstanceId; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public String getTaskId() { | ||||
|  |         return taskId; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     public void setTaskId(String taskId) { | ||||
|  |         this.taskId = taskId; | ||||
|  |     } | ||||
|  | } | ||||
| @ -0,0 +1,160 @@ | |||||
|  | package irbs.riskExposure.jpa.entity; | ||||
|  | 
 | ||||
|  | import io.sc.platform.orm.entity.CorporationAuditorEntity; | ||||
|  | import irbs.riskExposure.jpa.vo.RiskExposureOperationVo; | ||||
|  | import org.hibernate.annotations.GenericGenerator; | ||||
|  | 
 | ||||
|  | import javax.persistence.*; | ||||
|  | import javax.validation.constraints.Size; | ||||
|  | 
 | ||||
|  | /** | ||||
|  |  * 风险暴露分类流程处理 | ||||
|  |  * @author chengjie | ||||
|  |  * | ||||
|  |  */ | ||||
|  | @Entity | ||||
|  | @Table(name="P_IRS_RISK_EXPOSURE_OPERATION") | ||||
|  | public class RiskExposureOperation extends CorporationAuditorEntity<RiskExposureOperationVo> { | ||||
|  | 
 | ||||
|  | 	// 主键
 | ||||
|  | 	@Id | ||||
|  | 	@GeneratedValue(generator = "system-uuid") | ||||
|  | 	@GenericGenerator(name = "system-uuid", strategy = "uuid2") | ||||
|  | 	@Column(name="ID_") | ||||
|  | 	@Size(max=50) | ||||
|  | 	protected String id; | ||||
|  | 
 | ||||
|  | 	// 风险暴露分类发起业务主键
 | ||||
|  | 	@Column(name="RISK_EXPOSURE_ID") | ||||
|  | 	protected String riskExposureId; | ||||
|  | 
 | ||||
|  | 	// 风险暴露分类调整业务主键
 | ||||
|  | 	@Column(name="RISK_EXPOSURE_ADJ_ID") | ||||
|  | 	protected String riskExposureAdjId; | ||||
|  | 
 | ||||
|  | 	// 人工风险暴露分类结果
 | ||||
|  | 	@Column(name="RISK_EXPOSURE_TYPE") | ||||
|  | 	protected String riskExposureType; | ||||
|  | 
 | ||||
|  | 	// 附件条数
 | ||||
|  | 	@Column(name="FILE_COUNT") | ||||
|  | 	protected Integer fileCount; | ||||
|  | 
 | ||||
|  | 	// 意见说明
 | ||||
|  | 	@Column(name="REMARKS") | ||||
|  | 	protected String remarks; | ||||
|  | 
 | ||||
|  | 	// 角色
 | ||||
|  | 	@Column(name="ROLE_NAME") | ||||
|  | 	protected String roleName; | ||||
|  | 
 | ||||
|  | 	// 文件名称
 | ||||
|  | 	@Column(name="FILE_NAME") | ||||
|  | 	protected String fileName; | ||||
|  | 
 | ||||
|  | 	// 创建人机构
 | ||||
|  | 	@Column(name="CREATOR_ORG") | ||||
|  | 	protected String creatorOrg; | ||||
|  | 
 | ||||
|  | 	// 记录当前处理人审批认定结果  提交1 通过2 否决3
 | ||||
|  | 	@Column(name="OPERATION") | ||||
|  | 	protected String operation; | ||||
|  | 
 | ||||
|  | 	@Override | ||||
|  | 	public RiskExposureOperationVo toVo() { | ||||
|  | 		RiskExposureOperationVo vo = new RiskExposureOperationVo(); | ||||
|  | 		super.toVo(vo); | ||||
|  | 
 | ||||
|  | 		vo.setId(this.getId()); | ||||
|  | 		vo.setRiskExposureId(this.getRiskExposureId()); | ||||
|  | 		vo.setRiskExposureAdjId(this.getRiskExposureAdjId()); | ||||
|  | 		vo.setRiskExposureType(this.getRiskExposureType()); | ||||
|  | 		vo.setFileCount(this.getFileCount()); | ||||
|  | 		vo.setRemarks(this.getRemarks()); | ||||
|  | 		vo.setRoleName(this.getRoleName()); | ||||
|  | 		vo.setFileName(this.getFileName()); | ||||
|  | 		vo.setCreatorOrg(this.getCreatorOrg()); | ||||
|  | 		vo.setOperation(this.getOperation()); | ||||
|  | 		return vo; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public String getId() { | ||||
|  | 		return id; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public void setId(String id) { | ||||
|  | 		this.id = id; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public String getRiskExposureId() { | ||||
|  | 		return riskExposureId; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public void setRiskExposureId(String riskExposureId) { | ||||
|  | 		this.riskExposureId = riskExposureId; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public String getRiskExposureAdjId() { | ||||
|  | 		return riskExposureAdjId; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public void setRiskExposureAdjId(String riskExposureAdjId) { | ||||
|  | 		this.riskExposureAdjId = riskExposureAdjId; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public String getRiskExposureType() { | ||||
|  | 		return riskExposureType; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public void setRiskExposureType(String riskExposureType) { | ||||
|  | 		this.riskExposureType = riskExposureType; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public Integer getFileCount() { | ||||
|  | 		return fileCount; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public void setFileCount(Integer fileCount) { | ||||
|  | 		this.fileCount = fileCount; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public String getRemarks() { | ||||
|  | 		return remarks; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public void setRemarks(String remarks) { | ||||
|  | 		this.remarks = remarks; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public String getRoleName() { | ||||
|  | 		return roleName; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public void setRoleName(String roleName) { | ||||
|  | 		this.roleName = roleName; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public String getFileName() { | ||||
|  | 		return fileName; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public void setFileName(String fileName) { | ||||
|  | 		this.fileName = fileName; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public String getCreatorOrg() { | ||||
|  | 		return creatorOrg; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public void setCreatorOrg(String creatorOrg) { | ||||
|  | 		this.creatorOrg = creatorOrg; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public String getOperation() { | ||||
|  | 		return operation; | ||||
|  | 	} | ||||
|  | 
 | ||||
|  | 	public void setOperation(String operation) { | ||||
|  | 		this.operation = operation; | ||||
|  | 	} | ||||
|  | } | ||||
| @ -0,0 +1,8 @@ | |||||
|  | package irbs.riskExposure.jpa.repository; | ||||
|  | 
 | ||||
|  | import io.sc.platform.orm.repository.DaoRepository; | ||||
|  | import irbs.riskExposure.jpa.entity.Customer; | ||||
|  | 
 | ||||
|  | public interface CustomerRepository extends DaoRepository<Customer, String> { | ||||
|  |     Customer findByCustNo(String custNo) throws Exception; | ||||
|  | } | ||||
| @ -0,0 +1,7 @@ | |||||
|  | package irbs.riskExposure.jpa.repository; | ||||
|  | 
 | ||||
|  | import io.sc.platform.orm.repository.DaoRepository; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposureOperation; | ||||
|  | 
 | ||||
|  | public interface RiskExposureOperationRepository extends DaoRepository<RiskExposureOperation, String> { | ||||
|  | } | ||||
| @ -0,0 +1,7 @@ | |||||
|  | package irbs.riskExposure.jpa.repository; | ||||
|  | 
 | ||||
|  | import io.sc.platform.orm.repository.DaoRepository; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposure; | ||||
|  | 
 | ||||
|  | public interface RiskExposureRepository extends DaoRepository<RiskExposure, String> { | ||||
|  | } | ||||
| @ -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; | ||||
|  |     } | ||||
|  | 
 | ||||
|  | } | ||||
| @ -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"; | ||||
|  | 
 | ||||
|  | } | ||||
| @ -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; | ||||
|  | 	} | ||||
|  | 	 | ||||
|  | } | ||||
| @ -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;	// 否决
 | ||||
|  | } | ||||
| @ -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 | ||||
|  | } | ||||
| @ -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; | ||||
|  | 	} | ||||
|  | } | ||||
| @ -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; | ||||
|  |     } | ||||
|  | } | ||||
| @ -0,0 +1,47 @@ | |||||
|  | package irbs.riskExposure.service; | ||||
|  | 
 | ||||
|  | import io.sc.platform.flowable.controller.support.ProcessProperties; | ||||
|  | import io.sc.platform.flowable.support.CompleteTaskResponse; | ||||
|  | import io.sc.platform.orm.service.DaoService; | ||||
|  | import io.sc.platform.orm.service.support.QueryParameter; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposure; | ||||
|  | import irbs.riskExposure.jpa.repository.RiskExposureRepository; | ||||
|  | import org.springframework.data.domain.Page; | ||||
|  | 
 | ||||
|  | public interface RiskExposureAdjustService extends DaoService<RiskExposure, String, RiskExposureRepository> { | ||||
|  |     Page<RiskExposure> queryPage(QueryParameter queryParameter) throws Exception; | ||||
|  | 
 | ||||
|  |     RiskExposure handmadeRiskExposure(String id) throws Exception; | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 提交流程 | ||||
|  |      * @param riskExposureId | ||||
|  |      * @param processProperties | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     void submit(String riskExposureId, ProcessProperties processProperties) throws Exception; | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 退回值发起人 | ||||
|  |      * @param riskExposureId | ||||
|  |      * @param processProperties | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     public void backStart(String riskExposureId, ProcessProperties processProperties) throws Exception; | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 审批通过 | ||||
|  |      * @param riskExposureId | ||||
|  |      * @param processProperties | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     public void approve(String riskExposureId, ProcessProperties processProperties) throws Exception; | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 流程拒绝 | ||||
|  |      * @param riskExposureId | ||||
|  |      * @param processProperties | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     public void reject(String riskExposureId, ProcessProperties processProperties) throws Exception; | ||||
|  | } | ||||
| @ -0,0 +1,23 @@ | |||||
|  | package irbs.riskExposure.service; | ||||
|  | 
 | ||||
|  | import io.sc.platform.flowable.support.ProcessTaskWrapper; | ||||
|  | import org.flowable.engine.runtime.ProcessInstance; | ||||
|  | 
 | ||||
|  | public interface RiskExposureFlowService { | ||||
|  |     /** | ||||
|  |      * 审批处理流程 | ||||
|  |      * @param category 流程类型 | ||||
|  |      * @param assignee 处理人 | ||||
|  |      * @param businessKey 业务主键 | ||||
|  |      * @param desc 描述 | ||||
|  |      */ | ||||
|  |     <T> ProcessInstance startProcess(String category, String assignee, String businessKey, String fronted, String desc, Class<T> clazz) throws Exception; | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 查询流程任务 | ||||
|  |      * @param procInstId | ||||
|  |      * @return | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     ProcessTaskWrapper findTaskByProcInstId(String procInstId) throws Exception; | ||||
|  | } | ||||
| @ -0,0 +1,17 @@ | |||||
|  | package irbs.riskExposure.service; | ||||
|  | 
 | ||||
|  | import io.sc.platform.flowable.controller.support.ProcessProperties; | ||||
|  | import io.sc.platform.orm.service.DaoService; | ||||
|  | import io.sc.platform.orm.service.support.QueryParameter; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposureOperation; | ||||
|  | import irbs.riskExposure.jpa.repository.RiskExposureOperationRepository; | ||||
|  | import org.springframework.data.domain.Page; | ||||
|  | 
 | ||||
|  | /** | ||||
|  |  * 流程处理日志 | ||||
|  |  * @author dhb | ||||
|  |  */ | ||||
|  | public interface RiskExposureOperationService extends DaoService<RiskExposureOperation, String, RiskExposureOperationRepository> { | ||||
|  | 
 | ||||
|  |     Page<RiskExposureOperation> queryPage(QueryParameter queryParameter) throws Exception; | ||||
|  | } | ||||
| @ -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; | ||||
|  | } | ||||
| @ -0,0 +1,47 @@ | |||||
|  | package irbs.riskExposure.service; | ||||
|  | 
 | ||||
|  | import io.sc.platform.flowable.controller.support.ProcessProperties; | ||||
|  | import io.sc.platform.flowable.support.CompleteTaskResponse; | ||||
|  | import io.sc.platform.orm.service.DaoService; | ||||
|  | import io.sc.platform.orm.service.support.QueryParameter; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposure; | ||||
|  | import irbs.riskExposure.jpa.repository.RiskExposureRepository; | ||||
|  | import org.springframework.data.domain.Page; | ||||
|  | 
 | ||||
|  | public interface RiskExposureService extends DaoService<RiskExposure, String, RiskExposureRepository> { | ||||
|  |     Page<RiskExposure> queryPage(QueryParameter queryParameter) throws Exception; | ||||
|  | 
 | ||||
|  |     RiskExposure handmadeRiskExposure(String id) throws Exception; | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 提交流程 | ||||
|  |      * @param riskExposureId | ||||
|  |      * @param processProperties | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     void submit(String riskExposureId, ProcessProperties processProperties) throws Exception; | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 退回值发起人 | ||||
|  |      * @param riskExposureId | ||||
|  |      * @param processProperties | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     public void backStart(String riskExposureId, ProcessProperties processProperties) throws Exception; | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 审批通过 | ||||
|  |      * @param riskExposureId | ||||
|  |      * @param processProperties | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     public void approve(String riskExposureId, ProcessProperties processProperties) throws Exception; | ||||
|  | 
 | ||||
|  |     /** | ||||
|  |      * 流程拒绝 | ||||
|  |      * @param riskExposureId | ||||
|  |      * @param processProperties | ||||
|  |      * @throws Exception | ||||
|  |      */ | ||||
|  |     public void reject(String riskExposureId, ProcessProperties processProperties) throws Exception; | ||||
|  | } | ||||
| @ -0,0 +1,144 @@ | |||||
|  | package irbs.riskExposure.service.impl; | ||||
|  | 
 | ||||
|  | import io.sc.platform.flowable.controller.support.ProcessProperties; | ||||
|  | import io.sc.platform.flowable.support.ProcessTaskWrapper; | ||||
|  | import io.sc.platform.orm.service.impl.DaoServiceImpl; | ||||
|  | import io.sc.platform.orm.service.support.QueryParameter; | ||||
|  | import io.sc.platform.security.util.SecurityUtil; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposure; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposureOperation; | ||||
|  | import irbs.riskExposure.jpa.repository.RiskExposureRepository; | ||||
|  | import irbs.riskExposure.jpa.support.ProcessConstant; | ||||
|  | import irbs.riskExposure.jpa.support.RiskExposureProcessOperate; | ||||
|  | import irbs.riskExposure.jpa.support.RiskExposureProcessStatus; | ||||
|  | import irbs.riskExposure.service.RiskExposureAdjustService; | ||||
|  | import irbs.riskExposure.service.RiskExposureFlowService; | ||||
|  | import irbs.riskExposure.service.RiskExposureOperationService; | ||||
|  | import org.flowable.engine.runtime.ProcessInstance; | ||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||
|  | import org.springframework.data.domain.Page; | ||||
|  | import org.springframework.stereotype.Service; | ||||
|  | 
 | ||||
|  | import java.util.Date; | ||||
|  | import java.util.Optional; | ||||
|  | 
 | ||||
|  | @Service("riskExposureAdjustService") | ||||
|  | public class RiskExposureAdjustServiceImpl extends DaoServiceImpl<RiskExposure, String, RiskExposureRepository> implements RiskExposureAdjustService { | ||||
|  | 
 | ||||
|  |     @Autowired | ||||
|  |     private RiskExposureOperationService riskExposureOperationService; | ||||
|  |     @Autowired | ||||
|  |     private RiskExposureFlowService riskExposureFlowService; | ||||
|  |     @Override | ||||
|  |     public Page<RiskExposure> queryPage(QueryParameter queryParameter) throws Exception { | ||||
|  |         Page<RiskExposure> page = this.query(queryParameter); | ||||
|  |         if (null != page.getContent() && page.getContent().size() > 0) { | ||||
|  |             for (RiskExposure re: page.getContent()) { | ||||
|  |                 if (null!=re.getProcessInstanceId() && !"".equals(re.getProcessInstanceId())) { | ||||
|  |                     ProcessTaskWrapper ptw = riskExposureFlowService.findTaskByProcInstId(re.getProcessInstanceId()); | ||||
|  |                     if (ptw!=null && null!=ptw.getId()) { | ||||
|  |                         re.setTaskId(ptw.getId()); | ||||
|  |                         re.setCurrentAssignee(ptw.getAssignee()); | ||||
|  |                     } | ||||
|  |                 } | ||||
|  |             } | ||||
|  |         } | ||||
|  |         return page; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     public RiskExposure handmadeRiskExposure(String id) throws Exception { | ||||
|  |         Optional<RiskExposure> optional = repository.findById(id); | ||||
|  |         if(optional.isPresent()){ | ||||
|  |             RiskExposure riskExposure = optional.get(); | ||||
|  |             riskExposure.setDataStatus("1");//发起风险暴露分类后,设置发起状态为已发起
 | ||||
|  |             riskExposure.setProcessStatus(RiskExposureProcessStatus.TO_BE_SUBMITTED.name());//发起风险暴露分类后,流程状态为待发起
 | ||||
|  |             ProcessInstance processInstance = riskExposureFlowService.startProcess( | ||||
|  |                     ProcessConstant.DEFAULT_CUSTOMER_F, | ||||
|  |                     SecurityUtil.getLoginName(), | ||||
|  |                     riskExposure.getId(), | ||||
|  |                     "app.irbs.frontend:./default/manual/defaultSteps", | ||||
|  |                     "客户名称:" + riskExposure.getCustName(), | ||||
|  |                     String.class | ||||
|  |             ); | ||||
|  |             riskExposure.setProcessInstanceId(processInstance.getId()); | ||||
|  |             getRepository().save(riskExposure); | ||||
|  |             return riskExposure; | ||||
|  |         } | ||||
|  |         return null; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     public void submit(String riskExposureId, ProcessProperties processProperties) throws Exception { | ||||
|  |         RiskExposure riskExposure = this.findById(riskExposureId); | ||||
|  | 
 | ||||
|  |         RiskExposureOperation riskExposureOperation = new RiskExposureOperation(); | ||||
|  |         riskExposureOperation.setRiskExposureId(riskExposure.getId()); | ||||
|  |         riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString()); | ||||
|  |         if(processProperties.getData().get("manResult") != null){ | ||||
|  |             riskExposureOperation.setRiskExposureType(processProperties.getData().get("manResult").toString()); | ||||
|  |             riskExposure.setManResult(processProperties.getData().get("manResult").toString()); | ||||
|  |         } | ||||
|  |         riskExposureOperation.setOperation(RiskExposureProcessOperate.SUBMIT.getCode()); | ||||
|  |         riskExposureOperationService.getRepository().save(riskExposureOperation); | ||||
|  | 
 | ||||
|  |         riskExposure.setProcessStatus(RiskExposureProcessStatus.TO_BE_CHECKED.name()); | ||||
|  |         if (processProperties.getTransientVariables().containsKey("assignee") && processProperties.getTransientVariables().get("assignee")!=null) { | ||||
|  |             riskExposure.setCurrentAssignee (processProperties.getTransientVariables().get("assignee").toString()); | ||||
|  |         } | ||||
|  |         repository.save(riskExposure); | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     public void backStart(String riskExposureId, ProcessProperties processProperties) throws Exception { | ||||
|  |         RiskExposure riskExposure = this.findById(riskExposureId); | ||||
|  |         RiskExposureOperation riskExposureOperation = new RiskExposureOperation(); | ||||
|  |         riskExposureOperation.setRiskExposureId(riskExposure.getId()); | ||||
|  |         riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString()); | ||||
|  |         riskExposureOperation.setOperation(RiskExposureProcessOperate.BACK.getCode()); | ||||
|  |         riskExposureOperationService.getRepository().save(riskExposureOperation); | ||||
|  | 
 | ||||
|  |         riskExposure.setProcessStatus(RiskExposureProcessStatus.RETURNED.name()); | ||||
|  |         if (processProperties.getTransientVariables().containsKey("assignee") && processProperties.getTransientVariables().get("assignee")!=null) { | ||||
|  |             riskExposure.setCurrentAssignee (processProperties.getTransientVariables().get("assignee").toString()); | ||||
|  |         } | ||||
|  |         repository.save(riskExposure); | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     public void approve(String riskExposureId, ProcessProperties processProperties) throws Exception { | ||||
|  |         RiskExposure riskExposure = this.findById(riskExposureId); | ||||
|  |         RiskExposureOperation riskExposureOperation = new RiskExposureOperation(); | ||||
|  |         riskExposureOperation.setRiskExposureId(riskExposure.getId()); | ||||
|  |         riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString()); | ||||
|  |         riskExposureOperation.setOperation(RiskExposureProcessOperate.APPROVE.getCode()); | ||||
|  |         riskExposureOperationService.getRepository().save(riskExposureOperation); | ||||
|  | 
 | ||||
|  |         if (RiskExposureProcessStatus.TO_BE_CHECKED.name().equals(riskExposure.getProcessStatus())) { | ||||
|  |             riskExposure.setProcessStatus(RiskExposureProcessStatus.COMPLETED_PASS.name()); | ||||
|  |             riskExposure.setCurrentAssignee(""); | ||||
|  |             riskExposure.setIsValid("1"); | ||||
|  |             riskExposure.setFinishDate(new Date()); | ||||
|  |             riskExposure.setFinalResult(riskExposure.getManResult()); | ||||
|  |         } | ||||
|  |         this.getRepository().save(riskExposure); | ||||
|  | 
 | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     public void reject(String riskExposureId, ProcessProperties processProperties) throws Exception { | ||||
|  |         RiskExposure riskExposure = this.findById(riskExposureId); | ||||
|  |         RiskExposureOperation riskExposureOperation = new RiskExposureOperation(); | ||||
|  |         riskExposureOperation.setRiskExposureId(riskExposure.getId()); | ||||
|  |         riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString()); | ||||
|  |         riskExposureOperation.setOperation(RiskExposureProcessOperate.REJECT.getCode()); | ||||
|  |         riskExposureOperationService.getRepository().save(riskExposureOperation); | ||||
|  | 
 | ||||
|  |         if (RiskExposureProcessStatus.TO_BE_CHECKED.name().equals(riskExposure.getProcessStatus())) { | ||||
|  |             riskExposure.setProcessStatus(RiskExposureProcessStatus.COMPLETED_REJECT.name()); | ||||
|  |             riskExposure.setIsValid("0"); | ||||
|  |             riskExposure.setCurrentAssignee(""); | ||||
|  |         } | ||||
|  |         this.getRepository().save(riskExposure); | ||||
|  |     } | ||||
|  | } | ||||
| @ -0,0 +1,48 @@ | |||||
|  | package irbs.riskExposure.service.impl; | ||||
|  | 
 | ||||
|  | import io.sc.platform.flowable.service.ProcessOperationService; | ||||
|  | import io.sc.platform.flowable.service.ProcessQueryService; | ||||
|  | import io.sc.platform.flowable.support.ProcessTaskWrapper; | ||||
|  | import io.sc.platform.security.util.SecurityUtil; | ||||
|  | import irbs.riskExposure.service.RiskExposureFlowService; | ||||
|  | import org.flowable.engine.runtime.ProcessInstance; | ||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||
|  | import org.springframework.stereotype.Service; | ||||
|  | 
 | ||||
|  | import java.util.HashMap; | ||||
|  | import java.util.List; | ||||
|  | import java.util.Map; | ||||
|  | import java.util.stream.Collectors; | ||||
|  | 
 | ||||
|  | @Service | ||||
|  | public class RiskExposureFlowServiceImpl implements RiskExposureFlowService { | ||||
|  |     @Autowired | ||||
|  |     private ProcessOperationService processOperationService; | ||||
|  |     @Autowired | ||||
|  |     private ProcessQueryService processQueryService; | ||||
|  |     @Override | ||||
|  |     public <T> ProcessInstance startProcess(String category, String assignee, String businessKey, String fronted, String desc, Class<T> clazz) throws Exception { | ||||
|  |         Map<String, Object> transientVariables = new HashMap<>(); | ||||
|  |         transientVariables.put("assignee", assignee); | ||||
|  |         transientVariables.put("desc", desc); | ||||
|  |         return processOperationService.startProcessByKey(category, businessKey, null, transientVariables); | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     public ProcessTaskWrapper findTaskByProcInstId(String procInstId) throws Exception { | ||||
|  |         ProcessTaskWrapper taskWrapper = null; | ||||
|  |         List<ProcessTaskWrapper> list = processQueryService.queryProcessTasks(procInstId, null); | ||||
|  |         if (null != list && list.size() > 1) { | ||||
|  |             // 同一个流程实例查找出多个任务则为多实例任务,还需再根据任务处理人匹配。
 | ||||
|  |             List<ProcessTaskWrapper> userTaskList = list.stream().filter(task-> SecurityUtil.getLoginName().equals(task.getAssignee())).collect(Collectors.toList()); | ||||
|  |             if (null !=userTaskList && userTaskList.size() == 1) { | ||||
|  |                 // 根据任务处理人匹配到一条数据时返回,未匹配到或者匹配出多条数据,返回空。
 | ||||
|  |                 taskWrapper = userTaskList.get(0); | ||||
|  |             } | ||||
|  |         } else if (null != list && list.size() == 1) { | ||||
|  |             // 根据流程实例只查找出一条任务,直接返回。
 | ||||
|  |             taskWrapper = list.get(0); | ||||
|  |         } | ||||
|  |         return taskWrapper; | ||||
|  |     } | ||||
|  | } | ||||
| @ -0,0 +1,17 @@ | |||||
|  | package irbs.riskExposure.service.impl; | ||||
|  | 
 | ||||
|  | import io.sc.platform.orm.service.impl.DaoServiceImpl; | ||||
|  | import io.sc.platform.orm.service.support.QueryParameter; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposureOperation; | ||||
|  | import irbs.riskExposure.jpa.repository.RiskExposureOperationRepository; | ||||
|  | import irbs.riskExposure.service.RiskExposureOperationService; | ||||
|  | import org.springframework.data.domain.Page; | ||||
|  | import org.springframework.stereotype.Service; | ||||
|  | 
 | ||||
|  | @Service("riskExposureOperationService") | ||||
|  | public class RiskExposureOperationServiceImpl extends DaoServiceImpl<RiskExposureOperation, String, RiskExposureOperationRepository> implements RiskExposureOperationService { | ||||
|  |     @Override | ||||
|  |     public Page<RiskExposureOperation> queryPage(QueryParameter queryParameter) throws Exception { | ||||
|  |         return this.query(queryParameter); | ||||
|  |     } | ||||
|  | } | ||||
| @ -0,0 +1,88 @@ | |||||
|  | package irbs.riskExposure.service.impl; | ||||
|  | 
 | ||||
|  | import io.sc.platform.flowable.controller.support.ProcessProperties; | ||||
|  | import io.sc.platform.flowable.service.ProcessOperationService; | ||||
|  | import io.sc.platform.flowable.support.CompleteTaskException; | ||||
|  | import io.sc.platform.flowable.support.CompleteTaskResponse; | ||||
|  | import irbs.riskExposure.jpa.support.GoBackType; | ||||
|  | import irbs.riskExposure.service.RiskExposureAdjustService; | ||||
|  | import irbs.riskExposure.service.RiskExposureProcessService; | ||||
|  | import irbs.riskExposure.service.RiskExposureService; | ||||
|  | import org.flowable.engine.ProcessEngine; | ||||
|  | import org.flowable.engine.runtime.ProcessInstance; | ||||
|  | import org.flowable.task.api.Task; | ||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||
|  | import org.springframework.stereotype.Service; | ||||
|  | import org.springframework.transaction.annotation.Transactional; | ||||
|  | import org.springframework.transaction.interceptor.TransactionAspectSupport; | ||||
|  | 
 | ||||
|  | import java.util.Map; | ||||
|  | 
 | ||||
|  | @Service("riskExposureProcessService") | ||||
|  | public class RiskExposureProcessServiceImpl implements RiskExposureProcessService { | ||||
|  | 
 | ||||
|  |     @Autowired | ||||
|  |     private ProcessOperationService processOperationService; | ||||
|  |     @Autowired | ||||
|  |     private ProcessEngine processEngine; | ||||
|  |     @Autowired | ||||
|  |     private RiskExposureService riskExposureService; | ||||
|  |     @Autowired | ||||
|  |     private RiskExposureAdjustService riskExposureAdjustService; | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     @Transactional | ||||
|  |     public CompleteTaskResponse submitRiskExposure(String taskId, ProcessProperties processProperties) throws Exception { | ||||
|  |         try { | ||||
|  |             Task task = processEngine.getTaskService().createTaskQuery().taskId(taskId).singleResult(); | ||||
|  |             Map<String, Object> transientVariables = processProperties.getTransientVariables(); | ||||
|  |             Integer opaVal = (Integer) transientVariables.get("opaVal"); | ||||
|  |             ProcessInstance instance = processEngine.getRuntimeService().createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); | ||||
|  |             processOperationService.completeTask(taskId, processProperties.getVariables(), transientVariables); | ||||
|  | 
 | ||||
|  |             if(opaVal == GoBackType.SUBMIT.code() || opaVal==GoBackType.UPPER.code() || opaVal==GoBackType.UPPER_1.code()){ | ||||
|  |                 riskExposureService.submit(instance.getBusinessKey(), processProperties); | ||||
|  |             } else if(opaVal==GoBackType.BACK_START.code()){ | ||||
|  |                 riskExposureService.backStart(instance.getBusinessKey(), processProperties); | ||||
|  |             } else if(opaVal==GoBackType.APPROVE.code()){ | ||||
|  |                 riskExposureService.approve(instance.getBusinessKey(), processProperties); | ||||
|  |             } else if(opaVal==GoBackType.REJECT.code()){ | ||||
|  |                 riskExposureService.reject(instance.getBusinessKey(), processProperties); | ||||
|  |             } | ||||
|  |             return new CompleteTaskResponse(); | ||||
|  |         } catch (CompleteTaskException exception) { | ||||
|  |             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | ||||
|  |             return CompleteTaskResponse.fromAssigneesJson(exception.getMessage()); | ||||
|  |         } catch (Exception exception) { | ||||
|  |             throw exception; | ||||
|  |         } | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     @Transactional | ||||
|  |     public CompleteTaskResponse submitRiskExposureAdjust(String taskId, ProcessProperties processProperties) throws Exception { | ||||
|  |         try { | ||||
|  |             Task task = processEngine.getTaskService().createTaskQuery().taskId(taskId).singleResult(); | ||||
|  |             Map<String, Object> transientVariables = processProperties.getTransientVariables(); | ||||
|  |             Integer opaVal = (Integer) transientVariables.get("opaVal"); | ||||
|  |             ProcessInstance instance = processEngine.getRuntimeService().createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult(); | ||||
|  |             processOperationService.completeTask(taskId, processProperties.getVariables(), transientVariables); | ||||
|  | 
 | ||||
|  |             if(opaVal == GoBackType.SUBMIT.code() || opaVal==GoBackType.UPPER.code() || opaVal==GoBackType.UPPER_1.code()){ | ||||
|  |                 riskExposureAdjustService.submit(instance.getBusinessKey(), processProperties); | ||||
|  |             } else if(opaVal==GoBackType.BACK_START.code()){ | ||||
|  |                 riskExposureAdjustService.backStart(instance.getBusinessKey(), processProperties); | ||||
|  |             } else if(opaVal==GoBackType.APPROVE.code()){ | ||||
|  |                 riskExposureAdjustService.approve(instance.getBusinessKey(), processProperties); | ||||
|  |             } else if(opaVal==GoBackType.REJECT.code()){ | ||||
|  |                 riskExposureAdjustService.reject(instance.getBusinessKey(), processProperties); | ||||
|  |             } | ||||
|  |             return new CompleteTaskResponse(); | ||||
|  |         } catch (CompleteTaskException exception) { | ||||
|  |             TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); | ||||
|  |             return CompleteTaskResponse.fromAssigneesJson(exception.getMessage()); | ||||
|  |         } catch (Exception exception) { | ||||
|  |             throw exception; | ||||
|  |         } | ||||
|  |     } | ||||
|  | } | ||||
| @ -0,0 +1,145 @@ | |||||
|  | package irbs.riskExposure.service.impl; | ||||
|  | 
 | ||||
|  | import io.sc.platform.flowable.controller.support.ProcessProperties; | ||||
|  | import io.sc.platform.flowable.support.ProcessTaskWrapper; | ||||
|  | import io.sc.platform.orm.service.impl.DaoServiceImpl; | ||||
|  | import io.sc.platform.orm.service.support.QueryParameter; | ||||
|  | import io.sc.platform.security.util.SecurityUtil; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposure; | ||||
|  | import irbs.riskExposure.jpa.entity.RiskExposureOperation; | ||||
|  | import irbs.riskExposure.jpa.repository.RiskExposureRepository; | ||||
|  | import irbs.riskExposure.jpa.support.ProcessConstant; | ||||
|  | import irbs.riskExposure.jpa.support.RiskExposureProcessOperate; | ||||
|  | import irbs.riskExposure.jpa.support.RiskExposureProcessStatus; | ||||
|  | import irbs.riskExposure.service.RiskExposureFlowService; | ||||
|  | import irbs.riskExposure.service.RiskExposureOperationService; | ||||
|  | import irbs.riskExposure.service.RiskExposureProcessService; | ||||
|  | import irbs.riskExposure.service.RiskExposureService; | ||||
|  | import org.flowable.engine.runtime.ProcessInstance; | ||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||
|  | import org.springframework.data.domain.Page; | ||||
|  | import org.springframework.stereotype.Service; | ||||
|  | 
 | ||||
|  | import java.util.Date; | ||||
|  | import java.util.Optional; | ||||
|  | 
 | ||||
|  | @Service("riskExposureService") | ||||
|  | public class RiskExposureServiceImpl extends DaoServiceImpl<RiskExposure, String, RiskExposureRepository> implements RiskExposureService { | ||||
|  | 
 | ||||
|  |     @Autowired | ||||
|  |     private RiskExposureOperationService riskExposureOperationService; | ||||
|  |     @Autowired | ||||
|  |     private RiskExposureFlowService riskExposureFlowService; | ||||
|  |     @Override | ||||
|  |     public Page<RiskExposure> queryPage(QueryParameter queryParameter) throws Exception { | ||||
|  |         Page<RiskExposure> page = this.query(queryParameter); | ||||
|  |         if (null != page.getContent() && page.getContent().size() > 0) { | ||||
|  |             for (RiskExposure re: page.getContent()) { | ||||
|  |                 if (null!=re.getProcessInstanceId() && !"".equals(re.getProcessInstanceId())) { | ||||
|  |                     ProcessTaskWrapper ptw = riskExposureFlowService.findTaskByProcInstId(re.getProcessInstanceId()); | ||||
|  |                     if (ptw!=null && null!=ptw.getId()) { | ||||
|  |                         re.setTaskId(ptw.getId()); | ||||
|  |                         re.setCurrentAssignee(ptw.getAssignee()); | ||||
|  |                     } | ||||
|  |                 } | ||||
|  |             } | ||||
|  |         } | ||||
|  |         return page; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     public RiskExposure handmadeRiskExposure(String id) throws Exception { | ||||
|  |         Optional<RiskExposure> optional = repository.findById(id); | ||||
|  |         if(optional.isPresent()){ | ||||
|  |             RiskExposure riskExposure = optional.get(); | ||||
|  |             riskExposure.setDataStatus("1");//发起风险暴露分类后,设置发起状态为已发起
 | ||||
|  |             riskExposure.setProcessStatus(RiskExposureProcessStatus.TO_BE_SUBMITTED.name());//发起风险暴露分类后,流程状态为待发起
 | ||||
|  |             ProcessInstance processInstance = riskExposureFlowService.startProcess( | ||||
|  |                     ProcessConstant.DEFAULT_CUSTOMER_F, | ||||
|  |                     SecurityUtil.getLoginName(), | ||||
|  |                     riskExposure.getId(), | ||||
|  |                     "app.irbs.frontend:./default/manual/defaultSteps", | ||||
|  |                     "客户名称:" + riskExposure.getCustName(), | ||||
|  |                     String.class | ||||
|  |             ); | ||||
|  |             riskExposure.setProcessInstanceId(processInstance.getId()); | ||||
|  |             getRepository().save(riskExposure); | ||||
|  |             return riskExposure; | ||||
|  |         } | ||||
|  |         return null; | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     public void submit(String riskExposureId, ProcessProperties processProperties) throws Exception { | ||||
|  |         RiskExposure riskExposure = this.findById(riskExposureId); | ||||
|  | 
 | ||||
|  |         RiskExposureOperation riskExposureOperation = new RiskExposureOperation(); | ||||
|  |         riskExposureOperation.setRiskExposureId(riskExposure.getId()); | ||||
|  |         riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString()); | ||||
|  |         if(processProperties.getData().get("manResult") != null){ | ||||
|  |             riskExposureOperation.setRiskExposureType(processProperties.getData().get("manResult").toString()); | ||||
|  |             riskExposure.setManResult(processProperties.getData().get("manResult").toString()); | ||||
|  |         } | ||||
|  |         riskExposureOperation.setOperation(RiskExposureProcessOperate.SUBMIT.getCode()); | ||||
|  |         riskExposureOperationService.getRepository().save(riskExposureOperation); | ||||
|  | 
 | ||||
|  |         riskExposure.setProcessStatus(RiskExposureProcessStatus.TO_BE_CHECKED.name()); | ||||
|  |         if (processProperties.getTransientVariables().containsKey("assignee") && processProperties.getTransientVariables().get("assignee")!=null) { | ||||
|  |             riskExposure.setCurrentAssignee (processProperties.getTransientVariables().get("assignee").toString()); | ||||
|  |         } | ||||
|  |         repository.save(riskExposure); | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     public void backStart(String riskExposureId, ProcessProperties processProperties) throws Exception { | ||||
|  |         RiskExposure riskExposure = this.findById(riskExposureId); | ||||
|  |         RiskExposureOperation riskExposureOperation = new RiskExposureOperation(); | ||||
|  |         riskExposureOperation.setRiskExposureId(riskExposure.getId()); | ||||
|  |         riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString()); | ||||
|  |         riskExposureOperation.setOperation(RiskExposureProcessOperate.BACK.getCode()); | ||||
|  |         riskExposureOperationService.getRepository().save(riskExposureOperation); | ||||
|  | 
 | ||||
|  |         riskExposure.setProcessStatus(RiskExposureProcessStatus.RETURNED.name()); | ||||
|  |         if (processProperties.getTransientVariables().containsKey("assignee") && processProperties.getTransientVariables().get("assignee")!=null) { | ||||
|  |             riskExposure.setCurrentAssignee (processProperties.getTransientVariables().get("assignee").toString()); | ||||
|  |         } | ||||
|  |         repository.save(riskExposure); | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     public void approve(String riskExposureId, ProcessProperties processProperties) throws Exception { | ||||
|  |         RiskExposure riskExposure = this.findById(riskExposureId); | ||||
|  |         RiskExposureOperation riskExposureOperation = new RiskExposureOperation(); | ||||
|  |         riskExposureOperation.setRiskExposureId(riskExposure.getId()); | ||||
|  |         riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString()); | ||||
|  |         riskExposureOperation.setOperation(RiskExposureProcessOperate.APPROVE.getCode()); | ||||
|  |         riskExposureOperationService.getRepository().save(riskExposureOperation); | ||||
|  | 
 | ||||
|  |         if (RiskExposureProcessStatus.TO_BE_CHECKED.name().equals(riskExposure.getProcessStatus())) { | ||||
|  |             riskExposure.setProcessStatus(RiskExposureProcessStatus.COMPLETED_PASS.name()); | ||||
|  |             riskExposure.setCurrentAssignee(""); | ||||
|  |             riskExposure.setIsValid("1"); | ||||
|  |             riskExposure.setFinishDate(new Date()); | ||||
|  |             riskExposure.setFinalResult(riskExposure.getManResult()); | ||||
|  |         } | ||||
|  |         this.getRepository().save(riskExposure); | ||||
|  | 
 | ||||
|  |     } | ||||
|  | 
 | ||||
|  |     @Override | ||||
|  |     public void reject(String riskExposureId, ProcessProperties processProperties) throws Exception { | ||||
|  |         RiskExposure riskExposure = this.findById(riskExposureId); | ||||
|  |         RiskExposureOperation riskExposureOperation = new RiskExposureOperation(); | ||||
|  |         riskExposureOperation.setRiskExposureId(riskExposure.getId()); | ||||
|  |         riskExposureOperation.setRemarks(processProperties.getData().get("remarks").toString()); | ||||
|  |         riskExposureOperation.setOperation(RiskExposureProcessOperate.REJECT.getCode()); | ||||
|  |         riskExposureOperationService.getRepository().save(riskExposureOperation); | ||||
|  | 
 | ||||
|  |         if (RiskExposureProcessStatus.TO_BE_CHECKED.name().equals(riskExposure.getProcessStatus())) { | ||||
|  |             riskExposure.setProcessStatus(RiskExposureProcessStatus.COMPLETED_REJECT.name()); | ||||
|  |             riskExposure.setIsValid("0"); | ||||
|  |             riskExposure.setCurrentAssignee(""); | ||||
|  |         } | ||||
|  |         this.getRepository().save(riskExposure); | ||||
|  |     } | ||||
|  | } | ||||
| @ -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; | ||||
|  |     } | ||||
|  | } | ||||
| @ -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" | ||||
|  |     ] | ||||
|  |   } | ||||
|  | ] | ||||
|  | */ | ||||
| @ -0,0 +1,16 @@ | |||||
|  | /* | ||||
|  |  * 自动组件扫描插件配置 | ||||
|  |  * 功能: 该插件配置为框架提供自动扫描组件的包名,配置的包名将会自动被 spring 进行扫描 | ||||
|  |  * 使用说明: | ||||
|  |  *     includes: 包含自动扫描的包名列表 | ||||
|  |  *     excludes: 排除自动扫描的包名列表 | ||||
|  |  * 注意: 当一个包名同时存在于 includes 和 excludes 中, excludes 优先, 即该包不会被自动扫描 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | { | ||||
|  |   "includes":[ | ||||
|  |     "irbs.riskExposure.controller", | ||||
|  |     "irbs.riskExposure.service.impl" | ||||
|  |   ], | ||||
|  |   "excludes":[] | ||||
|  | } | ||||
| @ -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} | ||||
|  | ] | ||||
|  | */ | ||||
| @ -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" | ||||
|  |   } | ||||
|  | ] | ||||
|  | */ | ||||
| @ -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" | ||||
|  |     ] | ||||
|  |   } | ||||
|  | ] | ||||
| @ -0,0 +1,16 @@ | |||||
|  | /* | ||||
|  |  * 国际化消息源插件配置 | ||||
|  |  * 功能: 该插件配置为框架提供国际化消息资源 | ||||
|  |  * 使用说明: | ||||
|  |  *     includes: 包含国际化消息资源列表 | ||||
|  |  *     excludes: 排除国际化消息资源列表 | ||||
|  |  * 注意: 当一个包名同时存在于 includes 和 excludes 中, excludes 优先, 即该包不会被自动扫描 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | 
 | ||||
|  | { | ||||
|  |   "includes":[ | ||||
|  |     "irbs/riskExposure/i18n/messages" | ||||
|  |   ], | ||||
|  |   "excludes":[] | ||||
|  | } | ||||
| @ -0,0 +1,15 @@ | |||||
|  | /* | ||||
|  |  * p6spy 插件配置 | ||||
|  |  * 功能: 该插件配置为框架提供 p6spy 配置 | ||||
|  |  * 使用说明: | ||||
|  |  *     ignoredPatterns: 忽略显示 jdbc 输出信息正则表达式列表 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | /* 以下示例将不显示 p6spy 输出的 commit */ | ||||
|  | /* | ||||
|  | { | ||||
|  | 	"ignoredPatterns":[ | ||||
|  | 		"commit" | ||||
|  | 	] | ||||
|  | } | ||||
|  | */ | ||||
| @ -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}" | ||||
|  | 				} | ||||
|  | 			} | ||||
|  | ] | ||||
|  | */ | ||||
| @ -0,0 +1,16 @@ | |||||
|  | /* | ||||
|  |  * 自动 JPA 扫描插件配置 | ||||
|  |  * 功能: 该插件配置为框架提供自动扫描 JPA 组件的包名 | ||||
|  |  * 使用说明: | ||||
|  |  *     includes: 包含自动扫描的包名成列表 | ||||
|  |  *     excludes: 排除自动扫描的包名成列表 | ||||
|  |  * 注意: 当一个包名同时存在于 includes 和 excludes 中, excludes 优先, 即该包不会被自动扫描 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | { | ||||
|  |   "includes":[ | ||||
|  |     "irbs.riskExposure.jpa.entity", | ||||
|  |     "irbs.riskExposure.jpa.repository" | ||||
|  |   ], | ||||
|  |   "excludes":[] | ||||
|  | } | ||||
| @ -0,0 +1,20 @@ | |||||
|  | /* | ||||
|  |  * 自动重启属性插件配置 | ||||
|  |  * 功能: 当配置的属性发生变化时,系统会自动重启(如果应用运行在独立的 web 容器中时, 需手工重启) | ||||
|  |  * 使用说明: | ||||
|  |  *     匹配规则: startWith | ||||
|  |  *     container: 在容器中运行时需要重启的属性列表 | ||||
|  |  *     jar: 通过 jar 直接运行时需要重启的属性列表 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | /* 示例 */ | ||||
|  | /* | ||||
|  | { | ||||
|  |   "container":[ | ||||
|  |     "spring.security." | ||||
|  |   ], | ||||
|  |   "jar": [ | ||||
|  |     "spring.security." | ||||
|  |   ] | ||||
|  | } | ||||
|  | */ | ||||
| @ -0,0 +1,15 @@ | |||||
|  | /* | ||||
|  |  * 认证插件配置 | ||||
|  |  * 功能: 该插件配置为框架提供不对某些资源进行认证的功能 | ||||
|  |  * 使用说明: | ||||
|  |  *     permitPatterns	: 不进行安全认证检查的 url 模式, 采用 ant path 格式配置 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | /* 示例 */ | ||||
|  | /* | ||||
|  | { | ||||
|  | 	"permitPatterns":[ | ||||
|  | 		"/io.sc.platform.core/**" | ||||
|  | 	] | ||||
|  | } | ||||
|  | */ | ||||
| @ -0,0 +1,19 @@ | |||||
|  | /** | ||||
|  |  * swagger 配置 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | /* 示例 */ | ||||
|  | /* | ||||
|  | [ | ||||
|  | 	{ | ||||
|  | 		"groupName" : "io.sc.platform.mvc", | ||||
|  | 		"title" : "平台 MVC", | ||||
|  | 		"description": "平台 MVC 文档", | ||||
|  | 		"termsOfServiceUrl" : "", | ||||
|  | 		"version": "1.0", | ||||
|  | 		"basePackages":[ | ||||
|  | 			"io.sc.platform.mvc.controller" | ||||
|  | 		] | ||||
|  | 	} | ||||
|  | ] | ||||
|  | */ | ||||
| @ -0,0 +1,14 @@ | |||||
|  | /* | ||||
|  |  * 系统属性插件配置 | ||||
|  |  * 功能: 该插件配置为框架提供在启动时自动注册系统属性功能(执行 System.setProperty()) | ||||
|  |  * 使用说明: | ||||
|  |  *     key		: 属性名 | ||||
|  |  *     value	: 属性值 | ||||
|  |  */ | ||||
|  | 
 | ||||
|  | /* 示例 */ | ||||
|  | /* | ||||
|  | { | ||||
|  | 	"h2.dbname.default" : "DB_PLATFORM" | ||||
|  | } | ||||
|  | */ | ||||
| @ -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 | ||||
| @ -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 | ||||
| @ -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 | ||||
| @ -0,0 +1,47 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||
|  | <databaseChangeLog | ||||
|  |     xmlns="http://www.liquibase.org/xml/ns/dbchangelog" | ||||
|  |     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|  |     xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" | ||||
|  |     xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd | ||||
|  |     http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"> | ||||
|  | 
 | ||||
|  |     <changeSet id="20240327_RISKEXPOSURE_DDL" author="platform"> | ||||
|  |         <!-- 风险暴露分类表 --> | ||||
|  |         <createTable tableName="P_IRS_RISK_EXPOSURE" remarks="风险暴露分类表"> | ||||
|  |             <column name="ID_" type="java.sql.Types.VARCHAR(36)" remarks="主键ID"> | ||||
|  |                 <constraints primaryKey="true"/> | ||||
|  |             </column> | ||||
|  |             <column name="BUSINESS_NO" type="java.sql.Types.VARCHAR(40)" remarks="业务编号"/> | ||||
|  |             <column name="PRODUCT_TYPE" type="java.sql.Types.VARCHAR(100)" remarks="产品类型"/> | ||||
|  |             <column name="CUST_NO" type="java.sql.Types.VARCHAR(40)" remarks="客户编号"/> | ||||
|  |             <column name="CUST_NAME" type="java.sql.Types.VARCHAR(200)" remarks="客户名称"/> | ||||
|  |             <column name="START_WAY" type="java.sql.Types.VARCHAR(100)" remarks="发起方式"/> | ||||
|  |             <column name="IS_NEED_OPERATE" type="java.sql.Types.VARCHAR(10)" remarks="是否需人工分类"/> | ||||
|  |             <column name="ADJUST_END_DATE" type="DATETIME" remarks="调整截止日期"/> | ||||
|  |             <column name="IS_ADJUSTED" type="java.sql.Types.VARCHAR(10)" remarks="是否已调整"/> | ||||
|  |             <column name="ADJUST_REASON" type="java.sql.Types.VARCHAR(1000)" remarks="调整原因"/> | ||||
|  |             <column name="ADJUST_INVALID_DATE" type="DATETIME" remarks="调整的失效日期"/> | ||||
|  |             <column name="FINISH_DATE" type="DATETIME" remarks="完成时间"/> | ||||
|  |             <column name="SYS_RESULT" type="java.sql.Types.VARCHAR(100)" remarks="系统分类结果"/> | ||||
|  |             <column name="MAN_RESULT" type="java.sql.Types.VARCHAR(100)" remarks="人工分类结果"/> | ||||
|  |             <column name="FINAL_RESULT" type="java.sql.Types.VARCHAR(100)" remarks="最终分类结果"/> | ||||
|  |             <column name="IS_VALID" type="java.sql.Types.VARCHAR(20)" remarks="是否生效"/> | ||||
|  |             <column name="PROCESS_INSTANCE_ID" type="java.sql.Types.VARCHAR(100)" remarks="流程实例ID"/> | ||||
|  |             <column name="PROCESS_STATUS" type="java.sql.Types.VARCHAR(100)" remarks="流程状态"/> | ||||
|  |             <column name="DATA_STATUS" type="java.sql.Types.VARCHAR(100)" remarks="数据状态"/> | ||||
|  |             <column name="MANAGER_NAME" type="java.sql.Types.VARCHAR(100)" remarks="客户经理名称"/> | ||||
|  |             <column name="CURRENT_ASSIGNEE" type="java.sql.Types.VARCHAR(100)" remarks="当前处理人"/> | ||||
|  |             <column name="MGER_ORG_NM" type="java.sql.Types.VARCHAR(100)" remarks="所属机构"/> | ||||
|  |             <column name="CUST_TYPE" type="java.sql.Types.VARCHAR(1)" remarks="客户类型(1.一般公司 2.金融债券机构)"/> | ||||
|  |             <column name="DATA_COME_FROM_"          type="java.sql.Types.NVARCHAR(10)"      remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column> | ||||
|  |             <column name="CREATOR_"                 type="java.sql.Types.NVARCHAR(255)"     remarks="创建人"></column> | ||||
|  |             <column name="CREATE_DATE_"             type="DATETIME"                         remarks="创建日期"></column> | ||||
|  |             <column name="LAST_MODIFIER_"           type="java.sql.Types.NVARCHAR(255)"     remarks="最后修改人"></column> | ||||
|  |             <column name="LAST_MODIFYDATE_"         type="DATETIME"                         remarks="最后修改日期"></column> | ||||
|  |             <column name="CORP_CODE_"     	        type="java.sql.Types.NVARCHAR(255)"     remarks="所属法人代码" defaultValue="_PRIMARY_"> | ||||
|  |                 <constraints nullable="false"/> | ||||
|  |             </column> | ||||
|  |         </createTable> | ||||
|  |     </changeSet> | ||||
|  | </databaseChangeLog> | ||||
| @ -0,0 +1,34 @@ | |||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||
|  | <databaseChangeLog | ||||
|  |     xmlns="http://www.liquibase.org/xml/ns/dbchangelog" | ||||
|  |     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||||
|  |     xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" | ||||
|  |     xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd | ||||
|  |     http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"> | ||||
|  | 
 | ||||
|  |     <changeSet id="20240417_UPDATE_RISKEXPOSURE_DDL" author="platform"> | ||||
|  |         <!-- 风险暴露分类表 --> | ||||
|  |         <createTable tableName="P_IRS_RISK_EXPOSURE_OPERATION" remarks="风险暴露分类流程处理表"> | ||||
|  |             <column name="ID_" type="java.sql.Types.VARCHAR(36)" remarks="主键ID"> | ||||
|  |                 <constraints primaryKey="true"/> | ||||
|  |             </column> | ||||
|  |             <column name="RISK_EXPOSURE_ID" type="java.sql.Types.VARCHAR(36)" remarks="人工风险暴露分类业务ID"/> | ||||
|  |             <column name="RISK_EXPOSURE_ADJ_ID" type="java.sql.Types.VARCHAR(36)" remarks="人工风险暴露分类调整业务ID"/> | ||||
|  |             <column name="RISK_EXPOSURE_TYPE" type="java.sql.Types.VARCHAR(20)" remarks="风险暴露分类类型"/> | ||||
|  |             <column name="FILE_COUNT" type="java.sql.Types.Integer" remarks="附件条数"/> | ||||
|  |             <column name="REMARKS" type="java.sql.Types.VARCHAR(2000)" remarks="意见说明"/> | ||||
|  |             <column name="ROLE_NAME" type="java.sql.Types.VARCHAR(30)" remarks="角色"/> | ||||
|  |             <column name="FILE_NAME" type="java.sql.Types.VARCHAR(2000)" remarks="文件名称"/> | ||||
|  |             <column name="CREATOR_ORG" type="java.sql.Types.VARCHAR(255)" remarks="创建人机构"/> | ||||
|  |             <column name="OPERATION" type="java.sql.Types.VARCHAR(10)" remarks="OPERATION"/> | ||||
|  |             <column name="DATA_COME_FROM_"          type="java.sql.Types.NVARCHAR(10)"      remarks="数据来源(INPUT:手工录入,IMPORT:系统自动导入)" defaultValue="INPUT"></column> | ||||
|  |             <column name="CREATOR_"                 type="java.sql.Types.NVARCHAR(255)"     remarks="创建人"></column> | ||||
|  |             <column name="CREATE_DATE_"             type="DATETIME"                         remarks="创建日期"></column> | ||||
|  |             <column name="LAST_MODIFIER_"           type="java.sql.Types.NVARCHAR(255)"     remarks="最后修改人"></column> | ||||
|  |             <column name="LAST_MODIFYDATE_"         type="DATETIME"                         remarks="最后修改日期"></column> | ||||
|  |             <column name="CORP_CODE_"     	        type="java.sql.Types.NVARCHAR(255)"     remarks="所属法人代码" defaultValue="_PRIMARY_"> | ||||
|  |                 <constraints nullable="false"/> | ||||
|  |             </column> | ||||
|  |         </createTable> | ||||
|  |     </changeSet> | ||||
|  | </databaseChangeLog> | ||||
| @ -1,5 +1,7 @@ | |||||
| include 'app.irbs' | include 'app.irbs' | ||||
| include 'irbs.cust.rating' | include 'irbs.cust.rating' | ||||
|  | include 'irbs.defaultManager' | ||||
|  | include 'irbs.deptRating' | ||||
| include 'irbs.frontend' | include 'irbs.frontend' | ||||
| include 'irbs.reports' | include 'irbs.reports' | ||||
| include 'irbs.defaultManager' | include 'irbs.riskExposure' | ||||
|  | |||||
					Loading…
					
					
				
		Reference in new issue