Browse Source

Merge remote-tracking branch 'origin/main' into main

# Conflicts:
#	app.irbs/src/main/resources/liquibase/data/irbs/SYS_DICTIONARY.csv
main
chengjie 8 months ago
parent
commit
f3b7d0ee00
  1. 1
      app.irbs/src/main/resources/liquibase/data/irbs/SYS_DICTIONARY.csv
  2. 2
      gradle.properties
  3. 12
      irbs.cust.rating/src/main/java/irbs/cust/rating/controller/HomeController.java
  4. 14
      irbs.cust.rating/src/main/java/irbs/cust/rating/jpa/entity/CompanyCustomer.java
  5. 66
      irbs.cust.rating/src/main/java/irbs/cust/rating/jpa/support/HomeTotalWrapper.java
  6. 3
      irbs.cust.rating/src/main/java/irbs/cust/rating/service/HomeService.java
  7. 6
      irbs.cust.rating/src/main/java/irbs/cust/rating/service/impl/CompanyCustomerServiceImpl.java
  8. 40
      irbs.cust.rating/src/main/java/irbs/cust/rating/service/impl/HomeServiceImpl.java
  9. 8
      irbs.defaultManager/src/main/java/irbs/defaultManager/controller/DefaultRebirthController.java
  10. 4
      irbs.defaultManager/src/main/java/irbs/defaultManager/service/DefaultRebirthService.java
  11. 25
      irbs.defaultManager/src/main/java/irbs/defaultManager/service/impl/DefaultRebirthServiceImpl.java
  12. 12
      irbs.deptRating/src/main/java/irbs/deptRating/controller/AppDebtRatingController.java
  13. 153
      irbs.frontend/src/views/IrbsHome.vue
  14. 9
      irbs.frontend/src/views/custRating/CustRating.vue
  15. 10
      irbs.frontend/src/views/custRating/RatingDialog.vue
  16. 60
      irbs.frontend/src/views/debtRating/LgdQuery.vue
  17. 7
      irbs.frontend/src/views/default/CognizanceApply.vue
  18. 15
      irbs.frontend/src/views/default/CognizanceDialog.vue
  19. 25
      irbs.frontend/src/views/default/RebirthApply.vue
  20. 15
      irbs.frontend/src/views/default/RebirthDialog.vue
  21. 3
      irbs.frontend/src/views/workbench/DoneTask.vue
  22. 3
      irbs.frontend/src/views/workbench/EndTask.vue
  23. 3
      irbs.frontend/src/views/workbench/TodoTask.vue

1
app.irbs/src/main/resources/liquibase/data/irbs/SYS_DICTIONARY.csv

@ -3,6 +3,7 @@
"ID","字典代码","字典项值","排序","JPA乐观锁版本","数据来源(INPUT:手工录入,IMPORT:系统自动导入)","创建人","创建日期","最后修改人","最后修改日期","所属法人代码" "ID","字典代码","字典项值","排序","JPA乐观锁版本","数据来源(INPUT:手工录入,IMPORT:系统自动导入)","创建人","创建日期","最后修改人","最后修改日期","所属法人代码"
"VARCHAR","VARCHAR","VARCHAR","INTEGER","INTEGER","VARCHAR","VARCHAR","TIMESTAMP","VARCHAR","TIMESTAMP","VARCHAR" "VARCHAR","VARCHAR","VARCHAR","INTEGER","INTEGER","VARCHAR","VARCHAR","TIMESTAMP","VARCHAR","TIMESTAMP","VARCHAR"
"java.lang.String","java.lang.String","java.lang.String","java.lang.Integer","java.lang.Integer","java.lang.String","java.lang.String","java.sql.Timestamp","java.lang.String","java.sql.Timestamp","java.lang.String" "java.lang.String","java.lang.String","java.lang.String","java.lang.Integer","java.lang.Integer","java.lang.String","java.lang.String","java.sql.Timestamp","java.lang.String","java.sql.Timestamp","java.lang.String"
"debe6a2c-da11-46f9-a77d-28481e1da319","WORK_FLOW","RULE_ENGINE_APPROVING","2",,"INPUT","system","2024-03-11 12:50:35.0","system","2024-03-11 12:50:35.0","_PRIMARY_"
"098b04c2-0ce7-440d-8f4d-edd665b84d9b","NATION_CD","208","208",,"INPUT","test01","2024-06-26 15:33:33.0","test01","2024-06-26 15:33:33.0","_PRIMARY_" "098b04c2-0ce7-440d-8f4d-edd665b84d9b","NATION_CD","208","208",,"INPUT","test01","2024-06-26 15:33:33.0","test01","2024-06-26 15:33:33.0","_PRIMARY_"
"102f43a1-588c-4890-bef1-a54b5ac18394","NATION_CD","999","999",,"INPUT","test01","2024-06-26 15:34:00.0","test01","2024-06-26 15:34:00.0","_PRIMARY_" "102f43a1-588c-4890-bef1-a54b5ac18394","NATION_CD","999","999",,"INPUT","test01","2024-06-26 15:34:00.0","test01","2024-06-26 15:34:00.0","_PRIMARY_"
"10b4c787-85a9-4b2d-85ef-e9e13eadac88","REGISTERED_TYPE","150","150",,"INPUT","test01","2024-06-26 15:01:51.0","test01","2024-06-26 15:01:51.0","_PRIMARY_" "10b4c787-85a9-4b2d-85ef-e9e13eadac88","REGISTERED_TYPE","150","150",,"INPUT","test01","2024-06-26 15:01:51.0","test01","2024-06-26 15:01:51.0","_PRIMARY_"

1 SYS_DICTIONARY
3 ID 字典代码 字典项值 排序 JPA乐观锁版本 数据来源(INPUT:手工录入,IMPORT:系统自动导入) 创建人 创建日期 最后修改人 最后修改日期 所属法人代码
4 VARCHAR VARCHAR VARCHAR INTEGER INTEGER VARCHAR VARCHAR TIMESTAMP VARCHAR TIMESTAMP VARCHAR
5 java.lang.String java.lang.String java.lang.String java.lang.Integer java.lang.Integer java.lang.String java.lang.String java.sql.Timestamp java.lang.String java.sql.Timestamp java.lang.String
6 debe6a2c-da11-46f9-a77d-28481e1da319 WORK_FLOW RULE_ENGINE_APPROVING 2 INPUT system 2024-03-11 12:50:35.0 system 2024-03-11 12:50:35.0 _PRIMARY_
7 098b04c2-0ce7-440d-8f4d-edd665b84d9b NATION_CD 208 208 INPUT test01 2024-06-26 15:33:33.0 test01 2024-06-26 15:33:33.0 _PRIMARY_
8 102f43a1-588c-4890-bef1-a54b5ac18394 NATION_CD 999 999 INPUT test01 2024-06-26 15:34:00.0 test01 2024-06-26 15:34:00.0 _PRIMARY_
9 10b4c787-85a9-4b2d-85ef-e9e13eadac88 REGISTERED_TYPE 150 150 INPUT test01 2024-06-26 15:01:51.0 test01 2024-06-26 15:01:51.0 _PRIMARY_

2
gradle.properties

@ -38,7 +38,7 @@ application_version=1.0.1
platform_group=io.sc platform_group=io.sc
platform_version=8.1.44 platform_version=8.1.44
platform_plugin_version=8.1.44 platform_plugin_version=8.1.44
platform_core_frontend_version=8.1.242 platform_core_frontend_version=8.1.254
########################################################### ###########################################################
# product dependencies version # product dependencies version

12
irbs.cust.rating/src/main/java/irbs/cust/rating/controller/HomeController.java

@ -1,5 +1,6 @@
package irbs.cust.rating.controller; package irbs.cust.rating.controller;
import irbs.cust.rating.jpa.support.HomeTotalWrapper;
import irbs.cust.rating.jpa.support.KeyValueWrapper; import irbs.cust.rating.jpa.support.KeyValueWrapper;
import irbs.cust.rating.service.HomeService; import irbs.cust.rating.service.HomeService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -21,6 +22,17 @@ public class HomeController {
@Autowired @Autowired
private HomeService homeService; private HomeService homeService;
/**
* 首页敞口分布统计
*
* @throws Exception 异常
*/
@RequestMapping(value = "getTotalInfo", method = RequestMethod.GET)
@ResponseBody
public HomeTotalWrapper getTotalInfo() throws Exception {
return homeService.getTotalInfo();
}
/** /**
* 首页敞口分布统计 * 首页敞口分布统计
* *

14
irbs.cust.rating/src/main/java/irbs/cust/rating/jpa/entity/CompanyCustomer.java

@ -75,8 +75,9 @@ public class CompanyCustomer extends CorporationAuditorEntity<CompanyCustomerVo>
/** /**
* 国标行业 * 国标行业
*/ */
@Column(name="INDU_SORT_CD") @ManyToOne(targetEntity = Industry.class, fetch=FetchType.LAZY)
private String induSortCd; @JoinColumn(name="INDU_SORT_CD", referencedColumnName="CODE_")
private Industry induSortCd;
/** /**
* 客户类型 * 客户类型
@ -182,7 +183,10 @@ public class CompanyCustomer extends CorporationAuditorEntity<CompanyCustomerVo>
vo.setMgerOrgNm(this.getMgerOrgNm()); vo.setMgerOrgNm(this.getMgerOrgNm());
vo.setOrgnCd(this.getOrgnCd()); vo.setOrgnCd(this.getOrgnCd());
vo.setOrgCrdtCd(this.getOrgCrdtCd()); vo.setOrgCrdtCd(this.getOrgCrdtCd());
vo.setInduSortCd(this.getInduSortCd()); if (null != this.getInduSortCd()) {
vo.setInduSortCd(this.getInduSortCd().getCode());
vo.setInduSortName(this.getInduSortCd().getName());
}
vo.setCustTypeCd(this.getCustTypeCd()); vo.setCustTypeCd(this.getCustTypeCd());
vo.setCustSortCd(this.getCustSortCd()); vo.setCustSortCd(this.getCustSortCd());
vo.setBuildDt(this.getBuildDt()); vo.setBuildDt(this.getBuildDt());
@ -272,11 +276,11 @@ public class CompanyCustomer extends CorporationAuditorEntity<CompanyCustomerVo>
this.orgCrdtCd = orgCrdtCd; this.orgCrdtCd = orgCrdtCd;
} }
public String getInduSortCd() { public Industry getInduSortCd() {
return induSortCd; return induSortCd;
} }
public void setInduSortCd(String induSortCd) { public void setInduSortCd(Industry induSortCd) {
this.induSortCd = induSortCd; this.induSortCd = induSortCd;
} }

66
irbs.cust.rating/src/main/java/irbs/cust/rating/jpa/support/HomeTotalWrapper.java

@ -0,0 +1,66 @@
package irbs.cust.rating.jpa.support;
import org.springframework.jdbc.core.RowMapper;
import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 首页统计面板wrapper
*/
public class HomeTotalWrapper {
private Integer waitTask; // 待办任务数量
private Integer completeTask; // 已办任务数量
private Integer endTask; // 办结任务数量
private BigDecimal ratingUpdate; // 评级更新完成率
public static RowMapper<HomeTotalWrapper> getRowMapper() {
return new HomeTotalWrapperRowMapper();
}
public static class HomeTotalWrapperRowMapper implements RowMapper<HomeTotalWrapper> {
@Override
public HomeTotalWrapper mapRow(ResultSet rs, int rowNum) throws SQLException {
HomeTotalWrapper wrapper = new HomeTotalWrapper();
wrapper.setWaitTask(rs.getInt("WAIT_TASK"));
wrapper.setCompleteTask(rs.getInt("COMPLETE_TASK"));
wrapper.setEndTask(rs.getInt("END_TASK"));
wrapper.setRatingUpdate(rs.getBigDecimal("RATING_UPDATE"));
return wrapper;
}
}
public Integer getWaitTask() {
return waitTask;
}
public void setWaitTask(Integer waitTask) {
this.waitTask = waitTask;
}
public Integer getCompleteTask() {
return completeTask;
}
public void setCompleteTask(Integer completeTask) {
this.completeTask = completeTask;
}
public Integer getEndTask() {
return endTask;
}
public void setEndTask(Integer endTask) {
this.endTask = endTask;
}
public BigDecimal getRatingUpdate() {
return ratingUpdate;
}
public void setRatingUpdate(BigDecimal ratingUpdate) {
this.ratingUpdate = ratingUpdate;
}
}

3
irbs.cust.rating/src/main/java/irbs/cust/rating/service/HomeService.java

@ -1,5 +1,6 @@
package irbs.cust.rating.service; package irbs.cust.rating.service;
import irbs.cust.rating.jpa.support.HomeTotalWrapper;
import irbs.cust.rating.jpa.support.KeyValueWrapper; import irbs.cust.rating.jpa.support.KeyValueWrapper;
import java.util.List; import java.util.List;
@ -11,6 +12,8 @@ import java.util.List;
*/ */
public interface HomeService { public interface HomeService {
public HomeTotalWrapper getTotalInfo() throws Exception;
public List<KeyValueWrapper> getRatingModelExposureList() throws Exception; public List<KeyValueWrapper> getRatingModelExposureList() throws Exception;
public List<KeyValueWrapper> getRatingLevelExposureList() throws Exception; public List<KeyValueWrapper> getRatingLevelExposureList() throws Exception;

6
irbs.cust.rating/src/main/java/irbs/cust/rating/service/impl/CompanyCustomerServiceImpl.java

@ -24,9 +24,9 @@ public class CompanyCustomerServiceImpl extends DaoServiceImpl<CompanyCustomer,
Page<CompanyCustomer> page = super.query(queryParameter); Page<CompanyCustomer> page = super.query(queryParameter);
if (null != page.getContent() && page.getContent().size() > 0) { if (null != page.getContent() && page.getContent().size() > 0) {
for (CompanyCustomer customer: page.getContent()) { for (CompanyCustomer customer: page.getContent()) {
Industry industry = industryService.getRepository().findByCode(customer.getInduSortCd()); // Industry industry = industryService.getRepository().findByCode();
if (null != industry) { if (null != customer.getInduSortCd()) {
customer.setInduSortName(industry.getName()); customer.setInduSortName(customer.getInduSortCd().getName());
} }
} }
} }

40
irbs.cust.rating/src/main/java/irbs/cust/rating/service/impl/HomeServiceImpl.java

@ -1,20 +1,58 @@
package irbs.cust.rating.service.impl; package irbs.cust.rating.service.impl;
import io.sc.platform.security.util.SecurityUtil;
import irbs.cust.rating.enums.RatingStatus;
import irbs.cust.rating.jpa.support.HomeTotalWrapper;
import irbs.cust.rating.jpa.support.KeyValueWrapper; import irbs.cust.rating.jpa.support.KeyValueWrapper;
import irbs.cust.rating.service.HomeService; import irbs.cust.rating.service.HomeService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@Service @Service
public class HomeServiceImpl implements HomeService { public class HomeServiceImpl implements HomeService {
private static final RowMapper<HomeTotalWrapper> HomeTotalWrapperRowMapper = HomeTotalWrapper.getRowMapper();
@Autowired @Autowired
NamedParameterJdbcTemplate namedParameterJdbcTemplate; NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@Override
public HomeTotalWrapper getTotalInfo() throws Exception {
BigDecimal ratingUpdate = BigDecimal.ZERO; // 评级更新完成率
String fzSql = "select count(1) as countN from ns_company_rating where trigger_type = 'UPDATE' and final_level is not null ";
String fmSql = "select count(1) as countN from ns_company_rating where trigger_type = 'UPDATE' ";
Integer fz = namedParameterJdbcTemplate.queryForObject(fzSql, new HashMap<>(), Integer.class);
Integer fm = namedParameterJdbcTemplate.queryForObject(fmSql, new HashMap<>(), Integer.class);
if(fz != null && fm != null && fm != 0){
ratingUpdate = BigDecimal.valueOf(fz,4).divide(BigDecimal.valueOf(fm,4),4,4).multiply(BigDecimal.valueOf(100)).setScale(2,4);
}
String sql = "SELECT COUNT(DISTINCT wait_task) AS wait_task ";
sql += ",COUNT(DISTINCT complete_task) AS complete_task ";
sql += ",COUNT(DISTINCT end_task) AS end_task ";
sql += ",0 AS rating_update ";
sql += "FROM ( ";
sql += "SELECT CASE WHEN T.ASSIGNEE_ = :assignee THEN T.ID_ ELSE NULL END AS wait_task ";
sql += ",CASE WHEN HT.ASSIGNEE_ = :assignee AND HT.END_TIME_ IS NOT NULL AND T.ID_ IS NOT NULL THEN HT.PROC_INST_ID_ ELSE NULL END AS complete_task ";
sql += ",CASE WHEN HT.ASSIGNEE_ = :assignee AND HT.END_TIME_ IS NOT NULL AND hp.end_time_ is not null and hp.end_act_id_ is not null THEN HT.PROC_INST_ID_ ELSE NULL END AS end_task ";
sql += "FROM ACT_HI_TASKINST HT ";
sql += "LEFT JOIN ACT_RU_TASK T ON T.PROC_INST_ID_ = HT.PROC_INST_ID_ ";
sql += "LEFT JOIN ACT_HI_PROCINST hp ON hp.proc_inst_id_ = HT.proc_inst_id_) ";
Map<String, Object> params = new HashMap<>();
params.put("assignee", SecurityUtil.getLoginName());
List<HomeTotalWrapper> res = namedParameterJdbcTemplate.query(sql, params, HomeTotalWrapperRowMapper);
if(res.size()==1){
res.get(0).setRatingUpdate(ratingUpdate);
}
return res.get(0);
}
@Override @Override
public List<KeyValueWrapper> getRatingModelExposureList() throws Exception { public List<KeyValueWrapper> getRatingModelExposureList() throws Exception {
String querySql = "select MODEL_NAME, count(*) MODEL_NUMBER from NS_COMPANY_RATING where MODEL_CODE IS NOT NULL "; String querySql = "select MODEL_NAME, count(*) MODEL_NUMBER from NS_COMPANY_RATING where MODEL_CODE IS NOT NULL ";
@ -33,7 +71,7 @@ public class HomeServiceImpl implements HomeService {
public List<KeyValueWrapper> getRatingLevelExposureList() throws Exception { public List<KeyValueWrapper> getRatingLevelExposureList() throws Exception {
String querySql1 = "select p.FINAL_LEVEL,count(*) FINAL_NUMBER from (" + String querySql1 = "select p.FINAL_LEVEL,count(*) FINAL_NUMBER from (" +
"select distinct(cust_no) as cust_no,FINAL_LEVEL from NS_COMPANY_RATING " + "select distinct(cust_no) as cust_no,FINAL_LEVEL from NS_COMPANY_RATING " +
"WHERE cust_no is not null and FINAL_LEVEL IS NOT NULL AND RATING_STATUS = '010' "; "WHERE cust_no is not null and FINAL_LEVEL IS NOT NULL AND RATING_STATUS = '"+ RatingStatus.EFFECTIVE.name() +"' ";
String querySql2 = "select 'D' FINAL_LEVEL, COUNT(*) FINAL_NUMBER from (" + String querySql2 = "select 'D' FINAL_LEVEL, COUNT(*) FINAL_NUMBER from (" +
"select distinct(cust_no) as cust_no from P_IRS_DEFAULT_COGNIZANCE " + "select distinct(cust_no) as cust_no from P_IRS_DEFAULT_COGNIZANCE " +
"where ((VALID = '1' and DEFAULT_TYPE ='02') or (VALID <> '0' and DEFAULT_TYPE = '01')) and cust_no is not null "; "where ((VALID = '1' and DEFAULT_TYPE ='02') or (VALID <> '0' and DEFAULT_TYPE = '01')) and cust_no is not null ";

8
irbs.defaultManager/src/main/java/irbs/defaultManager/controller/DefaultRebirthController.java

@ -12,6 +12,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController @RestController
@RequestMapping("/api/irbs/defaultRebirth") @RequestMapping("/api/irbs/defaultRebirth")
public class DefaultRebirthController extends RestCrudController<DefaultRebirthVo, DefaultRebirth, String, DefaultRebirthRepository, DefaultRebirthService> { public class DefaultRebirthController extends RestCrudController<DefaultRebirthVo, DefaultRebirth, String, DefaultRebirthRepository, DefaultRebirthService> {
@ -21,4 +23,10 @@ public class DefaultRebirthController extends RestCrudController<DefaultRebirthV
public Page<DefaultRebirthVo> pageQuery(QueryParameter queryParameter) throws Exception { public Page<DefaultRebirthVo> pageQuery(QueryParameter queryParameter) throws Exception {
return service.pageQuery(queryParameter); return service.pageQuery(queryParameter);
} }
@GetMapping("queryCognizanceList")
@ResponseBody
public Map<String, Object> queryCognizanceList(QueryParameter queryParameter) throws Exception {
return service.queryCognizanceList(queryParameter);
}
} }

4
irbs.defaultManager/src/main/java/irbs/defaultManager/service/DefaultRebirthService.java

@ -8,6 +8,8 @@ import irbs.defaultManager.jpa.repository.DefaultRebirthRepository;
import irbs.defaultManager.jpa.vo.DefaultRebirthVo; import irbs.defaultManager.jpa.vo.DefaultRebirthVo;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import java.util.Map;
public interface DefaultRebirthService extends DaoService<DefaultRebirth, String, DefaultRebirthRepository> { public interface DefaultRebirthService extends DaoService<DefaultRebirth, String, DefaultRebirthRepository> {
public Page<DefaultRebirthVo> pageQuery(QueryParameter queryParameter) throws Exception; public Page<DefaultRebirthVo> pageQuery(QueryParameter queryParameter) throws Exception;
@ -19,4 +21,6 @@ public interface DefaultRebirthService extends DaoService<DefaultRebirth, String
public void approve(String rebirthId, ProcessProperties processProperties) throws Exception; public void approve(String rebirthId, ProcessProperties processProperties) throws Exception;
public void reject(String rebirthId, ProcessProperties processProperties) throws Exception; public void reject(String rebirthId, ProcessProperties processProperties) throws Exception;
public Map<String, Object> queryCognizanceList(QueryParameter queryParameter) throws Exception;
} }

25
irbs.defaultManager/src/main/java/irbs/defaultManager/service/impl/DefaultRebirthServiceImpl.java

@ -3,9 +3,11 @@ package irbs.defaultManager.service.impl;
import io.sc.platform.flowable.controller.support.ProcessProperties; import io.sc.platform.flowable.controller.support.ProcessProperties;
import io.sc.platform.flowable.service.ProcessQueryService; import io.sc.platform.flowable.service.ProcessQueryService;
import io.sc.platform.flowable.support.ProcessTaskWrapper; import io.sc.platform.flowable.support.ProcessTaskWrapper;
import io.sc.platform.jdbc.sql.condition.Condition;
import io.sc.platform.orm.service.impl.DaoServiceImpl; import io.sc.platform.orm.service.impl.DaoServiceImpl;
import io.sc.platform.orm.service.support.QueryParameter; import io.sc.platform.orm.service.support.QueryParameter;
import io.sc.platform.orm.util.EntityVoUtil; import io.sc.platform.orm.util.EntityVoUtil;
import io.sc.platform.page.config.service.JdbcTemplateService;
import io.sc.platform.security.util.SecurityUtil; import io.sc.platform.security.util.SecurityUtil;
import irbs.defaultManager.constant.DefaultConstant; import irbs.defaultManager.constant.DefaultConstant;
import irbs.defaultManager.enums.DefaultCustomerLogOperate; import irbs.defaultManager.enums.DefaultCustomerLogOperate;
@ -24,9 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Calendar; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Service("defaultRebirthService") @Service("defaultRebirthService")
@ -44,6 +44,8 @@ public class DefaultRebirthServiceImpl extends DaoServiceImpl<DefaultRebirth, St
private DefaultCognizanceRepository defaultCognizanceRepository; private DefaultCognizanceRepository defaultCognizanceRepository;
@Autowired @Autowired
private DefaultEventItemRepository defaultEventItemRepository; private DefaultEventItemRepository defaultEventItemRepository;
@Autowired
private JdbcTemplateService jdbcTemplateService;
@Override @Override
public Page<DefaultRebirthVo> pageQuery(QueryParameter queryParameter) throws Exception { public Page<DefaultRebirthVo> pageQuery(QueryParameter queryParameter) throws Exception {
@ -173,4 +175,21 @@ public class DefaultRebirthServiceImpl extends DaoServiceImpl<DefaultRebirth, St
defaultEventItemRepository.saveAll(items); defaultEventItemRepository.saveAll(items);
} }
} }
@Override
public Map<String, Object> queryCognizanceList(QueryParameter queryParameter) throws Exception {
Map<String, Class<?>> fieldTypeMap = new HashMap<>();
fieldTypeMap.put("VALID", java.lang.String.class);
StringBuffer sql = new StringBuffer();
sql.append("select T1.* from P_IRS_DEFAULT_COGNIZANCE T1 JOIN IRBS_CUST_CP_INFO T2 on T1.CUST_NO=T2.CUST_NO ");
Condition condition = jdbcTemplateService.buildCondition(fieldTypeMap, queryParameter);
String conditionSql = " where 1=1 ";
if (null!=condition.getWhere() && !"".equals(condition.getWhere())) {
conditionSql += " and " + condition.getWhere();
}
Map<String, Object> paramsMap = new HashMap<String, Object>();
paramsMap = condition.getParameters();
sql.append(conditionSql);
return jdbcTemplateService.listByConditionSql(queryParameter, sql.toString(), paramsMap);
}
} }

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

@ -1,27 +1,31 @@
package irbs.deptRating.controller; package irbs.deptRating.controller;
import io.sc.platform.mvc.controller.support.RestCrudController;
import io.sc.platform.orm.service.support.QueryParameter; import io.sc.platform.orm.service.support.QueryParameter;
import irbs.deptRating.jpa.entity.AppDebtRating; import irbs.deptRating.jpa.entity.AppDebtRating;
import irbs.deptRating.jpa.repository.AppDebtRatingRepository;
import irbs.deptRating.jpa.vo.AppDebtRatingVo;
import irbs.deptRating.service.AppDebtRatingService; import irbs.deptRating.service.AppDebtRatingService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller @Controller
@RequestMapping("/api/irbs/appDebtRating") @RequestMapping("/api/irbs/appDebtRating")
public class AppDebtRatingController { public class AppDebtRatingController extends RestCrudController<AppDebtRatingVo, AppDebtRating, String, AppDebtRatingRepository, AppDebtRatingService> {
@Autowired
private AppDebtRatingService appDebtRatingService;
/** /**
* @债项评级管理 * @债项评级管理
* @return * @return
*/ */
@GetMapping("queryPage") @GetMapping("queryPage")
@ResponseBody
public Page<AppDebtRating> queryPage(QueryParameter queryParameter) throws Exception{ public Page<AppDebtRating> queryPage(QueryParameter queryParameter) throws Exception{
Page<AppDebtRating> page = appDebtRatingService.findAll(queryParameter); Page<AppDebtRating> page = service.findAll(queryParameter);
return page; return page;
} }
} }

153
irbs.frontend/src/views/IrbsHome.vue

@ -11,22 +11,32 @@
<div class="text-center text-h6"><q-icon name="replay_circle_filled" color="orange"></q-icon></div> <div class="text-center text-h6"><q-icon name="replay_circle_filled" color="orange"></q-icon></div>
<div class="text-center text-h5" style="position: relative"> <div class="text-center text-h5" style="position: relative">
<span style="position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%)"> <span style="position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%)">
<a :href="void 0" class="cursor-pointer text-blue-600">0</a> <a :href="void 0" class="cursor-pointer text-blue-600" @click="gotoWaitTask">{{ state.totalInfo.waitTask }}</a>
</span> </span>
</div> </div>
<div class="text-center text-h5" style="position: relative"> <div class="text-center text-h5" style="position: relative">
<span style="position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%)"> <span style="position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%)">
<a :href="void 0" class="cursor-pointer text-blue-600">0</a> <a :href="void 0" class="cursor-pointer text-blue-600" @click="gotoCompleteTask">{{ state.totalInfo.completeTask }}</a>
</span> </span>
</div> </div>
<div class="text-center text-h5" style="position: relative"> <div class="text-center text-h5" style="position: relative">
<span style="position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%)"> <span style="position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%)">
<a :href="void 0" class="cursor-pointer text-blue-600">0</a> <a :href="void 0" class="cursor-pointer text-blue-600" @click="gotoEndTask">{{ state.totalInfo.endTask }}</a>
</span> </span>
</div> </div>
<div class="text-center text-h5"> <div class="text-center text-h5">
<q-circular-progress show-value :value="80" size="50px" :thickness="0.22" color="positive" track-color="grey-3" class="q-ma-md"> <q-circular-progress
80% show-value
:min="0"
:max="100"
:value="state.totalInfo.ratingUpdate"
size="50px"
:thickness="0.22"
color="positive"
track-color="grey-3"
class="q-ma-md"
>
{{ state.totalInfo.ratingUpdate }}%
</q-circular-progress> </q-circular-progress>
</div> </div>
</div> </div>
@ -97,7 +107,7 @@
<q-tabs v-model="state.tab" inline-label indicator-color="primary" align="left" :breakpoint="1"> <q-tabs v-model="state.tab" inline-label indicator-color="primary" align="left" :breakpoint="1">
<q-tab name="ckfb" icon="equalizer" label="敞口分布" /> <q-tab name="ckfb" icon="equalizer" label="敞口分布" />
<q-tab name="pjfb" icon="equalizer" label="评级分布" /> <q-tab name="pjfb" icon="equalizer" label="评级分布" />
<q-tab name="wyqs" icon="line_axis" label="违约趋势" /> <!-- <q-tab name="wyqs" icon="line_axis" label="违约趋势" /> -->
</q-tabs> </q-tabs>
</template> </template>
<template #after> <template #after>
@ -215,7 +225,7 @@
], ],
xAxis: { xAxis: {
type: 'category', type: 'category',
data: state.ckXAxisData, data: state.pjXAxisData,
axisTick: { axisTick: {
alignWithLabel: true, alignWithLabel: true,
}, },
@ -230,21 +240,82 @@
name: '数量', name: '数量',
type: 'bar', type: 'bar',
barWidth: '20%', barWidth: '20%',
data: state.ckYAxisData, data: state.pjYAxisData,
}, },
], ],
}" }"
></w-echarts> ></w-echarts>
</q-tab-panel> </q-tab-panel>
<q-tab-panel name="wyqs" class="h-full"></q-tab-panel> <!--
<q-tab-panel name="wyqs" class="h-full">
<w-echarts
:option="{
tooltip: {
trigger: 'axis',
axisPointer: {
type: 'line',
},
},
grid: {
left: '3%',
right: '4%',
bottom: '3%',
containLabel: true,
},
dataZoom: [
{
type: 'slider',
show: true, //
borderColor: '#e3e3e3', //
showDetail: false, // detail
startValue: 0, //
endValue: 8, //
filterMode: 'empty',
width: '80%', //
height: 8, //
left: 'center', //
zoomLoxk: true, //
handleSize: 0, //
bottom: 0, //
},
{
type: 'inside',
zoomOnMouseWheel: false, //
moveOnMouseMove: true, //
moveOnMouseWheel: true, //
},
],
xAxis: {
type: 'category',
data: echartsData.wyXAxisData,
axisTick: {
alignWithLabel: true,
},
},
yAxis: [
{
type: 'value',
},
],
series: [
{
name: '违约占比',
type: 'line',
smooth: true,
data: echartsData.wyYAxisData,
},
],
}"
></w-echarts>
</q-tab-panel>-->
</q-tab-panels> </q-tab-panels>
</template> </template>
</q-splitter> </q-splitter>
</q-card-section> </q-card-section>
</q-card> </q-card>
</div> </div>
<div class="grow p-1.5 h-full"> <div class="grow py-1.5 h-full">
<q-card flat bordered class="h-full"> <q-card flat bordered class="h-full">
<q-card-section class="w-full h-full p-0"> <q-card-section class="w-full h-full p-0">
<q-splitter v-model="state.splitterModel" unit="px" horizontal disable class="w-full h-full"> <q-splitter v-model="state.splitterModel" unit="px" horizontal disable class="w-full h-full">
@ -295,16 +366,27 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref, nextTick, reactive, onMounted } from 'vue'; import { ref, nextTick, reactive, onMounted } from 'vue';
import { axios, Environment } from 'platform-core'; import { axios, Environment } from 'platform-core';
import { useRouter } from 'vue-router';
const router = useRouter();
const gridRef = ref(); const gridRef = ref();
const state = reactive({ const state = reactive({
tab: 'ckfb', tab: 'ckfb',
orgOrderTab: 'orgOrder', orgOrderTab: 'orgOrder',
splitterModel: 50, splitterModel: 50,
totalInfo: {
waitTask: 0,
completeTask: 0,
endTask: 0,
ratingUpdate: 0,
},
ckXAxisData: [], ckXAxisData: [],
ckYAxisData: [], ckYAxisData: [],
pjXAxisData: [], pjXAxisData: ['AAA', 'AA', 'A', 'BBB', 'BB', 'B', 'CCC', 'CC', 'C', 'D'],
pjYAxisData: [], pjYAxisData: [],
wyXAxisData: ['2024-01', '2024-02', '2024-03', '2024-04', '2024-05', '2024-06'],
wyYAxisData: [],
}); });
const getRatingModelExposure = () => { const getRatingModelExposure = () => {
@ -330,13 +412,60 @@ const getRatingModelExposure = () => {
} }
}); });
}; };
getRatingModelExposure();
const getRatingLevelExposure = () => {
axios.get(Environment.apiContextPath('api/irbs/home/ratingLevelExposure')).then((resp) => {
if (resp && resp.data) {
const _data = resp.data;
const x = <any>[];
const y = <any>[];
for (let i = 0; i < _data.length; i++) {
const item = _data[i];
let _key = item.key;
if (_key && _key.indexOf('-') > 0) {
_key = _key.substr(_key.indexOf('-') + 1);
}
x.push(_key);
y.push({
value: item.value,
// itemStyle: { color: echartsColor[i % 23] }
});
}
state.pjXAxisData = x;
state.pjYAxisData = y;
}
});
};
const getTotalInfo = () => {
axios.get(Environment.apiContextPath('api/irbs/home/getTotalInfo')).then((resp) => {
if (resp?.data) {
state.totalInfo.waitTask = resp.data['waitTask'];
state.totalInfo.completeTask = resp.data['completeTask'];
state.totalInfo.endTask = resp.data['endTask'];
state.totalInfo.ratingUpdate = resp.data['ratingUpdate'];
}
});
};
const gotoWaitTask = () => {
router.push({ name: 'route.irbs.work.todoTask' });
};
const gotoCompleteTask = () => {
router.push({ name: 'route.irbs.work.doneTask' });
};
const gotoEndTask = () => {
router.push({ name: 'route.irbs.work.endTask' });
};
const announcementClick = () => { const announcementClick = () => {
console.info('点击公告'); console.info('点击公告');
}; };
onMounted(() => { onMounted(() => {
getRatingModelExposure();
getRatingLevelExposure();
getTotalInfo();
gridRef.value.setLocalData([ gridRef.value.setLocalData([
{ orgName: '洪山支行', custRating: 264, defaultCognizance: 21, riskExposure: 9, total: 294 }, { orgName: '洪山支行', custRating: 264, defaultCognizance: 21, riskExposure: 9, total: 294 },
{ orgName: '光谷分行', custRating: 220, defaultCognizance: 10, riskExposure: 0, total: 230 }, { orgName: '光谷分行', custRating: 220, defaultCognizance: 10, riskExposure: 0, total: 230 },

9
irbs.frontend/src/views/custRating/CustRating.vue

@ -105,6 +105,15 @@ const companyRatingGrid = {
}, },
}, },
'separator', 'separator',
{
extend: 'remove',
name: 'delete',
label: '强制删除',
click: (args) => {
args._click();
},
},
'separator',
], ],
queryFormFields: [ queryFormFields: [
{ label: '申请编号', name: 'id', type: 'text' }, { label: '申请编号', name: 'id', type: 'text' },

10
irbs.frontend/src/views/custRating/RatingDialog.vue

@ -863,10 +863,7 @@
}, },
], ],
}" }"
:pagination="{ :sort-by="['-effectiveDate']"
sortBy: 'effectiveDate',
descending: true,
}"
></w-grid> ></w-grid>
<w-grid <w-grid
ref="defaultRebirthGridRef" ref="defaultRebirthGridRef"
@ -902,10 +899,7 @@
}, },
], ],
}" }"
:pagination="{ :sort-by="['-rebirthEffectiveDate']"
sortBy: 'rebirthEffectiveDate',
descending: true,
}"
></w-grid> ></w-grid>
</div> </div>
</q-card-section> </q-card-section>

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

@ -12,10 +12,6 @@
:columns="appDebtRatingGrid.columns" :columns="appDebtRatingGrid.columns"
:toolbar-actions="appDebtRatingGrid.buttons" :toolbar-actions="appDebtRatingGrid.buttons"
:pageable="true" :pageable="true"
:pagination="{
sortBy: 'lastModifyDate',
descending: true,
}"
></w-grid> ></w-grid>
</div> </div>
</template> </template>
@ -24,6 +20,7 @@
import { ref } from 'vue'; import { ref } from 'vue';
import { useQuasar } from 'quasar'; import { useQuasar } from 'quasar';
import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core'; import { Environment, EnumTools, DictionaryTools, Options, Formater, axios, NotifyManager } from 'platform-core';
import { Round } from '@/views/custRating/CustRating.ts';
const $q = useQuasar(); const $q = useQuasar();
const appDebtRatingGridRef = ref(); const appDebtRatingGridRef = ref();
@ -41,7 +38,16 @@ const appDebtRatingGrid = {
{ name: 'custNo', label: '客户编号' }, { name: 'custNo', label: '客户编号' },
{ name: 'custName', label: '客户名称' }, { name: 'custName', label: '客户名称' },
{ name: 'productType', label: '产品类型' }, { name: 'productType', label: '产品类型' },
{ name: 'productRate', label: '产品回收率' }, {
name: 'productRate',
label: '产品回收率',
format: (val) => {
if (val && typeof val === 'number') {
return Round(val * 100, 2) + '%';
}
return val;
},
},
{ name: 'lowRiskFlg', label: '是否低风险业务' }, { name: 'lowRiskFlg', label: '是否低风险业务' },
{ name: 'orgType', label: '客户类型' }, { name: 'orgType', label: '客户类型' },
{ name: 'interestDebtFlg', label: '是否利率债' }, { name: 'interestDebtFlg', label: '是否利率债' },
@ -60,10 +66,46 @@ const appDebtRatingGrid = {
{ name: 'yxzczwlRate', label: '有形资产债务率调整系数' }, { name: 'yxzczwlRate', label: '有形资产债务率调整系数' },
{ name: 'pledgeClass', label: '保证担保形式' }, { name: 'pledgeClass', label: '保证担保形式' },
{ name: 'guaranteeType', label: '担保类型' }, { name: 'guaranteeType', label: '担保类型' },
{ name: 'recrate', label: '借款人整体回收率' }, {
{ name: 'pledgeRecRate', label: '保证人整体回收率' }, name: 'recrate',
{ name: 'guarantyRecRate', label: '押品整体回收率' }, label: '借款人整体回收率',
{ name: 'lgd', label: 'LGD' }, format: (val) => {
if (val && typeof val === 'number') {
return Round(val * 100, 2) + '%';
}
return val;
},
},
{
name: 'pledgeRecRate',
label: '保证人整体回收率',
format: (val) => {
if (val && typeof val === 'number') {
return Round(val * 100, 2) + '%';
}
return val;
},
},
{
name: 'guarantyRecRate',
label: '押品整体回收率',
format: (val) => {
if (val && typeof val === 'number') {
return Round(val * 100, 2) + '%';
}
return val;
},
},
{
name: 'lgd',
label: 'LGD',
format: (val) => {
if (val && typeof val === 'number') {
return Round(val * 100, 2) + '%';
}
return val;
},
},
{ name: 'managerCode', label: '业务经办人' }, { name: 'managerCode', label: '业务经办人' },
], ],
}; };

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

@ -10,15 +10,12 @@
:query-form-fields="cognizanceGrid.queryFormFields" :query-form-fields="cognizanceGrid.queryFormFields"
:columns="cognizanceGrid.columns" :columns="cognizanceGrid.columns"
:toolbar-actions="cognizanceGrid.buttons" :toolbar-actions="cognizanceGrid.buttons"
:pagination="{
sortBy: 'lastModifyDate',
descending: true,
}"
:query-criteria="{ :query-criteria="{
fieldName: 'defaultType', fieldName: 'defaultType',
operator: 'equals', operator: 'equals',
value: '02', value: '02',
}" }"
:sort-by="['-lastModifyDate']"
></w-grid> ></w-grid>
<LaunchRatingDialog ref="launchRatingDialog" @refresh="refreshTable"></LaunchRatingDialog> <LaunchRatingDialog ref="launchRatingDialog" @refresh="refreshTable"></LaunchRatingDialog>
<CognizanceDialog ref="cognizanceDialogRef" @refresh="refreshTable"></CognizanceDialog> <CognizanceDialog ref="cognizanceDialogRef" @refresh="refreshTable"></CognizanceDialog>
@ -82,7 +79,7 @@ const cognizanceGrid = {
{ label: '流程状态', name: 'status', type: 'select', options: Options.enum(DefaultProcessStatusEnum) }, { label: '流程状态', name: 'status', type: 'select', options: Options.enum(DefaultProcessStatusEnum) },
], ],
columns: [ columns: [
{ name: 'id', label: '申请编号' }, { name: 'id', label: '申请编号', width: 150 },
{ name: 'custNo', label: '客户号' }, { name: 'custNo', label: '客户号' },
{ name: 'custName', label: '客户名称' }, { name: 'custName', label: '客户名称' },
{ {

15
irbs.frontend/src/views/default/CognizanceDialog.vue

@ -186,11 +186,12 @@
]" ]"
> >
</w-form> </w-form>
<div> <div class="pt-[10px] text-right">
<w-workflow-action <w-workflow-action
ref="workflowActionRef" ref="workflowActionRef"
:task-id="state.data['taskId']" :task-id="state.data['taskId']"
:data="state.opinionData" :data="state.opinionData"
align="right"
:default-submit-button="false" :default-submit-button="false"
:action-url="Environment.apiContextPath('/api/irbs/defaultProcess/cognizanceSubmit')" :action-url="Environment.apiContextPath('/api/irbs/defaultProcess/cognizanceSubmit')"
@before-submit=" @before-submit="
@ -230,7 +231,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { reactive, ref, nextTick } from 'vue'; import { reactive, ref, nextTick } from 'vue';
import { axios, Environment, NotifyManager, Tools, Formater, Options } from 'platform-core'; import { axios, Environment, NotifyManager, DictionaryTools, Tools, Formater, Options } from 'platform-core';
import { DefaultEventItemStatus, DefaultEventItemOptions } from './DefaultManager.ts'; import { DefaultEventItemStatus, DefaultEventItemOptions } from './DefaultManager.ts';
const dialogRef = ref(); const dialogRef = ref();
@ -255,7 +256,7 @@ const debtActions = ['add', 'edit', 'remove'];
const dialogHide = () => { const dialogHide = () => {
state.status = 'edit'; state.status = 'edit';
state.dialogTitle = '模拟计算'; state.dialogTitle = '人工违约认定';
state.tab = 'cust'; state.tab = 'cust';
}; };
@ -278,10 +279,9 @@ const loadCustInfo = (data) => {
state.custInfo.push({ label: '客户名称', value: custInfo['custName'] }); state.custInfo.push({ label: '客户名称', value: custInfo['custName'] });
state.custInfo.push({ label: '客户经理编号', value: custInfo['mgerNo'] }); state.custInfo.push({ label: '客户经理编号', value: custInfo['mgerNo'] });
state.custInfo.push({ label: '客户经理名称', value: custInfo['mgerCna'] }); state.custInfo.push({ label: '客户经理名称', value: custInfo['mgerCna'] });
state.custInfo.push({ label: '行业类型', value: custInfo['induSortCd'] }); state.custInfo.push({ label: '行业类型', value: custInfo['induSortName'] });
state.custInfo.push({ label: '客户类型', value: custInfo['custTypeCd'] });
state.custInfo.push({ label: '成立时间', value: custInfo['buildDt'] }); state.custInfo.push({ label: '成立时间', value: custInfo['buildDt'] });
state.custInfo.push({ label: '企业规模', value: custInfo['corpSizeCd'] }); state.custInfo.push({ label: '企业规模', value: custInfo['corpSizeCd'], format: Formater.dictionary(dictCustomerSize) });
} }
}) })
.catch((error) => { .catch((error) => {
@ -304,4 +304,7 @@ defineExpose({
show, show,
hide, hide,
}); });
const dictionaryArr = await DictionaryTools.fetch(['CustomerSizeCd']);
const dictCustomerSize = dictionaryArr['CustomerSizeCd'];
</script> </script>

25
irbs.frontend/src/views/default/RebirthApply.vue

@ -10,15 +10,12 @@
:query-form-fields="rebirthGrid.queryFormFields" :query-form-fields="rebirthGrid.queryFormFields"
:columns="rebirthGrid.columns" :columns="rebirthGrid.columns"
:toolbar-actions="rebirthGrid.buttons" :toolbar-actions="rebirthGrid.buttons"
:pagination="{
sortBy: 'lastModifyDate',
descending: true,
}"
:query-criteria="{ :query-criteria="{
fieldName: 'defaultRebornType', fieldName: 'defaultRebornType',
operator: 'equals', operator: 'equals',
value: '02', value: '02',
}" }"
:sort-by="['-lastModifyDate']"
></w-grid> ></w-grid>
<w-dialog <w-dialog
ref="rebirthLaunchDialogRef" ref="rebirthLaunchDialogRef"
@ -36,24 +33,24 @@
<w-grid <w-grid
ref="custGridRef" ref="custGridRef"
title="客户信息列表" title="客户信息列表"
:fetch-data-url="Environment.apiContextPath('api/irbs/defaultCognizance')" :fetch-data-url="Environment.apiContextPath('api/irbs/defaultRebirth/queryCognizanceList')"
:sort-no="true" :sort-no="true"
:checkbox-selection="false" :checkbox-selection="false"
:query-form-cols-num="2" :query-form-cols-num="2"
:config-button="false" :config-button="false"
:query-form-fields="[ :query-form-fields="[
{ name: 'custNo', label: '客户号', type: 'text' }, { name: 'CUST_NO', label: '客户号', type: 'text' },
{ name: 'custName', label: '客户名称', type: 'text' }, { name: 'CUST_NO', label: '客户名称', type: 'text' },
]" ]"
:columns="[ :columns="[
{ name: 'custNo', label: '客户号' }, { name: 'CUST_NO', label: '客户号' },
{ name: 'custName', label: '客户名称' }, { name: 'CUST_NO', label: '客户名称' },
{ name: 'effectiveDate', label: '违约日期', format: Formater.dateOnly() }, { name: 'EFFECTIVE_DATE', label: '违约日期', format: Formater.dateOnly() },
{ {
name: 'defaultProcessStatus', name: 'defaultProcessStatus',
label: '状态', label: '状态',
format: (val, row) => { format: (val, row) => {
if (row.defaultType === '02') { if (row['DEFAULT_TYPE'] === '02') {
return '人工认定违约'; return '人工认定违约';
} }
return '系统认定违约'; return '系统认定违约';
@ -62,7 +59,7 @@
]" ]"
:toolbar-actions="['query', 'reset']" :toolbar-actions="['query', 'reset']"
:query-criteria="{ :query-criteria="{
fieldName: 'valid', fieldName: 'VALID',
operator: 'equals', operator: 'equals',
value: '1', value: '1',
}" }"
@ -192,7 +189,7 @@ const launchRebirth = async () => {
{ {
fieldName: 'custNo', fieldName: 'custNo',
operator: 'equals', operator: 'equals',
value: row['custNo'], value: row['CUST_NO'],
}, },
{ {
fieldName: 'rebirthProcessStatus', fieldName: 'rebirthProcessStatus',
@ -211,7 +208,7 @@ const launchRebirth = async () => {
} else { } else {
// //
axios axios
.post(Environment.apiContextPath('api/irbs/defaultManager/rebirthApply'), { cognizanceId: row['id'], type: 'F' }) .post(Environment.apiContextPath('api/irbs/defaultManager/rebirthApply'), { cognizanceId: row['ID_'], type: 'F' })
.then((resp) => { .then((resp) => {
if (resp && resp['code'] === 200 && resp['data']) { if (resp && resp['code'] === 200 && resp['data']) {
rebirthLaunchDialogRef.value.hide(); rebirthLaunchDialogRef.value.hide();

15
irbs.frontend/src/views/default/RebirthDialog.vue

@ -166,11 +166,12 @@
]" ]"
> >
</w-form> </w-form>
<div> <div class="pt-[10px]">
<w-workflow-action <w-workflow-action
ref="workflowActionRef" ref="workflowActionRef"
:task-id="state.data['taskId']" :task-id="state.data['taskId']"
:data="state.opinionData" :data="state.opinionData"
align="right"
:default-submit-button="false" :default-submit-button="false"
:action-url="Environment.apiContextPath('/api/irbs/defaultProcess/rebirthSubmit')" :action-url="Environment.apiContextPath('/api/irbs/defaultProcess/rebirthSubmit')"
@before-submit=" @before-submit="
@ -210,7 +211,7 @@
<script setup lang="ts"> <script setup lang="ts">
import { reactive, ref, nextTick } from 'vue'; import { reactive, ref, nextTick } from 'vue';
import { axios, Environment, NotifyManager, Tools, Formater, Options } from 'platform-core'; import { axios, Environment, NotifyManager, Tools, DictionaryTools, Formater, Options } from 'platform-core';
import { DefaultEventItemStatus, DefaultEventItemOptions } from './DefaultManager.ts'; import { DefaultEventItemStatus, DefaultEventItemOptions } from './DefaultManager.ts';
const dialogRef = ref(); const dialogRef = ref();
@ -234,7 +235,7 @@ const state = reactive({
const dialogHide = () => { const dialogHide = () => {
state.status = 'edit'; state.status = 'edit';
state.dialogTitle = '模拟计算'; state.dialogTitle = '人工违约重生';
state.tab = 'cust'; state.tab = 'cust';
}; };
@ -257,10 +258,9 @@ const loadCustInfo = (data) => {
state.custInfo.push({ label: '客户名称', value: custInfo['custName'] }); state.custInfo.push({ label: '客户名称', value: custInfo['custName'] });
state.custInfo.push({ label: '客户经理编号', value: custInfo['mgerNo'] }); state.custInfo.push({ label: '客户经理编号', value: custInfo['mgerNo'] });
state.custInfo.push({ label: '客户经理名称', value: custInfo['mgerCna'] }); state.custInfo.push({ label: '客户经理名称', value: custInfo['mgerCna'] });
state.custInfo.push({ label: '行业类型', value: custInfo['induSortCd'] }); state.custInfo.push({ label: '行业类型', value: custInfo['induSortName'] });
state.custInfo.push({ label: '客户类型', value: custInfo['custTypeCd'] });
state.custInfo.push({ label: '成立时间', value: custInfo['buildDt'] }); state.custInfo.push({ label: '成立时间', value: custInfo['buildDt'] });
state.custInfo.push({ label: '企业规模', value: custInfo['corpSizeCd'] }); state.custInfo.push({ label: '企业规模', value: custInfo['corpSizeCd'], format: Formater.dictionary(dictCustomerSize) });
} }
}) })
.catch((error) => { .catch((error) => {
@ -283,4 +283,7 @@ defineExpose({
show, show,
hide, hide,
}); });
const dictionaryArr = await DictionaryTools.fetch(['CustomerSizeCd']);
const dictCustomerSize = dictionaryArr['CustomerSizeCd'];
</script> </script>

3
irbs.frontend/src/views/workbench/DoneTask.vue

@ -12,9 +12,8 @@
:toolbar-actions="grid.buttons" :toolbar-actions="grid.buttons"
:pagination="{ :pagination="{
reqPageStart: 1, reqPageStart: 1,
sortBy: 'START_TIME',
descending: true,
}" }"
:sort-by="['-START_TIME']"
></w-grid> ></w-grid>
</div> </div>
</template> </template>

3
irbs.frontend/src/views/workbench/EndTask.vue

@ -12,9 +12,8 @@
:toolbar-actions="grid.buttons" :toolbar-actions="grid.buttons"
:pagination="{ :pagination="{
reqPageStart: 1, reqPageStart: 1,
sortBy: 'START_TIME',
descending: true,
}" }"
:sort-by="['-START_TIME']"
></w-grid> ></w-grid>
</div> </div>
</template> </template>

3
irbs.frontend/src/views/workbench/TodoTask.vue

@ -12,9 +12,8 @@
:toolbar-actions="grid.buttons" :toolbar-actions="grid.buttons"
:pagination="{ :pagination="{
reqPageStart: 1, reqPageStart: 1,
sortBy: 'CREATE_TIME',
descending: true,
}" }"
:sort-by="['-START_TIME']"
></w-grid> ></w-grid>
<RatingDialog ref="ratingDialogRef" @refresh="refresh"></RatingDialog> <RatingDialog ref="ratingDialogRef" @refresh="refresh"></RatingDialog>
<CognizanceDialog ref="cognizanceDialogRef" @refresh="refresh"></CognizanceDialog> <CognizanceDialog ref="cognizanceDialogRef" @refresh="refresh"></CognizanceDialog>

Loading…
Cancel
Save