调整征信维护为征信对象直接入库
This commit is contained in:
@@ -15,7 +15,5 @@ public class CcdiCreditInfoQueryDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private String name;
|
||||
private String staffId;
|
||||
private String idCard;
|
||||
private String maintained;
|
||||
}
|
||||
|
||||
@@ -16,10 +16,8 @@ public class CreditInfoListVO implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long staffId;
|
||||
private String name;
|
||||
private String idCard;
|
||||
private String deptName;
|
||||
private Date queryDate;
|
||||
private Long debtCount;
|
||||
private BigDecimal debtTotalAmount;
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package com.ruoyi.info.collection.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.ruoyi.common.utils.SecurityUtils;
|
||||
import com.ruoyi.info.collection.domain.CcdiBaseStaff;
|
||||
import com.ruoyi.info.collection.domain.CcdiCreditNegativeInfo;
|
||||
import com.ruoyi.info.collection.domain.CcdiDebtsInfo;
|
||||
import com.ruoyi.info.collection.domain.dto.CcdiCreditInfoQueryDTO;
|
||||
@@ -12,7 +10,6 @@ import com.ruoyi.info.collection.domain.vo.CreditInfoListVO;
|
||||
import com.ruoyi.info.collection.domain.vo.CreditInfoNegativeVO;
|
||||
import com.ruoyi.info.collection.domain.vo.CreditInfoUploadFailureVO;
|
||||
import com.ruoyi.info.collection.domain.vo.CreditInfoUploadResultVO;
|
||||
import com.ruoyi.info.collection.mapper.CcdiBaseStaffMapper;
|
||||
import com.ruoyi.info.collection.mapper.CcdiCreditInfoQueryMapper;
|
||||
import com.ruoyi.info.collection.mapper.CcdiCreditNegativeInfoMapper;
|
||||
import com.ruoyi.info.collection.mapper.CcdiDebtsInfoMapper;
|
||||
@@ -45,9 +42,6 @@ public class CcdiCreditInfoServiceImpl implements ICcdiCreditInfoService {
|
||||
@Resource
|
||||
private CreditInfoPayloadAssembler assembler;
|
||||
|
||||
@Resource
|
||||
private CcdiBaseStaffMapper baseStaffMapper;
|
||||
|
||||
@Resource
|
||||
private CcdiDebtsInfoMapper debtsInfoMapper;
|
||||
|
||||
@@ -156,7 +150,7 @@ public class CcdiCreditInfoServiceImpl implements ICcdiCreditInfoService {
|
||||
String personId = stringValue(header.get("query_cert_no"));
|
||||
String personName = stringValue(header.get("query_cust_name"));
|
||||
LocalDate queryDate = parseQueryDate(stringValue(header.get("report_time")));
|
||||
ensureStaffExists(personId);
|
||||
ensurePersonIdPresent(personId);
|
||||
ensureLatestQueryDate(personId, queryDate);
|
||||
|
||||
List<CcdiDebtsInfo> debts = assembler.buildDebts(personId, personName, queryDate, payload);
|
||||
@@ -209,15 +203,9 @@ public class CcdiCreditInfoServiceImpl implements ICcdiCreditInfoService {
|
||||
return header;
|
||||
}
|
||||
|
||||
private void ensureStaffExists(String personId) {
|
||||
private void ensurePersonIdPresent(String personId) {
|
||||
if (isBlank(personId)) {
|
||||
throw new RuntimeException("征信解析结果缺少员工身份证号");
|
||||
}
|
||||
CcdiBaseStaff staff = baseStaffMapper.selectOne(new LambdaQueryWrapper<CcdiBaseStaff>()
|
||||
.eq(CcdiBaseStaff::getIdCard, personId)
|
||||
.last("LIMIT 1"));
|
||||
if (staff == null) {
|
||||
throw new RuntimeException("未找到对应员工信息");
|
||||
throw new RuntimeException("征信解析结果缺少身份证号");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,68 +6,76 @@
|
||||
|
||||
<select id="selectCreditInfoPage" resultType="com.ruoyi.info.collection.domain.vo.CreditInfoListVO">
|
||||
SELECT
|
||||
s.staff_id,
|
||||
s.name,
|
||||
s.id_card,
|
||||
d.dept_name,
|
||||
debt_agg.query_date,
|
||||
COALESCE(debt_agg.person_name, neg.person_name) AS name,
|
||||
credit_keys.person_id AS id_card,
|
||||
COALESCE(debt_agg.query_date, neg.query_date) AS query_date,
|
||||
IFNULL(debt_agg.debt_count, 0) AS debt_count,
|
||||
IFNULL(debt_agg.debt_total_amount, 0) AS debt_total_amount,
|
||||
IFNULL(neg.civil_cnt, 0) AS civil_cnt,
|
||||
IFNULL(neg.enforce_cnt, 0) AS enforce_cnt,
|
||||
IFNULL(neg.adm_cnt, 0) AS adm_cnt
|
||||
FROM ccdi_base_staff s
|
||||
LEFT JOIN sys_dept d ON s.dept_id = d.dept_id
|
||||
FROM (
|
||||
SELECT person_id
|
||||
FROM ccdi_debts_info
|
||||
GROUP BY person_id
|
||||
UNION
|
||||
SELECT person_id
|
||||
FROM ccdi_credit_negative_info
|
||||
GROUP BY person_id
|
||||
) credit_keys
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
person_id,
|
||||
MAX(person_name) AS person_name,
|
||||
MAX(query_date) AS query_date,
|
||||
COUNT(*) AS debt_count,
|
||||
SUM(debt_total_amount) AS debt_total_amount
|
||||
FROM ccdi_debts_info
|
||||
GROUP BY person_id
|
||||
) debt_agg ON debt_agg.person_id = s.id_card
|
||||
LEFT JOIN ccdi_credit_negative_info neg ON neg.person_id = s.id_card
|
||||
) debt_agg ON debt_agg.person_id = credit_keys.person_id
|
||||
LEFT JOIN ccdi_credit_negative_info neg ON neg.person_id = credit_keys.person_id
|
||||
<where>
|
||||
AND (debt_agg.person_id IS NOT NULL OR neg.person_id IS NOT NULL)
|
||||
<if test="query != null and query.name != null and query.name != ''">
|
||||
AND s.name LIKE CONCAT('%', #{query.name}, '%')
|
||||
</if>
|
||||
<if test="query != null and query.staffId != null and query.staffId != ''">
|
||||
AND CAST(s.staff_id AS CHAR) = #{query.staffId}
|
||||
AND COALESCE(debt_agg.person_name, neg.person_name) LIKE CONCAT('%', #{query.name}, '%')
|
||||
</if>
|
||||
<if test="query != null and query.idCard != null and query.idCard != ''">
|
||||
AND s.id_card LIKE CONCAT('%', #{query.idCard}, '%')
|
||||
AND credit_keys.person_id LIKE CONCAT('%', #{query.idCard}, '%')
|
||||
</if>
|
||||
</where>
|
||||
ORDER BY debt_agg.query_date DESC, s.staff_id DESC
|
||||
ORDER BY COALESCE(debt_agg.query_date, neg.query_date) DESC, credit_keys.person_id DESC
|
||||
</select>
|
||||
|
||||
<select id="selectCreditInfoSummaryByPersonId" resultType="com.ruoyi.info.collection.domain.vo.CreditInfoListVO">
|
||||
SELECT
|
||||
s.staff_id,
|
||||
s.name,
|
||||
s.id_card,
|
||||
d.dept_name,
|
||||
debt_agg.query_date,
|
||||
COALESCE(debt_agg.person_name, neg.person_name) AS name,
|
||||
credit_keys.person_id AS id_card,
|
||||
COALESCE(debt_agg.query_date, neg.query_date) AS query_date,
|
||||
IFNULL(debt_agg.debt_count, 0) AS debt_count,
|
||||
IFNULL(debt_agg.debt_total_amount, 0) AS debt_total_amount,
|
||||
IFNULL(neg.civil_cnt, 0) AS civil_cnt,
|
||||
IFNULL(neg.enforce_cnt, 0) AS enforce_cnt,
|
||||
IFNULL(neg.adm_cnt, 0) AS adm_cnt
|
||||
FROM ccdi_base_staff s
|
||||
LEFT JOIN sys_dept d ON s.dept_id = d.dept_id
|
||||
FROM (
|
||||
SELECT person_id
|
||||
FROM ccdi_debts_info
|
||||
GROUP BY person_id
|
||||
UNION
|
||||
SELECT person_id
|
||||
FROM ccdi_credit_negative_info
|
||||
GROUP BY person_id
|
||||
) credit_keys
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
person_id,
|
||||
MAX(person_name) AS person_name,
|
||||
MAX(query_date) AS query_date,
|
||||
COUNT(*) AS debt_count,
|
||||
SUM(debt_total_amount) AS debt_total_amount
|
||||
FROM ccdi_debts_info
|
||||
GROUP BY person_id
|
||||
) debt_agg ON debt_agg.person_id = s.id_card
|
||||
LEFT JOIN ccdi_credit_negative_info neg ON neg.person_id = s.id_card
|
||||
WHERE s.id_card = #{personId}
|
||||
) debt_agg ON debt_agg.person_id = credit_keys.person_id
|
||||
LEFT JOIN ccdi_credit_negative_info neg ON neg.person_id = credit_keys.person_id
|
||||
WHERE credit_keys.person_id = #{personId}
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user