单月最高信用卡逾期三个月补救总额388元

页面已拦截
无锡网警提示您:
该网站已被大量用户举报,且存在未经证实的金融证券信息,可能通过欺诈信息骗取您的手续费或盗取您的个人信息。package word2
import java.io.FileInputS
import java.io.IOE
import java.text.ParseE
import java.text.SimpleDateF
import java.util.ArrayL
import java.util.A
import java.util.C
import java.util.D
import java.util.HashM
import java.util.L
import java.util.M
import java.util.Map.E
import java.util.TreeM
import org.apache.poi.hwpf.HWPFD
import org.apache.poi.hwpf.usermodel.P
import org.apache.poi.hwpf.usermodel.R
import org.apache.poi.hwpf.usermodel.T
import org.apache.poi.hwpf.usermodel.TableR
public class CreditReport {
private static final String[] BASE_INFO_KEYS = new String[] { "身份信息", "配偶信息", "居住信息", "职业信息" };
private static final String[] OUTLINE_INFO_KEYS = new String[] { "信用提示", "逾期(透支)信息汇总", "未结清贷款信息汇总", "未销户贷记卡信息汇总",
"对外担保信息汇总" };
private static final String[] CREDIT_INFO_KEYS = new String[] { ")贷款", ")贷记卡", ")准贷记卡", ")担保信息" };
* 信贷交易信息明细索引 0: 贷款 1: 贷记卡 2: 准贷记卡 3: 担保信息 0index:开始 1index:结束
private int[][] creditInfoIndex = { { -1, -1 }, { -1, -1 }, { -1, -1 }, { -1, -1 } };
private static final String[] QUERY_LOG_KEYS = new String[] { "查询记录汇总", "信贷审批查询记录明细" };
private CreditReportWordParse wordP
* 报告基本信息
private List reportBasicI
* 个人基本信息 0: 身份信息 1: 配偶信息 2: 居住信息 3: 职业信息
private Map baseI
* 信息概要 0: 信用提示 1: 逾期(透支)信息汇总 2: 未结清贷款信息汇总 3: 未销户贷记卡信息汇总 4: 对外担保信息汇总
private Map outlineI
* 信贷交易信息明细索引
private List creditInfoI
* 信息概要 0: 查询记录汇总 1: 信贷审批查询记录明细
private Map queryL
* 报告信息(汇总)
private Map reportI
private CreditReport(String fileName) {
wordParse = new CreditReportWordParse(fileName);
Map keyIndexs = wordParse.getKeyIndexs();
// 报告基本信息
reportBasicInfo = new ArrayList();
reportBasicInfo.add(wordParse.getTable(0));
reportBasicInfo.add(wordParse.getTable(1));
// 个人基本信息
baseInfo = new HashMap();
for (int i = 0; i <= BASE_INFO_KEYS.length - 1; i++) {
String baseInfoKey = BASE_INFO_KEYS[i];
Integer keyIndex = wordParse.getKeyIndex(baseInfoKey);
if (legalKey(keyIndex)) {
baseInfo.put(baseInfoKey, wordParse.getTable(keyIndex + 1));
// 信息概要
outlineInfo = new HashMap();
List outlineInfoKeys = new ArrayList(Arrays.asList(OUTLINE_INFO_KEYS));
for (Entry entry : keyIndexs.entrySet()) {
int outlineInfoKeysSize = outlineInfoKeys.size();
if (outlineInfoKeysSize <= 0) {
String key = entry.getKey();
for (int i = 0; i < outlineInfoKeysS i++) {
String baseInfoKey = outlineInfoKeys.get(i);
if (key.contains(baseInfoKey)) {
outlineInfo.put(baseInfoKey, wordParse.getTable(entry.getValue() + 1));
outlineInfoKeys.remove(i);
// 信贷交易信息明细索引
initCreditInfoIndex();
for (int[] i : creditInfoIndex) {
if (i[0] != -1) {
System.out.println(wordParse.getString(i[0]));
System.out.println("start : " + i[0] + " end : " + i[1]);
// 查询记录
queryLog = new HashMap();
for (int i = 0; i <= QUERY_LOG_KEYS.length - 1; i++) {
String queryLogKey = QUERY_LOG_KEYS[i];
Integer keyIndex = wordParse.getKeyIndex(queryLogKey);
if (legalKey(keyIndex)) {
queryLog.put(queryLogKey, wordParse.getTable(keyIndex + 1));
reportInfo = new TreeMap(new Comparator() {
public int compare(String o1, String o2) {
int o1Index = Integer.valueOf(o1.substring(2));
int o2Index = Integer.valueOf(o2.substring(2));
return o1Index == o2Index ? 0 : (o1Index > o2Index ? 1 : -1);
// 获取报告基本信息
getReportInfo();
// 获取个人基本信息
getBaseInfo();
// 获取信息概要
getOutlineInfo();
// 获取信贷交易信息明细
getCreditInfo();
// 获取查询记录
getQueryLog();
* 初始化信贷交易信息明细索引
private void initCreditInfoIndex() {
Map keyIndexs = wordParse.getKeyIndexs();
int lastIndex = -1;// 信贷交易信息明细索引的结尾索引
int lastCrediInfoIndex = -1;// 最后一个易信息明细的索引
for (Entry entry : keyIndexs.entrySet()) {
String key = entry.getKey();
int value = entry.getValue();
if (lastIndex == -1) {
if (key.contains("公共信息明细")) {
lastIndex =
} else if (key.contains(QUERY_LOG_KEYS[0])) {
lastIndex = value - 1;
for (int i = 0; i < CREDIT_INFO_KEYS. i++) {
if (creditInfoIndex[i][0] == -1 && key.contains(CREDIT_INFO_KEYS[i])) {
creditInfoIndex[i][0] =
if (lastCrediInfoIndex < i) {
lastCrediInfoIndex =
for (int startIndex = 0; startIndex < CREDIT_INFO_KEYS. startIndex++) {
if (creditInfoIndex[startIndex][0] == 0) {
for (int endIndex = startIndex + 1; endIndex < CREDIT_INFO_KEYS. endIndex++) {
if (creditInfoIndex[endIndex][0] != -1) {
creditInfoIndex[startIndex][1] = creditInfoIndex[endIndex][0];
startIndex = endIndex - 1;
creditInfoIndex[lastCrediInfoIndex][1] = lastIndex == -1 ? wordParse.getElementsSize() - 1 : lastI
* 获取报告基本信息
private void getReportInfo() {
Table table1 = reportBasicInfo.get(0);
TableRow table1Row = table1.getRow(2);
// 报告编号
String cr1 = getText(table1Row.getCell(0));
if (isNotBlank(cr1 = cr1.split(":")[1])) {
reportInfo.put("cr1", cr1);
// 报告时间
String cr2 = getText(table1Row.getCell(2));
reportInfo.put("cr2", cr2.substring(5, 9) + "/" + cr2.substring(10, 12) + "/" + cr2.substring(13, 15));
Table table2 = reportBasicInfo.get(1);
TableRow table2Row = table2.getRow(1);
// 被查询者姓名
String cr3 = getText(table2Row.getCell(0));
if (isNotBlank(cr3)) {
reportInfo.put("cr3", cr3);
// 被查询者证件类型
String cr4 = getText(table2Row.getCell(1));
if (isNotBlank(cr4)) {
reportInfo.put("cr4", cr4);
// 被查询者证件号码
String cr5 = getText(table2Row.getCell(2));
if (isNotBlank(cr5)) {
reportInfo.put("cr5", cr5);
* 获取个人基本信息
private void getBaseInfo() {
// 身份信息
Table IdentityInfoTable = baseInfo.get(BASE_INFO_KEYS[0]);
TableRow IdentityInfoTableRow1 = IdentityInfoTable.getRow(1);
reportInfo.put("cr6", getText(IdentityInfoTableRow1.getCell(0)));
// 出生日期
reportInfo.put("cr7", getText(IdentityInfoTableRow1.getCell(1)));
// 婚姻状况
reportInfo.put("cr8", getText(IdentityInfoTableRow1.getCell(2)));
// 手机号码
reportInfo.put("cr9", getText(IdentityInfoTableRow1.getCell(3)));
// 单位电话
reportInfo.put("cr10", getText(IdentityInfoTableRow1.getCell(4)));
// 住宅电话
reportInfo.put("cr11", getText(IdentityInfoTableRow1.getCell(5)));
reportInfo.put("cr12", getText(IdentityInfoTableRow1.getCell(6)));
reportInfo.put("cr13", getText(IdentityInfoTableRow1.getCell(7)));
TableRow IdentityInfoTableRow3 = IdentityInfoTable.getRow(3);
// 通讯地址
reportInfo.put("cr14", getText(IdentityInfoTableRow3.getCell(0)));
// 户籍地址
reportInfo.put("cr15", getText(IdentityInfoTableRow3.getCell(1)));
// 配偶信息
Table spouseInfoTable = baseInfo.get(BASE_INFO_KEYS[1]);
TableRow spouseInfoTableRow1 = spouseInfoTable.getRow(1);
reportInfo.put("cr16", getText(spouseInfoTableRow1.getCell(0)));
// 证件类型
reportInfo.put("cr17", getText(spouseInfoTableRow1.getCell(1)));
// 证件号码
reportInfo.put("cr18", getText(spouseInfoTableRow1.getCell(2)));
// 工作单位
reportInfo.put("cr19", getText(spouseInfoTableRow1.getCell(3)));
// 联系电话
reportInfo.put("cr20", getText(spouseInfoTableRow1.getCell(4)));
// 职业信息
Table careerInfoTable = baseInfo.get(BASE_INFO_KEYS[3]);
int carrerInfoCount = careerInfoTable.numRows() / 2 - 1;
for (int i = 1, crNum = 20; i = i) {// 如果有的话
// 工作单位
TableRow table3RowI = careerInfoTable.getRow(i);
reportInfo.put("cr" + (crNum + i), getText(table3RowI.getCell(1)));
TableRow table3RowX = careerInfoTable.getRow(carrerInfoCount + 1 + i);
reportInfo.put("cr" + (crNum + i + 3), getText(table3RowX.getCell(3)));
* 获取信息概要
private void getOutlineInfo() {
// 信用提示
Table creditTipsTable = outlineInfo.get(OUTLINE_INFO_KEYS[0]);
if (creditTipsTable != null) {
TableRow creditTipsTableRow1 = creditTipsTable.getRow(1);
// 个人住房贷款笔数
String info0 = getText(creditTipsTableRow1.getCell(0));
// 个人商用房(包括商住两用)贷款笔数
String info1 = getText(creditTipsTableRow1.getCell(1));
// 计算 (个人住房贷款笔数+个人商用房(包括商住两用)贷款笔数) 总数
reportInfo.put("cr27", String.valueOf(Integer.valueOf(info0) + Integer.valueOf(info1)));
// 其他贷款笔数
reportInfo.put("cr28", getText(creditTipsTableRow1.getCell(2)));
// 首笔贷款发放月份
reportInfo.put("cr29", toDateString("yyyy.MM", getText(creditTipsTableRow1.getCell(3)), "yyyy/MM") + "/01");
// 贷记卡账户数
reportInfo.put("cr30", getText(creditTipsTableRow1.getCell(4)));
// 首笔贷款发放月份
reportInfo.put("cr31", toDateString("yyyy.MM", getText(creditTipsTableRow1.getCell(5)), "yyyy/MM") + "/01");
// 准贷记卡账户数
reportInfo.put("cr32", getText(creditTipsTableRow1.getCell(6)));
// 首张准贷记卡发卡月份
reportInfo.put("cr33", getText(creditTipsTableRow1.getCell(7)));
// 本人声明数目
reportInfo.put("cr34", getText(creditTipsTableRow1.getCell(8)));
// 异议标注数目
reportInfo.put("cr35", getText(creditTipsTableRow1.getCell(9)));
// 逾期(透支)
Table overdueTable = outlineInfo.get(OUTLINE_INFO_KEYS[1]);
if (overdueTable != null) {
TableRow overdueTableRow2 = overdueTable.getRow(2);
// 贷款逾期-笔数
reportInfo.put("cr36", getText(overdueTableRow2.getCell(0)));
// 贷款逾期-月份
reportInfo.put("cr37", getText(overdueTableRow2.getCell(1)));
// 贷款逾期-月份单月最高逾期总额
reportInfo.put("cr38", getText(overdueTableRow2.getCell(2)));
// 贷款逾期-最长逾期月数
reportInfo.put("cr39", getText(overdueTableRow2.getCell(3)));
// 贷记卡逾期-账户数
reportInfo.put("cr40", getText(overdueTableRow2.getCell(4)));
// 贷记卡逾期-月份数
reportInfo.put("cr41", getText(overdueTableRow2.getCell(5)));
// 贷记卡逾期-单月最高逾期总额
reportInfo.put("cr42", getText(overdueTableRow2.getCell(6)));
// 贷记卡逾期-最长逾期数
reportInfo.put("cr43", getText(overdueTableRow2.getCell(7)));
// 准贷记卡60天以上透支-账户数
reportInfo.put("cr44", getText(overdueTableRow2.getCell(8)));
// 准贷记卡60天以上透支-月份数
reportInfo.put("cr45", getText(overdueTableRow2.getCell(9)));
// 准贷记卡60天以上透支-单月最高透支余额
reportInfo.put("cr46", getText(overdueTableRow2.getCell(10)));
// 准贷记卡60天以上透支-最长透支月数
reportInfo.put("cr47", getText(overdueTableRow2.getCell(11)));
// 未结清贷款信息汇总
Table outstandingLoanTable = outlineInfo.get(OUTLINE_INFO_KEYS[2]);
if (outstandingLoanTable != null) {
TableRow outstandingLoanTableRow1 = outstandingLoanTable.getRow(1);
// 贷款法人机构数
reportInfo.put("cr48", getText(outstandingLoanTableRow1.getCell(0)));
// 贷款机构数
reportInfo.put("cr49", getText(outstandingLoanTableRow1.getCell(1)));
reportInfo.put("cr50", getText(outstandingLoanTableRow1.getCell(2)));
// 合同总额
reportInfo.put("cr51", getText(outstandingLoanTableRow1.getCell(3)));
reportInfo.put("cr52", getText(outstandingLoanTableRow1.getCell(4)));
// 最近6个月平均应还款
reportInfo.put("cr53", getText(outstandingLoanTableRow1.getCell(5)));
// 未销户贷记卡信息汇总
Table noCancellationCreditCardTable = outlineInfo.get(OUTLINE_INFO_KEYS[3]);
if (noCancellationCreditCardTable != null) {
TableRow noCancellationCreditCardTableRow1 = noCancellationCreditCardTable.getRow(1);
// 发卡法人机构数
reportInfo.put("cr54", getText(noCancellationCreditCardTableRow1.getCell(0)));
// 发卡机构数
reportInfo.put("cr55", getText(noCancellationCreditCardTableRow1.getCell(1)));
reportInfo.put("cr56", getText(noCancellationCreditCardTableRow1.getCell(2)));
// 授信总额
reportInfo.put("cr57", getText(noCancellationCreditCardTableRow1.getCell(3)));
// 单家行最高授信额
reportInfo.put("cr58", getText(noCancellationCreditCardTableRow1.getCell(4)));
// 单家行最低授信额
reportInfo.put("cr59", getText(noCancellationCreditCardTableRow1.getCell(5)));
// 已用额度
reportInfo.put("cr60", getText(noCancellationCreditCardTableRow1.getCell(6)));
// 最近6个月平均使用额度
reportInfo.put("cr61", getText(noCancellationCreditCardTableRow1.getCell(7)));
* 获取信贷交易信息明细
public void getCreditInfo() {
Map keyIndexs = wordParse.getKeyIndexs();
// 已结清信用无担保贷款总金额
int cr62 = 0;
// 历史最高信用无担保贷款金额
int cr63 = 0;
for (Entry keyEntry : keyIndexs.entrySet()) {
String key = keyEntry.getKey();
if (key.contains("结清") && key.contains("信用/免担保")) {
Integer amount = getAmountFromKey(key);
if (amount != null) {
if (key.contains("贷款") && key.contains("信用/免担保")) {
Integer amount = getAmountFromKey(key);
if (amount != null && amount > cr63) {
reportInfo.put("cr62", String.valueOf(cr62));
reportInfo.put("cr63", String.valueOf(cr63));
// 一年内到期贷款余额
int cr66 = 0;
// 个人总负债
int cr84 = 0;
List loanTables = wordParse.getTables(creditInfoIndex[0][0], creditInfoIndex[0][1]);
for (Object[] table : loanTables) {
Table loanTable = (Table) table[0];
int loanTableIndex = (int) table[1];
TableRow firstRow = loanTable.getRow(0);
// 未结清贷款信息
if (firstRow.numCells() == 8 && getText(firstRow.getCell(3)).equals("剩余还款期数")) {
String key = wordParse.getString(loanTableIndex - 1);
TableRow loanTableRow1 = loanTable.getRow(1);
int dueDateStartIndex = key.indexOf("归还,") + 3;
int dueDateEndIndex = key.indexOf("日到期");
String dueDate = key.substring(dueDateStartIndex, dueDateEndIndex);
dueDate = dueDate.substring(0, 4) + "/" + dueDate.substring(5, 7) + "/" + dueDate.substring(8, 10);
// 报告时间
String cr2 = reportInfo.get("cr2");
int daysBetweenNum = daysBetween(cr2, dueDate, "yyyy/MM/dd");
if (daysBetweenNum >= 0 && daysBetweenNum < 365) {
cr66 += Integer.valueOf(getText(loanTableRow1.getCell(2)).replace(",", ""));
cr84 += Integer.valueOf(getText(loanTableRow1.getCell(2)).replace(",", ""));
System.out.println(loanTable + " table text : \n" + loanTable.text());
System.out.println("-------------------------------");
reportInfo.put("cr66", String.valueOf(cr66));
* 获取查询记录
public void getQueryLog() {
// 统计近6个月查询次数
int cr68 = 0;
// 统计近12个月查询次数
int cr69 = 0;
final String cr2 = reportInfo.get("cr2");
Table queryLogDetail = queryLog.get(QUERY_LOG_KEYS[1]);
if (queryLogDetail != null) {
int rowNum = queryLogDetail.numRows();
for (int i = 1; i < rowN i++) {
TableRow row = queryLogDetail.getRow(i);
String queryDate = toDateString("yyyy.MM.dd", getText(row.getCell(1)), "yyyy/MM/dd");
int daysBetweenNum = daysBetween(queryDate, cr2, "yyyy/MM/dd");
if (daysBetweenNum < 365) {
cr69 += 1;
if (daysBetweenNum = 0;
public static String string2Char(String source) {
StringBuffer unicode = new StringBuffer();
for (char c : source.toCharArray()) {
unicode.append("
" + (int) c);
return unicode.toString();
* 按指定格式转换时间字符串
* @param simple
输入时间格式
* @param dateString
输入时间字符串
* @param returnSimple
输出时间格式
* @return 输出转后的时间字符串
private static String toDateString(String simple, String dateString, String returnSimple) {
String result =
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(simple);
Date date = simpleDateFormat.parse(dateString);
SimpleDateFormat returnSimpleDateFormat = new SimpleDateFormat(returnSimple);
result = returnSimpleDateFormat.format(date);
} catch (ParseException e) {
e.printStackTrace();
result = "";
* 计算两个日期之间相差的天数
* @param smdate
较小的时间
* @param bdate
较大的时间
* @return 相差天数
* @throws ParseException
private static int daysBetween(String smdate, String bdate, String simple) {
SimpleDateFormat sdf = new SimpleDateFormat(simple);
Date aDate =
Date bDate =
aDate = sdf.parse(smdate);
bDate = sdf.parse(bdate);
} catch (ParseException e) {
e.printStackTrace();
Calendar cal = Calendar.getInstance();
cal.setTime(aDate);
long time1 = cal.getTimeInMillis();
cal.setTime(bDate);
long time2 = cal.getTimeInMillis();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
return (int) between_
private class CreditReportWordParse {
private HWPFDocument _
private List
private Map keyI
private final int tableLevel = 2;
private CreditReportWordParse(String fileName) {
this._doc = new HWPFDocument(new FileInputStream(fileName));
elements = new ArrayList();
keyIndexs = new HashMap();
initElements();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (this._doc != null) {
_doc.close();
} catch (IOException e) {
e.printStackTrace();
private void initElements() {
Range range = _doc.getRange();
int lenParagraph = range.numParagraphs();
if (lenParagraph <= 1) {
for (int x = 0, elementsIndex = 0; x < lenP x++) {
Paragraph paragraph = range.getParagraph(x);
if (paragraph.isInTable() && paragraph.getTableLevel() != tableLevel) {
String paragraphText = paragraph.text().replaceAll("[\u\u000B\\u000A]", "").trim();
if (!paragraphText.equals("")) {
elements.add(paragraphText);
keyIndexs.put(paragraphText, elementsIndex++);
if (paragraph.isInTable() && paragraph.getTableLevel() == tableLevel) {
Table table = range.getTable(paragraph);
elements.add(table);
elementsIndex++;
x += table.numParagraphs() - 1;
private int getElementsSize() {
return elements.size();
private Table getTable(int globalIndex) {
return (Table) elements.get(globalIndex);
* @param startIndex
* @param endIndex
* @return object[0:table 1:index]
private List getTables(int startIndex, int endIndex) {
List tables = new ArrayList();
if (startIndex != -1) {
for (int i = startI i < endI i++) {
Object obj = elements.get(i);
if (obj instanceof Table) {
tables.add(new Object[] { (Table) obj, i });
private String getString(int globalIndex) {
return (String) elements.get(globalIndex);
private Integer getKeyIndex(String key) {
return keyIndexs.get(key);
private Map getKeyIndexs() {
return keyI
public void printElements() {
for (Object object : elements) {
if (object instanceof Table) {
Table table = (Table)
// System.out.println("table :" + table + " \n" +
// table.text());
System.out.println("table : " + table);
// System.out.println("-----------------------------");
if (object instanceof String) {
System.out.println("String : " + object + "
index: " + keyIndexs.get(object));
// System.out.println("String : " + string2Char((String)
// object));
public static void main(String[] args) throws IOException {
long startTime = System.currentTimeMillis();
CreditReport creditReport = new CreditReport("C:/Users/hkun/Desktop/信用报告/陈光际.doc");
long endTime = System.currentTimeMillis();
// creditReport.wordParse.printElements();
for (String key : creditReport.reportInfo.keySet()) {
System.out.println(key + " : " + creditReport.reportInfo.get(key));
System.out.println("times:" + (endTime - startTime));(C) 版权所有 增值电信业务经营许可证:浙B2-在征信查个人信用报告,上面逾期及违约信息概要上显示笔数1,月份35,单月最高逾期总额1746,最长-
相关资料介绍与图文
你现在的位置:& 》关于的详细解说
在征信查个人信用报告,上面逾期及违约信息概要上显示笔数1,月份35,单月最高逾期总额1746,最长
在征信查个人信用报告,上面逾期及违约信息概要上显示笔数1,月份35,单月最高逾期总额1746,最长
还有没有什么办法可以帮助我在征信查个人信用报告,最长逾期月数7.31账户状态为结清.8,上面逾期及违约信息概要上显示笔数1。日发放2018元截至2014,月份35,单月最高逾期总额1746。现在我想贷款买房子请问这个记录什么时候可以销掉
还款记录良好 5年能养白
Copyright &排行榜大全pai-. Some Rights Reserved.从国家、城市、地区到品牌、产品、行业为你提供最新的排行榜资讯本站内容来自于本站编辑整理和媒体发布,仅提供参考或娱乐作用,并不构成任何投资标准和实际应用建议
联系请发电邮自god-loveme#
【#换成@】

我要回帖

更多关于 月工资总额 的文章

 

随机推荐